kernel-6.2.2-301

* Tue Mar 07 2023 Justin M. Forbes <jforbes@fedoraproject.org> [6.2.2-1]
- Bump for rebuild (Justin M. Forbes)
- iommu/amd: Do not identity map v2 capable device when snp is enabled (Vasant Hegde)
- iommu: Attach device group to old domain in error path (Vasant Hegde)
- iommu/amd: Improve page fault error reporting (Vasant Hegde)
- iommu/amd: Skip attach device domain is same as new domain (Vasant Hegde)
- iommu/amd: Fix error handling for pdev_pri_ats_enable() (Vasant Hegde)
- redhat/kernel.spec.template: Fix RHEL systemd-boot-unsigned dependency (Prarit Bhargava)
Resolves:

Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
Justin M. Forbes 2023-03-07 10:52:56 -06:00
parent 786690a926
commit a30ca910db
No known key found for this signature in database
GPG Key ID: B8FA7924A4B1C140
5 changed files with 148 additions and 11 deletions

View File

@ -12,7 +12,7 @@ RHEL_MINOR = 99
#
# Use this spot to avoid future merge conflicts.
# Do not trim this comment.
RHEL_RELEASE = 0
RHEL_RELEASE = 1
#
# ZSTREAM

View File

@ -1,3 +1,18 @@
"https://gitlab.com/cki-project/kernel-ark/-/commit"/a95fa0b4dd6a8a8aa27d72c95cd8fc522f420996
a95fa0b4dd6a8a8aa27d72c95cd8fc522f420996 iommu/amd: Do not identity map v2 capable device when snp is enabled
"https://gitlab.com/cki-project/kernel-ark/-/commit"/50c9147bec083a83e10799bb127c4e730c24ba11
50c9147bec083a83e10799bb127c4e730c24ba11 iommu: Attach device group to old domain in error path
"https://gitlab.com/cki-project/kernel-ark/-/commit"/3a4e60e72603ce11dd24f8dec42c0e4c4339b1b7
3a4e60e72603ce11dd24f8dec42c0e4c4339b1b7 iommu/amd: Improve page fault error reporting
"https://gitlab.com/cki-project/kernel-ark/-/commit"/70ec5b043f0debccfae70b702f7741a9e07ef42e
70ec5b043f0debccfae70b702f7741a9e07ef42e iommu/amd: Skip attach device domain is same as new domain
"https://gitlab.com/cki-project/kernel-ark/-/commit"/42eaef1e4db25a79c5f24219373de3fff6591a6a
42eaef1e4db25a79c5f24219373de3fff6591a6a iommu/amd: Fix error handling for pdev_pri_ats_enable()
"https://gitlab.com/cki-project/kernel-ark/-/commit"/807d6b912b28183332ea9e78afaf9bc2f47559dd
807d6b912b28183332ea9e78afaf9bc2f47559dd drivers/firmware: skip simpledrm if nvidia-drm.modeset=1 is set

View File

@ -147,13 +147,13 @@ Summary: The Linux kernel
# define buildid .local
%define specversion 6.2.2
%define patchversion 6.2
%define pkgrelease 300
%define pkgrelease 301
%define kversion 6
%define tarfile_release 6.2.2
# This is needed to do merge window version magic
%define patchlevel 2
# This allows pkg_release to have configurable %%{?dist} tag
%define specrelease 300%{?buildid}%{?dist}
%define specrelease 301%{?buildid}%{?dist}
# This defines the kabi tarball version
%define kabiversion 6.2.2
@ -732,7 +732,7 @@ BuildRequires: lvm2
BuildRequires: systemd-boot-unsigned
%endif
# For systemd-stub and systemd-pcrphase
BuildRequires: systemd-udev
BuildRequires: systemd-udev >= 252-1
# For TPM operations in UKI initramfs
BuildRequires: tpm2-tools
%endif
@ -3347,7 +3347,13 @@ fi
#
#
%changelog
* Fri Mar 03 2023 Justin M. Forbes <jforbes@fedoraproject.org> [6.2.2-300]
* Tue Mar 07 2023 Justin M. Forbes <jforbes@fedoraproject.org> [6.2.2-1]
- Bump for rebuild (Justin M. Forbes)
- iommu/amd: Do not identity map v2 capable device when snp is enabled (Vasant Hegde)
- iommu: Attach device group to old domain in error path (Vasant Hegde)
- iommu/amd: Improve page fault error reporting (Vasant Hegde)
- iommu/amd: Skip attach device domain is same as new domain (Vasant Hegde)
- iommu/amd: Fix error handling for pdev_pri_ats_enable() (Vasant Hegde)
- redhat/kernel.spec.template: Fix RHEL systemd-boot-unsigned dependency (Prarit Bhargava)
* Fri Mar 03 2023 Justin M. Forbes <jforbes@fedoraproject.org> [6.2.2-0]

