Skip to content
Snippets Groups Projects
  1. Aug 11, 2023
    • Daniel Henrique Barboza's avatar
      target/riscv/kvm.c: fix mvendorid size in vcpu_set_machine_ids() · 136cb9cc
      Daniel Henrique Barboza authored
      
      cpu->cfg.mvendorid is a 32 bit field and kvm_set_one_reg() always write
      a target_ulong val, i.e. a 64 bit field in a 64 bit host.
      
      Given that we're passing a pointer to the mvendorid field, the reg is
      reading 64 bits starting from mvendorid and going 32 bits in the next
      field, marchid. Here's an example:
      
      $ ./qemu-system-riscv64 -machine virt,accel=kvm -m 2G -smp 1 \
         -cpu rv64,marchid=0xab,mvendorid=0xcd,mimpid=0xef(...)
      
      (inside the guest)
       # cat /proc/cpuinfo
      processor	: 0
      hart		: 0
      isa		: rv64imafdc_zicbom_zicboz_zihintpause_zbb_sstc
      mmu		: sv57
      mvendorid	: 0xab000000cd
      marchid		: 0xab
      mimpid		: 0xef
      
      'mvendorid' was written as a combination of 0xab (the value from the
      adjacent field, marchid) and its intended value 0xcd.
      
      Fix it by assigning cpu->cfg.mvendorid to a target_ulong var 'reg' and
      use it as input for kvm_set_one_reg(). Here's the result with this patch
      applied and using the same QEMU command line:
      
       # cat /proc/cpuinfo
      processor	: 0
      hart		: 0
      isa		: rv64imafdc_zicbom_zicboz_zihintpause_zbb_sstc
      mmu		: sv57
      mvendorid	: 0xcd
      marchid		: 0xab
      mimpid		: 0xef
      
      This bug affects only the generic (rv64) CPUs when running with KVM in a
      64 bit env since the 'host' CPU does not allow the machine IDs to be
      changed via command line.
      
      Fixes: 1fb5a622 ("target/riscv: handle mvendorid/marchid/mimpid for KVM CPUs")
      Signed-off-by: default avatarDaniel Henrique Barboza <dbarboza@ventanamicro.com>
      Acked-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      Reviewed-by: default avatarAndrew Jones <ajones@ventanamicro.com>
      Message-ID: <20230802180058.281385-1-dbarboza@ventanamicro.com>
      Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
      136cb9cc
  2. Aug 10, 2023
  3. Aug 09, 2023
  4. Aug 08, 2023
Loading