Skip to content
Snippets Groups Projects
  1. Sep 26, 2022
    • Alistair Francis's avatar
      hw/riscv: opentitan: Expose the resetvec as a SoC property · a06fded8
      Alistair Francis authored
      
      On the OpenTitan hardware the resetvec is fixed at the start of ROM. In
      QEMU we don't run the ROM code and instead just jump to the next stage.
      This means we need to be a little more flexible about what the resetvec
      is.
      
      This patch allows us to set the resetvec from the command line with
      something like this:
          -global driver=riscv.lowrisc.ibex.soc,property=resetvec,value=0x20000400
      
      This way as the next stage changes we can update the resetvec.
      
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Message-Id: <20220914101108.82571-4-alistair.francis@wdc.com>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      a06fded8
    • Alistair Francis's avatar
      hw/riscv: opentitan: Fixup resetvec · d057aaec
      Alistair Francis authored
      
      The resetvec for the OpenTitan machine ended up being set to an out of
      date value, so let's fix that and bump it to the correct start address
      (after the boot ROM)
      
      Fixes: bf8803c6 "hw/riscv: opentitan: bump opentitan version"
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Message-Id: <20220914101108.82571-3-alistair.francis@wdc.com>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      d057aaec
    • Alistair Francis's avatar
      target/riscv: Set the CPU resetvec directly · 277b210d
      Alistair Francis authored
      
      Instead of using our properties to set a config value which then might
      be used to set the resetvec (depending on your timing), let's instead
      just set the resetvec directly in the env struct.
      
      This allows us to set the reset vec from the command line with:
          -global driver=riscv.hart_array,property=resetvec,value=0x20000400
      
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Message-Id: <20220914101108.82571-2-alistair.francis@wdc.com>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      277b210d
    • Andrew Burgess's avatar
      target/riscv: remove fixed numbering from GDB xml feature files · 4c0f0b66
      Andrew Burgess authored
      
      The fixed register numbering in the various GDB feature files for
      RISC-V only exists because these files were originally copied from the
      GDB source tree.
      
      However, the fixed numbering only exists in the GDB source tree so
      that GDB, when it connects to a target that doesn't provide a target
      description, will use a specific numbering scheme.
      
      That numbering scheme is designed to be compatible with the first
      versions of QEMU (for RISC-V), that didn't send a target description,
      and relied on a fixed numbering scheme.
      
      Because of the way that QEMU manages its target descriptions,
      recording the number of registers in each feature, and just relying on
      GDB's numbering starting from 0, then I propose that we remove all the
      fixed numbering from the RISC-V feature xml files, and just rely on
      the standard numbering scheme.  Plenty of other targets manage their
      xml files this way, e.g. ARM, AArch64, Loongarch, m68k, rx, and s390.
      
      Signed-off-by: default avatarAndrew Burgess <aburgess@redhat.com>
      Acked-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Reviewed-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
      Message-Id: <6069395f90e6fc24dac92197be815fedf42f5974.1661934573.git.aburgess@redhat.com>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      4c0f0b66
    • Andrew Burgess's avatar
      target/riscv: remove fflags, frm, and fcsr from riscv-*-fpu.xml · 94452ac4
      Andrew Burgess authored
      
      While testing some changes to GDB's handling for the RISC-V registers
      fcsr, fflags, and frm, I spotted that QEMU includes these registers
      twice in the target description it sends to GDB, once in the fpu
      feature, and once in the csr feature.
      
      Right now things basically work OK, QEMU maps these registers onto two
      different register numbers, e.g. fcsr maps to both 68 and 73, and GDB
      can use either of these to access the register.
      
      However, GDB's target descriptions don't really work this way, each
      register should appear just once in a target description, mapping the
      register name onto the number GDB should use when accessing the
      register on the target.  Duplicate register names actually result in
      duplicate registers on the GDB side, however, as the registers have
      the same name, the user can only access one of these registers.
      
      Currently GDB has a hack in place, specifically for RISC-V, to spot
      the duplicate copies of these three registers, and hide them from the
      user, ensuring the user only ever sees a single copy of each.
      
      In this commit I propose fixing this issue on the QEMU side, and in
      the process, simplify the fpu register handling a little.
      
      I think we should, remove fflags, frm, and fcsr from the two (32-bit
      and 64-bit) fpu feature xml files.  These files will only contain the
      32 core floating point register f0 to f31.  The fflags, frm, and fcsr
      registers will continue to be advertised in the csr feature as they
      currently are.
      
      With that change made, I will simplify riscv_gdb_get_fpu and
      riscv_gdb_set_fpu, removing the extra handling for the 3 status
      registers.
      
      Signed-off-by: default avatarAndrew Burgess <aburgess@redhat.com>
      Reviewed-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Message-Id: <0fbf2a5b12e3210ff3867d5cf7022b3f3462c9c8.1661934573.git.aburgess@redhat.com>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      94452ac4
    • Weiwei Li's avatar
      target/riscv: fix csr check for cycle{h}, instret{h}, time{h}, hpmcounter3-31{h} · a4128294
      Weiwei Li authored
      
      - modify check for mcounteren to work in all less-privilege mode
      - modify check for scounteren to work only when S mode is enabled
      - distinguish the exception type raised by check for scounteren between U
      and VU mode
      
      Signed-off-by: default avatarWeiwei Li <liweiwei@iscas.ac.cn>
      Signed-off-by: default avatarJunqiang Wang <wangjunqiang@iscas.ac.cn>
      Reviewed-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Message-Id: <20220817083756.12471-1-liweiwei@iscas.ac.cn>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      a4128294
    • Rahul Pathak's avatar
      target/riscv: Remove sideleg and sedeleg · 513eb437
      Rahul Pathak authored
      sideleg and sedeleg csrs are not part of riscv isa spec
      anymore, these csrs were part of N extension which
      is removed from the riscv isa specification.
      
      These commits removed all traces of these csrs from
      riscv spec (https://github.com/riscv/riscv-isa-manual
      
      ) -
      
      commit f8d27f805b65 ("Remove or downgrade more references to N extension (#674)")
      commit b6cade07034d ("Remove N extension chapter for now")
      
      Signed-off-by: default avatarRahul Pathak <rpathak@ventanamicro.com>
      Reviewed-by: default avatarAndrew Jones <ajones@ventanamicro.com>
      Reviewed-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Message-Id: <20220824145255.400040-1-rpathak@ventanamicro.com>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      513eb437
    • Alex Bennée's avatar
      docs/system: clean up code escape for riscv virt platform · 0c2d4671
      Alex Bennée authored
      
      The example code is rendered slightly mangled due to missing code
      block. Properly escape the code block and add shell prompt and qemu to
      fit in with the other examples on the page.
      
      Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
      Reviewed-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Message-Id: <20220905163939.1599368-1-alex.bennee@linaro.org>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      0c2d4671
    • Wilfred Mallawa's avatar
      hw/ssi: ibex_spi: update reg addr · 7a426f83
      Wilfred Mallawa authored
      Updates the `EVENT_ENABLE` register to offset `0x34` as per
      OpenTitan spec [1].
      
      [1] https://docs.opentitan.org/hw/ip/spi_host/doc/#Reg_event_enable
      
      
      
      Signed-off-by: default avatarWilfred Mallawa <wilfred.mallawa@wdc.com>
      Reviewed-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Message-Id: <20220823061201.132342-5-wilfred.mallawa@opensource.wdc.com>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      7a426f83
    • Wilfred Mallawa's avatar
      hw/ssi: ibex_spi: fixup typos in ibex_spi_host · a4455863
      Wilfred Mallawa authored
      
      This patch fixes up minor typos in ibex_spi_host
      
      Signed-off-by: default avatarWilfred Mallawa <wilfred.mallawa@wdc.com>
      Reviewed-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Reviewed-by: default avatarAndrew Jones <ajones@ventanamicro.com>
      Message-Id: <20220823061201.132342-2-wilfred.mallawa@opensource.wdc.com>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      a4455863
    • Stefan Hajnoczi's avatar
      Merge tag 'pull-target-arm-20220922' of... · 99d6b11b
      Stefan Hajnoczi authored
      Merge tag 'pull-target-arm-20220922' of https://git.linaro.org/people/pmaydell/qemu-arm into staging
      
      target-arm queue:
       * hw/net/can: fix Xilinx ZynqMP CAN RX FIFO logic
       * Fix alignment for Neon VLD4.32
       * Refactoring of page-table-walk code
       * hw/acpi: Add ospm_status hook implementation for acpi-ged
       * hw/net/lan9118: Signal TSFL_INT flag when TX FIFO reaches specified level
       * chardev/baum: avoid variable-length arrays
       * io/channel-websock: avoid variable-length arrays
       * hw/net/e1000e_core: Use definition to avoid dynamic stack allocation
       * hw/ppc/pnv: Avoid dynamic stack allocation
       * hw/intc/xics: Avoid dynamic stack allocation
       * hw/i386/multiboot: Avoid dynamic stack allocation
       * hw/usb/hcd-ohci: Use definition to avoid dynamic stack allocation
       * ui/curses: Avoid dynamic stack allocation
       * tests/unit/test-vmstate: Avoid dynamic stack allocation
       * configure: fix various shellcheck-spotted issues and nits
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmMsjocZHHBldGVyLm1h
      # eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3s0vEACuUs7nGGX5vd96EPN+sO5s
      # HstP16G6/Xnlw2z0BaXi0MMWapQRhSQJ+MIeDJmqIyZKQ3geJGP7pbFTxI3zreYM
      # UTKjdI/wWRYMKPYfxlIBZ8TPugj4a4paFJlyqmpHXtkwiWRv6rF70HQ9Yku5id93
      # FN9js/dyF74S2AaDppBuTWp31cM1k6kBTg/v5tXSxE8kDUKkO+HZ1VujOqIG/4nJ
      # 6urNJ7jlHSiFdXya2QiR+CAkyXyy551rLETeO8VJg9tOO7Ys7Olj7lqv6kHJY/X1
      # 01RbN5A5WXhqCvTLM3UYTvFHmbZtS/C5iUhHRtlZkOoeSv2jS6IRDB8BrBtIbOwF
      # XKpaYf1jyFLFwX++hpvySD9Vbcu8KgKId8iKTuDcxjQlEjL3fTbt1ulKo4y+rJ8O
      # 6G1k4yZc8/nAvttNoKCn7/Jr1dC+HsANa+1s1L+6w+f1gARV0VXs4gqsveNnbe1+
      # WzzaHvHt+hCaiWkSZlyisyw3fbEXMrEyKewi+SZu3c8PvJ6DHa+rYjkhem7muBVF
      # iR48FRTjFiS+o402KMwXfMdiGjXyZFi09yn5diowlVjkNAaZVZfgu/wUMD5QBhbh
      # fNDSw7LpXGUHML/O98MiXznkgGvTEQNxZdp2qIQrTiinUgmV4ZRLR23ZpEibdJPX
      # kiOkr46SbWvksCXnRlTf8w==
      # =hec8
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Thu 22 Sep 2022 12:34:15 EDT
      # gpg:                using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
      # gpg:                issuer "peter.maydell@linaro.org"
      # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [full]
      # gpg:                 aka "Peter Maydell <pmaydell@gmail.com>" [full]
      # gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [full]
      # gpg:                 aka "Peter Maydell <peter@archaic.org.uk>" [unknown]
      # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE
      
      * tag 'pull-target-arm-20220922' of https://git.linaro.org/people/pmaydell/qemu-arm
      
      : (39 commits)
        configure: Avoid use of 'local' as it is non-POSIX
        configure: Check mkdir result directly, not via $?
        configure: Remove use of backtick `...` syntax
        configure: Add './' on front of glob of */config-devices.mak.d
        configure: Add missing quoting for some easy cases
        configure: Remove unused meson_args variable
        configure: Remove unused python_version variable
        tests/unit/test-vmstate: Avoid dynamic stack allocation
        ui/curses: Avoid dynamic stack allocation
        hw/usb/hcd-ohci: Use definition to avoid dynamic stack allocation
        hw/i386/multiboot: Avoid dynamic stack allocation
        hw/intc/xics: Avoid dynamic stack allocation
        hw/ppc/pnv: Avoid dynamic stack allocation
        hw/net/e1000e_core: Use definition to avoid dynamic stack allocation
        io/channel-websock: Replace strlen(const_str) by sizeof(const_str) - 1
        chardev/baum: Avoid dynamic stack allocation
        chardev/baum: Use definitions to avoid dynamic stack allocation
        chardev/baum: Replace magic values by X_MAX / Y_MAX definitions
        hw/net/lan9118: Signal TSFL_INT flag when TX FIFO reaches specified level
        hw/acpi: Add ospm_status hook implementation for acpi-ged
        ...
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      99d6b11b
  2. Sep 22, 2022
Loading