On Fri, 2022-06-24 at 09:41 +0800, Chao Gao wrote: > On Wed, Jun 22, 2022 at 11:16:07PM +1200, Kai Huang wrote: > > -static bool intel_cc_platform_has(enum cc_attr attr) > > +#ifdef CONFIG_INTEL_TDX_GUEST > > +static bool intel_tdx_guest_has(enum cc_attr attr) > > { > > switch (attr) { > > case CC_ATTR_GUEST_UNROLL_STRING_IO: > > @@ -28,6 +31,33 @@ static bool intel_cc_platform_has(enum cc_attr attr) > > return false; > > } > > } > > +#endif > > + > > +#ifdef CONFIG_INTEL_TDX_HOST > > +static bool intel_tdx_host_has(enum cc_attr attr) > > +{ > > + switch (attr) { > > + case CC_ATTR_ACPI_CPU_HOTPLUG_DISABLED: > > + case CC_ATTR_ACPI_MEMORY_HOTPLUG_DISABLED: > > + return true; > > + default: > > + return false; > > + } > > +} > > +#endif > > + > > +static bool intel_cc_platform_has(enum cc_attr attr) > > +{ > > +#ifdef CONFIG_INTEL_TDX_GUEST > > + if (boot_cpu_has(X86_FEATURE_TDX_GUEST)) > > + return intel_tdx_guest_has(attr); > > +#endif > > +#ifdef CONFIG_INTEL_TDX_HOST > > + if (platform_tdx_enabled()) > > + return intel_tdx_host_has(attr); > > +#endif > > + return false; > > +} > > how about: > > static bool intel_cc_platform_has(enum cc_attr attr) > { > switch (attr) { > /* attributes applied to TDX guest only */ > case CC_ATTR_GUEST_UNROLL_STRING_IO: > ... > return boot_cpu_has(X86_FEATURE_TDX_GUEST); > > /* attributes applied to TDX host only */ > case CC_ATTR_ACPI_CPU_HOTPLUG_DISABLED: > case CC_ATTR_ACPI_MEMORY_HOTPLUG_DISABLED: > return platform_tdx_enabled(); > > default: > return false; > } > } > > so that we can get rid of #ifdef/endif. Personally I don't quite like this way. To me having separate function for host and guest is more clear and more flexible. And I don't think having #ifdef/endif has any problem. I would like to leave to maintainers. -- Thanks, -Kai