* [Qemu-devel] [PATCH V2 0/3] riscv: some little fix.
@ 2018-05-03 15:17 KONRAD Frederic
2018-05-03 15:17 ` [Qemu-devel] [PATCH V2 1/3] riscv: spike: allow base == 0 KONRAD Frederic
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: KONRAD Frederic @ 2018-05-03 15:17 UTC (permalink / raw)
To: qemu-devel, qemu-stable
Cc: mjc, kbastian, f4bug, peter.maydell, frederic.konrad
Hi all,
Here are some fixes for RISCV.
The two firsts allow to map the HTIF @0x00000000.
The third one requires fdt to be present on the build machine so the build
doesn't end with a linker error.
Thanks,
Fred
KONRAD Frederic (3):
riscv: spike: allow base == 0
riscv: htif: increase the priority of the htif subregion
riscv: requires libfdt
configure | 2 +-
hw/riscv/riscv_htif.c | 12 ++++++++----
2 files changed, 9 insertions(+), 5 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH V2 1/3] riscv: spike: allow base == 0
2018-05-03 15:17 [Qemu-devel] [PATCH V2 0/3] riscv: some little fix KONRAD Frederic
@ 2018-05-03 15:17 ` KONRAD Frederic
2018-05-03 15:17 ` [Qemu-devel] [PATCH V2 2/3] riscv: htif: increase the priority of the htif subregion KONRAD Frederic
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: KONRAD Frederic @ 2018-05-03 15:17 UTC (permalink / raw)
To: qemu-devel, qemu-stable
Cc: mjc, kbastian, f4bug, peter.maydell, frederic.konrad
The sanity check on base doesn't allow htif to be mapped @0. Check if the
symbol exists instead so we can map it where we want.
Reviewed-by: Michael Clark <mjc@sifive.com>
Signed-off-by: KONRAD Frederic <frederic.konrad@adacore.com>
---
V1 -> V2:
* Check that both symbols are set as suggested by Michael.
---
hw/riscv/riscv_htif.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/hw/riscv/riscv_htif.c b/hw/riscv/riscv_htif.c
index 3e17f30..be252ec 100644
--- a/hw/riscv/riscv_htif.c
+++ b/hw/riscv/riscv_htif.c
@@ -41,17 +41,20 @@
} while (0)
static uint64_t fromhost_addr, tohost_addr;
+static int address_symbol_set;
void htif_symbol_callback(const char *st_name, int st_info, uint64_t st_value,
- uint64_t st_size)
+ uint64_t st_size)
{
if (strcmp("fromhost", st_name) == 0) {
+ address_symbol_set |= 1;
fromhost_addr = st_value;
if (st_size != 8) {
error_report("HTIF fromhost must be 8 bytes");
exit(1);
}
} else if (strcmp("tohost", st_name) == 0) {
+ address_symbol_set |= 2;
tohost_addr = st_value;
if (st_size != 8) {
error_report("HTIF tohost must be 8 bytes");
@@ -248,7 +251,7 @@ HTIFState *htif_mm_init(MemoryRegion *address_space, MemoryRegion *main_mem,
qemu_chr_fe_init(&s->chr, chr, &error_abort);
qemu_chr_fe_set_handlers(&s->chr, htif_can_recv, htif_recv, htif_event,
htif_be_change, s, NULL, true);
- if (base) {
+ if (address_symbol_set == 3) {
memory_region_init_io(&s->mmio, NULL, &htif_mm_ops, s,
TYPE_HTIF_UART, size);
memory_region_add_subregion(address_space, base, &s->mmio);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH V2 2/3] riscv: htif: increase the priority of the htif subregion
2018-05-03 15:17 [Qemu-devel] [PATCH V2 0/3] riscv: some little fix KONRAD Frederic
2018-05-03 15:17 ` [Qemu-devel] [PATCH V2 1/3] riscv: spike: allow base == 0 KONRAD Frederic
@ 2018-05-03 15:17 ` KONRAD Frederic
2018-05-03 15:17 ` [Qemu-devel] [PATCH V2 3/3] riscv: requires libfdt KONRAD Frederic
2018-05-03 15:24 ` [Qemu-devel] [PATCH V2 0/3] riscv: some little fix KONRAD Frederic
3 siblings, 0 replies; 5+ messages in thread
From: KONRAD Frederic @ 2018-05-03 15:17 UTC (permalink / raw)
To: qemu-devel, qemu-stable
Cc: mjc, kbastian, f4bug, peter.maydell, frederic.konrad
The htif device is supposed to be mapped over an other subregion. So increase
its priority to one to avoid any conflict.
Here is the output of info mtree:
Before:
(qemu) info mtree
address-space: memory
0000000000000000-ffffffffffffffff (prio 0, i/o): system
0000000000000000-000000000000000f (prio 0, i/o): riscv.htif.uart
0000000000000000-0000000000011fff (prio 0, ram): riscv.spike.bootrom
0000000002000000-000000000200ffff (prio 0, i/o): riscv.sifive.clint
0000000080000000-0000000087ffffff (prio 0, ram): riscv.spike.ram
address-space: I/O
0000000000000000-000000000000ffff (prio 0, i/o): io
address-space: cpu-memory-0
0000000000000000-ffffffffffffffff (prio 0, i/o): system
0000000000000000-000000000000000f (prio 0, i/o): riscv.htif.uart
0000000000000000-0000000000011fff (prio 0, ram): riscv.spike.bootrom
0000000002000000-000000000200ffff (prio 0, i/o): riscv.sifive.clint
0000000080000000-0000000087ffffff (prio 0, ram): riscv.spike.ram
After:
(qemu) info mtree
address-space: memory
0000000000000000-ffffffffffffffff (prio 0, i/o): system
0000000000000000-000000000000000f (prio 1, i/o): riscv.htif.uart
0000000000000000-0000000000011fff (prio 0, ram): riscv.spike.bootrom
0000000002000000-000000000200ffff (prio 0, i/o): riscv.sifive.clint
0000000080000000-0000000087ffffff (prio 0, ram): riscv.spike.ram
address-space: I/O
0000000000000000-000000000000ffff (prio 0, i/o): io
address-space: cpu-memory-0
0000000000000000-ffffffffffffffff (prio 0, i/o): system
0000000000000000-000000000000000f (prio 1, i/o): riscv.htif.uart
0000000000000000-0000000000011fff (prio 0, ram): riscv.spike.bootrom
0000000002000000-000000000200ffff (prio 0, i/o): riscv.sifive.clint
0000000080000000-0000000087ffffff (prio 0, ram): riscv.spike.ram
Reviewed-by: Michael Clark <mjc@sifive.com>
Signed-off-by: KONRAD Frederic <frederic.konrad@adacore.com>
---
hw/riscv/riscv_htif.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/hw/riscv/riscv_htif.c b/hw/riscv/riscv_htif.c
index be252ec..f735129 100644
--- a/hw/riscv/riscv_htif.c
+++ b/hw/riscv/riscv_htif.c
@@ -253,8 +253,9 @@ HTIFState *htif_mm_init(MemoryRegion *address_space, MemoryRegion *main_mem,
htif_be_change, s, NULL, true);
if (address_symbol_set == 3) {
memory_region_init_io(&s->mmio, NULL, &htif_mm_ops, s,
- TYPE_HTIF_UART, size);
- memory_region_add_subregion(address_space, base, &s->mmio);
+ TYPE_HTIF_UART, size);
+ memory_region_add_subregion_overlap(address_space, base,
+ &s->mmio, 1);
}
return s;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH V2 3/3] riscv: requires libfdt
2018-05-03 15:17 [Qemu-devel] [PATCH V2 0/3] riscv: some little fix KONRAD Frederic
2018-05-03 15:17 ` [Qemu-devel] [PATCH V2 1/3] riscv: spike: allow base == 0 KONRAD Frederic
2018-05-03 15:17 ` [Qemu-devel] [PATCH V2 2/3] riscv: htif: increase the priority of the htif subregion KONRAD Frederic
@ 2018-05-03 15:17 ` KONRAD Frederic
2018-05-03 15:24 ` [Qemu-devel] [PATCH V2 0/3] riscv: some little fix KONRAD Frederic
3 siblings, 0 replies; 5+ messages in thread
From: KONRAD Frederic @ 2018-05-03 15:17 UTC (permalink / raw)
To: qemu-devel, qemu-stable
Cc: mjc, kbastian, f4bug, peter.maydell, frederic.konrad
When compiling on a machine without libfdt installed the configure script
should try to get libfdt from the git or should die because otherwise
CONFIG_LIBFDT is not set and the build process end in an error in the link
phase.. eg:
hw/riscv/virt.o: In function `riscv_virt_board_init':
qemu/src/hw/riscv/virt.c:317: undefined reference to `qemu_fdt_setprop_cell'
qemu/src/hw/riscv/virt.c:319: undefined reference to `qemu_fdt_setprop_cell'
qemu/src/hw/riscv/virt.c:345: undefined reference to `qemu_fdt_dumpdtb'
collect2: error: ld returned 1 exit status
make[1]: *** [qemu-system-riscv64] Error 1
make: *** [subdir-riscv64-softmmu] Error 2
Reviewed-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Michael Clark <mjc@sifive.com>
Signed-off-by: KONRAD Frederic <frederic.konrad@adacore.com>
---
V1 -> V2:
* Requires libfdt for riscv*-softmmu instead of riscv64-softmmu only.
---
configure | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure b/configure
index 1443422..479e9a7 100755
--- a/configure
+++ b/configure
@@ -3761,7 +3761,7 @@ fi
fdt_required=no
for target in $target_list; do
case $target in
- aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu)
+ aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu)
fdt_required=yes
;;
esac
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH V2 0/3] riscv: some little fix.
2018-05-03 15:17 [Qemu-devel] [PATCH V2 0/3] riscv: some little fix KONRAD Frederic
` (2 preceding siblings ...)
2018-05-03 15:17 ` [Qemu-devel] [PATCH V2 3/3] riscv: requires libfdt KONRAD Frederic
@ 2018-05-03 15:24 ` KONRAD Frederic
3 siblings, 0 replies; 5+ messages in thread
From: KONRAD Frederic @ 2018-05-03 15:24 UTC (permalink / raw)
To: qemu-devel, qemu-stable; +Cc: kbastian, mjc, f4bug, peter.maydell
s/fix/fixes in the subject :/
Fred
On 05/03/2018 05:17 PM, KONRAD Frederic wrote:
> Hi all,
>
> Here are some fixes for RISCV.
>
> The two firsts allow to map the HTIF @0x00000000.
> The third one requires fdt to be present on the build machine so the build
> doesn't end with a linker error.
>
> Thanks,
> Fred
>
> KONRAD Frederic (3):
> riscv: spike: allow base == 0
> riscv: htif: increase the priority of the htif subregion
> riscv: requires libfdt
>
> configure | 2 +-
> hw/riscv/riscv_htif.c | 12 ++++++++----
> 2 files changed, 9 insertions(+), 5 deletions(-)
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-05-03 15:24 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-03 15:17 [Qemu-devel] [PATCH V2 0/3] riscv: some little fix KONRAD Frederic
2018-05-03 15:17 ` [Qemu-devel] [PATCH V2 1/3] riscv: spike: allow base == 0 KONRAD Frederic
2018-05-03 15:17 ` [Qemu-devel] [PATCH V2 2/3] riscv: htif: increase the priority of the htif subregion KONRAD Frederic
2018-05-03 15:17 ` [Qemu-devel] [PATCH V2 3/3] riscv: requires libfdt KONRAD Frederic
2018-05-03 15:24 ` [Qemu-devel] [PATCH V2 0/3] riscv: some little fix KONRAD Frederic
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).