[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug 1814343] Re: Initrd not loaded on riscv32
From: |
Thomas Huth |
Subject: |
[Bug 1814343] Re: Initrd not loaded on riscv32 |
Date: |
Tue, 20 Apr 2021 08:17:19 -0000 |
The QEMU project is currently considering to move its bug tracking to another
system. For this we need to know which bugs are still valid and which could be
closed already. Thus we are setting older bugs to "Incomplete" now.
If you still think this bug report here is valid, then please switch the state
back to "New" within the next 60 days, otherwise this report will be marked as
"Expired". Or mark it as "Fix Released" if the problem has been solved with a
newer version of QEMU already. Thank you and sorry for the inconvenience.
** Changed in: qemu
Status: Confirmed => Incomplete
** Tags added: riscv
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1814343
Title:
Initrd not loaded on riscv32
Status in QEMU:
Incomplete
Bug description:
I attempted to run qemu with a ram disk. However, when reading the
contents of the disk from within the VM I only get back zeros.
I was able to trace the issue to a mismatch of expectations on line 93
of hw/riscv/virt.c. Specifically, when running in 32-bit mode the
value of kernel_entry is sign extended to 64-bits, but
load_image_targphys expects the start address to not be sign extended.
Straw man patch (works for 32-bit but would probably break 64-bit
VMs?):
diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
index e7f0716fb6..32216f993c 100644
--- a/hw/riscv/virt.c
+++ b/hw/riscv/virt.c
@@ -90,7 +90,7 @@ static hwaddr load_initrd(const char *filename, uint64_t
mem_size,
* halfway into RAM, and for boards with 256MB of RAM or more we put
* the initrd at 128MB.
*/
- *start = kernel_entry + MIN(mem_size / 2, 128 * MiB);
+ *start = (kernel_entry & 0xffffffff) + MIN(mem_size / 2, 128 * MiB);
size = load_ramdisk(filename, *start, mem_size - *start);
if (size == -1) {
Run command:
$ qemu/build/riscv32-softmmu/qemu-system-riscv32 -machine virt -kernel
mykernel.elf -nographic -initrd payload
Commit hash:
3a183e330dbd7dbcac3841737ac874979552cca2
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1814343/+subscriptions
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug 1814343] Re: Initrd not loaded on riscv32,
Thomas Huth <=