Message ID | 20240924221751.2688389-1-alistair.francis@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, 24 Sept 2024 at 23:18, Alistair Francis <alistair23@gmail.com> wrote: > > The following changes since commit 01dc65a3bc262ab1bec8fe89775e9bbfa627becb: > > Merge tag 'pull-target-arm-20240919' of https://git.linaro.org/people/pmaydell/qemu-arm into staging (2024-09-19 14:15:15 +0100) > > are available in the Git repository at: > > https://github.com/alistair23/qemu.git tags/pull-riscv-to-apply-20240925-1 > > for you to fetch changes up to 6bfa92c5757fe7a9580e1f6e065076777cae650f: > > bsd-user: Add RISC-V 64-bit Target Configuration and Debug XML Files (2024-09-24 12:53:16 +1000) > > ---------------------------------------------------------------- > RISC-V PR for 9.2 > > * Add a property to set vl to ceil(AVL/2) > * Enable numamem testing for RISC-V > * Consider MISA bit choice in implied rule > * Fix the za64rs priv spec requirements > * Enable Bit Manip for OpenTitan Ibex CPU > * Fix the group bit setting of AIA with KVM > * Stop timer with infinite timecmp > * Add 'fcsr' register to QEMU log as a part of F extension > * Fix riscv64 build on musl libc > * Add preliminary textra trigger CSR functions > * RISC-V IOMMU support > * RISC-V bsd-user support > * Respect firmware ELF entry point > * Add Svvptc extension support > * Fix masking of rv32 physical address > * Fix linking problem with semihosting disabled > * Fix IMSIC interrupt state updates > This fails the riscv qos-tests on s390x. My guess is that the new IOMMU support has endianness bugs and fails on bigendian hosts. https://gitlab.com/qemu-project/qemu/-/jobs/7942189143 full test log (4MB) at https://qemu-project.gitlab.io/-/qemu/-/jobs/7942189143/artifacts/build/meson-logs/testlog.txt The assertion failure is ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: assertion failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) but there are a lot of virtio errors before that so the problem probably happened rather earlier. thanks -- PMM
On Sat, 28 Sept 2024 at 12:34, Peter Maydell <peter.maydell@linaro.org> wrote: > > On Tue, 24 Sept 2024 at 23:18, Alistair Francis <alistair23@gmail.com> wrote: > > > > The following changes since commit 01dc65a3bc262ab1bec8fe89775e9bbfa627becb: > > > > Merge tag 'pull-target-arm-20240919' of https://git.linaro.org/people/pmaydell/qemu-arm into staging (2024-09-19 14:15:15 +0100) > > > > are available in the Git repository at: > > > > https://github.com/alistair23/qemu.git tags/pull-riscv-to-apply-20240925-1 > > > > for you to fetch changes up to 6bfa92c5757fe7a9580e1f6e065076777cae650f: > > > > bsd-user: Add RISC-V 64-bit Target Configuration and Debug XML Files (2024-09-24 12:53:16 +1000) > > > > ---------------------------------------------------------------- > > RISC-V PR for 9.2 > > > > * Add a property to set vl to ceil(AVL/2) > > * Enable numamem testing for RISC-V > > * Consider MISA bit choice in implied rule > > * Fix the za64rs priv spec requirements > > * Enable Bit Manip for OpenTitan Ibex CPU > > * Fix the group bit setting of AIA with KVM > > * Stop timer with infinite timecmp > > * Add 'fcsr' register to QEMU log as a part of F extension > > * Fix riscv64 build on musl libc > > * Add preliminary textra trigger CSR functions > > * RISC-V IOMMU support > > * RISC-V bsd-user support > > * Respect firmware ELF entry point > > * Add Svvptc extension support > > * Fix masking of rv32 physical address > > * Fix linking problem with semihosting disabled > > * Fix IMSIC interrupt state updates > > > > This fails the riscv qos-tests on s390x. My guess is that the new > IOMMU support has endianness bugs and fails on bigendian hosts. I have also noticed that the license text comments in the iommu patches are confused. That must be fixed before we can accept them. (see my reply to patch 16.) thanks -- PMM
On 9/28/24 8:34 AM, Peter Maydell wrote: > On Tue, 24 Sept 2024 at 23:18, Alistair Francis <alistair23@gmail.com> wrote: >> >> The following changes since commit 01dc65a3bc262ab1bec8fe89775e9bbfa627becb: >> >> Merge tag 'pull-target-arm-20240919' of https://git.linaro.org/people/pmaydell/qemu-arm into staging (2024-09-19 14:15:15 +0100) >> >> are available in the Git repository at: >> >> https://github.com/alistair23/qemu.git tags/pull-riscv-to-apply-20240925-1 >> >> for you to fetch changes up to 6bfa92c5757fe7a9580e1f6e065076777cae650f: >> >> bsd-user: Add RISC-V 64-bit Target Configuration and Debug XML Files (2024-09-24 12:53:16 +1000) >> >> ---------------------------------------------------------------- >> RISC-V PR for 9.2 >> >> * Add a property to set vl to ceil(AVL/2) >> * Enable numamem testing for RISC-V >> * Consider MISA bit choice in implied rule >> * Fix the za64rs priv spec requirements >> * Enable Bit Manip for OpenTitan Ibex CPU >> * Fix the group bit setting of AIA with KVM >> * Stop timer with infinite timecmp >> * Add 'fcsr' register to QEMU log as a part of F extension >> * Fix riscv64 build on musl libc >> * Add preliminary textra trigger CSR functions >> * RISC-V IOMMU support >> * RISC-V bsd-user support >> * Respect firmware ELF entry point >> * Add Svvptc extension support >> * Fix masking of rv32 physical address >> * Fix linking problem with semihosting disabled >> * Fix IMSIC interrupt state updates >> > > This fails the riscv qos-tests on s390x. My guess is that the new > IOMMU support has endianness bugs and fails on bigendian hosts. > > https://gitlab.com/qemu-project/qemu/-/jobs/7942189143 > > full test log (4MB) at > https://qemu-project.gitlab.io/-/qemu/-/jobs/7942189143/artifacts/build/meson-logs/testlog.txt > > The assertion failure is > ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: assertion > failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) The root cause is that the qtests I added aren't considering the endianess of the host. The RISC-V IOMMU is being implemented as LE only and all regs are being read/written in memory as LE. The qtest read/write helpers must take the qtest endianess into account. We make this type of handling in other qtest archs like ppc64. I have a fix for the tests but I'm unable to run the ubuntu-22.04-s390x-all-system job to verify it, even after setting Cirrus like Thomas taught me a week ago. In fact I have no 'ubuntu-22-*' jobs available to run. If there's a way to run these ubuntu s390x tests, let me know. Otherwise I'm inclined to remove the IOMMU qtests for now until I'm able to verify that they'll work in a BE host (I'll install a BE VM to verify). I also saw that you made comments in one of the patches w.r.t license text and other changes in the base code. I'll get to it. Thanks, Daniel > > but there are a lot of virtio errors before that so the > problem probably happened rather earlier. > > thanks > -- PMM >
On Sat, 28 Sept 2024 at 21:40, Daniel Henrique Barboza <dbarboza@ventanamicro.com> wrote: > > > > On 9/28/24 8:34 AM, Peter Maydell wrote: > > The assertion failure is > > ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: assertion > > failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) > > The root cause is that the qtests I added aren't considering the endianess of the > host. The RISC-V IOMMU is being implemented as LE only and all regs are being > read/written in memory as LE. The qtest read/write helpers must take the qtest > endianess into account. We make this type of handling in other qtest archs like > ppc64. > > I have a fix for the tests but I'm unable to run the ubuntu-22.04-s390x-all-system > job to verify it, even after setting Cirrus like Thomas taught me a week ago. In > fact I have no 'ubuntu-22-*' jobs available to run. It's on the private s390 VM we have, so it's set up only to be available on the main CI run (there's not enough capacity on the machine to do any more than that). If you want to point me at a gitlab branch I can do a quick "make check" on that if you like. thanks -- PMM
On 9/29/24 12:38 PM, Peter Maydell wrote: > On Sat, 28 Sept 2024 at 21:40, Daniel Henrique Barboza > <dbarboza@ventanamicro.com> wrote: >> >> >> >> On 9/28/24 8:34 AM, Peter Maydell wrote: >>> The assertion failure is >>> ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: assertion >>> failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) >> >> The root cause is that the qtests I added aren't considering the endianess of the >> host. The RISC-V IOMMU is being implemented as LE only and all regs are being >> read/written in memory as LE. The qtest read/write helpers must take the qtest >> endianess into account. We make this type of handling in other qtest archs like >> ppc64. >> >> I have a fix for the tests but I'm unable to run the ubuntu-22.04-s390x-all-system >> job to verify it, even after setting Cirrus like Thomas taught me a week ago. In >> fact I have no 'ubuntu-22-*' jobs available to run. > > It's on the private s390 VM we have, so it's set up only to > be available on the main CI run (there's not enough capacity > on the machine to do any more than that). If you want to point > me at a gitlab branch I can do a quick "make check" on that > if you like. I appreciate it. This is the repo: https://gitlab.com/danielhb/qemu/-/tree/pull_fix If this is enough to fix the tests, I'll amend it in the new IOMMU version. If we still failing then I'll need to set this s390 VM. By the way, if you have any recipe/pointers to set this s390 VM to share, that would be great. Thanks, Daniel > > thanks > -- PMM
On Sun, 29 Sept 2024 at 21:53, Daniel Henrique Barboza <dbarboza@ventanamicro.com> wrote: > > > > On 9/29/24 12:38 PM, Peter Maydell wrote: > > On Sat, 28 Sept 2024 at 21:40, Daniel Henrique Barboza > > <dbarboza@ventanamicro.com> wrote: > >> > >> > >> > >> On 9/28/24 8:34 AM, Peter Maydell wrote: > >>> The assertion failure is > >>> ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: assertion > >>> failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) > >> > >> The root cause is that the qtests I added aren't considering the endianess of the > >> host. The RISC-V IOMMU is being implemented as LE only and all regs are being > >> read/written in memory as LE. The qtest read/write helpers must take the qtest > >> endianess into account. We make this type of handling in other qtest archs like > >> ppc64. > >> > >> I have a fix for the tests but I'm unable to run the ubuntu-22.04-s390x-all-system > >> job to verify it, even after setting Cirrus like Thomas taught me a week ago. In > >> fact I have no 'ubuntu-22-*' jobs available to run. > > > > It's on the private s390 VM we have, so it's set up only to > > be available on the main CI run (there's not enough capacity > > on the machine to do any more than that). If you want to point > > me at a gitlab branch I can do a quick "make check" on that > > if you like. > > I appreciate it. This is the repo: > > https://gitlab.com/danielhb/qemu/-/tree/pull_fix This doesn't fix the assertion. This is because the test (now) does: qpci_memread(&r_iommu->dev, r_iommu->reg_bar, reg_offset, ®, sizeof(reg)); if (riscv_iommu_qtest_big_endian()) { reg = bswap32(reg); } where riscv_iommu_qtest_big_endian() is a wrapper for qtest_big_endian(). But qtest_big_endian() queries the endianness of the *guest*, and so for riscv it will always return false and we will never bswap. If you need to do swapping inline in a test you can use reg = le32_to_cpu(reg); which swaps an LE value read from the guest to the host CPU's endianness ordering (and similarly with cpu_to_le32 on the write path). But it turns out that libqos provides already functions to read/write 32 and 64 bit values from PCI devices: reg = qpci_io_readl(&r_iommu->dev, r_iommu->reg_bar, reg_offset); which do the byteswap for you. Similarly qpci_io_writel() etc. (The functions work for both IO and MEM PCI BARs.) > If this is enough to fix the tests, I'll amend it in the new IOMMU version. > If we still failing then I'll need to set this s390 VM. > > By the way, if you have any recipe/pointers to set this s390 VM to share, > that would be great. It's a VM provided by IBM under their "Community Cloud" umbrella: https://community.ibm.com/zsystems/l1cc/ thanks -- PMM
On 29/09/2024 22.53, Daniel Henrique Barboza wrote: > > > On 9/29/24 12:38 PM, Peter Maydell wrote: >> On Sat, 28 Sept 2024 at 21:40, Daniel Henrique Barboza >> <dbarboza@ventanamicro.com> wrote: >>> >>> >>> >>> On 9/28/24 8:34 AM, Peter Maydell wrote: >>>> The assertion failure is >>>> ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: assertion >>>> failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) >>> >>> The root cause is that the qtests I added aren't considering the >>> endianess of the >>> host. The RISC-V IOMMU is being implemented as LE only and all regs are >>> being >>> read/written in memory as LE. The qtest read/write helpers must take the >>> qtest >>> endianess into account. We make this type of handling in other qtest >>> archs like >>> ppc64. >>> >>> I have a fix for the tests but I'm unable to run the ubuntu-22.04-s390x- >>> all-system >>> job to verify it, even after setting Cirrus like Thomas taught me a week >>> ago. In >>> fact I have no 'ubuntu-22-*' jobs available to run. >> >> It's on the private s390 VM we have, so it's set up only to >> be available on the main CI run (there's not enough capacity >> on the machine to do any more than that). If you want to point >> me at a gitlab branch I can do a quick "make check" on that >> if you like. > > I appreciate it. This is the repo: > > https://gitlab.com/danielhb/qemu/-/tree/pull_fix > > If this is enough to fix the tests, I'll amend it in the new IOMMU version. > If we still failing then I'll need to set this s390 VM. > > By the way, if you have any recipe/pointers to set this s390 VM to share, > that would be great. You can also use Travis-CI for testing QEMU on a s390x host, see e.g. my runs here: https://app.travis-ci.com/github/huth/qemu You just need a github account and set up the Travis-CI for that repository there - only caveat: in case you run out of open source credits, you've got to ask the Travis support for granting you new credits (seems like one has to do it a year from what I experienced in the past). HTH, Thomas
On 30/09/2024 12.58, Thomas Huth wrote: > On 29/09/2024 22.53, Daniel Henrique Barboza wrote: >> >> >> On 9/29/24 12:38 PM, Peter Maydell wrote: >>> On Sat, 28 Sept 2024 at 21:40, Daniel Henrique Barboza >>> <dbarboza@ventanamicro.com> wrote: >>>> >>>> >>>> >>>> On 9/28/24 8:34 AM, Peter Maydell wrote: >>>>> The assertion failure is >>>>> ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: assertion >>>>> failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) >>>> >>>> The root cause is that the qtests I added aren't considering the >>>> endianess of the >>>> host. The RISC-V IOMMU is being implemented as LE only and all regs are >>>> being >>>> read/written in memory as LE. The qtest read/write helpers must take the >>>> qtest >>>> endianess into account. We make this type of handling in other qtest >>>> archs like >>>> ppc64. >>>> >>>> I have a fix for the tests but I'm unable to run the ubuntu-22.04-s390x- >>>> all-system >>>> job to verify it, even after setting Cirrus like Thomas taught me a week >>>> ago. In >>>> fact I have no 'ubuntu-22-*' jobs available to run. >>> >>> It's on the private s390 VM we have, so it's set up only to >>> be available on the main CI run (there's not enough capacity >>> on the machine to do any more than that). If you want to point >>> me at a gitlab branch I can do a quick "make check" on that >>> if you like. >> >> I appreciate it. This is the repo: >> >> https://gitlab.com/danielhb/qemu/-/tree/pull_fix >> >> If this is enough to fix the tests, I'll amend it in the new IOMMU version. >> If we still failing then I'll need to set this s390 VM. >> >> By the way, if you have any recipe/pointers to set this s390 VM to share, >> that would be great. > > You can also use Travis-CI for testing QEMU on a s390x host, see e.g. my > runs here: > > https://app.travis-ci.com/github/huth/qemu ... apart from the fact, that it currently seems to be completely broken again :-( ... I guess that means: Never mind, sorry for the distraction! Thomas
On 9/30/24 7:48 AM, Peter Maydell wrote: > On Sun, 29 Sept 2024 at 21:53, Daniel Henrique Barboza > <dbarboza@ventanamicro.com> wrote: >> >> >> >> On 9/29/24 12:38 PM, Peter Maydell wrote: >>> On Sat, 28 Sept 2024 at 21:40, Daniel Henrique Barboza >>> <dbarboza@ventanamicro.com> wrote: >>>> >>>> >>>> >>>> On 9/28/24 8:34 AM, Peter Maydell wrote: >>>>> The assertion failure is >>>>> ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: assertion >>>>> failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) >>>> >>>> The root cause is that the qtests I added aren't considering the endianess of the >>>> host. The RISC-V IOMMU is being implemented as LE only and all regs are being >>>> read/written in memory as LE. The qtest read/write helpers must take the qtest >>>> endianess into account. We make this type of handling in other qtest archs like >>>> ppc64. >>>> >>>> I have a fix for the tests but I'm unable to run the ubuntu-22.04-s390x-all-system >>>> job to verify it, even after setting Cirrus like Thomas taught me a week ago. In >>>> fact I have no 'ubuntu-22-*' jobs available to run. >>> >>> It's on the private s390 VM we have, so it's set up only to >>> be available on the main CI run (there's not enough capacity >>> on the machine to do any more than that). If you want to point >>> me at a gitlab branch I can do a quick "make check" on that >>> if you like. >> >> I appreciate it. This is the repo: >> >> https://gitlab.com/danielhb/qemu/-/tree/pull_fix > > This doesn't fix the assertion. This is because the test (now) does: > > qpci_memread(&r_iommu->dev, r_iommu->reg_bar, reg_offset, > ®, sizeof(reg)); > > if (riscv_iommu_qtest_big_endian()) { > reg = bswap32(reg); > } > > where riscv_iommu_qtest_big_endian() is a wrapper for > qtest_big_endian(). But qtest_big_endian() queries the > endianness of the *guest*, and so for riscv it will > always return false and we will never bswap. Ooops. My bad. > > If you need to do swapping inline in a test you can use > reg = le32_to_cpu(reg); > which swaps an LE value read from the guest to the host > CPU's endianness ordering (and similarly with cpu_to_le32 > on the write path). > > But it turns out that libqos provides already functions > to read/write 32 and 64 bit values from PCI devices: > reg = qpci_io_readl(&r_iommu->dev, r_iommu->reg_bar, reg_offset); > which do the byteswap for you. > Similarly qpci_io_writel() etc. (The functions work for > both IO and MEM PCI BARs.) I'll convert the tests to use qcpi_io_readl/writel and friends. Hopefully this will fix it. > >> If this is enough to fix the tests, I'll amend it in the new IOMMU version. >> If we still failing then I'll need to set this s390 VM. >> >> By the way, if you have any recipe/pointers to set this s390 VM to share, >> that would be great. > > It's a VM provided by IBM under their "Community Cloud" > umbrella: https://community.ibm.com/zsystems/l1cc/ I'll see if I can get something going with the IBM community cloud, but I wonder how hard it is to launch a s390x TCG guest with Ubuntu. The image is freely available: https://cdimage.ubuntu.com/releases/jammy/release/ubuntu-22.04.5-live-server-s390x.iso But I'm unsure of whether we need some secret sauce/paid key to do the install. Thomas, do you have more info? Thanks, Daniel > > thanks > -- PMM
On Sat, 2024-09-28 at 17:40 -0300, Daniel Henrique Barboza wrote: > > > On 9/28/24 8:34 AM, Peter Maydell wrote: > > On Tue, 24 Sept 2024 at 23:18, Alistair Francis > > <alistair23@gmail.com> wrote: > > > > > > The following changes since commit > > > 01dc65a3bc262ab1bec8fe89775e9bbfa627becb: > > > > > > Merge tag 'pull-target-arm-20240919' of > > > https://git.linaro.org/people/pmaydell/qemu-arm into staging > > > (2024-09-19 14:15:15 +0100) > > > > > > are available in the Git repository at: > > > > > > https://github.com/alistair23/qemu.git tags/pull-riscv-to- > > > apply-20240925-1 > > > > > > for you to fetch changes up to > > > 6bfa92c5757fe7a9580e1f6e065076777cae650f: > > > > > > bsd-user: Add RISC-V 64-bit Target Configuration and Debug XML > > > Files (2024-09-24 12:53:16 +1000) > > > > > > ---------------------------------------------------------------- > > > RISC-V PR for 9.2 > > > > > > * Add a property to set vl to ceil(AVL/2) > > > * Enable numamem testing for RISC-V > > > * Consider MISA bit choice in implied rule > > > * Fix the za64rs priv spec requirements > > > * Enable Bit Manip for OpenTitan Ibex CPU > > > * Fix the group bit setting of AIA with KVM > > > * Stop timer with infinite timecmp > > > * Add 'fcsr' register to QEMU log as a part of F extension > > > * Fix riscv64 build on musl libc > > > * Add preliminary textra trigger CSR functions > > > * RISC-V IOMMU support > > > * RISC-V bsd-user support > > > * Respect firmware ELF entry point > > > * Add Svvptc extension support > > > * Fix masking of rv32 physical address > > > * Fix linking problem with semihosting disabled > > > * Fix IMSIC interrupt state updates > > > > > > > This fails the riscv qos-tests on s390x. My guess is that the new > > IOMMU support has endianness bugs and fails on bigendian hosts. > > > > https://gitlab.com/qemu-project/qemu/-/jobs/7942189143 > > > > full test log (4MB) at > > https://qemu-project.gitlab.io/-/qemu/-/jobs/7942189143/artifacts/build/meson-logs/testlog.txt > > > > The assertion failure is > > ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: > > assertion > > failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) > > The root cause is that the qtests I added aren't considering the > endianess of the > host. The RISC-V IOMMU is being implemented as LE only and all regs > are being > read/written in memory as LE. The qtest read/write helpers must take > the qtest > endianess into account. We make this type of handling in other qtest > archs like > ppc64. > > I have a fix for the tests but I'm unable to run the ubuntu-22.04- > s390x-all-system > job to verify it, even after setting Cirrus like Thomas taught me a > week ago. In > fact I have no 'ubuntu-22-*' jobs available to run. > > If there's a way to run these ubuntu s390x tests, let me know. > Otherwise I'm inclined > to remove the IOMMU qtests for now until I'm able to verify that > they'll work in a > BE host (I'll install a BE VM to verify). You can get a free s390x VM here: https://linuxone.cloud.marist.edu/#/register?flag=VM Best regards, Ilya [...]
On 9/30/24 9:10 AM, Ilya Leoshkevich wrote: > On Sat, 2024-09-28 at 17:40 -0300, Daniel Henrique Barboza wrote: >> >> >> On 9/28/24 8:34 AM, Peter Maydell wrote: >>> On Tue, 24 Sept 2024 at 23:18, Alistair Francis >>> <alistair23@gmail.com> wrote: >>>> >>>> The following changes since commit >>>> 01dc65a3bc262ab1bec8fe89775e9bbfa627becb: >>>> >>>> Merge tag 'pull-target-arm-20240919' of >>>> https://git.linaro.org/people/pmaydell/qemu-arm into staging >>>> (2024-09-19 14:15:15 +0100) >>>> >>>> are available in the Git repository at: >>>> >>>> https://github.com/alistair23/qemu.git tags/pull-riscv-to- >>>> apply-20240925-1 >>>> >>>> for you to fetch changes up to >>>> 6bfa92c5757fe7a9580e1f6e065076777cae650f: >>>> >>>> bsd-user: Add RISC-V 64-bit Target Configuration and Debug XML >>>> Files (2024-09-24 12:53:16 +1000) >>>> >>>> ---------------------------------------------------------------- >>>> RISC-V PR for 9.2 >>>> >>>> * Add a property to set vl to ceil(AVL/2) >>>> * Enable numamem testing for RISC-V >>>> * Consider MISA bit choice in implied rule >>>> * Fix the za64rs priv spec requirements >>>> * Enable Bit Manip for OpenTitan Ibex CPU >>>> * Fix the group bit setting of AIA with KVM >>>> * Stop timer with infinite timecmp >>>> * Add 'fcsr' register to QEMU log as a part of F extension >>>> * Fix riscv64 build on musl libc >>>> * Add preliminary textra trigger CSR functions >>>> * RISC-V IOMMU support >>>> * RISC-V bsd-user support >>>> * Respect firmware ELF entry point >>>> * Add Svvptc extension support >>>> * Fix masking of rv32 physical address >>>> * Fix linking problem with semihosting disabled >>>> * Fix IMSIC interrupt state updates >>>> >>> >>> This fails the riscv qos-tests on s390x. My guess is that the new >>> IOMMU support has endianness bugs and fails on bigendian hosts. >>> >>> https://gitlab.com/qemu-project/qemu/-/jobs/7942189143 >>> >>> full test log (4MB) at >>> https://qemu-project.gitlab.io/-/qemu/-/jobs/7942189143/artifacts/build/meson-logs/testlog.txt >>> >>> The assertion failure is >>> ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: >>> assertion >>> failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) >> >> The root cause is that the qtests I added aren't considering the >> endianess of the >> host. The RISC-V IOMMU is being implemented as LE only and all regs >> are being >> read/written in memory as LE. The qtest read/write helpers must take >> the qtest >> endianess into account. We make this type of handling in other qtest >> archs like >> ppc64. >> >> I have a fix for the tests but I'm unable to run the ubuntu-22.04- >> s390x-all-system >> job to verify it, even after setting Cirrus like Thomas taught me a >> week ago. In >> fact I have no 'ubuntu-22-*' jobs available to run. >> >> If there's a way to run these ubuntu s390x tests, let me know. >> Otherwise I'm inclined >> to remove the IOMMU qtests for now until I'm able to verify that >> they'll work in a >> BE host (I'll install a BE VM to verify). > > You can get a free s390x VM here: > > https://linuxone.cloud.marist.edu/#/register?flag=VM Thanks! This was surprisingly easy to set up and run. Please send my best regards to the LinuxOne Community Cloud team. Peter, in fact there were some endianness problems in the code like you hinted before. I fixed them up and the tests are now (apparently) passing. I'll clean stuff up and see if I can send a new version of the whole series in the next few days. Thanks, Daniel > > Best regards, > Ilya > > [...]
On 30/09/2024 13.35, Thomas Huth wrote: > On 30/09/2024 12.58, Thomas Huth wrote: >> On 29/09/2024 22.53, Daniel Henrique Barboza wrote: >>> >>> >>> On 9/29/24 12:38 PM, Peter Maydell wrote: >>>> On Sat, 28 Sept 2024 at 21:40, Daniel Henrique Barboza >>>> <dbarboza@ventanamicro.com> wrote: >>>>> >>>>> >>>>> >>>>> On 9/28/24 8:34 AM, Peter Maydell wrote: >>>>>> The assertion failure is >>>>>> ERROR:../tests/qtest/riscv-iommu-test.c:72:test_reg_reset: assertion >>>>>> failed (cap & RISCV_IOMMU_CAP_VERSION == 0x10): (0 == 16) >>>>> >>>>> The root cause is that the qtests I added aren't considering the >>>>> endianess of the >>>>> host. The RISC-V IOMMU is being implemented as LE only and all regs are >>>>> being >>>>> read/written in memory as LE. The qtest read/write helpers must take >>>>> the qtest >>>>> endianess into account. We make this type of handling in other qtest >>>>> archs like >>>>> ppc64. >>>>> >>>>> I have a fix for the tests but I'm unable to run the ubuntu-22.04- >>>>> s390x- all-system >>>>> job to verify it, even after setting Cirrus like Thomas taught me a >>>>> week ago. In >>>>> fact I have no 'ubuntu-22-*' jobs available to run. >>>> >>>> It's on the private s390 VM we have, so it's set up only to >>>> be available on the main CI run (there's not enough capacity >>>> on the machine to do any more than that). If you want to point >>>> me at a gitlab branch I can do a quick "make check" on that >>>> if you like. >>> >>> I appreciate it. This is the repo: >>> >>> https://gitlab.com/danielhb/qemu/-/tree/pull_fix >>> >>> If this is enough to fix the tests, I'll amend it in the new IOMMU version. >>> If we still failing then I'll need to set this s390 VM. >>> >>> By the way, if you have any recipe/pointers to set this s390 VM to share, >>> that would be great. >> >> You can also use Travis-CI for testing QEMU on a s390x host, see e.g. my >> runs here: >> >> https://app.travis-ci.com/github/huth/qemu > > ... apart from the fact, that it currently seems to be completely broken > again :-( ... I guess that means: Never mind, sorry for the distraction! FWIW, it seems to be working again: https://app.travis-ci.com/github/huth/qemu/builds/272812225 Thomas