platform-driver-x86.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jithu Joseph <jithu.joseph@intel.com>
To: hdegoede@redhat.com, markgross@kernel.org
Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
	dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
	gregkh@linuxfoundation.org, rostedt@goodmis.org,
	jithu.joseph@intel.com, ashok.raj@intel.com, tony.luck@intel.com,
	linux-kernel@vger.kernel.org,
	platform-driver-x86@vger.kernel.org, patches@lists.linux.dev,
	ravi.v.shankar@intel.com, thiago.macieira@intel.com,
	athenas.jimenez.gonzalez@intel.com, sohil.mehta@intel.com
Subject: [PATCH 3/5] platform/x86/intel/ifs: Sysfs interface for Array BIST
Date: Tue, 31 Jan 2023 15:43:00 -0800	[thread overview]
Message-ID: <20230131234302.3997223-4-jithu.joseph@intel.com> (raw)
In-Reply-To: <20230131234302.3997223-1-jithu.joseph@intel.com>

The interface to trigger Array BIST test and obtain its result
is similar to the existing scan test. The only notable
difference is that, Array BIST doesn't require any test content
to be loaded. So binary load related options are not needed for
this test.

Add sysfs interface array BIST test, the testing support will
be added by subsequent patch.

Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
---
 drivers/platform/x86/intel/ifs/ifs.h     |  1 +
 drivers/platform/x86/intel/ifs/core.c    | 18 +++++++++++++-----
 drivers/platform/x86/intel/ifs/runtest.c | 11 ++++++++++-
 drivers/platform/x86/intel/ifs/sysfs.c   | 17 ++++++++++++++++-
 4 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/drivers/platform/x86/intel/ifs/ifs.h b/drivers/platform/x86/intel/ifs/ifs.h
index 2cef88a88aa9..07423bc4e368 100644
--- a/drivers/platform/x86/intel/ifs/ifs.h
+++ b/drivers/platform/x86/intel/ifs/ifs.h
@@ -249,5 +249,6 @@ static inline struct ifs_data *ifs_get_data(struct device *dev)
 int ifs_load_firmware(struct device *dev);
 int do_core_test(int cpu, struct device *dev);
 const struct attribute_group **ifs_get_groups(void);
+const struct attribute_group **ifs_get_array_groups(void);
 
 #endif
