[PATCH v9 00/20] target/riscv, KVM: fixes and enhancements

Daniel Henrique Barboza posted 20 patches 10 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230706101738.460804-1-dbarboza@ventanamicro.com
Maintainers: Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Bin Meng <bin.meng@windriver.com>, Weiwei Li <liweiwei@iscas.ac.cn>, Daniel Henrique Barboza <dbarboza@ventanamicro.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, "Michael S. Tsirkin" <mst@redhat.com>, Cornelia Huck <cohuck@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>
hw/riscv/virt.c                               |  14 +-
include/standard-headers/linux/const.h        |   2 +-
include/standard-headers/linux/virtio_blk.h   |  18 +-
.../standard-headers/linux/virtio_config.h    |   6 +
include/standard-headers/linux/virtio_net.h   |   1 +
linux-headers/asm-arm64/kvm.h                 |  33 ++
linux-headers/asm-riscv/kvm.h                 |  53 +-
linux-headers/asm-riscv/unistd.h              |   9 +
linux-headers/asm-s390/unistd_32.h            |   1 +
linux-headers/asm-s390/unistd_64.h            |   1 +
linux-headers/asm-x86/kvm.h                   |   3 +
linux-headers/linux/const.h                   |   2 +-
linux-headers/linux/kvm.h                     |  12 +-
linux-headers/linux/psp-sev.h                 |   7 +
linux-headers/linux/userfaultfd.h             |  17 +-
target/riscv/cpu.c                            | 341 ++++++++++--
target/riscv/cpu.h                            |   7 +-
target/riscv/kvm.c                            | 499 +++++++++++++++++-
target/riscv/kvm_riscv.h                      |   1 +
19 files changed, 940 insertions(+), 87 deletions(-)
[PATCH v9 00/20] target/riscv, KVM: fixes and enhancements
Posted by Daniel Henrique Barboza 10 months ago
Hi,

In this version we dialed back from our design decision in patch 14,
returning to the design we've been using since the first version. The
rationale behind is that we can't get rid of EINVAL since it will break
extension for all other KVM versions prior to this one where we're
adding the first version of the KVM specific capabilities. We'll switch
later on for get-reg-list when it's available, but for now we're stuck
with EINVAL. Drew provided a detailed explanation here:

https://lore.kernel.org/qemu-devel/20230706-38ab9f9705448bb10413f1af@orel/T/#m75a5323e76518c02598758fdd6a8943951812875

As a bonus I also fixed the device-tree binding link satp in patch 2 like
Connor suggested. 

I believe we're ready to go.

Patches missing review: 14

Changes from v8:
  - patch 2:
    - fix device-tree binding link in commit message 
  - patch 14:
    - use EINVAL instead of ENOENT
v8 link: https://lore.kernel.org/qemu-devel/20230706-38ab9f9705448bb10413f1af@orel/T/#m1c889304847598789db313f3e0854ed0d41ce60c

Daniel Henrique Barboza (20):
  target/riscv: skip features setup for KVM CPUs
  hw/riscv/virt.c: skip 'mmu-type' FDT if satp mode not set
  target/riscv/cpu.c: restrict 'mvendorid' value
  target/riscv/cpu.c: restrict 'mimpid' value
  target/riscv/cpu.c: restrict 'marchid' value
  target/riscv: use KVM scratch CPUs to init KVM properties
  target/riscv: read marchid/mimpid in kvm_riscv_init_machine_ids()
  target/riscv: handle mvendorid/marchid/mimpid for KVM CPUs
  linux-headers: Update to v6.4-rc1
  target/riscv/kvm.c: init 'misa_ext_mask' with scratch CPU
  target/riscv/cpu: add misa_ext_info_arr[]
  target/riscv: add KVM specific MISA properties
  target/riscv/kvm.c: update KVM MISA bits
  target/riscv/kvm.c: add multi-letter extension KVM properties
  target/riscv/cpu.c: add satp_mode properties earlier
  target/riscv/cpu.c: remove priv_ver check from riscv_isa_string_ext()
  target/riscv/cpu.c: create KVM mock properties
  target/riscv: update multi-letter extension KVM properties
  target/riscv/kvm.c: add kvmconfig_get_cfg_addr() helper
  target/riscv/kvm.c: read/write (cbom|cboz)_blocksize in KVM

 hw/riscv/virt.c                               |  14 +-
 include/standard-headers/linux/const.h        |   2 +-
 include/standard-headers/linux/virtio_blk.h   |  18 +-
 .../standard-headers/linux/virtio_config.h    |   6 +
 include/standard-headers/linux/virtio_net.h   |   1 +
 linux-headers/asm-arm64/kvm.h                 |  33 ++
 linux-headers/asm-riscv/kvm.h                 |  53 +-
 linux-headers/asm-riscv/unistd.h              |   9 +
 linux-headers/asm-s390/unistd_32.h            |   1 +
 linux-headers/asm-s390/unistd_64.h            |   1 +
 linux-headers/asm-x86/kvm.h                   |   3 +
 linux-headers/linux/const.h                   |   2 +-
 linux-headers/linux/kvm.h                     |  12 +-
 linux-headers/linux/psp-sev.h                 |   7 +
 linux-headers/linux/userfaultfd.h             |  17 +-
 target/riscv/cpu.c                            | 341 ++++++++++--
 target/riscv/cpu.h                            |   7 +-
 target/riscv/kvm.c                            | 499 +++++++++++++++++-
 target/riscv/kvm_riscv.h                      |   1 +
 19 files changed, 940 insertions(+), 87 deletions(-)

