We're about to allow guests to use the Zicboz extension. KVM
userspace needs to know the cache block size in order to
properly advertise it to the guest. Provide a virtual config
register for userspace to get it with the GET_ONE_REG API, but
setting it cannot be supported, so disallow SET_ONE_REG.
Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Link: https://lore.kernel.org/r/20230224162631.405473-8-ajones@ventanamicro.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
        unsigned long mvendorid;
        unsigned long marchid;
        unsigned long mimpid;
+       unsigned long zicboz_block_size;
 };
 
 /* CORE registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
 
                        return -EINVAL;
                reg_val = riscv_cbom_block_size;
                break;
+       case KVM_REG_RISCV_CONFIG_REG(zicboz_block_size):
+               if (!riscv_isa_extension_available(vcpu->arch.isa, ZICBOZ))
+                       return -EINVAL;
+               reg_val = riscv_cboz_block_size;
+               break;
        case KVM_REG_RISCV_CONFIG_REG(mvendorid):
                reg_val = vcpu->arch.mvendorid;
                break;
                break;
        case KVM_REG_RISCV_CONFIG_REG(zicbom_block_size):
                return -EOPNOTSUPP;
+       case KVM_REG_RISCV_CONFIG_REG(zicboz_block_size):
+               return -EOPNOTSUPP;
        case KVM_REG_RISCV_CONFIG_REG(mvendorid):
                if (!vcpu->arch.ran_atleast_once)
                        vcpu->arch.mvendorid = reg_val;