On 2025-02-18 at 11:09, Alexey Kardashevskiy wrote: > @@ -601,6 +603,25 @@ struct sev_data_snp_addr { > u64 address; /* In/Out */ > } __packed; > > +/** > + * struct sev_data_snp_feature_info - SEV_CMD_SNP_FEATURE_INFO > command params > + * > + * @len: length of this struct > + * @ecx_in: subfunction index of CPUID Fn8000_0024 > + * @feature_info_paddr: physical address of a page with > sev_snp_feature_info > + */ > +#define SNP_FEATURE_FN8000_0024_EBX_X00_SEVTIO 1 According to the SNP firmware ABI spec, support for SEV TIO commands is indicated by bit 1 (bit 0 is for SEV legacy commands). > +static int snp_get_feature_info(struct sev_device *sev, u32 ecx, > struct sev_snp_feature_info *fi) > +{ > + struct sev_user_data_snp_status status = { 0 }; > + int psp_ret = 0, ret; > + > + ret = snp_platform_status_locked(sev, &status, &psp_ret); > + if (ret) > + return ret; > + if (ret != SEV_RET_SUCCESS) s/ret/psp_ret/ > + return -EFAULT; > + if (!status.feature_info) > + return -ENOENT; > + > + ret = snp_feature_info_locked(sev, ecx, fi, &psp_ret); > + if (ret) > + return ret; > + if (ret != SEV_RET_SUCCESS) Same here