* [PATCH] tests/functional: Add PCI hotplug test for aarch64
@ 2025-05-09 23:19 Gustavo Romero
2025-05-12 7:59 ` Thomas Huth
0 siblings, 1 reply; 7+ messages in thread
From: Gustavo Romero @ 2025-05-09 23:19 UTC (permalink / raw)
To: qemu-devel; +Cc: gustavo.romero, eric.auger, alex.bennee, philmd, peter.maydell
Add a functional test, aarch64_hotplug_pci, to exercise PCI hotplug and
hot-unplug on arm64. Currently, the aarch64 'virt' machine uses the PCIe
native controller and does not support ACPI-based hotplugging. However,
since support is planned, this test sets 'acpi=force' and specifies an
EDK2 firmware image in advance. This is harmless and prepares for future
ACPI support.
Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
---
tests/functional/meson.build | 1 +
tests/functional/test_aarch64_hotplug_pci.py | 73 ++++++++++++++++++++
2 files changed, 74 insertions(+)
create mode 100755 tests/functional/test_aarch64_hotplug_pci.py
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index 52b4706cfe..2d68840fa2 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -83,6 +83,7 @@ tests_aarch64_system_quick = [
tests_aarch64_system_thorough = [
'aarch64_aspeed_ast2700',
'aarch64_aspeed_ast2700fc',
+ 'aarch64_hotplug_pci',
'aarch64_imx8mp_evk',
'aarch64_raspi3',
'aarch64_raspi4',
diff --git a/tests/functional/test_aarch64_hotplug_pci.py b/tests/functional/test_aarch64_hotplug_pci.py
new file mode 100755
index 0000000000..031540ba22
--- /dev/null
+++ b/tests/functional/test_aarch64_hotplug_pci.py
@@ -0,0 +1,73 @@
+#!/usr/bin/env python3
+#
+# The test hotplugs a PCI device and checks it on a Linux guest.
+#
+# Copyright (c) 2025 Linaro Ltd.
+#
+# Author:
+# Gustavo Romero <gustavo.romero@linaro.org>
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or
+# later. See the COPYING file in the top-level directory.
+
+from os import path
+from qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pattern
+from qemu_test import BUILD_DIR
+
+class HotplugPCI(LinuxKernelTest):
+
+ ASSET_KERNEL = Asset(
+ ('https://ftp.debian.org/debian/dists/stable/main/installer-arm64/'
+ 'current/images/netboot/debian-installer/arm64/linux'),
+ '3821d4db56d42c6a4eac62f31846e35465940afd87746b4cfcdf5c9eca3117b2')
+
+ ASSET_INITRD = Asset(
+ ('https://ftp.debian.org/debian/dists/stable/main/installer-arm64/'
+ 'current/images/netboot/debian-installer/arm64/initrd.gz'),
+ '2583ec22b45265ad69e82f198674f53d4cd85be124fe012eedc2fd91156bc4b4')
+
+ def test_hotplug_pci(self):
+
+ self.vm.add_args('-m', '512M')
+ self.vm.add_args('-machine', 'type=virt')
+ self.vm.add_args('-cpu', 'cortex-a57')
+ self.vm.add_args('-append',
+ 'console=ttyAMA0,115200 acpi=force init=/bin/sh')
+ self.vm.add_args('-device',
+ 'pcie-root-port,bus=pcie.0,chassis=1,slot=1,id=pcie.1')
+ self.vm.add_args('-bios', path.join(BUILD_DIR, 'pc-bios',
+ 'edk2-aarch64-code.fd'))
+
+ # BusyBox prompt
+ prompt = "~ #"
+ self.launch_kernel(self.ASSET_KERNEL.fetch(),
+ self.ASSET_INITRD.fetch(),
+ wait_for=prompt)
+
+ # Check for initial state: 2 network adapters, lo and enp0s1.
+ exec_command_and_wait_for_pattern(self,
+ 'ls -l /sys/class/net | wc -l',
+ '2')
+
+ # Hotplug one network adapter to the root port, i.e. pcie.1 bus.
+ self.vm.cmd('device_add',
+ driver='virtio-net-pci',
+ bus='pcie.1',
+ addr=0,
+ id='na')
+ # Wait for the kernel to recognize the new device.
+ self.wait_for_console_pattern('virtio-pci')
+ self.wait_for_console_pattern('virtio_net')
+
+ # Check if there is a new network adapter.
+ exec_command_and_wait_for_pattern(self,
+ 'ls -l /sys/class/net | wc -l',
+ '3')
+
+ self.vm.cmd('device_del', id='na')
+ exec_command_and_wait_for_pattern(self,
+ 'ls -l /sys/class/net | wc -l',
+ '2')
+
+if __name__ == '__main__':
+ LinuxKernelTest.main()
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/functional: Add PCI hotplug test for aarch64
2025-05-09 23:19 [PATCH] tests/functional: Add PCI hotplug test for aarch64 Gustavo Romero
@ 2025-05-12 7:59 ` Thomas Huth
2025-05-12 12:08 ` Gustavo Romero
0 siblings, 1 reply; 7+ messages in thread
From: Thomas Huth @ 2025-05-12 7:59 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel; +Cc: eric.auger, alex.bennee, philmd, peter.maydell
Hi!
On 10/05/2025 01.19, Gustavo Romero wrote:
> Add a functional test, aarch64_hotplug_pci, to exercise PCI hotplug and
> hot-unplug on arm64. Currently, the aarch64 'virt' machine uses the PCIe
> native controller and does not support ACPI-based hotplugging. However,
> since support is planned, this test sets 'acpi=force' and specifies an
> EDK2 firmware image in advance. This is harmless and prepares for future
> ACPI support.
>
> Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
> ---
> tests/functional/meson.build | 1 +
> tests/functional/test_aarch64_hotplug_pci.py | 73 ++++++++++++++++++++
> 2 files changed, 74 insertions(+)
> create mode 100755 tests/functional/test_aarch64_hotplug_pci.py
Could you also add the test file to one of the sections in the MAINTAINERS
file, please?
> diff --git a/tests/functional/test_aarch64_hotplug_pci.py b/tests/functional/test_aarch64_hotplug_pci.py
> new file mode 100755
> index 0000000000..031540ba22
> --- /dev/null
> +++ b/tests/functional/test_aarch64_hotplug_pci.py
> @@ -0,0 +1,73 @@
> +#!/usr/bin/env python3
> +#
> +# The test hotplugs a PCI device and checks it on a Linux guest.
> +#
> +# Copyright (c) 2025 Linaro Ltd.
> +#
> +# Author:
> +# Gustavo Romero <gustavo.romero@linaro.org>
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2 or
> +# later. See the COPYING file in the top-level directory.
> +
> +from os import path
> +from qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pattern
> +from qemu_test import BUILD_DIR
> +
> +class HotplugPCI(LinuxKernelTest):
> +
> + ASSET_KERNEL = Asset(
> + ('https://ftp.debian.org/debian/dists/stable/main/installer-arm64/'
> + 'current/images/netboot/debian-installer/arm64/linux'),
> + '3821d4db56d42c6a4eac62f31846e35465940afd87746b4cfcdf5c9eca3117b2')
> +
> + ASSET_INITRD = Asset(
> + ('https://ftp.debian.org/debian/dists/stable/main/installer-arm64/'
> + 'current/images/netboot/debian-installer/arm64/initrd.gz'),
> + '2583ec22b45265ad69e82f198674f53d4cd85be124fe012eedc2fd91156bc4b4')
> +
> + def test_hotplug_pci(self):
> +
> + self.vm.add_args('-m', '512M')
> + self.vm.add_args('-machine', 'type=virt')
Please use self.set_machine('virt') instead so that the test gets correctly
skipped in case the machine has not been compiled into the binary.
Thanks,
Thomas
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/functional: Add PCI hotplug test for aarch64
2025-05-12 7:59 ` Thomas Huth
@ 2025-05-12 12:08 ` Gustavo Romero
2025-05-12 12:37 ` Thomas Huth
2025-05-12 12:42 ` Gustavo Romero
0 siblings, 2 replies; 7+ messages in thread
From: Gustavo Romero @ 2025-05-12 12:08 UTC (permalink / raw)
To: Thomas Huth, qemu-devel; +Cc: eric.auger, alex.bennee, philmd, peter.maydell
Hi Thomas,
Thanks for the review.
On 5/12/25 04:59, Thomas Huth wrote:
> Hi!
>
> On 10/05/2025 01.19, Gustavo Romero wrote:
>> Add a functional test, aarch64_hotplug_pci, to exercise PCI hotplug and
>> hot-unplug on arm64. Currently, the aarch64 'virt' machine uses the PCIe
>> native controller and does not support ACPI-based hotplugging. However,
>> since support is planned, this test sets 'acpi=force' and specifies an
>> EDK2 firmware image in advance. This is harmless and prepares for future
>> ACPI support.
>>
>> Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
>> ---
>> tests/functional/meson.build | 1 +
>> tests/functional/test_aarch64_hotplug_pci.py | 73 ++++++++++++++++++++
>> 2 files changed, 74 insertions(+)
>> create mode 100755 tests/functional/test_aarch64_hotplug_pci.py
>
> Could you also add the test file to one of the sections in the MAINTAINERS file, please?
Any idea under which section I should add this test?
Currently, it's only TCG, but in the future probably there will be
1) a variant with --enable-kvm option and 2) it will have a variant
with ACPI enabled. Hence, currently it doesn't seem to fit neither
under "PCI" nor under "ARM ACPI Subsystem", I think I can create a
section tho? Maybe "ARM PCI Hotplug"? Could you please advise?
>> diff --git a/tests/functional/test_aarch64_hotplug_pci.py b/tests/functional/test_aarch64_hotplug_pci.py
>> new file mode 100755
>> index 0000000000..031540ba22
>> --- /dev/null
>> +++ b/tests/functional/test_aarch64_hotplug_pci.py
>> @@ -0,0 +1,73 @@
>> +#!/usr/bin/env python3
>> +#
>> +# The test hotplugs a PCI device and checks it on a Linux guest.
>> +#
>> +# Copyright (c) 2025 Linaro Ltd.
>> +#
>> +# Author:
>> +# Gustavo Romero <gustavo.romero@linaro.org>
>> +#
>> +# This work is licensed under the terms of the GNU GPL, version 2 or
>> +# later. See the COPYING file in the top-level directory.
>> +
>> +from os import path
>> +from qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pattern
>> +from qemu_test import BUILD_DIR
>> +
>> +class HotplugPCI(LinuxKernelTest):
>> +
>> + ASSET_KERNEL = Asset(
>> + ('https://ftp.debian.org/debian/dists/stable/main/installer-arm64/'
>> + 'current/images/netboot/debian-installer/arm64/linux'),
>> + '3821d4db56d42c6a4eac62f31846e35465940afd87746b4cfcdf5c9eca3117b2')
>> +
>> + ASSET_INITRD = Asset(
>> + ('https://ftp.debian.org/debian/dists/stable/main/installer-arm64/'
>> + 'current/images/netboot/debian-installer/arm64/initrd.gz'),
>> + '2583ec22b45265ad69e82f198674f53d4cd85be124fe012eedc2fd91156bc4b4')
>> +
>> + def test_hotplug_pci(self):
>> +
>> + self.vm.add_args('-m', '512M')
>> + self.vm.add_args('-machine', 'type=virt')
>
> Please use self.set_machine('virt') instead so that the test gets correctly skipped in case the machine has not been compiled into the binary.
Sure!
Cheers,
Gustavo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/functional: Add PCI hotplug test for aarch64
2025-05-12 12:08 ` Gustavo Romero
@ 2025-05-12 12:37 ` Thomas Huth
2025-05-12 12:46 ` Gustavo Romero
2025-05-12 12:42 ` Gustavo Romero
1 sibling, 1 reply; 7+ messages in thread
From: Thomas Huth @ 2025-05-12 12:37 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel; +Cc: eric.auger, alex.bennee, philmd, peter.maydell
On 12/05/2025 14.08, Gustavo Romero wrote:
> Hi Thomas,
>
> Thanks for the review.
>
> On 5/12/25 04:59, Thomas Huth wrote:
>> Hi!
>>
>> On 10/05/2025 01.19, Gustavo Romero wrote:
>>> Add a functional test, aarch64_hotplug_pci, to exercise PCI hotplug and
>>> hot-unplug on arm64. Currently, the aarch64 'virt' machine uses the PCIe
>>> native controller and does not support ACPI-based hotplugging. However,
>>> since support is planned, this test sets 'acpi=force' and specifies an
>>> EDK2 firmware image in advance. This is harmless and prepares for future
>>> ACPI support.
>>>
>>> Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
>>> ---
>>> tests/functional/meson.build | 1 +
>>> tests/functional/test_aarch64_hotplug_pci.py | 73 ++++++++++++++++++++
>>> 2 files changed, 74 insertions(+)
>>> create mode 100755 tests/functional/test_aarch64_hotplug_pci.py
>>
>> Could you also add the test file to one of the sections in the MAINTAINERS
>> file, please?
>
> Any idea under which section I should add this test?
>
> Currently, it's only TCG, but in the future probably there will be
> 1) a variant with --enable-kvm option and 2) it will have a variant
> with ACPI enabled. Hence, currently it doesn't seem to fit neither
> under "PCI" nor under "ARM ACPI Subsystem", I think I can create a
> section tho? Maybe "ARM PCI Hotplug"? Could you please advise?
A separate section likely only makes sense if there are other files that you
could add there. Otherwise, simply add it to the arm "Virt" machine section?
Thomas
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/functional: Add PCI hotplug test for aarch64
2025-05-12 12:08 ` Gustavo Romero
2025-05-12 12:37 ` Thomas Huth
@ 2025-05-12 12:42 ` Gustavo Romero
1 sibling, 0 replies; 7+ messages in thread
From: Gustavo Romero @ 2025-05-12 12:42 UTC (permalink / raw)
To: Thomas Huth, qemu-devel; +Cc: eric.auger, alex.bennee, philmd, peter.maydell
Hi Thomas,
On 5/12/25 09:08, Gustavo Romero wrote:
> Hi Thomas,
>
> Thanks for the review.
>
> On 5/12/25 04:59, Thomas Huth wrote:
>> Hi!
>>
>> On 10/05/2025 01.19, Gustavo Romero wrote:
>>> Add a functional test, aarch64_hotplug_pci, to exercise PCI hotplug and
>>> hot-unplug on arm64. Currently, the aarch64 'virt' machine uses the PCIe
>>> native controller and does not support ACPI-based hotplugging. However,
>>> since support is planned, this test sets 'acpi=force' and specifies an
>>> EDK2 firmware image in advance. This is harmless and prepares for future
>>> ACPI support.
>>>
>>> Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
>>> ---
>>> tests/functional/meson.build | 1 +
>>> tests/functional/test_aarch64_hotplug_pci.py | 73 ++++++++++++++++++++
>>> 2 files changed, 74 insertions(+)
>>> create mode 100755 tests/functional/test_aarch64_hotplug_pci.py
>>
>> Could you also add the test file to one of the sections in the MAINTAINERS file, please?
>
> Any idea under which section I should add this test?
>
> Currently, it's only TCG, but in the future probably there will be
> 1) a variant with --enable-kvm option and 2) it will have a variant
> with ACPI enabled. Hence, currently it doesn't seem to fit neither
> under "PCI" nor under "ARM ACPI Subsystem", I think I can create a
> section tho? Maybe "ARM PCI Hotplug"? Could you please advise?
Well, I'll introduce all these variants into the test so I created a new
section "ARM PCI Hotplug" and added me as the maintainer. When I introduce
the variants I can change the section name to fit it better.
I just sent a v2.
Cheers,
Gustavo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/functional: Add PCI hotplug test for aarch64
2025-05-12 12:37 ` Thomas Huth
@ 2025-05-12 12:46 ` Gustavo Romero
2025-05-12 12:58 ` Thomas Huth
0 siblings, 1 reply; 7+ messages in thread
From: Gustavo Romero @ 2025-05-12 12:46 UTC (permalink / raw)
To: Thomas Huth, qemu-devel; +Cc: eric.auger, alex.bennee, philmd, peter.maydell
Hi Thomas,
On 5/12/25 09:37, Thomas Huth wrote:
> On 12/05/2025 14.08, Gustavo Romero wrote:
>> Hi Thomas,
>>
>> Thanks for the review.
>>
>> On 5/12/25 04:59, Thomas Huth wrote:
>>> Hi!
>>>
>>> On 10/05/2025 01.19, Gustavo Romero wrote:
>>>> Add a functional test, aarch64_hotplug_pci, to exercise PCI hotplug and
>>>> hot-unplug on arm64. Currently, the aarch64 'virt' machine uses the PCIe
>>>> native controller and does not support ACPI-based hotplugging. However,
>>>> since support is planned, this test sets 'acpi=force' and specifies an
>>>> EDK2 firmware image in advance. This is harmless and prepares for future
>>>> ACPI support.
>>>>
>>>> Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
>>>> ---
>>>> tests/functional/meson.build | 1 +
>>>> tests/functional/test_aarch64_hotplug_pci.py | 73 ++++++++++++++++++++
>>>> 2 files changed, 74 insertions(+)
>>>> create mode 100755 tests/functional/test_aarch64_hotplug_pci.py
>>>
>>> Could you also add the test file to one of the sections in the MAINTAINERS file, please?
>>
>> Any idea under which section I should add this test?
>>
>> Currently, it's only TCG, but in the future probably there will be
>> 1) a variant with --enable-kvm option and 2) it will have a variant
>> with ACPI enabled. Hence, currently it doesn't seem to fit neither
>> under "PCI" nor under "ARM ACPI Subsystem", I think I can create a
>> section tho? Maybe "ARM PCI Hotplug"? Could you please advise?
>
> A separate section likely only makes sense if there are other files that you could add there. Otherwise, simply add it to the arm "Virt" machine section?
hm but in this case wouldn't I be kind "forcing" Peter to maintain
this test? And, otoh, if I add me to "Virt" section then I'm saying that
I'll maintain all the other tests as well?
Cheers,
Gustavo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] tests/functional: Add PCI hotplug test for aarch64
2025-05-12 12:46 ` Gustavo Romero
@ 2025-05-12 12:58 ` Thomas Huth
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Huth @ 2025-05-12 12:58 UTC (permalink / raw)
To: Gustavo Romero, qemu-devel, peter.maydell; +Cc: eric.auger, alex.bennee, philmd
On 12/05/2025 14.46, Gustavo Romero wrote:
> Hi Thomas,
>
> On 5/12/25 09:37, Thomas Huth wrote:
>> On 12/05/2025 14.08, Gustavo Romero wrote:
>>> Hi Thomas,
>>>
>>> Thanks for the review.
>>>
>>> On 5/12/25 04:59, Thomas Huth wrote:
>>>> Hi!
>>>>
>>>> On 10/05/2025 01.19, Gustavo Romero wrote:
>>>>> Add a functional test, aarch64_hotplug_pci, to exercise PCI hotplug and
>>>>> hot-unplug on arm64. Currently, the aarch64 'virt' machine uses the PCIe
>>>>> native controller and does not support ACPI-based hotplugging. However,
>>>>> since support is planned, this test sets 'acpi=force' and specifies an
>>>>> EDK2 firmware image in advance. This is harmless and prepares for future
>>>>> ACPI support.
>>>>>
>>>>> Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
>>>>> ---
>>>>> tests/functional/meson.build | 1 +
>>>>> tests/functional/test_aarch64_hotplug_pci.py | 73 ++++++++++++++++++++
>>>>> 2 files changed, 74 insertions(+)
>>>>> create mode 100755 tests/functional/test_aarch64_hotplug_pci.py
>>>>
>>>> Could you also add the test file to one of the sections in the
>>>> MAINTAINERS file, please?
>>>
>>> Any idea under which section I should add this test?
>>>
>>> Currently, it's only TCG, but in the future probably there will be
>>> 1) a variant with --enable-kvm option and 2) it will have a variant
>>> with ACPI enabled. Hence, currently it doesn't seem to fit neither
>>> under "PCI" nor under "ARM ACPI Subsystem", I think I can create a
>>> section tho? Maybe "ARM PCI Hotplug"? Could you please advise?
>>
>> A separate section likely only makes sense if there are other files that
>> you could add there. Otherwise, simply add it to the arm "Virt" machine
>> section?
>
> hm but in this case wouldn't I be kind "forcing" Peter to maintain
> this test? And, otoh, if I add me to "Virt" section then I'm saying that
> I'll maintain all the other tests as well?
Ok, in that case a separate section makes sense ... Peter, do you have any
preferences?
Thomas
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-05-12 12:59 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-09 23:19 [PATCH] tests/functional: Add PCI hotplug test for aarch64 Gustavo Romero
2025-05-12 7:59 ` Thomas Huth
2025-05-12 12:08 ` Gustavo Romero
2025-05-12 12:37 ` Thomas Huth
2025-05-12 12:46 ` Gustavo Romero
2025-05-12 12:58 ` Thomas Huth
2025-05-12 12:42 ` Gustavo Romero
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).