Re: [PATCH 1/9] x86/hyperv: Add sev-snp enlightened guest static key

Tianyu Lan
2023-06-06T13:43:46Z

On 6/5/2023 8:09 PM, Vitaly Kuznetsov wrote:
>> --- a/arch/x86/kernel/cpu/mshyperv.c
>> +++ b/arch/x86/kernel/cpu/mshyperv.c
>> @@ -402,8 +402,12 @@ static void __init ms_hyperv_init_platform(void)
>> pr_info("Hyper-V: Isolation Config: Group A 0x%x, Group B 0x%x\n",
>> ms_hyperv.isolation_config_a, ms_hyperv.isolation_config_b);
>>
>> - if (hv_get_isolation_type() == HV_ISOLATION_TYPE_SNP)
>> +
>> + if (cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) {
>> + static_branch_enable(&isolation_type_en_snp);
>> + } else if (hv_get_isolation_type() == HV_ISOLATION_TYPE_SNP) {
>> static_branch_enable(&isolation_type_snp);
> Nitpick: In case 'isolation_type_snp' and 'isolation_type_en_snp' are
> mutually exclusive, I'd suggest we rename the former: it is quite
> un-intuitive that for an enlightened SNP guest '&isolation_type_snp' is
> NOT enabled. E.g. we can use
>
> 'isol_type_snp_paravisor'
> and
> 'isol_type_snp_enlightened'
>
> (I also don't like 'isolation_type_en_snp' name as 'en' normally stands
> for 'enabled')

Hi Vitaly:
Thanks for your review. Agree. Will rename them.

>
>> --- a/include/asm-generic/mshyperv.h
>> +++ b/include/asm-generic/mshyperv.h
>> @@ -36,15 +36,21 @@ struct ms_hyperv_info {
>> u32 nested_features;
>> u32 max_vp_index;
>> u32 max_lp_index;
>> - u32 isolation_config_a;
>> + union {
>> + u32 isolation_config_a;
>> + struct {
>> + u32 paravisor_present : 1;
>> + u32 reserved1 : 31;
>> + };
>> + };
>> union {
>> u32 isolation_config_b;
>> struct {
>> u32 cvm_type : 4;
>> - u32 reserved1 : 1;
>> + u32 reserved2 : 1;
>> u32 shared_gpa_boundary_active : 1;
>> u32 shared_gpa_boundary_bits : 6;
>> - u32 reserved2 : 20;
>> + u32 reserved3 : 20;
> Maybe use 'reserved_a1', 'reserved_b1', 'reserved_b2',... to avoid the
> need to rename in the future when more bits from isolation_config_a get
> used?
>

Good suggestion. will update.