diff --git a/drivers/platform/x86/intel/ifs/core.c b/drivers/platform/x86/intel/ifs/core.c
index ab234620ef4c..2b7a49fd473d 100644
--- a/drivers/platform/x86/intel/ifs/core.c
+++ b/drivers/platform/x86/intel/ifs/core.c
@@ -25,6 +25,7 @@ static struct ifs_device ifs_devices[] = {
 	[IFS_SAF] = {
 		.data = {
 			.integrity_cap_bit = MSR_INTEGRITY_CAPS_PERIODIC_BIST_BIT,
+			.pkg_auth = NULL,
 			.test_num = IFS_SAF,
 		},
 		.misc = {
@@ -36,6 +37,7 @@ static struct ifs_device ifs_devices[] = {
 	[IFS_ARRAY] = {
 		.data = {
 			.integrity_cap_bit = MSR_INTEGRITY_CAPS_ARRAY_BIST_BIT,
+			.pkg_auth = NULL,
 			.test_num = IFS_ARRAY,
 		},
 		.misc = {
@@ -72,11 +74,17 @@ static int __init ifs_init(void)
 		if (!(msrval & BIT(ifs_devices[i].data.integrity_cap_bit)))
 			continue;
 
-		ifs_devices[i].data.pkg_auth = kmalloc_array(topology_max_packages(),
-							     sizeof(bool), GFP_KERNEL);
-		if (!ifs_devices[i].data.pkg_auth)
-			continue;
-		ifs_devices[i].misc.groups = ifs_get_groups();
+		switch (ifs_devices[i].data.test_num) {
+		case IFS_SAF:
+			ifs_devices[i].data.pkg_auth = kmalloc_array(topology_max_packages(),
+								     sizeof(bool), GFP_KERNEL);
+			if (!ifs_devices[i].data.pkg_auth)
+				continue;
+			ifs_devices[i].misc.groups = ifs_get_groups();
+			break;
+		case IFS_ARRAY:
+			ifs_devices[i].misc.groups = ifs_get_array_groups();
+		}
 
 		if (misc_register(&ifs_devices[i].misc))
 			kfree(ifs_devices[i].data.pkg_auth);
diff --git a/drivers/platform/x86/intel/ifs/runtest.c b/drivers/platform/x86/intel/ifs/runtest.c
index 0bfd8fcdd7e8..65e08af70994 100644
--- a/drivers/platform/x86/intel/ifs/runtest.c
+++ b/drivers/platform/x86/intel/ifs/runtest.c
@@ -236,6 +236,7 @@ static void ifs_test_core(int cpu, struct device *dev)
  */
 int do_core_test(int cpu, struct device *dev)
 {
+	struct ifs_data *ifsd = ifs_get_data(dev);
 	int ret = 0;
 
 	/* Prevent CPUs from being taken offline during the scan test */
@@ -247,7 +248,15 @@ int do_core_test(int cpu, struct device *dev)
 		goto out;
 	}
 
-	ifs_test_core(cpu, dev);
+	switch (ifsd->test_num) {
+	case IFS_SAF:
+		ifs_test_core(cpu, dev);
+		break;
+	case IFS_ARRAY:
+	default:
+		return -EINVAL;
+	}
+
 out:
 	cpus_read_unlock();
 	return ret;
diff --git a/drivers/platform/x86/intel/ifs/sysfs.c b/drivers/platform/x86/intel/ifs/sysfs.c
index ee636a76b083..7cf32184ce6a 100644
--- a/drivers/platform/x86/intel/ifs/sysfs.c
+++ b/drivers/platform/x86/intel/ifs/sysfs.c
@@ -75,7 +75,7 @@ static ssize_t run_test_store(struct device *dev,
 	if (down_interruptible(&ifs_sem))
 		return -EINTR;
 
-	if (!ifsd->loaded)
+	if (ifsd->test_num != IFS_ARRAY && !ifsd->loaded)
 		rc = -EPERM;
 	else
 		rc = do_core_test(cpu, dev);
@@ -156,3 +156,18 @@ const struct attribute_group **ifs_get_groups(void)
 {
 	return plat_ifs_groups;
 }
+
+/* global array sysfs attributes */
+static struct attribute *plat_ifs_array_attrs[] = {
+	&dev_attr_details.attr,
+	&dev_attr_status.attr,
+	&dev_attr_run_test.attr,
+	NULL
+};
+
+ATTRIBUTE_GROUPS(plat_ifs_array);
+
+const struct attribute_group **ifs_get_array_groups(void)
+{
+	return plat_ifs_array_groups;
+}
-- 
2.25.1


  parent reply	other threads:[~2023-01-31 23:45 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-31 23:42 [PATCH 0/5] Add Array BIST test support to IFS Jithu Joseph
2023-01-31 23:42 ` [PATCH 1/5] x86/include/asm/msr-index.h: Add IFS Array test bits Jithu Joseph
2023-01-31 23:42 ` [PATCH 2/5] platform/x86/intel/ifs: Introduce Array Scan test to IFS Jithu Joseph
2023-01-31 23:43 ` Jithu Joseph [this message]
2023-02-01  5:04   ` [PATCH 3/5] platform/x86/intel/ifs: Sysfs interface for Array BIST Greg KH
2023-02-01 20:55     ` Joseph, Jithu
2023-01-31 23:43 ` [PATCH 4/5] platform/x86/intel/ifs: Implement Array BIST test Jithu Joseph
2023-02-01  5:02   ` Greg KH
2023-02-01 17:22     ` Luck, Tony
2023-02-01 18:19       ` Greg KH
2023-02-01 19:22         ` Tony Luck
2023-02-01 19:35   ` Dave Hansen
2023-02-01 19:43     ` Luck, Tony
2023-02-01 19:53       ` Dave Hansen
2023-02-01 19:45   ` Dave Hansen
2023-02-01 19:56     ` Joseph, Jithu
2023-02-01 20:49       ` Dave Hansen
2023-02-01 21:34         ` Luck, Tony
2023-01-31 23:43 ` [PATCH 5/5] platform/x86/intel/ifs: Trace support for array test Jithu Joseph
2023-02-06 16:40   ` Steven Rostedt
2023-02-06 19:50     ` Joseph, Jithu
2023-02-14 23:44 ` [PATCH v2 0/7] Add Array BIST test support to IFS Jithu Joseph
2023-02-14 23:44   ` [PATCH v2 1/7] x86/include/asm/msr-index.h: Add IFS Array test bits Jithu Joseph
2023-02-14 23:44   ` [PATCH v2 2/7] platform/x86/intel/ifs: Introduce Array Scan test to IFS Jithu Joseph
2023-02-16 12:40     ` Greg KH
2023-02-16 18:46       ` Luck, Tony
2023-02-16 22:57       ` Joseph, Jithu
2023-02-17  9:25         ` Greg KH
2023-02-14 23:44   ` [PATCH v2 3/7] platform/x86/intel/ifs: Sysfs interface for Array BIST Jithu Joseph
2023-02-14 23:44   ` [PATCH v2 4/7] platform/x86/intel/ifs: Implement Array BIST test Jithu Joseph
2023-02-15 16:58     ` Dave Hansen
2023-02-15 17:11       ` Dave Hansen
2023-02-15 20:22         ` Joseph, Jithu
2023-02-15 20:26           ` Dave Hansen
2023-02-15 21:13             ` Joseph, Jithu
2023-02-15 21:18               ` Dave Hansen
2023-02-22 20:12               ` Dave Hansen
2023-02-22 22:07                 ` Joseph, Jithu
2023-02-22 22:28                   ` Dave Hansen
2023-02-22 22:36                     ` Steven Rostedt
2023-02-22 23:32                     ` Joseph, Jithu
2023-02-22 23:59                       ` Dave Hansen
2023-02-15 17:44       ` Joseph, Jithu
2023-02-14 23:44   ` [PATCH v2 5/7] platform/x86/intel/ifs: Trace support for array test Jithu Joseph
2023-02-16  0:56     ` Steven Rostedt
2023-02-14 23:44   ` [PATCH v2 6/7] platform/x86/intel/ifs: Update IFS doc Jithu Joseph
2023-02-14 23:44   ` [PATCH v2 7/7] Documentation/ABI: Update IFS ABI doc Jithu Joseph
2023-03-01  1:59   ` [PATCH v3 0/8] Add Array BIST test support to IFS Jithu Joseph
2023-03-01  1:59     ` [PATCH v3 1/8] platform/x86/intel/ifs: Reorganize driver data Jithu Joseph
2023-03-13 14:46       ` Hans de Goede
2023-03-13 21:34         ` Joseph, Jithu
2023-03-16  9:43           ` Hans de Goede
2023-03-01  1:59     ` [PATCH v3 2/8] platform/x86/intel/ifs: IFS cleanup Jithu Joseph
2023-03-13 15:02       ` Hans de Goede
2023-03-01  1:59     ` [PATCH v3 3/8] x86/include/asm/msr-index.h: Add IFS Array test bits Jithu Joseph
2023-03-13 15:03       ` Hans de Goede
2023-03-01  1:59     ` [PATCH v3 4/8] platform/x86/intel/ifs: Introduce Array Scan test to IFS Jithu Joseph
2023-03-13 16:10       ` Hans de Goede
2023-03-13 16:29         ` Hans de Goede
2023-03-13 17:21           ` Luck, Tony
2023-03-15 19:29             ` Joseph, Jithu
2023-03-16  9:50               ` Hans de Goede
2023-03-16 19:44                 ` Joseph, Jithu
2023-03-01  1:59     ` [PATCH v3 5/8] platform/x86/intel/ifs: Sysfs interface for Array BIST Jithu Joseph
2023-03-13 16:14       ` Hans de Goede
2023-03-01  1:59     ` [PATCH v3 6/8] platform/x86/intel/ifs: Implement Array BIST test Jithu Joseph
2023-03-13 16:24       ` Hans de Goede
2023-03-13 16:37         ` Joseph, Jithu
2023-03-16  9:59           ` Hans de Goede
2023-03-16 17:40             ` Joseph, Jithu
2023-03-16 18:11             ` Joseph, Jithu
2023-03-16 19:38               ` Hans de Goede
2023-03-01  1:59     ` [PATCH v3 7/8] platform/x86/intel/ifs: Update IFS doc Jithu Joseph
2023-03-01  1:59     ` [PATCH v3 8/8] Documentation/ABI: Update IFS ABI doc Jithu Joseph
2023-03-07 11:02     ` [PATCH v3 0/8] Add Array BIST test support to IFS Hans de Goede
2023-03-22  0:33     ` [PATCH v4 0/9] " Jithu Joseph
2023-03-22  0:33       ` [PATCH v4 1/9] platform/x86/intel/ifs: Separate ifs_pkg_auth from ifs_data Jithu Joseph
2023-03-22  0:33       ` [PATCH v4 2/9] platform/x86/intel/ifs: Reorganize driver data Jithu Joseph
2023-03-22  0:33       ` [PATCH v4 3/9] platform/x86/intel/ifs: IFS cleanup Jithu Joseph
2023-03-22  0:33       ` [PATCH v4 4/9] x86/include/asm/msr-index.h: Add IFS Array test bits Jithu Joseph
2023-03-22  0:33       ` [PATCH v4 5/9] platform/x86/intel/ifs: Introduce Array Scan test to IFS Jithu Joseph
2023-03-22  0:33       ` [PATCH v4 6/9] platform/x86/intel/ifs: Sysfs interface for Array BIST Jithu Joseph
2023-03-22  0:33       ` [PATCH v4 7/9] platform/x86/intel/ifs: Implement Array BIST test Jithu Joseph
2023-03-22  0:33       ` [PATCH v4 8/9] platform/x86/intel/ifs: Update IFS doc Jithu Joseph
2023-03-22  0:33       ` [PATCH v4 9/9] Documentation/ABI: Update IFS ABI doc Jithu Joseph
2023-03-27 13:10       ` [PATCH v4 0/9] Add Array BIST test support to IFS Hans de Goede
2023-04-07  1:49         ` Pengfei Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230131234302.3997223-4-jithu.joseph@intel.com \
    --to=jithu.joseph@intel.com \
    --cc=ashok.raj@intel.com \
    --cc=athenas.jimenez.gonzalez@intel.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markgross@kernel.org \
    --cc=mingo@redhat.com \
    --cc=patches@lists.linux.dev \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=ravi.v.shankar@intel.com \
    --cc=rostedt@goodmis.org \
    --cc=sohil.mehta@intel.com \
    --cc=tglx@linutronix.de \
    --cc=thiago.macieira@intel.com \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).