From: "Alex Bennée" <alex.bennee@linaro.org>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org
Subject: Re: [PATCH v3 00/34] target/arm: Implement ARMv8.1-VHE
Date: Mon, 05 Aug 2019 14:02:26 +0100 [thread overview]
Message-ID: <8736ifkbod.fsf@linaro.org> (raw)
In-Reply-To: <20190803184800.8221-1-richard.henderson@linaro.org>
Richard Henderson <richard.henderson@linaro.org> writes:
> About half of this patch set is cleanup of the qemu tlb handling
> leading up to the actual implementation of VHE, and the biggest
> piece of that: The EL2&0 translation regime.
>
> Changes since v2:
> * arm_mmu_idx was incomplete; test TGE+E2H not just E2H.
> * arm_sctlr was incomplete; now uses arm_mmu_idx to avoid
> duplication of tests.
> * Update aa64_zva_access and ctr_el0_access for EL2.
>
> Changes since v1:
> * Merge feedback from AJB.
> * Split out 7 renaming patches from "Reorganize ARMMMUIdx".
> * Alex's MIDR patch keeps the nested KVM from spitting warnings.
>
> I have tested
>
> qemu-system-aarch64 -accel kvm -cpu host -M virt,gic-version-host \
> -m 512 -bios /usr/share/edk2/aarch64/QEMU_EFI.fd -nographic
So testing with a host doing:
./aarch64-softmmu/qemu-system-aarch64 -machine type=virt,virtualization=on -cpu cortex-a57 -serial mon:stdio -nic user,model=virtio-net-pci,hostfwd=tcp::2222-:22 -device virtio-scsi-pci -drive file=/dev/zvol/hackpool-0/debian-buster-arm64,id=hd0,index=0,if=none,format=raw,discard=on -device scsi-hd,drive=hd0 -kernel ../linux.git/builds/arm64/arch/arm64/boot/Image -append "console=ttyAMA0 root=/dev/sda2" -display none -m 4096 -smp 8
And a guest doing:
./aarch64-softmmu/qemu-system-aarch64 -machine type=virt -cpu host
-serial mon:stdio -nic user,model=virtio-net-pci -device
virtio-scsi-pci -kernel /boot/vmlinuz-4.19.0-5-arm64 -append "console=ttyAMA0 panic=-1" -display none -m 256 -smp 4 --no-reboot
--enable-kvm
I triggered:
ERROR:/home/alex.bennee/lsrc/qemu.git/target/arm/helper.c:3436:update_lpae_el1_asid: code should not be reached
fish: “./aarch64-softmmu/qemu-system-a…” terminated by signal SIGABRT (Abort)
With -cpu max on the host it hangs the whole thing. I'm going to
continue to experiment with explicit GIC versions.
>
> with fedora 30 system qemu, itself booted with
>
> ../bld/aarch64-softmmu/qemu-system-aarch64 \
> -cpu max -M virt,gic-version=3,virtualization=on \
> -drive if=virtio,file=./f30.q,format=qcow2 \
> -m 4G -nographic
>
> It took a while, but eventually the nested bios arrived at the
> pxe boot sequence. Thankfully (?), the f30 shipped bios has
> debug enabled, so there's some sense of progress in the meantime.
>
>
> r~
>
>
> Alex Bennée (2):
> target/arm: check TGE and E2H flags for EL0 pauth traps
> target/arm: generate a custom MIDR for -cpu max
>
> Richard Henderson (32):
> cputlb: Add tlb_set_asid_for_mmuidx
> cputlb: Add tlb_flush_asid_by_mmuidx and friends
> target/arm: Install ASIDs for long-form from EL1
> target/arm: Install ASIDs for short-form from EL1
> target/arm: Install ASIDs for EL2
> target/arm: Define isar_feature_aa64_vh
> target/arm: Enable HCR_E2H for VHE
> target/arm: Add CONTEXTIDR_EL2
> target/arm: Add TTBR1_EL2
> target/arm: Update CNTVCT_EL0 for VHE
> target/arm: Add the hypervisor virtual counter
> target/arm: Add VHE system register redirection and aliasing
> target/arm: Split out vae1_tlbmask, vmalle1_tlbmask
> target/arm: Simplify tlb_force_broadcast alternatives
> target/arm: Rename ARMMMUIdx*_S12NSE* to ARMMMUIdx*_E10_*
> target/arm: Rename ARMMMUIdx_S2NS to ARMMMUIdx_Stage2
> target/arm: Rename ARMMMUIdx_S1NSE* to ARMMMUIdx_Stage1_E*
> target/arm: Rename ARMMMUIdx_S1SE* to ARMMMUIdx_SE*
> target/arm: Rename ARMMMUIdx*_S1E3 to ARMMMUIdx*_SE3
> target/arm: Rename ARMMMUIdx_S1E2 to ARMMMUIdx_E2
> target/arm: Reorganize ARMMMUIdx
> target/arm: Add regime_has_2_ranges
> target/arm: Update arm_mmu_idx for VHE
> target/arm: Update arm_sctlr for VHE
> target/arm: Update aa64_zva_access for EL2
> target/arm: Update ctr_el0_access for EL2
> target/arm: Install asids for E2&0 translation regime
> target/arm: Flush tlbs for E2&0 translation regime
> target/arm: Update arm_phys_excp_target_el for TGE
> target/arm: Update regime_is_user for EL2&0
> target/arm: Update {fp,sve}_exception_el for VHE
> target/arm: Enable ARMv8.1-VHE in -cpu max
>
> include/exec/cpu-all.h | 11 +
> include/exec/cpu-defs.h | 2 +
> include/exec/exec-all.h | 35 ++
> include/qom/cpu.h | 2 +
> target/arm/cpu-qom.h | 1 +
> target/arm/cpu.h | 261 ++++-----
> target/arm/internals.h | 62 ++-
> target/arm/translate.h | 2 +-
> accel/tcg/cputlb.c | 81 +++
> target/arm/cpu.c | 2 +
> target/arm/cpu64.c | 20 +
> target/arm/debug_helper.c | 50 +-
> target/arm/helper-a64.c | 2 +-
> target/arm/helper.c | 1042 +++++++++++++++++++++++++-----------
> target/arm/m_helper.c | 6 +-
> target/arm/pauth_helper.c | 13 +-
> target/arm/translate-a64.c | 13 +-
> target/arm/translate.c | 17 +-
> 18 files changed, 1134 insertions(+), 488 deletions(-)
--
Alex Bennée
WARNING: multiple messages have this Message-ID (diff)
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v3 00/34] target/arm: Implement ARMv8.1-VHE
Date: Mon, 05 Aug 2019 14:02:26 +0100 [thread overview]
Message-ID: <8736ifkbod.fsf@linaro.org> (raw)
In-Reply-To: <20190803184800.8221-1-richard.henderson@linaro.org>
Richard Henderson <richard.henderson@linaro.org> writes:
> About half of this patch set is cleanup of the qemu tlb handling
> leading up to the actual implementation of VHE, and the biggest
> piece of that: The EL2&0 translation regime.
>
> Changes since v2:
> * arm_mmu_idx was incomplete; test TGE+E2H not just E2H.
> * arm_sctlr was incomplete; now uses arm_mmu_idx to avoid
> duplication of tests.
> * Update aa64_zva_access and ctr_el0_access for EL2.
>
> Changes since v1:
> * Merge feedback from AJB.
> * Split out 7 renaming patches from "Reorganize ARMMMUIdx".
> * Alex's MIDR patch keeps the nested KVM from spitting warnings.
>
> I have tested
>
> qemu-system-aarch64 -accel kvm -cpu host -M virt,gic-version-host \
> -m 512 -bios /usr/share/edk2/aarch64/QEMU_EFI.fd -nographic
So testing with a host doing:
./aarch64-softmmu/qemu-system-aarch64 -machine type=virt,virtualization=on -cpu cortex-a57 -serial mon:stdio -nic user,model=virtio-net-pci,hostfwd=tcp::2222-:22 -device virtio-scsi-pci -drive file=/dev/zvol/hackpool-0/debian-buster-arm64,id=hd0,index=0,if=none,format=raw,discard=on -device scsi-hd,drive=hd0 -kernel ../linux.git/builds/arm64/arch/arm64/boot/Image -append "console=ttyAMA0 root=/dev/sda2" -display none -m 4096 -smp 8
And a guest doing:
./aarch64-softmmu/qemu-system-aarch64 -machine type=virt -cpu host
-serial mon:stdio -nic user,model=virtio-net-pci -device
virtio-scsi-pci -kernel /boot/vmlinuz-4.19.0-5-arm64 -append "console=ttyAMA0 panic=-1" -display none -m 256 -smp 4 --no-reboot
--enable-kvm
I triggered:
ERROR:/home/alex.bennee/lsrc/qemu.git/target/arm/helper.c:3436:update_lpae_el1_asid: code should not be reached
fish: “./aarch64-softmmu/qemu-system-a…” terminated by signal SIGABRT (Abort)
With -cpu max on the host it hangs the whole thing. I'm going to
continue to experiment with explicit GIC versions.
>
> with fedora 30 system qemu, itself booted with
>
> ../bld/aarch64-softmmu/qemu-system-aarch64 \
> -cpu max -M virt,gic-version=3,virtualization=on \
> -drive if=virtio,file=./f30.q,format=qcow2 \
> -m 4G -nographic
>
> It took a while, but eventually the nested bios arrived at the
> pxe boot sequence. Thankfully (?), the f30 shipped bios has
> debug enabled, so there's some sense of progress in the meantime.
>
>
> r~
>
>
> Alex Bennée (2):
> target/arm: check TGE and E2H flags for EL0 pauth traps
> target/arm: generate a custom MIDR for -cpu max
>
> Richard Henderson (32):
> cputlb: Add tlb_set_asid_for_mmuidx
> cputlb: Add tlb_flush_asid_by_mmuidx and friends
> target/arm: Install ASIDs for long-form from EL1
> target/arm: Install ASIDs for short-form from EL1
> target/arm: Install ASIDs for EL2
> target/arm: Define isar_feature_aa64_vh
> target/arm: Enable HCR_E2H for VHE
> target/arm: Add CONTEXTIDR_EL2
> target/arm: Add TTBR1_EL2
> target/arm: Update CNTVCT_EL0 for VHE
> target/arm: Add the hypervisor virtual counter
> target/arm: Add VHE system register redirection and aliasing
> target/arm: Split out vae1_tlbmask, vmalle1_tlbmask
> target/arm: Simplify tlb_force_broadcast alternatives
> target/arm: Rename ARMMMUIdx*_S12NSE* to ARMMMUIdx*_E10_*
> target/arm: Rename ARMMMUIdx_S2NS to ARMMMUIdx_Stage2
> target/arm: Rename ARMMMUIdx_S1NSE* to ARMMMUIdx_Stage1_E*
> target/arm: Rename ARMMMUIdx_S1SE* to ARMMMUIdx_SE*
> target/arm: Rename ARMMMUIdx*_S1E3 to ARMMMUIdx*_SE3
> target/arm: Rename ARMMMUIdx_S1E2 to ARMMMUIdx_E2
> target/arm: Reorganize ARMMMUIdx
> target/arm: Add regime_has_2_ranges
> target/arm: Update arm_mmu_idx for VHE
> target/arm: Update arm_sctlr for VHE
> target/arm: Update aa64_zva_access for EL2
> target/arm: Update ctr_el0_access for EL2
> target/arm: Install asids for E2&0 translation regime
> target/arm: Flush tlbs for E2&0 translation regime
> target/arm: Update arm_phys_excp_target_el for TGE
> target/arm: Update regime_is_user for EL2&0
> target/arm: Update {fp,sve}_exception_el for VHE
> target/arm: Enable ARMv8.1-VHE in -cpu max
>
> include/exec/cpu-all.h | 11 +
> include/exec/cpu-defs.h | 2 +
> include/exec/exec-all.h | 35 ++
> include/qom/cpu.h | 2 +
> target/arm/cpu-qom.h | 1 +
> target/arm/cpu.h | 261 ++++-----
> target/arm/internals.h | 62 ++-
> target/arm/translate.h | 2 +-
> accel/tcg/cputlb.c | 81 +++
> target/arm/cpu.c | 2 +
> target/arm/cpu64.c | 20 +
> target/arm/debug_helper.c | 50 +-
> target/arm/helper-a64.c | 2 +-
> target/arm/helper.c | 1042 +++++++++++++++++++++++++-----------
> target/arm/m_helper.c | 6 +-
> target/arm/pauth_helper.c | 13 +-
> target/arm/translate-a64.c | 13 +-
> target/arm/translate.c | 17 +-
> 18 files changed, 1134 insertions(+), 488 deletions(-)
--
Alex Bennée
next prev parent reply other threads:[~2019-08-05 13:02 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-03 18:47 [PATCH v3 00/34] target/arm: Implement ARMv8.1-VHE Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 01/34] cputlb: Add tlb_set_asid_for_mmuidx Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 02/34] cputlb: Add tlb_flush_asid_by_mmuidx and friends Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 03/34] target/arm: Install ASIDs for long-form from EL1 Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 04/34] target/arm: Install ASIDs for short-form " Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 05/34] target/arm: Install ASIDs for EL2 Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 06/34] target/arm: Define isar_feature_aa64_vh Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 07/34] target/arm: Enable HCR_E2H for VHE Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 08/34] target/arm: Add CONTEXTIDR_EL2 Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 09/34] target/arm: Add TTBR1_EL2 Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 10/34] target/arm: Update CNTVCT_EL0 for VHE Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 11/34] target/arm: Add the hypervisor virtual counter Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 12/34] target/arm: Add VHE system register redirection and aliasing Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-05 11:25 ` Alex Bennée
2019-08-05 11:25 ` [Qemu-devel] " Alex Bennée
2019-08-03 18:47 ` [PATCH v3 13/34] target/arm: Split out vae1_tlbmask, vmalle1_tlbmask Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 14/34] target/arm: Simplify tlb_force_broadcast alternatives Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 15/34] target/arm: Rename ARMMMUIdx*_S12NSE* to ARMMMUIdx*_E10_* Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 16/34] target/arm: Rename ARMMMUIdx_S2NS to ARMMMUIdx_Stage2 Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 17/34] target/arm: Rename ARMMMUIdx_S1NSE* to ARMMMUIdx_Stage1_E* Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 18/34] target/arm: Rename ARMMMUIdx_S1SE* to ARMMMUIdx_SE* Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 19/34] target/arm: Rename ARMMMUIdx*_S1E3 to ARMMMUIdx*_SE3 Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 20/34] target/arm: Rename ARMMMUIdx_S1E2 to ARMMMUIdx_E2 Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 21/34] target/arm: Reorganize ARMMMUIdx Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 22/34] target/arm: Add regime_has_2_ranges Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 23/34] target/arm: Update arm_mmu_idx for VHE Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 24/34] target/arm: Update arm_sctlr " Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 25/34] target/arm: Update aa64_zva_access for EL2 Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 26/34] target/arm: Update ctr_el0_access " Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 27/34] target/arm: Install asids for E2&0 translation regime Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 28/34] target/arm: Flush tlbs " Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 29/34] target/arm: Update arm_phys_excp_target_el for TGE Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 30/34] target/arm: Update regime_is_user for EL2&0 Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 31/34] target/arm: Update {fp,sve}_exception_el for VHE Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] [PATCH v3 31/34] target/arm: Update {fp, sve}_exception_el " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 32/34] target/arm: Enable ARMv8.1-VHE in -cpu max Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:47 ` [PATCH v3 33/34] target/arm: check TGE and E2H flags for EL0 pauth traps Richard Henderson
2019-08-03 18:47 ` [Qemu-devel] " Richard Henderson
2019-08-03 18:48 ` [PATCH v3 34/34] target/arm: generate a custom MIDR for -cpu max Richard Henderson
2019-08-03 18:48 ` [Qemu-devel] " Richard Henderson
2019-08-05 13:02 ` Alex Bennée [this message]
2019-08-05 13:02 ` [Qemu-devel] [PATCH v3 00/34] target/arm: Implement ARMv8.1-VHE Alex Bennée
2019-08-05 14:00 ` Richard Henderson
2019-08-05 14:00 ` [Qemu-devel] " Richard Henderson
2019-08-05 14:23 ` Alex Bennée
2019-08-05 14:23 ` [Qemu-devel] " Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8736ifkbod.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.