-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'platform-drivers-x86-v5.18-1' of git://git.kernel.org/pub/…
…scm/linux/kernel/git/pdx86/platform-drivers-x86 Pull x86 platform driver updates from Hans de Goede: "New drivers: - AMD Host System Management Port (HSMP) - Intel Software Defined Silicon Removed drivers (functionality folded into other drivers): - intel_cht_int33fe_microb - surface3_button amd-pmc: - s2idle bug-fixes - Support for AMD Spill to DRAM STB feature hp-wmi: - Fix SW_TABLET_MODE detection method (and other fixes) - Support omen thermal profile policy v1 serial-multi-instantiate: - Add SPI device support - Add support for CS35L41 amplifiers used in new laptops think-lmi: - syfs-class-firmware-attributes Certificate authentication support thinkpad_acpi: - Fixes + quirks - Add platform_profile support on AMD based ThinkPads x86-android-tablets: - Improve Asus ME176C / TF103C support - Support Nextbook Ares 8, Lenovo Tab 2 830 and 1050 tablets Lots of various other small fixes and hardware-id additions" * tag 'platform-drivers-x86-v5.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (60 commits) platform/x86: think-lmi: Certificate authentication support Documentation: syfs-class-firmware-attributes: Lenovo Certificate support platform/x86: amd-pmc: Only report STB errors when STB enabled platform/x86: amd-pmc: Drop CPU QoS workaround platform/x86: amd-pmc: Output error codes in messages platform/x86: amd-pmc: Move to later in the suspend process ACPI / x86: Add support for LPS0 callback handler platform/x86: thinkpad_acpi: consistently check fan_get_status return. platform/x86: hp-wmi: support omen thermal profile policy v1 platform/x86: hp-wmi: Changing bios_args.data to be dynamically allocated platform/x86: hp-wmi: Fix 0x05 error code reported by several WMI calls platform/x86: hp-wmi: Fix SW_TABLET_MODE detection method platform/x86: hp-wmi: Fix hp_wmi_read_int() reporting error (0x05) platform/x86: amd-pmc: Validate entry into the deepest state on resume platform/x86: thinkpad_acpi: Don't use test_bit on an integer platform/x86: thinkpad_acpi: Fix compiler warning about uninitialized err variable platform/x86: thinkpad_acpi: clean up dytc profile convert platform/x86: x86-android-tablets: Depend on EFI and SPI platform/x86: amd-pmc: uninitialized variable in amd_pmc_s2d_init() platform/x86: intel-uncore-freq: fix uncore_freq_common_init() error codes ...
- Loading branch information
Showing
55 changed files
with
4,683 additions
and
1,378 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
What: /sys/bus/auxiliary/devices/intel_vsec.sdsi.X | ||
Date: Feb 2022 | ||
KernelVersion: 5.18 | ||
Contact: "David E. Box" <david.e.box@linux.intel.com> | ||
Description: | ||
This directory contains interface files for accessing Intel | ||
Software Defined Silicon (SDSi) features on a CPU. X | ||
represents the socket instance (though not the socket ID). | ||
The socket ID is determined by reading the registers file | ||
and decoding it per the specification. | ||
|
||
Some files communicate with SDSi hardware through a mailbox. | ||
Should the operation fail, one of the following error codes | ||
may be returned: | ||
|
||
Error Code Cause | ||
---------- ----- | ||
EIO General mailbox failure. Log may indicate cause. | ||
EBUSY Mailbox is owned by another agent. | ||
EPERM SDSI capability is not enabled in hardware. | ||
EPROTO Failure in mailbox protocol detected by driver. | ||
See log for details. | ||
EOVERFLOW For provision commands, the size of the data | ||
exceeds what may be written. | ||
ESPIPE Seeking is not allowed. | ||
ETIMEDOUT Failure to complete mailbox transaction in time. | ||
|
||
What: /sys/bus/auxiliary/devices/intel_vsec.sdsi.X/guid | ||
Date: Feb 2022 | ||
KernelVersion: 5.18 | ||
Contact: "David E. Box" <david.e.box@linux.intel.com> | ||
Description: | ||
(RO) The GUID for the registers file. The GUID identifies | ||
the layout of the registers file in this directory. | ||
Information about the register layouts for a particular GUID | ||
is available at http://github.com/intel/intel-sdsi | ||
|
||
What: /sys/bus/auxiliary/devices/intel_vsec.sdsi.X/registers | ||
Date: Feb 2022 | ||
KernelVersion: 5.18 | ||
Contact: "David E. Box" <david.e.box@linux.intel.com> | ||
Description: | ||
(RO) Contains information needed by applications to provision | ||
a CPU and monitor status information. The layout of this file | ||
is determined by the GUID in this directory. Information about | ||
the layout for a particular GUID is available at | ||
http://github.com/intel/intel-sdsi | ||
|
||
What: /sys/bus/auxiliary/devices/intel_vsec.sdsi.X/provision_akc | ||
Date: Feb 2022 | ||
KernelVersion: 5.18 | ||
Contact: "David E. Box" <david.e.box@linux.intel.com> | ||
Description: | ||
(WO) Used to write an Authentication Key Certificate (AKC) to | ||
the SDSi NVRAM for the CPU. The AKC is used to authenticate a | ||
Capability Activation Payload. Mailbox command. | ||
|
||
What: /sys/bus/auxiliary/devices/intel_vsec.sdsi.X/provision_cap | ||
Date: Feb 2022 | ||
KernelVersion: 5.18 | ||
Contact: "David E. Box" <david.e.box@linux.intel.com> | ||
Description: | ||
(WO) Used to write a Capability Activation Payload (CAP) to the | ||
SDSi NVRAM for the CPU. CAPs are used to activate a given CPU | ||
feature. A CAP is validated by SDSi hardware using a previously | ||
provisioned AKC file. Upon successful authentication, the CPU | ||
configuration is updated. A cold reboot is required to fully | ||
activate the feature. Mailbox command. | ||
|
||
What: /sys/bus/auxiliary/devices/intel_vsec.sdsi.X/state_certificate | ||
Date: Feb 2022 | ||
KernelVersion: 5.18 | ||
Contact: "David E. Box" <david.e.box@linux.intel.com> | ||
Description: | ||
(RO) Used to read back the current State Certificate for the CPU | ||
from SDSi hardware. The State Certificate contains information | ||
about the current licenses on the CPU. Mailbox command. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
.. SPDX-License-Identifier: GPL-2.0 | ||
============================================ | ||
AMD HSMP interface | ||
============================================ | ||
|
||
Newer Fam19h EPYC server line of processors from AMD support system | ||
management functionality via HSMP (Host System Management Port). | ||
|
||
The Host System Management Port (HSMP) is an interface to provide | ||
OS-level software with access to system management functions via a | ||
set of mailbox registers. | ||
|
||
More details on the interface can be found in chapter | ||
"7 Host System Management Port (HSMP)" of the family/model PPR | ||
Eg: https://www.amd.com/system/files/TechDocs/55898_B1_pub_0.50.zip | ||
|
||
HSMP interface is supported on EPYC server CPU models only. | ||
|
||
|
||
HSMP device | ||
============================================ | ||
|
||
amd_hsmp driver under the drivers/platforms/x86/ creates miscdevice | ||
/dev/hsmp to let user space programs run hsmp mailbox commands. | ||
|
||
$ ls -al /dev/hsmp | ||
crw-r--r-- 1 root root 10, 123 Jan 21 21:41 /dev/hsmp | ||
|
||
Characteristics of the dev node: | ||
* Write mode is used for running set/configure commands | ||
* Read mode is used for running get/status monitor commands | ||
|
||
Access restrictions: | ||
* Only root user is allowed to open the file in write mode. | ||
* The file can be opened in read mode by all the users. | ||
|
||
In-kernel integration: | ||
* Other subsystems in the kernel can use the exported transport | ||
function hsmp_send_message(). | ||
* Locking across callers is taken care by the driver. | ||
|
||
|
||
An example | ||
========== | ||
|
||
To access hsmp device from a C program. | ||
First, you need to include the headers:: | ||
|
||
#include <linux/amd_hsmp.h> | ||
|
||
Which defines the supported messages/message IDs. | ||
|
||
Next thing, open the device file, as follows:: | ||
|
||
int file; | ||
|
||
file = open("/dev/hsmp", O_RDWR); | ||
if (file < 0) { | ||
/* ERROR HANDLING; you can check errno to see what went wrong */ | ||
exit(1); | ||
} | ||
|
||
The following IOCTL is defined: | ||
|
||
``ioctl(file, HSMP_IOCTL_CMD, struct hsmp_message *msg)`` | ||
The argument is a pointer to a:: | ||
|
||
struct hsmp_message { | ||
__u32 msg_id; /* Message ID */ | ||
__u16 num_args; /* Number of input argument words in message */ | ||
__u16 response_sz; /* Number of expected output/response words */ | ||
__u32 args[HSMP_MAX_MSG_LEN]; /* argument/response buffer */ | ||
__u16 sock_ind; /* socket number */ | ||
}; | ||
|
||
The ioctl would return a non-zero on failure; you can read errno to see | ||
what happened. The transaction returns 0 on success. | ||
|
||
More details on the interface and message definitions can be found in chapter | ||
"7 Host System Management Port (HSMP)" of the respective family/model PPR | ||
eg: https://www.amd.com/system/files/TechDocs/55898_B1_pub_0.50.zip | ||
|
||
User space C-APIs are made available by linking against the esmi library, | ||
which is provided by the E-SMS project https://developer.amd.com/e-sms/. | ||
See: https://github.com/amd/esmi_ib_library |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,6 +25,7 @@ x86-specific Documentation | |
intel-iommu | ||
intel_txt | ||
amd-memory-encryption | ||
amd_hsmp | ||
pti | ||
mds | ||
microcode | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | ||
|
||
#ifndef _ASM_X86_AMD_HSMP_H_ | ||
#define _ASM_X86_AMD_HSMP_H_ | ||
|
||
#include <uapi/asm/amd_hsmp.h> | ||
|
||
#if IS_ENABLED(CONFIG_AMD_HSMP) | ||
int hsmp_send_message(struct hsmp_message *msg); | ||
#else | ||
static inline int hsmp_send_message(struct hsmp_message *msg) | ||
{ | ||
return -ENODEV; | ||
} | ||
#endif | ||
#endif /*_ASM_X86_AMD_HSMP_H_*/ |
Oops, something went wrong.