[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] Problem about CPU index



Hi all,

In this function qemuMonitorJSONExtractCPUInfo(),

It assumes that cpu index is always contiguous.
       if (cpu != i) {
            virReportError(VIR_ERR_INTERNAL_ERROR,
                           _("unexpected cpu index %d expecting %d"),
                           i, cpu);
            goto cleanup;
        }

For x86, in what kind of situation does this error happen?

This assumption causes the problem for ppc64.

For ppc64, it's quite different from x86.
SMT is needed to be disabled because of hardware's limitation.
So, only one thread per core is online.
These threads are not contiguous.

For example, smt=4, 64 CPUs and 16 Cores
CPU information is as the following:

Architecture:          ppc64
Byte Order:            Big Endian
CPU(s):                64
On-line CPU(s) list:   0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60
Off-line CPU(s) list: 1-3,5-7,9-11,13-15,17-19,21-23,25-27,29-31,33-35,37-39,41-43,45-47,49-51,53-55,57-59,61-63
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             16
NUMA node(s):          2

All CPUs we get are only 0,4, ..., 60.

If possible, can this assumption be removed?

Thanks.

--

Li Zhang
IBM China Linux Technology Centre


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]