View File

@ -18,7 +18,8 @@
drivers/hid/hid-rmi.c | 66 ---
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 +
drivers/input/rmi4/rmi_driver.c | 124 +++--
drivers/iommu/iommu.c | 22 +
drivers/iommu/amd/iommu.c | 41 +-
drivers/iommu/iommu.c | 38 +-
drivers/pci/quirks.c | 24 +
drivers/usb/core/hub.c | 7 +
include/linux/efi.h | 22 +-
@ -33,7 +34,7 @@
security/lockdown/Kconfig | 13 +
security/lockdown/lockdown.c | 1 +
security/security.c | 6 +
35 files changed, 980 insertions(+), 177 deletions(-)
36 files changed, 1027 insertions(+), 187 deletions(-)
diff --git a/Makefile b/Makefile
index 1836ddaf2c94..eb1d58681256 100644
@ -935,8 +936,99 @@ index 258d5fe3d395..f7298e3dc8f3 100644
if (data->f01_container->dev.driver) {
/* Driver already bound, so enable ATTN now. */
diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
index cbeaab55c0db..ff4f3d4da340 100644
--- a/drivers/iommu/amd/iommu.c
+++ b/drivers/iommu/amd/iommu.c
@@ -558,6 +558,15 @@ static void amd_iommu_report_page_fault(struct amd_iommu *iommu,
* prevent logging it.
*/
if (IS_IOMMU_MEM_TRANSACTION(flags)) {
+ /* Device not attached to domain properly */
+ if (dev_data->domain == NULL) {
+ pr_err_ratelimited("Event logged [Device not attached to domain properly]\n");
+ pr_err_ratelimited(" device=%04x:%02x:%02x.%x domain=0x%04x\n",
+ iommu->pci_seg->id, PCI_BUS_NUM(devid), PCI_SLOT(devid),
+ PCI_FUNC(devid), domain_id);
+ goto out;
+ }
+
if (!report_iommu_fault(&dev_data->domain->domain,
&pdev->dev, address,
IS_WRITE_REQUEST(flags) ?
@@ -1702,27 +1711,29 @@ static int pdev_pri_ats_enable(struct pci_dev *pdev)
/* Only allow access to user-accessible pages */
ret = pci_enable_pasid(pdev, 0);
if (ret)
- goto out_err;
+ return ret;
/* First reset the PRI state of the device */
ret = pci_reset_pri(pdev);
if (ret)
- goto out_err;
+ goto out_err_pasid;
/* Enable PRI */
/* FIXME: Hardcode number of outstanding requests for now */
ret = pci_enable_pri(pdev, 32);
if (ret)
- goto out_err;
+ goto out_err_pasid;
ret = pci_enable_ats(pdev, PAGE_SHIFT);
if (ret)
- goto out_err;
+ goto out_err_pri;
return 0;
-out_err:
+out_err_pri:
pci_disable_pri(pdev);
+
+out_err_pasid:
pci_disable_pasid(pdev);
return ret;
@@ -2159,6 +2170,13 @@ static int amd_iommu_attach_device(struct iommu_domain *dom,
struct amd_iommu *iommu = rlookup_amd_iommu(dev);
int ret;
+ /*
+ * Skip attach device to domain if new domain is same as
+ * devices current domain
+ */
+ if (dev_data->domain == domain)
+ return 0;
+
dev_data->defer_attach = false;
if (dev_data->domain)
@@ -2387,12 +2405,17 @@ static int amd_iommu_def_domain_type(struct device *dev)
return 0;
/*
- * Do not identity map IOMMUv2 capable devices when memory encryption is
- * active, because some of those devices (AMD GPUs) don't have the
- * encryption bit in their DMA-mask and require remapping.
+ * Do not identity map IOMMUv2 capable devices when:
+ * - memory encryption is active, because some of those devices
+ * (AMD GPUs) don't have the encryption bit in their DMA-mask
+ * and require remapping.
+ * - SNP is enabled, because it prohibits DTE[Mode]=0.
*/
- if (!cc_platform_has(CC_ATTR_MEM_ENCRYPT) && dev_data->iommu_v2)
+ if (dev_data->iommu_v2 &&
+ !cc_platform_has(CC_ATTR_MEM_ENCRYPT) &&
+ !amd_iommu_snp_en) {
return IOMMU_DOMAIN_IDENTITY;
+ }
return 0;
}
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index 5f6a85aea501..3b1e9faa9c2d 100644
index 5f6a85aea501..026487698b25 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -8,6 +8,7 @@
@ -947,7 +1039,31 @@ index 5f6a85aea501..3b1e9faa9c2d 100644
#include <linux/kernel.h>
#include <linux/bits.h>
#include <linux/bug.h>
@@ -2793,6 +2794,27 @@ int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat)
@@ -2124,8 +2125,22 @@ static int __iommu_attach_group(struct iommu_domain *domain,
ret = __iommu_group_for_each_dev(group, domain,
iommu_group_do_attach_device);
- if (ret == 0)
+ if (ret == 0) {
group->domain = domain;
+ } else {
+ /*
+ * To recover from the case when certain device within the
+ * group fails to attach to the new domain, we need force
+ * attaching all devices back to the old domain. The old
+ * domain is compatible for all devices in the group,
+ * hence the iommu driver should always return success.
+ */
+ struct iommu_domain *old_domain = group->domain;
+
+ group->domain = NULL;
+ WARN(__iommu_group_set_domain(group, old_domain),
+ "iommu driver failed to attach a compatible domain");
+ }
return ret;
}
@@ -2793,6 +2808,27 @@ int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat)
}
EXPORT_SYMBOL_GPL(iommu_dev_disable_feature);

View File

@ -1,3 +1,3 @@
SHA512 (linux-6.2.2.tar.xz) = 155b0e21bde6f1cc6d410e588ca120cee6b4b056079e43d1b090a3e707859b5bf538ce2736d7cfc4f1455b9042a09ed5b1b37182e879264fed74c7913f253830
SHA512 (kernel-abi-stablelists-6.2.2.tar.bz2) = e1e92d3807b2aefb7ac69b637ff9a9ceed9ed76e8eddbfc2a3035cb35a1fce81b64e7a3c44fe12df85f93861111c40cbb521fea53c70ca287224dfddc62d5d2b
SHA512 (kernel-kabi-dw-6.2.2.tar.bz2) = d6b74c79ec7d45a7b27c47b888078fe4275e04f04b27970217828a884c48bb5f795435fa70a6b8b7dc802f1d94a80af272b53d122b892cda0ba1d803853f755a
SHA512 (kernel-abi-stablelists-6.2.2.tar.bz2) = 3ad5cdf2251ad557ce536e230434d454813571147de7566d8838903c54c923caa55db73cb9ca0c9ae4338d8bb9b43a38732646d643c6cbeee3b830dbff1400a2
SHA512 (kernel-kabi-dw-6.2.2.tar.bz2) = 9560700ab830ef3f65a7fe0b561b5323b8d8d88054d20436fc679e6b6e6d627f4c71a94161d0187925bb3a357d11b34441672e947da637cdd9dba4728f3c8764