On 7/15/22 10:10, Marc-André Lureau wrote:
[...]
>> ms->pv = true;
>>
>> + rc = s390_pv_query_info();
>> + if (rc) {
>> + goto out_err;
>>
>
> Maybe it's not necessary to make it fatal on error?
>
> lgtm otherwise
Hmm, yes and no.
The info API is fenced by the dump CAP so I don't ever expect an error
here but on the other hand an optional info API fail might not warrant
an error.
I see. You could explain more explicitly in the commit messages and/or comments the kernel version/requirements.
>
>
>> + }
>> +
>> /* Set SE header and unpack */
>> rc = s390_ipl_prepare_pv_header();
>> if (rc) {
>> diff --git a/include/hw/s390x/pv.h b/include/hw/s390x/pv.h
>> index 1f1f545bfc..6fa55bf70e 100644
>> --- a/include/hw/s390x/pv.h
>> +++ b/include/hw/s390x/pv.h
>> @@ -38,6 +38,7 @@ static inline bool s390_is_pv(void)
>> return ccw->pv;
>> }
>>
>> +int s390_pv_query_info(void);
>> int s390_pv_vm_enable(void);
>> void s390_pv_vm_disable(void);
>> int s390_pv_set_sec_parms(uint64_t origin, uint64_t length);
>> @@ -46,8 +47,13 @@ void s390_pv_prep_reset(void);
>> int s390_pv_verify(void);
>> void s390_pv_unshare(void);
>> void s390_pv_inject_reset_error(CPUState *cs);
>> +uint64_t kvm_s390_pv_dmp_get_size_cpu(void);
>> +uint64_t kvm_s390_pv_dmp_get_size_mem(void);
>> +uint64_t kvm_s390_pv_dmp_get_size_complete(void);
>> +bool kvm_s390_pv_info_basic_valid(void);
>> #else /* CONFIG_KVM */
>> static inline bool s390_is_pv(void) { return false; }
>> +static inline int s390_pv_query_info(void) { return 0; }
>> static inline int s390_pv_vm_enable(void) { return 0; }
>> static inline void s390_pv_vm_disable(void) {}
>> static inline int s390_pv_set_sec_parms(uint64_t origin, uint64_t length)
>> { return 0; }
>> @@ -56,6 +62,10 @@ static inline void s390_pv_prep_reset(void) {}
>> static inline int s390_pv_verify(void) { return 0; }
>> static inline void s390_pv_unshare(void) {}
>> static inline void s390_pv_inject_reset_error(CPUState *cs) {};
>> +static inline uint64_t kvm_s390_pv_dmp_get_size_cpu(void) { return 0; }
>> +static inline uint64_t kvm_s390_pv_dmp_get_size_mem(void) { return 0; }
>> +static inline uint64_t kvm_s390_pv_dmp_get_size_complete(void) { return
>> 0; }
>> +static inline bool kvm_s390_pv_info_basic_valid(void) { return false; }
>> #endif /* CONFIG_KVM */
>>
>> int s390_pv_kvm_init(ConfidentialGuestSupport *cgs, Error **errp);
>> --
>> 2.34.1
>>
>>
>>
>