Message ID | 20250623121845.7214-27-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | arm: Fixes and preparatory cleanups for split-accel | expand |
On 23/06/2025 14.18, Philippe Mathieu-Daudé wrote: > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > tests/functional/test_aarch64_smmu.py | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/tests/functional/test_aarch64_smmu.py b/tests/functional/test_aarch64_smmu.py > index c65d0f28178..e0f4a922176 100755 > --- a/tests/functional/test_aarch64_smmu.py > +++ b/tests/functional/test_aarch64_smmu.py > @@ -17,7 +17,7 @@ > > from qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pattern > from qemu_test import BUILD_DIR > -from qemu.utils import kvm_available > +from qemu.utils import kvm_available, hvf_available > > > class SMMU(LinuxKernelTest): > @@ -45,11 +45,17 @@ def set_up_boot(self, path): > self.vm.add_args('-device', 'virtio-net,netdev=n1' + self.IOMMU_ADDON) > > def common_vm_setup(self, kernel, initrd, disk): > - self.require_accelerator("kvm") > + if hvf_available(self.qemu_bin): > + accel = "hvf" > + elif kvm_available(self.qemu_bin): > + accel = "kvm" > + else: > + self.skipTest("Neither HVF nor KVM accelerator is available") > + self.require_accelerator(accel) > self.require_netdev('user') > self.set_machine("virt") > self.vm.add_args('-m', '1G') > - self.vm.add_args("-accel", "kvm") > + self.vm.add_args("-accel", accel) > self.vm.add_args("-cpu", "host") > self.vm.add_args("-machine", "iommu=smmuv3") > self.vm.add_args("-d", "guest_errors") Reviewed-by: Thomas Huth <thuth@redhat.com>
Philippe Mathieu-Daudé <philmd@linaro.org> writes: > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > tests/functional/test_aarch64_smmu.py | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/tests/functional/test_aarch64_smmu.py b/tests/functional/test_aarch64_smmu.py > index c65d0f28178..e0f4a922176 100755 > --- a/tests/functional/test_aarch64_smmu.py > +++ b/tests/functional/test_aarch64_smmu.py > @@ -17,7 +17,7 @@ > > from qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pattern > from qemu_test import BUILD_DIR > -from qemu.utils import kvm_available > +from qemu.utils import kvm_available, hvf_available > > > class SMMU(LinuxKernelTest): > @@ -45,11 +45,17 @@ def set_up_boot(self, path): > self.vm.add_args('-device', 'virtio-net,netdev=n1' + self.IOMMU_ADDON) > > def common_vm_setup(self, kernel, initrd, disk): > - self.require_accelerator("kvm") > + if hvf_available(self.qemu_bin): > + accel = "hvf" > + elif kvm_available(self.qemu_bin): > + accel = "kvm" > + else: > + self.skipTest("Neither HVF nor KVM accelerator is available") > + self.require_accelerator(accel) I think this is fine so: Reviewed-by: Alex Bennée <alex.bennee@linaro.org> However I wonder if something like: hwaccel = self.require_hw_accelerator() Could fetch the appropriate platform accelerator for use in -accel bellow? > self.require_netdev('user') > self.set_machine("virt") > self.vm.add_args('-m', '1G') > - self.vm.add_args("-accel", "kvm") > + self.vm.add_args("-accel", accel) > self.vm.add_args("-cpu", "host") > self.vm.add_args("-machine", "iommu=smmuv3") > self.vm.add_args("-d", "guest_errors")
On 23/6/25 17:04, Alex Bennée wrote: > Philippe Mathieu-Daudé <philmd@linaro.org> writes: > >> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> --- >> tests/functional/test_aarch64_smmu.py | 12 +++++++++--- >> 1 file changed, 9 insertions(+), 3 deletions(-) >> >> diff --git a/tests/functional/test_aarch64_smmu.py b/tests/functional/test_aarch64_smmu.py >> index c65d0f28178..e0f4a922176 100755 >> --- a/tests/functional/test_aarch64_smmu.py >> +++ b/tests/functional/test_aarch64_smmu.py >> @@ -17,7 +17,7 @@ >> >> from qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pattern >> from qemu_test import BUILD_DIR >> -from qemu.utils import kvm_available >> +from qemu.utils import kvm_available, hvf_available >> >> >> class SMMU(LinuxKernelTest): >> @@ -45,11 +45,17 @@ def set_up_boot(self, path): >> self.vm.add_args('-device', 'virtio-net,netdev=n1' + self.IOMMU_ADDON) >> >> def common_vm_setup(self, kernel, initrd, disk): >> - self.require_accelerator("kvm") >> + if hvf_available(self.qemu_bin): >> + accel = "hvf" >> + elif kvm_available(self.qemu_bin): >> + accel = "kvm" >> + else: >> + self.skipTest("Neither HVF nor KVM accelerator is available") >> + self.require_accelerator(accel) > > I think this is fine so: > > Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Thanks. > However I wonder if something like: > > hwaccel = self.require_hw_accelerator() > > Could fetch the appropriate platform accelerator for use in -accel bellow? Then we'd need to make it per-host arch, and I'm pretty sure hw accelerators don't support the same features. So I'd expect a rather painful experience. WDYT?
Philippe Mathieu-Daudé <philmd@linaro.org> writes: > On 23/6/25 17:04, Alex Bennée wrote: >> Philippe Mathieu-Daudé <philmd@linaro.org> writes: >> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >>> --- >>> tests/functional/test_aarch64_smmu.py | 12 +++++++++--- >>> 1 file changed, 9 insertions(+), 3 deletions(-) >>> >>> diff --git a/tests/functional/test_aarch64_smmu.py b/tests/functional/test_aarch64_smmu.py >>> index c65d0f28178..e0f4a922176 100755 >>> --- a/tests/functional/test_aarch64_smmu.py >>> +++ b/tests/functional/test_aarch64_smmu.py >>> @@ -17,7 +17,7 @@ >>> from qemu_test import LinuxKernelTest, Asset, >>> exec_command_and_wait_for_pattern >>> from qemu_test import BUILD_DIR >>> -from qemu.utils import kvm_available >>> +from qemu.utils import kvm_available, hvf_available >>> class SMMU(LinuxKernelTest): >>> @@ -45,11 +45,17 @@ def set_up_boot(self, path): >>> self.vm.add_args('-device', 'virtio-net,netdev=n1' + self.IOMMU_ADDON) >>> def common_vm_setup(self, kernel, initrd, disk): >>> - self.require_accelerator("kvm") >>> + if hvf_available(self.qemu_bin): >>> + accel = "hvf" >>> + elif kvm_available(self.qemu_bin): >>> + accel = "kvm" >>> + else: >>> + self.skipTest("Neither HVF nor KVM accelerator is available") >>> + self.require_accelerator(accel) >> I think this is fine so: >> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> > > Thanks. > >> However I wonder if something like: >> hwaccel = self.require_hw_accelerator() >> Could fetch the appropriate platform accelerator for use in -accel >> bellow? > > Then we'd need to make it per-host arch, and I'm pretty sure hw > accelerators don't support the same features. So I'd expect a > rather painful experience. WDYT? Aren't the features a function of the machine type rather than the host? Shouldn't an -M virt machine look the same on TCG, KVM and HVF regardless of the underlying accelerator? I guess there are cases like split-irqchip which affect the implementation but hopefully not the guest view of things. Do you have an example?
diff --git a/tests/functional/test_aarch64_smmu.py b/tests/functional/test_aarch64_smmu.py index c65d0f28178..e0f4a922176 100755 --- a/tests/functional/test_aarch64_smmu.py +++ b/tests/functional/test_aarch64_smmu.py @@ -17,7 +17,7 @@ from qemu_test import LinuxKernelTest, Asset, exec_command_and_wait_for_pattern from qemu_test import BUILD_DIR -from qemu.utils import kvm_available +from qemu.utils import kvm_available, hvf_available class SMMU(LinuxKernelTest): @@ -45,11 +45,17 @@ def set_up_boot(self, path): self.vm.add_args('-device', 'virtio-net,netdev=n1' + self.IOMMU_ADDON) def common_vm_setup(self, kernel, initrd, disk): - self.require_accelerator("kvm") + if hvf_available(self.qemu_bin): + accel = "hvf" + elif kvm_available(self.qemu_bin): + accel = "kvm" + else: + self.skipTest("Neither HVF nor KVM accelerator is available") + self.require_accelerator(accel) self.require_netdev('user') self.set_machine("virt") self.vm.add_args('-m', '1G') - self.vm.add_args("-accel", "kvm") + self.vm.add_args("-accel", accel) self.vm.add_args("-cpu", "host") self.vm.add_args("-machine", "iommu=smmuv3") self.vm.add_args("-d", "guest_errors")
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- tests/functional/test_aarch64_smmu.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)