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,
corbet@lwn.net, gregkh@linuxfoundation.org,
andriy.shevchenko@linux.intel.com, jithu.joseph@intel.com,
ashok.raj@intel.com, tony.luck@intel.com, rostedt@goodmis.org,
linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
platform-driver-x86@vger.kernel.org, patches@lists.linux.dev,
ravi.v.shankar@intel.com
Subject: [RFC 02/10] Documentation: In-Field Scan
Date: Tue, 1 Mar 2022 11:54:49 -0800 [thread overview]
Message-ID: <20220301195457.21152-3-jithu.joseph@intel.com> (raw)
In-Reply-To: <20220301195457.21152-1-jithu.joseph@intel.com>
From: Tony Luck <tony.luck@intel.com>
Add documentation for In-Field Scan (IFS). This documentation
describes the basics of IFS, the loading IFS image, chunk
authentication, running scan and how to check result via sysfs
as well as tunable parameters.
The CORE_CAPABILITIES MSR enumerates whether IFS is supported.
Signed-off-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Ashok Raj <ashok.raj@intel.com>
---
Documentation/x86/ifs.rst | 108 ++++++++++++++++++++++++++++++++++++
Documentation/x86/index.rst | 1 +
2 files changed, 109 insertions(+)
create mode 100644 Documentation/x86/ifs.rst
diff --git a/Documentation/x86/ifs.rst b/Documentation/x86/ifs.rst
new file mode 100644
index 000000000000..fa77639f52dd
--- /dev/null
+++ b/Documentation/x86/ifs.rst
@@ -0,0 +1,108 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+=============
+In-Field Scan
+=============
+
+Introduction
+------------
+
+In Field Scan (IFS) is a hardware feature to run circuit level tests on
+a CPU core to detect problems that are not caught by parity or ECC checks.
+
+IFS Image
+---------
+
+Intel will provide a firmware file containing the scan tests via
+github [#f1]_. Similar to microcode there is a separate file for each
+family-model-stepping. The tests in the file are divided into some number
+of "chunks" that can be run individually.
+
+IFS Image Loading
+-----------------
+
+The driver loads the tests into memory reserved BIOS local to each CPU
+socket in a two step process using writes to MSRs to first load the
+SHA hashes for the test. Then the tests themselves. Status MSRs provide
+feedback on the success/failure of these steps. When a new test file
+is installed it can be loaded with::
+
+ # echo 1 > /sys/devices/system/cpu/ifs/reload
+
+Triggering tests
+----------------
+
+Tests are run by synchronizing execution of all threads on a core and then
+writing to the ACTIVATE_SCAN MSR on all threads. Instruction execution
+continues when:
+
+1) All tests have completed.
+2) Execution was interrupted.
+3) A test detected a problem.
+
+In all cases reading the SCAN_STATUS MSR provides details on what
+happened. Interrupted tests may be restarted.
+
+The IFS driver provides interfaces from /sys to control execution:
+
+Run tests on all cores::
+
+ # echo 1 > /sys/devices/system/cpu/ifs/run_test
+
+Scans run on each core sequentially by logical CPU number (when HT is
+enabled this only runs the tests once for each core).
+
+Test a single core::
+
+ # echo 1 > /sys/devices/system/cpu/cpu#/ifs/run_test
+
+Results of the tests are also provided in /sys::
+
+ $ cat /sys/devices/system/cpu/ifs/status
+ pass
+
+global status. Shows the most serious status across
+all cores (fail > untested > pass)
+
+There are files showing which CPUs are in each of the
+pass/untested/fail states::
+
+ $ cat /sys/devices/system/cpu/ifs/cpu_fail_list
+ $ cat /sys/devices/system/cpu/ifs/cpu_untested_list
+ $ cat /sys/devices/system/cpu/ifs/cpu_pass_list
+ 0-127
+
+Also files in the per-CPU directories showing the status
+of the most recent test on that core::
+
+ $ cat /sys/devices/system/cpu/cpu#/ifs/status
+ pass
+ $ cat /sys/devices/system/cpu/cpu#/ifs/details
+ 8081
+
+The details file reports the hex value of the SCAN_STATUS MSR. Note that
+the error_code field may contain driver defined software code not defined
+in the Intel SDM.
+
+Current driver limitations
+--------------------------
+
+1) The ACTIVATE_SCAN MSR allows for running any consecutive subrange or
+available tests. But the driver always tries to run all tests and only
+uses the subrange feature to restart an interrupted test.
+
+2) Hardware allows for some number of cores to be tested in parallel.
+The driver does not make use of this, it only tests one core at a time.
+
+Tunable Parameters
+------------------
+
+This module accepts two tunable parameters. These could be provided at
+load time or can be modified at runtime through module parameter.
+(/sys/module/ifs/parameters/<parameter_name>). The parameters are as
+described below.
+
+1. noint: When set, system interrupts are not allowed to interrupt an ifs.
+2. retry: Maximum retry counter when the test is not executed due to an event such as interrupt.
+
+.. [#f1] https://github.com/intel
diff --git a/Documentation/x86/index.rst b/Documentation/x86/index.rst
index f498f1d36cd3..be58b7638d9e 100644
--- a/Documentation/x86/index.rst
+++ b/Documentation/x86/index.rst
@@ -33,6 +33,7 @@ x86-specific Documentation
usb-legacy-support
i386/index
x86_64/index
+ ifs
sva
sgx
features
--
2.17.1
next prev parent reply other threads:[~2022-03-01 19:55 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-01 19:54 [RFC 00/10] Introduce In Field Scan driver Jithu Joseph
2022-03-01 19:54 ` [RFC 01/10] x86/microcode/intel: expose collect_cpu_info_early() for IFS Jithu Joseph
2022-03-01 20:08 ` Greg KH
2022-03-02 0:56 ` Joseph, Jithu
2022-03-02 10:30 ` Borislav Petkov
2022-03-03 1:34 ` Joseph, Jithu
2022-03-01 19:54 ` Jithu Joseph [this message]
2022-03-01 20:07 ` [RFC 02/10] Documentation: In-Field Scan Greg KH
2022-03-02 0:58 ` Joseph, Jithu
2022-03-01 19:54 ` [RFC 03/10] platform/x86/intel/ifs: Add driver for " Jithu Joseph
2022-03-02 23:24 ` Williams, Dan J
2022-03-02 23:31 ` Raj, Ashok
2022-03-03 0:02 ` Luck, Tony
2022-03-03 2:04 ` Joseph, Jithu
2022-03-01 19:54 ` [RFC 04/10] platform/x86/intel/ifs: Load IFS Image Jithu Joseph
2022-03-03 2:58 ` Williams, Dan J
2022-03-01 19:54 ` [RFC 05/10] platform/x86/intel/ifs: Check IFS Image sanity Jithu Joseph
2022-03-01 19:54 ` [RFC 06/10] platform/x86/intel/ifs: Authenticate and copy to secured memory Jithu Joseph
2022-03-01 19:54 ` [RFC 07/10] platform/x86/intel/ifs: Create kthreads for online cpus for scan test Jithu Joseph
2022-03-03 4:17 ` Williams, Dan J
2022-03-03 19:59 ` Luck, Tony
2022-03-04 19:20 ` Joseph, Jithu
2022-03-07 16:52 ` Dan Williams
2022-03-07 17:46 ` Luck, Tony
2022-03-10 21:42 ` Kok, Auke
2022-03-01 19:54 ` [RFC 08/10] platform/x86/intel/ifs: Add IFS sysfs interface Jithu Joseph
2022-03-04 0:31 ` Williams, Dan J
2022-03-04 16:51 ` Luck, Tony
2022-03-04 20:42 ` Joseph, Jithu
2022-03-04 21:01 ` Luck, Tony
2022-03-21 21:15 ` Luck, Tony
2022-03-07 17:38 ` Dan Williams
2022-03-07 19:09 ` Joseph, Jithu
2022-03-07 19:15 ` Dan Williams
2022-03-07 19:55 ` Joseph, Jithu
2022-03-07 20:25 ` Dan Williams
2022-03-07 20:56 ` Joseph, Jithu
2022-03-07 21:28 ` Dan Williams
2022-03-07 21:30 ` gregkh
2022-03-07 21:33 ` Luck, Tony
2022-03-01 19:54 ` [RFC 09/10] platform/x86/intel/ifs: add ABI documentation for IFS Jithu Joseph
2022-03-04 0:57 ` Williams, Dan J
2022-03-01 19:54 ` [RFC 10/10] trace: platform/x86/intel/ifs: Add trace point to track Intel IFS operations Jithu Joseph
2022-03-01 20:17 ` Steven Rostedt
2022-03-02 1:02 ` Joseph, Jithu
2022-03-01 20:10 ` [RFC 00/10] Introduce In Field Scan driver Greg KH
2022-03-01 20:14 ` Greg KH
2022-03-14 23:10 ` Luck, Tony
2022-03-15 7:34 ` Greg KH
2022-03-15 14:59 ` Luck, Tony
2022-03-15 15:26 ` Greg KH
2022-03-15 16:04 ` Dan Williams
2022-03-15 16:09 ` Dan Williams
2022-03-15 16:10 ` Luck, Tony
2022-03-16 8:09 ` Greg KH
2022-03-02 15:33 ` Steven Rostedt
2022-03-02 16:20 ` Greg KH
2022-03-02 13:59 ` Andy Lutomirski
2022-03-02 20:29 ` Luck, Tony
2022-03-02 21:18 ` Andy Lutomirski
2022-03-02 21:41 ` Luck, Tony
2022-03-02 23:11 ` Williams, Dan J
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=20220301195457.21152-3-jithu.joseph@intel.com \
--to=jithu.joseph@intel.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=ashok.raj@intel.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=hdegoede@redhat.com \
--cc=hpa@zytor.com \
--cc=linux-doc@vger.kernel.org \
--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=tglx@linutronix.de \
--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