Commit e07c90d7 authored by David E. Box's avatar David E. Box Committed by Jia, Yingbao
Browse files

platform/x86/intel/pmt: Add header to struct intel_pmt_entry

mainline inclusion
from mainline-v6.8
commit 4d1b7efee3fc703c64bacc37c4824888c5f26e8b
category: bugfix
bugzilla: https://gitee.com/openeuler/intel-kernel/issues/IB6QCG
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4d1b7efee3fc703c64bacc37c4824888c5f26e8b



-------------------------------------------------

Intel-SIG: commit 4d1b7efee3fc platform/x86/intel/pmt: Add header to struct intel_pmt_entry.
Backport intel tpmi base driver update for 5.10

The PMT header is passed to several functions. Instead, store the header in
struct intel_pmt_entry which is also passed to these functions and shorten
the argument list. This simplifies the calls in preparation for later
changes. While here also perform a newline cleanup.

Signed-off-by: default avatarDavid E. Box <david.e.box@linux.intel.com>
Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20231129222132.2331261-10-david.e.box@linux.intel.com


Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
[ Yingbao Jia: amend commit log ]
Signed-off-by: default avatarYingbao Jia <yingbao.jia@intel.com>
parent 346962d3
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -158,12 +158,12 @@ static struct class intel_pmt_class = {
};

static int intel_pmt_populate_entry(struct intel_pmt_entry *entry,
				    struct intel_pmt_header *header,
				    struct intel_vsec_device *ivdev,
				    struct resource *disc_res)
{
	struct pci_dev *pci_dev = ivdev->pcidev;
	struct device *dev = &ivdev->auxdev.dev;
	struct intel_pmt_header *header = &entry->header;
	u8 bir;

	/*
@@ -312,7 +312,6 @@ int intel_pmt_dev_create(struct intel_pmt_entry *entry, struct intel_pmt_namespa
			 struct intel_vsec_device *intel_vsec_dev, int idx)
{
	struct device *dev = &intel_vsec_dev->auxdev.dev;
	struct intel_pmt_header header;
	struct resource	*disc_res;
	int ret;

@@ -322,16 +321,15 @@ int intel_pmt_dev_create(struct intel_pmt_entry *entry, struct intel_pmt_namespa
	if (IS_ERR(entry->disc_table))
		return PTR_ERR(entry->disc_table);

	ret = ns->pmt_header_decode(entry, &header, dev);
	ret = ns->pmt_header_decode(entry, dev);
	if (ret)
		return ret;

	ret = intel_pmt_populate_entry(entry, &header, intel_vsec_dev, disc_res);
	ret = intel_pmt_populate_entry(entry, intel_vsec_dev, disc_res);
	if (ret)
		return ret;

	return intel_pmt_dev_register(entry, ns, dev);

}
EXPORT_SYMBOL_NS_GPL(intel_pmt_dev_create, INTEL_PMT);

+8 −8
Original line number Diff line number Diff line
@@ -18,7 +18,15 @@
#define GET_BIR(v)		((v) & GENMASK(2, 0))
#define GET_ADDRESS(v)		((v) & GENMASK(31, 3))

struct intel_pmt_header {
	u32	base_offset;
	u32	size;
	u32	guid;
	u8	access_type;
};

struct intel_pmt_entry {
	struct intel_pmt_header	header;
	struct bin_attribute	pmt_bin_attr;
	struct kobject		*kobj;
	void __iomem		*disc_table;
@@ -29,19 +37,11 @@ struct intel_pmt_entry {
	int			devid;
};

struct intel_pmt_header {
	u32	base_offset;
	u32	size;
	u32	guid;
	u8	access_type;
};

struct intel_pmt_namespace {
	const char *name;
	struct xarray *xa;
	const struct attribute_group *attr_grp;
	int (*pmt_header_decode)(struct intel_pmt_entry *entry,
				 struct intel_pmt_header *header,
				 struct device *dev);
};

+1 −1
Original line number Diff line number Diff line
@@ -223,10 +223,10 @@ static const struct attribute_group pmt_crashlog_group = {
};

static int pmt_crashlog_header_decode(struct intel_pmt_entry *entry,
				      struct intel_pmt_header *header,
				      struct device *dev)
{
	void __iomem *disc_table = entry->disc_table;
	struct intel_pmt_header *header = &entry->header;
	struct crashlog_entry *crashlog;

	if (!pmt_crashlog_supported(entry))
+1 −1
Original line number Diff line number Diff line
@@ -58,10 +58,10 @@ static bool pmt_telem_region_overlaps(struct intel_pmt_entry *entry,
}

static int pmt_telem_header_decode(struct intel_pmt_entry *entry,
				   struct intel_pmt_header *header,
				   struct device *dev)
{
	void __iomem *disc_table = entry->disc_table;
	struct intel_pmt_header *header = &entry->header;

	if (pmt_telem_region_overlaps(entry, dev))
		return 1;