From f480f6e8c5ca9a27c046e3a273a4693d2475bdc2 Mon Sep 17 00:00:00 2001 From: "hiroyuki.obinata" Date: Wed, 30 Oct 2019 09:23:18 +0900 Subject: [PATCH 1/4] remove unnecessary ifdef TARGET_RISCV64 Signed-off-by: Hiroyuki Obinata Signed-off-by: Palmer Dabbelt --- target/riscv/translate.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index b26533d4fd..ab6a891dc3 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -64,12 +64,10 @@ static const int tcg_memop_lookup[8] = { [0] = MO_SB, [1] = MO_TESW, [2] = MO_TESL, + [3] = MO_TEQ, [4] = MO_UB, [5] = MO_TEUW, -#ifdef TARGET_RISCV64 - [3] = MO_TEQ, [6] = MO_TEUL, -#endif }; #endif From 7ec5d3030b9293ab631dd653f64bc933b6c82e65 Mon Sep 17 00:00:00 2001 From: Alistair Francis Date: Tue, 8 Oct 2019 15:04:18 -0700 Subject: [PATCH 2/4] target/riscv: Remove atomic accesses to MIP CSR Instead of relying on atomics to access the MIP register let's update our helper function to instead just lock the IO mutex thread before writing. This follows the same concept as used in PPC for handling interrupts Signed-off-by: Alistair Francis Reviewed-by: Richard Henderson Reviewed-by: Palmer Dabbelt Signed-off-by: Palmer Dabbelt Signed-off-by: Palmer Dabbelt --- target/riscv/cpu.c | 5 ++-- target/riscv/cpu.h | 9 -------- target/riscv/cpu_helper.c | 48 +++++++++++++++------------------------ target/riscv/csr.c | 2 +- 4 files changed, 21 insertions(+), 43 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 3939963b71..d37861a430 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -224,8 +224,7 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE *f, int flags) #ifndef CONFIG_USER_ONLY qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mhartid ", env->mhartid); qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mstatus ", env->mstatus); - qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mip ", - (target_ulong)atomic_read(&env->mip)); + qemu_fprintf(f, " %s 0x%x\n", "mip ", env->mip); qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mie ", env->mie); qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mideleg ", env->mideleg); qemu_fprintf(f, " %s " TARGET_FMT_lx "\n", "medeleg ", env->medeleg); @@ -275,7 +274,7 @@ static bool riscv_cpu_has_work(CPUState *cs) * Definition of the WFI instruction requires it to ignore the privilege * mode and delegation registers, but respect individual enables */ - return (atomic_read(&env->mip) & env->mie) != 0; + return (env->mip & env->mie) != 0; #else return true; #endif diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 8c64c68538..e59343e13c 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -121,15 +121,6 @@ struct CPURISCVState { target_ulong mhartid; target_ulong mstatus; - /* - * CAUTION! Unlike the rest of this struct, mip is accessed asynchonously - * by I/O threads. It should be read with atomic_read. It should be updated - * using riscv_cpu_update_mip with the iothread mutex held. The iothread - * mutex must be held because mip must be consistent with the CPU inturrept - * state. riscv_cpu_update_mip calls cpu_interrupt or cpu_reset_interrupt - * wuth the invariant that CPU_INTERRUPT_HARD is set iff mip is non-zero. - * mip is 32-bits to allow atomic_read on 32-bit hosts. - */ uint32_t mip; uint32_t miclaim; diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index f13131a51b..767c8762ac 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -19,6 +19,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" +#include "qemu/main-loop.h" #include "cpu.h" #include "exec/exec-all.h" #include "tcg-op.h" @@ -38,7 +39,7 @@ static int riscv_cpu_local_irq_pending(CPURISCVState *env) { target_ulong mstatus_mie = get_field(env->mstatus, MSTATUS_MIE); target_ulong mstatus_sie = get_field(env->mstatus, MSTATUS_SIE); - target_ulong pending = atomic_read(&env->mip) & env->mie; + target_ulong pending = env->mip & env->mie; target_ulong mie = env->priv < PRV_M || (env->priv == PRV_M && mstatus_mie); target_ulong sie = env->priv < PRV_S || (env->priv == PRV_S && mstatus_sie); target_ulong irqs = (pending & ~env->mideleg & -mie) | @@ -92,42 +93,29 @@ int riscv_cpu_claim_interrupts(RISCVCPU *cpu, uint32_t interrupts) } } -struct CpuAsyncInfo { - uint32_t new_mip; -}; - -static void riscv_cpu_update_mip_irqs_async(CPUState *target_cpu_state, - run_on_cpu_data data) -{ - struct CpuAsyncInfo *info = (struct CpuAsyncInfo *) data.host_ptr; - - if (info->new_mip) { - cpu_interrupt(target_cpu_state, CPU_INTERRUPT_HARD); - } else { - cpu_reset_interrupt(target_cpu_state, CPU_INTERRUPT_HARD); - } - - g_free(info); -} - uint32_t riscv_cpu_update_mip(RISCVCPU *cpu, uint32_t mask, uint32_t value) { CPURISCVState *env = &cpu->env; CPUState *cs = CPU(cpu); - struct CpuAsyncInfo *info; - uint32_t old, new, cmp = atomic_read(&env->mip); + uint32_t old = env->mip; + bool locked = false; - do { - old = cmp; - new = (old & ~mask) | (value & mask); - cmp = atomic_cmpxchg(&env->mip, old, new); - } while (old != cmp); + if (!qemu_mutex_iothread_locked()) { + locked = true; + qemu_mutex_lock_iothread(); + } - info = g_new(struct CpuAsyncInfo, 1); - info->new_mip = new; + env->mip = (env->mip & ~mask) | (value & mask); - async_run_on_cpu(cs, riscv_cpu_update_mip_irqs_async, - RUN_ON_CPU_HOST_PTR(info)); + if (env->mip) { + cpu_interrupt(cs, CPU_INTERRUPT_HARD); + } else { + cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); + } + + if (locked) { + qemu_mutex_unlock_iothread(); + } return old; } diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 974c9c20b5..da02f9f0b1 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -579,7 +579,7 @@ static int rmw_mip(CPURISCVState *env, int csrno, target_ulong *ret_value, if (mask) { old_mip = riscv_cpu_update_mip(cpu, mask, (new_value & mask)); } else { - old_mip = atomic_read(&env->mip); + old_mip = env->mip; } if (ret_value) { From 3158add2bd12b5db812b8362bebbaba1e9d4d265 Mon Sep 17 00:00:00 2001 From: Alistair Francis Date: Fri, 25 Oct 2019 16:15:45 -0700 Subject: [PATCH 3/4] opensbi: Upgrade from v0.4 to v0.5 This release has: Lot of critical fixes Hypervisor extension support SBI v0.2 base extension support Debug prints support Handle traps when doing unpriv load/store Allow compiling without FP support Use git describe to generate boot-time banner Andes AE350 platform support ShortLog: Anup Patel (14): platform: sifive/fu540: Move FDT further up lib: Allow compiling without FP support lib: Introduce sbi_dprintf() API lib: Use sbi_dprintf() for invalid CSRs lib: Handle traps when doing unpriv load/store in get_insn() lib: Delegate supervisor ecall to HS-mode when H extension available lib: Extend sbi_hart_switch_mode() to support hypervisor extension lib: Extend sbi_trap_redirect() for hypervisor extension lib: Redirect WFI trapped from VS/VU mode to HS-mode include: Extend get_insn() to read instruction from VS/VU mode lib: Emulate HTIMEDELTA CSR for platforms not having TIME CSR Makefile: Minor fix in OPENSBI_VERSION_GIT lib: Fix coldboot race condition observed on emulators/simulators include: Bump-up version to 0.5 Atish Patra (16): lib: Provide an atomic exchange function unsigned long lib: Fix race conditions in tlb fifo access. platform: Remove the ipi_sync method from all platforms. lib: Fix timer for 32 bit lib: Support atomic swap instructions lib: Upgrade to full flush if size is at least threshold docs: Update the fu540 platform guide as per U-Boot documents. lib: Change tlb range flush threshold to 4k page instead of 1G lib: provide a platform specific tlb range flush threshold lib: Fix tlb flush range limit value Test: Move test payload related code out of interface header lib: Align error codes as per SBI specification. lib: Rename existing SBI implementation as 0.1. lib: Remove redundant variable assignment lib: Implement SBI v0.2 lib: Provide a platform hook to implement vendor specific SBI extensions. Bin Meng (6): platform: sifive: fu540: Use standard value string for cpu node status README: Document 32-bit / 64-bit images build treewide: Use conventional names for 32-bit and 64-bit platform: sifive: fu540: Expand FDT size before any patching firmware: Use macro instead of magic number for boot status docs: platform: Update descriptions for qemu/sifive_u support Damien Le Moal (4): kendryte/k210: Use sifive UART driver kendryte/k210: remove sysctl code README: Update license information kendryte/k210: remove unused file Georg Kotheimer (1): utils: Use cpu_to_fdt32() when writing to fdt Jacob Garber (4): lib: Use bitwise & instead of boolean && lib: Use correct type for return value lib: Prevent unintended sign extensions lib: Correct null pointer check Lukas Auer (1): firmware: do not use relocated _boot_status before it is valid Nylon Chen (3): firmware: Fix the loop condition of _wait_relocate_copy_done section platform: Add Andes AE350 initial support scripts: Add AE350 to platform list in the binary archive script Palmer Dabbelt (1): Include `git describe` in OpenSBI Zong Li (1): Write MSIP by using memory-mapped control register Signed-off-by: Alistair Francis Reviewed-by: Palmer Dabbelt Signed-off-by: Palmer Dabbelt Signed-off-by: Palmer Dabbelt --- pc-bios/opensbi-riscv32-virt-fw_jump.bin | Bin 36888 -> 40984 bytes pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin | Bin 45064 -> 49160 bytes pc-bios/opensbi-riscv64-virt-fw_jump.bin | Bin 40968 -> 45064 bytes roms/opensbi | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/opensbi-riscv32-virt-fw_jump.bin b/pc-bios/opensbi-riscv32-virt-fw_jump.bin index f5bcaa56954c860d09acc0cb337c1666d88b6efb..6c5b7b89f676392b687d9835ac9fbdc34f3052cd 100644 GIT binary patch delta 14873 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 Aj{pDw diff --git a/pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin b/pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin index eb22aefdfb468cfe2804cb4b0bc422d8ebcae93b..971f2be4054d481461efbddca947c44fcfc73ce9 100644 GIT binary patch delta 19607 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 InY4ie09d5;0ssI2 delta 15815 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 b|DV17|342(gT#${Q?`4sZYfE}Jl` diff --git a/pc-bios/opensbi-riscv64-virt-fw_jump.bin b/pc-bios/opensbi-riscv64-virt-fw_jump.bin index 4cec6f0210f31969ac232123ce101ce71bbf9f2b..45a5aed1ce0cc2121a9e9b9733010d85da5f53ba 100644 GIT binary patch delta 19061 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 delta 15148 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 W|E~w7L1M@lB)2(m>I~LN8#n;x`t#}l diff --git a/roms/opensbi b/roms/opensbi index ce228ee091..be92da280d 160000 --- a/roms/opensbi +++ b/roms/opensbi @@ -1 +1 @@ -Subproject commit ce228ee0919deb9957192d723eecc8aaae2697c6 +Subproject commit be92da280d87c38a2e0adc5d3f43bab7b5468f09 From 6911fde41006b2afe3510755c4cff259ca56c1d9 Mon Sep 17 00:00:00 2001 From: Alistair Francis Date: Wed, 6 Nov 2019 16:47:20 -0800 Subject: [PATCH 4/4] riscv/virt: Increase flash size Coreboot developers have requested that they have at least 32MB of flash to load binaries. We currently have 32MB of flash, but it is split in two to allow loading two flash binaries. Let's increase the flash size from 32MB to 64MB to ensure we have a single region that is 32MB. No QEMU release has include flash in the RISC-V virt machine, so this isn't a breaking change. Signed-off-by: Alistair Francis Signed-off-by: Palmer Dabbelt --- hw/riscv/virt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index cc8f311e6b..23f340df19 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -62,7 +62,7 @@ static const struct MemmapEntry { [VIRT_PLIC] = { 0xc000000, 0x4000000 }, [VIRT_UART0] = { 0x10000000, 0x100 }, [VIRT_VIRTIO] = { 0x10001000, 0x1000 }, - [VIRT_FLASH] = { 0x20000000, 0x2000000 }, + [VIRT_FLASH] = { 0x20000000, 0x4000000 }, [VIRT_DRAM] = { 0x80000000, 0x0 }, [VIRT_PCIE_MMIO] = { 0x40000000, 0x40000000 }, [VIRT_PCIE_PIO] = { 0x03000000, 0x00010000 },