On Wed, 30 Apr 2025, David E. Box wrote: > The TPMI platform information provides a mapping of OOBMSM PCI devices to > logical CPUs. Since this mapping is consistent across all OOBMSM features > (e.g., TPMI, PMT, SDSi), it can be leveraged by multiple drivers. To > facilitate reuse, relocate the struct intel_tpmi_plat_info to intel_vsec.h, > renaming it to struct oobmsm_plat_info, making it accessible to other > features. While modifying headers, place them in alphabetical order. > > Signed-off-by: David E. Box > --- > drivers/platform/x86/intel/plr_tpmi.c | 3 ++- > .../intel/speed_select_if/isst_tpmi_core.c | 9 ++++--- > .../uncore-frequency/uncore-frequency-tpmi.c | 5 ++-- > drivers/platform/x86/intel/vsec_tpmi.c | 4 +-- > drivers/powercap/intel_rapl_tpmi.c | 9 ++++--- > include/linux/intel_tpmi.h | 26 ++----------------- > include/linux/intel_vsec.h | 22 ++++++++++++++++ > 7 files changed, 41 insertions(+), 37 deletions(-) > > diff --git a/drivers/platform/x86/intel/plr_tpmi.c b/drivers/platform/x86/intel/plr_tpmi.c > index 2b55347a5a93..58132da47745 100644 > --- a/drivers/platform/x86/intel/plr_tpmi.c > +++ b/drivers/platform/x86/intel/plr_tpmi.c > @@ -14,6 +14,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -256,7 +257,7 @@ DEFINE_SHOW_STORE_ATTRIBUTE(plr_status); > > static int intel_plr_probe(struct auxiliary_device *auxdev, const struct auxiliary_device_id *id) > { > - struct intel_tpmi_plat_info *plat_info; > + struct oobmsm_plat_info *plat_info; > struct dentry *dentry; > int i, num_resources; > struct resource *res; > diff --git a/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c b/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c > index 9978cdd19851..875afa6835cd 100644 > --- a/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c > +++ b/drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c > @@ -22,6 +22,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -1446,7 +1447,7 @@ int tpmi_sst_dev_add(struct auxiliary_device *auxdev) > { > struct tpmi_per_power_domain_info *pd_info; > bool read_blocked = 0, write_blocked = 0; > - struct intel_tpmi_plat_info *plat_info; > + struct oobmsm_plat_info *plat_info; > struct device *dev = &auxdev->dev; > struct tpmi_sst_struct *tpmi_sst; > u8 i, num_resources, io_die_cnt; > @@ -1598,7 +1599,7 @@ EXPORT_SYMBOL_NS_GPL(tpmi_sst_dev_add, "INTEL_TPMI_SST"); > void tpmi_sst_dev_remove(struct auxiliary_device *auxdev) > { > struct tpmi_sst_struct *tpmi_sst = auxiliary_get_drvdata(auxdev); > - struct intel_tpmi_plat_info *plat_info; > + struct oobmsm_plat_info *plat_info; > > plat_info = tpmi_get_platform_data(auxdev); > if (!plat_info) > @@ -1620,7 +1621,7 @@ void tpmi_sst_dev_suspend(struct auxiliary_device *auxdev) > { > struct tpmi_sst_struct *tpmi_sst = auxiliary_get_drvdata(auxdev); > struct tpmi_per_power_domain_info *power_domain_info; > - struct intel_tpmi_plat_info *plat_info; > + struct oobmsm_plat_info *plat_info; > void __iomem *cp_base; > > plat_info = tpmi_get_platform_data(auxdev); > @@ -1648,7 +1649,7 @@ void tpmi_sst_dev_resume(struct auxiliary_device *auxdev) > { > struct tpmi_sst_struct *tpmi_sst = auxiliary_get_drvdata(auxdev); > struct tpmi_per_power_domain_info *power_domain_info; > - struct intel_tpmi_plat_info *plat_info; > + struct oobmsm_plat_info *plat_info; > void __iomem *cp_base; > > plat_info = tpmi_get_platform_data(auxdev); > diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c > index 4aa6c227ec82..23a86feb12ef 100644 > --- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c > +++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c > @@ -22,9 +22,10 @@ > #include > #include > #include > +#include > +#include > #include > #include > -#include > > #include "uncore-frequency-common.h" > > @@ -421,7 +422,7 @@ static void remove_cluster_entries(struct tpmi_uncore_struct *tpmi_uncore) > static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_device_id *id) > { > bool read_blocked = 0, write_blocked = 0; > - struct intel_tpmi_plat_info *plat_info; > + struct oobmsm_plat_info *plat_info; > struct tpmi_uncore_struct *tpmi_uncore; > bool uncore_sysfs_added = false; > int ret, i, pkg = 0; > diff --git a/drivers/platform/x86/intel/vsec_tpmi.c b/drivers/platform/x86/intel/vsec_tpmi.c > index 5c383a27bbe8..d95a0d994546 100644 > --- a/drivers/platform/x86/intel/vsec_tpmi.c > +++ b/drivers/platform/x86/intel/vsec_tpmi.c > @@ -116,7 +116,7 @@ struct intel_tpmi_info { > struct intel_vsec_device *vsec_dev; > int feature_count; > u64 pfs_start; > - struct intel_tpmi_plat_info plat_info; > + struct oobmsm_plat_info plat_info; > void __iomem *tpmi_control_mem; > struct dentry *dbgfs_dir; > }; > @@ -187,7 +187,7 @@ struct tpmi_feature_state { > /* Used during auxbus device creation */ > static DEFINE_IDA(intel_vsec_tpmi_ida); > > -struct intel_tpmi_plat_info *tpmi_get_platform_data(struct auxiliary_device *auxdev) > +struct oobmsm_plat_info *tpmi_get_platform_data(struct auxiliary_device *auxdev) > { > struct intel_vsec_device *vsec_dev = auxdev_to_ivdev(auxdev); > > diff --git a/drivers/powercap/intel_rapl_tpmi.c b/drivers/powercap/intel_rapl_tpmi.c > index af2368f4db10..82201bf4685d 100644 > --- a/drivers/powercap/intel_rapl_tpmi.c > +++ b/drivers/powercap/intel_rapl_tpmi.c > @@ -9,9 +9,10 @@ > #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt > > #include > -#include > -#include > #include > +#include > +#include > +#include > #include > #include > > @@ -48,7 +49,7 @@ enum tpmi_rapl_register { > > struct tpmi_rapl_package { > struct rapl_if_priv priv; > - struct intel_tpmi_plat_info *tpmi_info; > + struct oobmsm_plat_info *tpmi_info; > struct rapl_package *rp; > void __iomem *base; > struct list_head node; > @@ -253,7 +254,7 @@ static int intel_rapl_tpmi_probe(struct auxiliary_device *auxdev, > const struct auxiliary_device_id *id) > { > struct tpmi_rapl_package *trp; > - struct intel_tpmi_plat_info *info; > + struct oobmsm_plat_info *info; > struct resource *res; > u32 offset; > int ret; > diff --git a/include/linux/intel_tpmi.h b/include/linux/intel_tpmi.h > index ff480b47ae64..d1fe2469b0a4 100644 > --- a/include/linux/intel_tpmi.h > +++ b/include/linux/intel_tpmi.h > @@ -7,6 +7,7 @@ > #define _INTEL_TPMI_H_ > > #include Add an empty line here. Once that is addressed, Reviewed-by: Ilpo Järvinen > +struct oobmsm_plat_info; > > #define TPMI_VERSION_INVALID 0xff > #define TPMI_MINOR_VERSION(val) FIELD_GET(GENMASK(4, 0), val) > @@ -26,30 +27,7 @@ enum intel_tpmi_id { > TPMI_INFO_ID = 0x81, /* Special ID for PCI BDF and Package ID information */ > }; > > -/** > - * struct intel_tpmi_plat_info - Platform information for a TPMI device instance > - * @cdie_mask: Mask of all compute dies in the partition > - * @package_id: CPU Package id > - * @partition: Package partition id when multiple VSEC PCI devices per package > - * @segment: PCI segment ID > - * @bus_number: PCI bus number > - * @device_number: PCI device number > - * @function_number: PCI function number > - * > - * Structure to store platform data for a TPMI device instance. This > - * struct is used to return data via tpmi_get_platform_data(). > - */ > -struct intel_tpmi_plat_info { > - u16 cdie_mask; > - u8 package_id; > - u8 partition; > - u8 segment; > - u8 bus_number; > - u8 device_number; > - u8 function_number; > -}; > - > -struct intel_tpmi_plat_info *tpmi_get_platform_data(struct auxiliary_device *auxdev); > +struct oobmsm_plat_info *tpmi_get_platform_data(struct auxiliary_device *auxdev); > struct resource *tpmi_get_resource_at_index(struct auxiliary_device *auxdev, int index); > int tpmi_get_resource_count(struct auxiliary_device *auxdev); > int tpmi_get_feature_status(struct auxiliary_device *auxdev, int feature_id, bool *read_blocked, > diff --git a/include/linux/intel_vsec.h b/include/linux/intel_vsec.h > index a07796d7d43b..cd78d0b2e623 100644 > --- a/include/linux/intel_vsec.h > +++ b/include/linux/intel_vsec.h > @@ -144,6 +144,28 @@ struct intel_vsec_device { > unsigned long cap_id; > }; > > +/** > + * struct oobmsm_plat_info - Platform information for a device instance > + * @cdie_mask: Mask of all compute dies in the partition > + * @package_id: CPU Package id > + * @partition: Package partition id when multiple VSEC PCI devices per package > + * @segment: PCI segment ID > + * @bus_number: PCI bus number > + * @device_number: PCI device number > + * @function_number: PCI function number > + * > + * Structure to store platform data for a OOBMSM device instance. > + */ > +struct oobmsm_plat_info { > + u16 cdie_mask; > + u8 package_id; > + u8 partition; > + u8 segment; > + u8 bus_number; > + u8 device_number; > + u8 function_number; > +}; > + > int intel_vsec_add_aux(struct pci_dev *pdev, struct device *parent, > struct intel_vsec_device *intel_vsec_dev, > const char *name); > -- i.