On 2025/6/3 下午11:40, Alireza Sanaee via wrote:
On Sun, 1 Jun 2025 08:32:52 -0400
"Michael S. Tsirkin" <m...@redhat.com> wrote:
On Fri, May 23, 2025 at 11:26:50AM +0100, Alireza Sanaee wrote:
OS like Linux is using PPTT processor node's identical
implementation flag [1] to infer whether the whole system or a
certain CPU cluster is homogeneous or not [2]. QEMU currently only
support building homogeneous system, set the flag to indicate the
fact. Build a root node in PPTT for indicates the identical
implementation which is needed for a multi-socket system. Update
the related PPTT tables as well.
[1] ACPI 6.5 Table 5.158: Processor Structure Flags
[2]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/acpi/pptt.c?h=v6.11-rc1#n810
History:
* v4->v5: fixed a typo
* v3->v4: PPTT rev to 2
* v2->v3: rebase to 10
Alireza Sanaee (2):
hw/acpi/aml-build: Build a root node in the PPTT table
tests: virt: Update expected ACPI tables for virt test
Yicong Yang (2):
tests: virt: Allow changes to PPTT test table
hw/acpi/aml-build: Set identical implementation flag for PPTT
processor nodes
hw/acpi/aml-build.c | 24
+++++++++++++++--- tests/data/acpi/aarch64/virt/PPTT |
Bin 76 -> 96 bytes .../data/acpi/aarch64/virt/PPTT.acpihmatvirt |
Bin 156 -> 176 bytes tests/data/acpi/aarch64/virt/PPTT.topology
| Bin 336 -> 356 bytes 4 files changed, 20 insertions(+), 4
deletions(-)
This interacts weirdly with loongarch. I tried applying patches
on top of that, and on loongarch, I see:
-[0F0h 0240 004h] Flags (decoded below) : 00000000
+[0F0h 0240 004h] Flags (decoded below) : 0000000E
Physical package : 0
- ACPI Processor ID valid : 0
- Processor is a thread : 0
- Node is a leaf : 0
+ ACPI Processor ID valid : 1
+ Processor is a thread : 1
+ Node is a leaf : 1
Identical Implementation : 0
I'm sending a pull request later today. Once merged, pls
rebase on top of that, updating loongarch as appropriate
and repost copying relevant people.
Cc Bibo Mao for more insight.
Hi Micheal,
I am trying to reproduce this issue. I have applied the
patchset on the master branch now, and then run:
make check-qtest-loongarch64 V=2 -j, but I don't seem to get any diffs
on the binaries, and all tests passed.
It is an host endian issue, only happens on big endian host machine such
as S390x :( And there is problem on LoongArch virt machine code about
endian setting.
Regards
Bibo Mao
May I know if that's how you noticed the problem?
Thanks,
Alireza
--
2.34.1