diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-05-21 21:21:26 +0200 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-05-21 21:21:26 +0200 |
| commit | 4b927bc37359dec23f67d3427fc982945f24f404 (patch) | |
| tree | 245449ef9146942dc7fffd0235b48b7e70a00bf2 /gitlab/issues/target_arm/host_missing/accel_missing/1078.toml | |
| parent | aa8bd79cec7bf6790ddb01d156c2ef2201abbaab (diff) | |
| download | qemu-analysis-4b927bc37359dec23f67d3427fc982945f24f404.tar.gz qemu-analysis-4b927bc37359dec23f67d3427fc982945f24f404.zip | |
add gitlab issues in toml format
Diffstat (limited to 'gitlab/issues/target_arm/host_missing/accel_missing/1078.toml')
| -rw-r--r-- | gitlab/issues/target_arm/host_missing/accel_missing/1078.toml | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/gitlab/issues/target_arm/host_missing/accel_missing/1078.toml b/gitlab/issues/target_arm/host_missing/accel_missing/1078.toml new file mode 100644 index 000000000..0b48653bb --- /dev/null +++ b/gitlab/issues/target_arm/host_missing/accel_missing/1078.toml @@ -0,0 +1,52 @@ +id = 1078 +title = "qemu-system-arm: unable to use LPAE" +state = "closed" +created_at = "2022-06-16T11:56:50.844Z" +closed_at = "2022-06-27T22:55:20.002Z" +labels = ["Closed::Fixed", "target: arm"] +url = "https://gitlab.com/qemu-project/qemu/-/issues/1078" +host-os = "Ubuntu 18.04.6 LTS" +host-arch = "x86_64" +qemu-version = "QEMU emulator version 7.0.50 (v7.0.0-1865-g9ac873a469-dirty)" +guest-os = "irrelevant" +guest-arch = "qemuarm cortex-a15" +description = """Failed to run qemu: qemu-system-arm: Addressing limited to 32 bits, +but memory exceeds it by 1073741824 bytes""" +reproduce = """1. ./configure --target-list=arm-softmmu +2. make +3. +./qemu-system-arm \\ +-machine virt,highmem=on \\ +-cpu cortex-a15 -smp 4 \\ +-m 4096 \\ +-kernel ./zImage \\ +-drive id=disk0,file=./rootfs.ext4,if=none,format=raw \\ +-object rng-random,filename=/dev/urandom,id=rng0 \\ +-device virtio-rng-pci,rng=rng0 \\ +-device virtio-blk-device,drive=disk0 \\ +-device virtio-gpu-pci \\ +-serial mon:stdio -serial null \\ +-nographic \\ +-append 'root=/dev/vda rw mem=4096M ip=dhcp console=ttyAMA0 console=hvc0'""" +additional = """We set physical address bits to 40 if ARM_FEATURE_LPAE is enabled. But ARM_FEATURE_V7VE also implies ARM_FEATURE_LPAE as set later in arm_cpu_realizefn. + +We should add condition for ARM_FEATURE_V7VE, otherwise we would not be able to use highmem larger than 3GB even though we have enabled highmem, since we would fail and return right from machvirt_init. + +I have already made a patch to fix this issue. +https://gitlab.com/realhezhe/qemu/-/commit/4dad8167c1c1a7695af88d8929e8d7f6399177de +`hw/arm/virt.c` +```c + if (object_property_get_bool(cpuobj, "aarch64", NULL)) { + pa_bits = arm_pamax(armcpu); + } else if (arm_feature(&armcpu->env, ARM_FEATURE_LPAE)) { + } else if (arm_feature(&armcpu->env, ARM_FEATURE_LPAE) + || arm_feature(&armcpu->env, ARM_FEATURE_V7VE)) { + /* v7 with LPAE */ + pa_bits = 40; + } else { +``` + +After applying the patch, I can make sure that the pa_bits has already been set to 40, but qemu hangs later. By bisecting I found if the following commit is reverted qemu can boot up successfully.. +39a1fd2528 ("target/arm: Fix handling of LPAE block descriptors") + +It can't be quickly determined what's going on here at my side. Maybe the author can help give some hints. Thanks.""" |