Adding a simple example:
I startup a pc twice.
*1.* There are just 2 online CPUs in the pc at booting time.
The MADT likes:
-------MADT---------
Apic Id | Enable Flag
0x00 1
0x02 1
0x04 0
0x06 0
*0x10* 0
*0x12* 0
0x14 0
0x16 0
-------------------------------------
*2.* There are 4 online CPUs in the pc. Then, startup it.
The new CPUs use the local APIC IDs with 0x10 and 0x12.
The MADT likes:
------MADT-------
Apic Id | Enable Flag
0x00 1
0x02 1
*0x10* 1
*0x12* 1
0x04 0
0x16 0
0x14 0
0x16 0
The position of the 0x10 and 0x12 is changed.
[...]
Are you asking about Local APIC IDs?
Yes, it is. Something about *Processor Local APIC Structure*.
In MADT, Their arrangement may be different between the usable
processors and unusable processors(Processor Enabled is 1 or 0
in MADT).
The rule of the arrangement seems like that it makes the usable
processors in front of the unusable processors, when we generate
the MADT at the booting time. And it seems do not care about the
arrangement of the unusable processors.
Unfortunately, the unusable processors will be used in CPU hotplug.
And we also make the cpu_id <-> apic_id fixed according to the MADT
after linux-4.9. So the arrangement may be influence on the value of
CPUIds.
I am investigating this. So I hope to know:
1. How the MADT is generated, Where can I find the Method/Function of
the generation?
2. Is there a rule used for the order of the Local APIC/x2APIC IDs?
Thanks,
Liyang
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html