Re: [PATCH v5 08/10] kvm: s390: Add KVM_CAP_S390_PROTECTED_DUMP

Claudio Imbrenda
2022-05-17T11:37:30Z

On Mon, 16 May 2022 09:08:15 +0000
Janosch Frank <frankja@linux.ibm.com> wrote:

> The capability indicates dump support for protected VMs.
>
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
> ---
> arch/s390/kvm/kvm-s390.c | 20 ++++++++++++++++++++
> include/uapi/linux/kvm.h | 1 +
> 2 files changed, 21 insertions(+)
>
> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
> index c0c848c84552..1d65235ed3d3 100644
> --- a/arch/s390/kvm/kvm-s390.c
> +++ b/arch/s390/kvm/kvm-s390.c
> @@ -606,6 +606,26 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
> case KVM_CAP_S390_PROTECTED:
> r = is_prot_virt_host();
> break;
> + case KVM_CAP_S390_PROTECTED_DUMP: {
> + u64 pv_cmds_dump[] = {
> + BIT_UVC_CMD_DUMP_INIT,
> + BIT_UVC_CMD_DUMP_CONFIG_STOR_STATE,
> + BIT_UVC_CMD_DUMP_CPU,
> + BIT_UVC_CMD_DUMP_COMPLETE,
> + };
> + int i;
> +
> + if (!is_prot_virt_host())
> + return 0;

we don't return usually in this function, can you use break instad? or
maybe even something simpler like this:

r = is_prot_virt_host();

for (i = 0; r && i < ARRAY_SIZE(...); i++)
r = r && test_bit_inv(...);
> +
> + r = 1;
> + for (i = 0; i < ARRAY_SIZE(pv_cmds_dump); i++) {
> + if (!test_bit_inv(pv_cmds_dump[i],
> + (unsigned long *)&uv_info.inst_calls_list))
> + return 0;
> + }
> + break;
> + }
> default:
> r = 0;
> }
> diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
> index 0a8b57654ea7..ba8f2985a8c0 100644
> --- a/include/uapi/linux/kvm.h
> +++ b/include/uapi/linux/kvm.h
> @@ -1152,6 +1152,7 @@ struct kvm_ppc_resize_hpt {
> #define KVM_CAP_DISABLE_QUIRKS2 213
> /* #define KVM_CAP_VM_TSC_CONTROL 214 */
> #define KVM_CAP_SYSTEM_EVENT_DATA 215
> +#define KVM_CAP_S390_PROTECTED_DUMP 216
>
> #ifdef KVM_CAP_IRQ_ROUTING
>