-- 
2.41.0
Re: [PATCH v9 00/20] target/riscv, KVM: fixes and enhancements
Posted by Alistair Francis 9 months, 4 weeks ago
On Thu, Jul 6, 2023 at 8:19 PM Daniel Henrique Barboza
<dbarboza@ventanamicro.com> wrote:
>
> Hi,
>
> In this version we dialed back from our design decision in patch 14,
> returning to the design we've been using since the first version. The
> rationale behind is that we can't get rid of EINVAL since it will break
> extension for all other KVM versions prior to this one where we're
> adding the first version of the KVM specific capabilities. We'll switch
> later on for get-reg-list when it's available, but for now we're stuck
> with EINVAL. Drew provided a detailed explanation here:
>
> https://lore.kernel.org/qemu-devel/20230706-38ab9f9705448bb10413f1af@orel/T/#m75a5323e76518c02598758fdd6a8943951812875
>
> As a bonus I also fixed the device-tree binding link satp in patch 2 like
> Connor suggested.
>
> I believe we're ready to go.
>
> Patches missing review: 14
>
> Changes from v8:
>   - patch 2:
>     - fix device-tree binding link in commit message
>   - patch 14:
>     - use EINVAL instead of ENOENT
> v8 link: https://lore.kernel.org/qemu-devel/20230706-38ab9f9705448bb10413f1af@orel/T/#m1c889304847598789db313f3e0854ed0d41ce60c
>
> Daniel Henrique Barboza (20):
>   target/riscv: skip features setup for KVM CPUs
>   hw/riscv/virt.c: skip 'mmu-type' FDT if satp mode not set
>   target/riscv/cpu.c: restrict 'mvendorid' value
>   target/riscv/cpu.c: restrict 'mimpid' value
>   target/riscv/cpu.c: restrict 'marchid' value
>   target/riscv: use KVM scratch CPUs to init KVM properties
>   target/riscv: read marchid/mimpid in kvm_riscv_init_machine_ids()
>   target/riscv: handle mvendorid/marchid/mimpid for KVM CPUs
>   linux-headers: Update to v6.4-rc1
>   target/riscv/kvm.c: init 'misa_ext_mask' with scratch CPU
>   target/riscv/cpu: add misa_ext_info_arr[]
>   target/riscv: add KVM specific MISA properties
>   target/riscv/kvm.c: update KVM MISA bits
>   target/riscv/kvm.c: add multi-letter extension KVM properties
>   target/riscv/cpu.c: add satp_mode properties earlier
>   target/riscv/cpu.c: remove priv_ver check from riscv_isa_string_ext()
>   target/riscv/cpu.c: create KVM mock properties
>   target/riscv: update multi-letter extension KVM properties
>   target/riscv/kvm.c: add kvmconfig_get_cfg_addr() helper
>   target/riscv/kvm.c: read/write (cbom|cboz)_blocksize in KVM

Thanks!

Applied to riscv-to-apply.next

Alistair

>
>  hw/riscv/virt.c                               |  14 +-
>  include/standard-headers/linux/const.h        |   2 +-
>  include/standard-headers/linux/virtio_blk.h   |  18 +-
>  .../standard-headers/linux/virtio_config.h    |   6 +
>  include/standard-headers/linux/virtio_net.h   |   1 +
>  linux-headers/asm-arm64/kvm.h                 |  33 ++
>  linux-headers/asm-riscv/kvm.h                 |  53 +-
>  linux-headers/asm-riscv/unistd.h              |   9 +
>  linux-headers/asm-s390/unistd_32.h            |   1 +
>  linux-headers/asm-s390/unistd_64.h            |   1 +
>  linux-headers/asm-x86/kvm.h                   |   3 +
>  linux-headers/linux/const.h                   |   2 +-
>  linux-headers/linux/kvm.h                     |  12 +-
>  linux-headers/linux/psp-sev.h                 |   7 +
>  linux-headers/linux/userfaultfd.h             |  17 +-
>  target/riscv/cpu.c                            | 341 ++++++++++--
>  target/riscv/cpu.h                            |   7 +-
>  target/riscv/kvm.c                            | 499 +++++++++++++++++-
>  target/riscv/kvm_riscv.h                      |   1 +
>  19 files changed, 940 insertions(+), 87 deletions(-)
>
> --
> 2.41.0
>
>