[PATCH v5 0/4] Building PPTT with root node and identical implementation flag

Alireza Sanaee via posted 4 patches 5 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20250523102654.1719-1-alireza.sanaee@huawei.com
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <anisinha@redhat.com>
There is a newer version of this series
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(-)
[PATCH v5 0/4] Building PPTT with root node and identical implementation flag
Posted by Alireza Sanaee via 5 months, 3 weeks ago
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(-)

-- 
2.34.1
Re: [PATCH v5 0/4] Building PPTT with root node and identical implementation flag
Posted by Michael S. Tsirkin 5 months, 2 weeks ago
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.


> -- 
> 2.34.1
Re: [PATCH v5 0/4] Building PPTT with root node and identical implementation flag
Posted by Alireza Sanaee via 5 months, 2 weeks ago
On Sun, 1 Jun 2025 08:32:52 -0400
"Michael S. Tsirkin" <mst@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.

May I know if that's how you noticed the problem?

Thanks,
Alireza
> 
> 
> > -- 
> > 2.34.1  
> 
>
Re: [PATCH v5 0/4] Building PPTT with root node and identical implementation flag
Posted by Bibo Mao 5 months, 2 weeks ago

On 2025/6/3 下午11:40, Alireza Sanaee via wrote:
> On Sun, 1 Jun 2025 08:32:52 -0400
> "Michael S. Tsirkin" <mst@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
>>
>>
>