Message ID | 44d9530187b4b0b1c05e150fa73fe22ab54fc911.1708933498.git.isaku.yamahata@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v19,001/130] x86/virt/tdx: Rename _offset to _member for TD_SYSINFO_MAP() macro | expand |
On 2/26/2024 4:25 PM, isaku.yamahata@intel.com wrote: > From: Kai Huang <kai.huang@intel.com> > > The kernel reads all TDMR related global metadata fields based on a > table which maps the metadata fields to the corresponding members of > 'struct tdx_tdmr_sysinfo'. Currently this table is a static variable. > > But this table is only used by the function which reads these metadata > fields and becomes useless after reading is done. Change the table > to function local variable. > > Signed-off-by: Kai Huang <kai.huang@intel.com> > Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com> Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com> > --- > arch/x86/virt/vmx/tdx/tdx.c | 17 ++++++++--------- > 1 file changed, 8 insertions(+), 9 deletions(-) > > diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c > index 2aee64d2f27f..cdcb3332bc5d 100644 > --- a/arch/x86/virt/vmx/tdx/tdx.c > +++ b/arch/x86/virt/vmx/tdx/tdx.c > @@ -301,17 +301,16 @@ struct field_mapping { > { .field_id = MD_FIELD_ID_##_field_id, \ > .offset = offsetof(struct tdx_tdmr_sysinfo, _member) } > > -/* Map TD_SYSINFO fields into 'struct tdx_tdmr_sysinfo': */ > -static const struct field_mapping fields[] = { > - TD_SYSINFO_MAP(MAX_TDMRS, max_tdmrs), > - TD_SYSINFO_MAP(MAX_RESERVED_PER_TDMR, max_reserved_per_tdmr), > - TD_SYSINFO_MAP(PAMT_4K_ENTRY_SIZE, pamt_entry_size[TDX_PS_4K]), > - TD_SYSINFO_MAP(PAMT_2M_ENTRY_SIZE, pamt_entry_size[TDX_PS_2M]), > - TD_SYSINFO_MAP(PAMT_1G_ENTRY_SIZE, pamt_entry_size[TDX_PS_1G]), > -}; > - > static int get_tdx_tdmr_sysinfo(struct tdx_tdmr_sysinfo *tdmr_sysinfo) > { > + /* Map TD_SYSINFO fields into 'struct tdx_tdmr_sysinfo': */ > + const struct field_mapping fields[] = { > + TD_SYSINFO_MAP(MAX_TDMRS, max_tdmrs), > + TD_SYSINFO_MAP(MAX_RESERVED_PER_TDMR, max_reserved_per_tdmr), > + TD_SYSINFO_MAP(PAMT_4K_ENTRY_SIZE, pamt_entry_size[TDX_PS_4K]), > + TD_SYSINFO_MAP(PAMT_2M_ENTRY_SIZE, pamt_entry_size[TDX_PS_2M]), > + TD_SYSINFO_MAP(PAMT_1G_ENTRY_SIZE, pamt_entry_size[TDX_PS_1G]), > + }; > int ret; > int i; >
On Mon, Feb 26, 2024 at 12:25:04AM -0800, isaku.yamahata@intel.com wrote: > From: Kai Huang <kai.huang@intel.com> > > The kernel reads all TDMR related global metadata fields based on a > table which maps the metadata fields to the corresponding members of > 'struct tdx_tdmr_sysinfo'. Currently this table is a static variable. > > But this table is only used by the function which reads these metadata > fields and becomes useless after reading is done. Change the table > to function local variable. > > Signed-off-by: Kai Huang <kai.huang@intel.com> > Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com> Reviewed-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
On Thu, 2024-04-04 at 17:08 +0300, Kirill A. Shutemov wrote: > On Mon, Feb 26, 2024 at 12:25:04AM -0800, isaku.yamahata@intel.com wrote: > > From: Kai Huang <kai.huang@intel.com> > > > > The kernel reads all TDMR related global metadata fields based on a > > table which maps the metadata fields to the corresponding members of > > 'struct tdx_tdmr_sysinfo'. Currently this table is a static variable. > > > > But this table is only used by the function which reads these metadata > > fields and becomes useless after reading is done. Change the table > > to function local variable. > > > > Signed-off-by: Kai Huang <kai.huang@intel.com> > > Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com> > > Reviewed-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> > Thanks Kirill. I've split this out and sent out v2, and have added your tag there: https://lore.kernel.org/lkml/cover.1711447449.git.kai.huang@intel.com/
diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c index 2aee64d2f27f..cdcb3332bc5d 100644 --- a/arch/x86/virt/vmx/tdx/tdx.c +++ b/arch/x86/virt/vmx/tdx/tdx.c @@ -301,17 +301,16 @@ struct field_mapping { { .field_id = MD_FIELD_ID_##_field_id, \ .offset = offsetof(struct tdx_tdmr_sysinfo, _member) } -/* Map TD_SYSINFO fields into 'struct tdx_tdmr_sysinfo': */ -static const struct field_mapping fields[] = { - TD_SYSINFO_MAP(MAX_TDMRS, max_tdmrs), - TD_SYSINFO_MAP(MAX_RESERVED_PER_TDMR, max_reserved_per_tdmr), - TD_SYSINFO_MAP(PAMT_4K_ENTRY_SIZE, pamt_entry_size[TDX_PS_4K]), - TD_SYSINFO_MAP(PAMT_2M_ENTRY_SIZE, pamt_entry_size[TDX_PS_2M]), - TD_SYSINFO_MAP(PAMT_1G_ENTRY_SIZE, pamt_entry_size[TDX_PS_1G]), -}; - static int get_tdx_tdmr_sysinfo(struct tdx_tdmr_sysinfo *tdmr_sysinfo) { + /* Map TD_SYSINFO fields into 'struct tdx_tdmr_sysinfo': */ + const struct field_mapping fields[] = { + TD_SYSINFO_MAP(MAX_TDMRS, max_tdmrs), + TD_SYSINFO_MAP(MAX_RESERVED_PER_TDMR, max_reserved_per_tdmr), + TD_SYSINFO_MAP(PAMT_4K_ENTRY_SIZE, pamt_entry_size[TDX_PS_4K]), + TD_SYSINFO_MAP(PAMT_2M_ENTRY_SIZE, pamt_entry_size[TDX_PS_2M]), + TD_SYSINFO_MAP(PAMT_1G_ENTRY_SIZE, pamt_entry_size[TDX_PS_1G]), + }; int ret; int i;