1
0
mirror of https://aur.archlinux.org/linux-vfio.git synced 2024-12-26 06:24:09 +00:00

Update to 4.17.9-1

This commit is contained in:
Mark Weiman 2018-07-28 15:32:11 -04:00
parent f690dd2a6b
commit f10966fb8c
8 changed files with 118 additions and 169 deletions

View File

@ -1,5 +1,5 @@
pkgbase = linux-vfio
pkgver = 4.17.3
pkgver = 4.17.9
pkgrel = 1
url = https://www.kernel.org/
arch = x86_64
@ -12,8 +12,8 @@ pkgbase = linux-vfio
options = !strip
source = https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.17.tar.xz
source = https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.17.tar.sign
source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.17.3.xz
source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.17.3.sign
source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.17.9.xz
source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.17.9.sign
source = config
source = 60-linux.hook
source = 90-linux.hook
@ -21,25 +21,25 @@ pkgbase = linux-vfio
source = 0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch
source = 0002-Revert-drm-i915-edp-Allow-alternate-fixed-mode-for-e.patch
source = 0003-ACPI-watchdog-Prefer-iTCO_wdt-always-when-WDAT-table.patch
source = 0004-mac80211-disable-BHs-preemption-in-ieee80211_tx_cont.patch
source = add-acs-overrides.patch
source = i915-vga-arbiter.patch
source = PCI-Add-Intel-7th-8th-Gen-mobile-to-ACS-quirks.patch
validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886
validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E
sha256sums = 9faa1dd896eaea961dc6e886697c0b3301277102e5bc976b2758f9a62d3ccd13
sha256sums = SKIP
sha256sums = 01d5cc024dcfed615f84fd83be9c248261d8fc2c062520d38397cead6857b596
sha256sums = 52131a497efaed724afaa7f7022249f8f8e6e555cbe407a6619908ed2ebcee89
sha256sums = SKIP
sha256sums = 0269d9a56f0d0306c9bd5c179a7e32214b0a1c082d3bca581661203b27305f17
sha256sums = ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21
sha256sums = 75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919
sha256sums = ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65
sha256sums = e3c08f9b91611186e5ec579187ecea2a0143e5c2dc7ffc30ac6ea6e2b6d130fd
sha256sums = 5403dead9161344b2c01027526146a250147680f4a2d32a54d40c55fc1becc8a
sha256sums = d55e7de60b12bca26ded4c1bb8eb5860a9092374914a201a0f6a0ed2849d099f
sha256sums = 8ab566ab93723bb1c372e8f62f8cd714e6a16fc414d703ba4d255f132cffadd8
sha256sums = 92f848d0e21fbb2400e50d1c1021514893423641e5450896d7b1d88aa880b2b9
sha256sums = fc3c50ae6bd905608e0533a883ab569fcf54038fb9d6569b391107d9fd00abbc
sha256sums = bc50c605bd0e1fa7437c21ddef728b83b6de3322b988e14713032993dfa1fc69
sha256sums = 66284102261c4ed53db050e9045c8672ba0e5171884b46e58f6cd417774d8578
sha256sums = 5517df72ddb44f873670c75d89544461473274b2636e2299de93eb829510ea50
sha256sums = fc1734c1d24aca66015d93f8636afd52afa0f939516d83efb3457da6b5044944
sha256sums = 429ed1161b9b178df97e53dc6439f770e5198b5544f7421d0e48a3dd77fe371f
pkgname = linux-vfio
pkgdesc = The Linux-vfio kernel and modules

View File

@ -1,8 +1,8 @@
From 9a5adbc45b1c7d43fe4b27936f2a6939660617a1 Mon Sep 17 00:00:00 2001
Message-Id: <9a5adbc45b1c7d43fe4b27936f2a6939660617a1.1528777685.git.jan.steffens@gmail.com>
From a2d2476ffec7d988b1a5396586869570e0d6f9d8 Mon Sep 17 00:00:00 2001
Message-Id: <a2d2476ffec7d988b1a5396586869570e0d6f9d8.1531335939.git.jan.steffens@gmail.com>
From: Serge Hallyn <serge.hallyn@canonical.com>
Date: Fri, 31 May 2013 19:12:12 +0100
Subject: [PATCH 1/3] add sysctl to disallow unprivileged CLONE_NEWUSER by
Subject: [PATCH 1/4] add sysctl to disallow unprivileged CLONE_NEWUSER by
default
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
@ -99,5 +99,5 @@ index 246d4d4ce5c7..f64432b45cec 100644
static DEFINE_MUTEX(userns_state_mutex);
--
2.17.1
2.18.0

View File

@ -1,10 +1,10 @@
From 6cc33158e691a70111672a6105c7a37e66e6d3c3 Mon Sep 17 00:00:00 2001
Message-Id: <6cc33158e691a70111672a6105c7a37e66e6d3c3.1528777685.git.jan.steffens@gmail.com>
In-Reply-To: <9a5adbc45b1c7d43fe4b27936f2a6939660617a1.1528777685.git.jan.steffens@gmail.com>
References: <9a5adbc45b1c7d43fe4b27936f2a6939660617a1.1528777685.git.jan.steffens@gmail.com>
From bc49947e26285cf644492f9d58981e3c985d8c76 Mon Sep 17 00:00:00 2001
Message-Id: <bc49947e26285cf644492f9d58981e3c985d8c76.1531335939.git.jan.steffens@gmail.com>
In-Reply-To: <a2d2476ffec7d988b1a5396586869570e0d6f9d8.1531335939.git.jan.steffens@gmail.com>
References: <a2d2476ffec7d988b1a5396586869570e0d6f9d8.1531335939.git.jan.steffens@gmail.com>
From: Jani Nikula <jani.nikula@intel.com>
Date: Wed, 16 May 2018 11:01:10 +0300
Subject: [PATCH 2/3] Revert "drm/i915/edp: Allow alternate fixed mode for eDP
Subject: [PATCH 2/4] Revert "drm/i915/edp: Allow alternate fixed mode for eDP
if available."
This reverts commit dc911f5bd8aacfcf8aabd5c26c88e04c837a938e.
@ -61,10 +61,10 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20180516080110.22770-1-jani.
6 files changed, 8 insertions(+), 45 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index b7b4cfdeb974..48cb8df5ae97 100644
index cd6e87756509..492b0cb9bb2b 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1671,23 +1671,6 @@ static int intel_dp_compute_bpp(struct intel_dp *intel_dp,
@@ -1674,23 +1674,6 @@ static int intel_dp_compute_bpp(struct intel_dp *intel_dp,
return bpp;
}
@ -88,7 +88,7 @@ index b7b4cfdeb974..48cb8df5ae97 100644
bool
intel_dp_compute_config(struct intel_encoder *encoder,
struct intel_crtc_state *pipe_config,
@@ -1734,16 +1717,8 @@ intel_dp_compute_config(struct intel_encoder *encoder,
@@ -1737,16 +1720,8 @@ intel_dp_compute_config(struct intel_encoder *encoder,
pipe_config->has_audio = intel_conn_state->force_audio == HDMI_AUDIO_ON;
if (intel_dp_is_edp(intel_dp) && intel_connector->panel.fixed_mode) {
@ -107,7 +107,7 @@ index b7b4cfdeb974..48cb8df5ae97 100644
if (INTEL_GEN(dev_priv) >= 9) {
int ret;
@@ -6121,7 +6096,6 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
@@ -6123,7 +6098,6 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
struct drm_i915_private *dev_priv = to_i915(dev);
struct drm_connector *connector = &intel_connector->base;
struct drm_display_mode *fixed_mode = NULL;
@ -115,7 +115,7 @@ index b7b4cfdeb974..48cb8df5ae97 100644
struct drm_display_mode *downclock_mode = NULL;
bool has_dpcd;
struct drm_display_mode *scan;
@@ -6176,14 +6150,13 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
@@ -6178,14 +6152,13 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
}
intel_connector->edid = edid;
@ -132,7 +132,7 @@ index b7b4cfdeb974..48cb8df5ae97 100644
}
}
@@ -6220,8 +6193,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
@@ -6222,8 +6195,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
pipe_name(pipe));
}
@ -163,10 +163,10 @@ index a80fbad9be0f..7f3e83f17adb 100644
void intel_panel_fini(struct intel_panel *panel);
void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 51a1d6868b1e..cf39ca90d887 100644
index 384b37e2da70..f349b3920199 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -1846,7 +1846,7 @@ void intel_dsi_init(struct drm_i915_private *dev_priv)
@@ -1852,7 +1852,7 @@ void intel_dsi_init(struct drm_i915_private *dev_priv)
connector->display_info.width_mm = fixed_mode->width_mm;
connector->display_info.height_mm = fixed_mode->height_mm;
@ -176,10 +176,10 @@ index 51a1d6868b1e..cf39ca90d887 100644
intel_dsi_add_properties(intel_connector);
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index eb0c559b2715..a70d767313aa 100644
index 6604806f89d5..61d908e0df0e 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -536,7 +536,7 @@ void intel_dvo_init(struct drm_i915_private *dev_priv)
@@ -542,7 +542,7 @@ void intel_dvo_init(struct drm_i915_private *dev_priv)
*/
intel_panel_init(&intel_connector->panel,
intel_dvo_get_current_mode(intel_encoder),
@ -189,10 +189,10 @@ index eb0c559b2715..a70d767313aa 100644
}
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index e125d16a1aa7..d278f24ba6ae 100644
index 34dd1e5233ac..48f618dc9abb 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -1175,8 +1175,7 @@ void intel_lvds_init(struct drm_i915_private *dev_priv)
@@ -1180,8 +1180,7 @@ void intel_lvds_init(struct drm_i915_private *dev_priv)
out:
mutex_unlock(&dev->mode_config.mutex);
@ -238,5 +238,5 @@ index 41d00b1603e3..b443278e569c 100644
drm_mode_destroy(intel_connector->base.dev,
panel->downclock_mode);
--
2.17.1
2.18.0

View File

@ -1,10 +1,10 @@
From 1e45a10dbea00f3a9ead21a9b3d25ad00021261d Mon Sep 17 00:00:00 2001
Message-Id: <1e45a10dbea00f3a9ead21a9b3d25ad00021261d.1528777685.git.jan.steffens@gmail.com>
In-Reply-To: <9a5adbc45b1c7d43fe4b27936f2a6939660617a1.1528777685.git.jan.steffens@gmail.com>
References: <9a5adbc45b1c7d43fe4b27936f2a6939660617a1.1528777685.git.jan.steffens@gmail.com>
From 598ca9d1cc714cb530141c20a90dc25d34f861fd Mon Sep 17 00:00:00 2001
Message-Id: <598ca9d1cc714cb530141c20a90dc25d34f861fd.1531335939.git.jan.steffens@gmail.com>
In-Reply-To: <a2d2476ffec7d988b1a5396586869570e0d6f9d8.1531335939.git.jan.steffens@gmail.com>
References: <a2d2476ffec7d988b1a5396586869570e0d6f9d8.1531335939.git.jan.steffens@gmail.com>
From: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: Tue, 22 May 2018 14:16:50 +0300
Subject: [PATCH 3/3] ACPI / watchdog: Prefer iTCO_wdt always when WDAT table
Subject: [PATCH 3/4] ACPI / watchdog: Prefer iTCO_wdt always when WDAT table
uses RTC SRAM
After we added quirk for Lenovo Z50-70 it turns out there are at least
@ -128,5 +128,5 @@ index 4bde16fb97d8..95600309ce42 100644
}
--
2.17.1
2.18.0

View File

@ -0,0 +1,46 @@
From 32a72bee7a275f47c235fdb36249703c892ce8d8 Mon Sep 17 00:00:00 2001
Message-Id: <32a72bee7a275f47c235fdb36249703c892ce8d8.1531335939.git.jan.steffens@gmail.com>
In-Reply-To: <a2d2476ffec7d988b1a5396586869570e0d6f9d8.1531335939.git.jan.steffens@gmail.com>
References: <a2d2476ffec7d988b1a5396586869570e0d6f9d8.1531335939.git.jan.steffens@gmail.com>
From: Denis Kenzior <denkenz@gmail.com>
Date: Tue, 19 Jun 2018 10:39:50 -0500
Subject: [PATCH 4/4] mac80211: disable BHs/preemption in
ieee80211_tx_control_port()
On pre-emption enabled kernels the following print was being seen due to
missing local_bh_disable/local_bh_enable calls. mac80211 assumes that
pre-emption is disabled in the data path.
BUG: using smp_processor_id() in preemptible [00000000] code: iwd/517
caller is __ieee80211_subif_start_xmit+0x144/0x210 [mac80211]
[...]
Call Trace:
dump_stack+0x5c/0x80
check_preemption_disabled.cold.0+0x46/0x51
__ieee80211_subif_start_xmit+0x144/0x210 [mac80211]
Fixes: 911806491425 ("mac80211: Add support for tx_control_port")
Signed-off-by: Denis Kenzior <denkenz@gmail.com>
[commit message rewrite, fixes tag]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
net/mac80211/tx.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 05a265cd573d..7404a5114597 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -4800,7 +4800,9 @@ int ieee80211_tx_control_port(struct wiphy *wiphy, struct net_device *dev,
skb_reset_network_header(skb);
skb_reset_mac_header(skb);
+ local_bh_disable();
__ieee80211_subif_start_xmit(skb, skb->dev, flags);
+ local_bh_enable();
return 0;
}
--
2.18.0

View File

@ -1,57 +0,0 @@
From patchwork Wed Apr 25 20:27:37 2018
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: PCI: Add Intel 7th & 8th Gen mobile to ACS quirks
From: Alex Williamson <alex.williamson@redhat.com>
X-Patchwork-Id: 10364243
Message-Id: <152468799766.12449.11245066753252100117.stgit@w520.home>
To: bhelgaas@google.com
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
Date: Wed, 25 Apr 2018 14:27:37 -0600
The specification update indicates these have the same errate for
implementing non-standard ACS capabilities.
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---
drivers/pci/quirks.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 2990ad1e7c99..6d0dee40dbe5 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4230,11 +4230,24 @@ static int pci_quirk_qcom_rp_acs(struct pci_dev *dev, u16 acs_flags)
* 0xa290-0xa29f PCI Express Root port #{0-16}
* 0xa2e7-0xa2ee PCI Express Root port #{17-24}
*
+ * Mobile chipsets are also affected, 7th & 8th Generation
+ * Specification update confirms ACS errata 22, status no fix: (7th Generation
+ * Intel Processor Family I/O for U/Y Platforms and 8th Generation Intel
+ * Processor Family I/O for U Quad Core Platforms Specification Update,
+ * August 2017, Revision 002, Document#: 334660-002)[6]
+ * Device IDs from I/O datasheet: (7th Generation Intel Processor Family I/O
+ * for U/Y Platforms and 8th Generation Intel ® Processor Family I/O for U
+ * Quad Core Platforms, Vol 1 of 2, August 2017, Document#: 334658-003)[7]
+ *
+ * 0x9d10-0x9d1b PCI Express Root port #{1-12}
+ *
* [1] http://www.intel.com/content/www/us/en/chipsets/100-series-chipset-datasheet-vol-2.html
* [2] http://www.intel.com/content/www/us/en/chipsets/100-series-chipset-datasheet-vol-1.html
* [3] http://www.intel.com/content/www/us/en/chipsets/100-series-chipset-spec-update.html
* [4] http://www.intel.com/content/www/us/en/chipsets/200-series-chipset-pch-spec-update.html
* [5] http://www.intel.com/content/www/us/en/chipsets/200-series-chipset-pch-datasheet-vol-1.html
+ * [6] https://www.intel.com/content/www/us/en/processors/core/7th-gen-core-family-mobile-u-y-processor-lines-i-o-spec-update.html
+ * [7] https://www.intel.com/content/www/us/en/processors/core/7th-gen-core-family-mobile-u-y-processor-lines-i-o-datasheet-vol-1.html
*/
static bool pci_quirk_intel_spt_pch_acs_match(struct pci_dev *dev)
{
@@ -4244,6 +4257,7 @@ static bool pci_quirk_intel_spt_pch_acs_match(struct pci_dev *dev)
switch (dev->device) {
case 0xa110 ... 0xa11f: case 0xa167 ... 0xa16a: /* Sunrise Point */
case 0xa290 ... 0xa29f: case 0xa2e7 ... 0xa2ee: /* Union Point */
+ case 0x9d10 ... 0x9d1b: /* 7th & 8th Gen Mobile */
return true;
}

View File

@ -3,7 +3,7 @@
pkgbase=linux-vfio
_srcname=linux-4.17
pkgver=4.17.3
pkgver=4.17.9
pkgrel=1
arch=('x86_64')
url="https://www.kernel.org/"
@ -20,10 +20,10 @@ source=(
0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch
0002-Revert-drm-i915-edp-Allow-alternate-fixed-mode-for-e.patch
0003-ACPI-watchdog-Prefer-iTCO_wdt-always-when-WDAT-table.patch
0004-mac80211-disable-BHs-preemption-in-ieee80211_tx_cont.patch
# patches for pci passthrough
add-acs-overrides.patch
i915-vga-arbiter.patch
PCI-Add-Intel-7th-8th-Gen-mobile-to-ACS-quirks.patch
)
validpgpkeys=(
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
@ -31,18 +31,18 @@ validpgpkeys=(
)
sha256sums=('9faa1dd896eaea961dc6e886697c0b3301277102e5bc976b2758f9a62d3ccd13'
'SKIP'
'01d5cc024dcfed615f84fd83be9c248261d8fc2c062520d38397cead6857b596'
'52131a497efaed724afaa7f7022249f8f8e6e555cbe407a6619908ed2ebcee89'
'SKIP'
'0269d9a56f0d0306c9bd5c179a7e32214b0a1c082d3bca581661203b27305f17'
'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21'
'75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919'
'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65'
'e3c08f9b91611186e5ec579187ecea2a0143e5c2dc7ffc30ac6ea6e2b6d130fd'
'5403dead9161344b2c01027526146a250147680f4a2d32a54d40c55fc1becc8a'
'd55e7de60b12bca26ded4c1bb8eb5860a9092374914a201a0f6a0ed2849d099f'
'8ab566ab93723bb1c372e8f62f8cd714e6a16fc414d703ba4d255f132cffadd8'
'fc1734c1d24aca66015d93f8636afd52afa0f939516d83efb3457da6b5044944'
'429ed1161b9b178df97e53dc6439f770e5198b5544f7421d0e48a3dd77fe371f')
'92f848d0e21fbb2400e50d1c1021514893423641e5450896d7b1d88aa880b2b9'
'fc3c50ae6bd905608e0533a883ab569fcf54038fb9d6569b391107d9fd00abbc'
'bc50c605bd0e1fa7437c21ddef728b83b6de3322b988e14713032993dfa1fc69'
'66284102261c4ed53db050e9045c8672ba0e5171884b46e58f6cd417774d8578'
'5517df72ddb44f873670c75d89544461473274b2636e2299de93eb829510ea50'
'fc1734c1d24aca66015d93f8636afd52afa0f939516d83efb3457da6b5044944')
_kernelname=${pkgbase#linux}
: ${_kernelname:=-ARCH}
@ -65,15 +65,15 @@ prepare() {
# https://bugs.archlinux.org/task/56780
patch -Np1 -i ../0003-ACPI-watchdog-Prefer-iTCO_wdt-always-when-WDAT-table.patch
# Fix iwd provoking a BUG
patch -Np1 -i ../0004-mac80211-disable-BHs-preemption-in-ieee80211_tx_cont.patch
# patches for vga arbiter fix in intel systems
patch -p1 -i "${srcdir}/i915-vga-arbiter.patch"
# Overrides for missing acs capabilities
patch -p1 -i "${srcdir}/add-acs-overrides.patch"
# patches for specific intel cpus
patch -p1 -i "${srcdir}/PCI-Add-Intel-7th-8th-Gen-mobile-to-ACS-quirks.patch"
cat ../config - >.config <<END
CONFIG_LOCALVERSION="${_kernelname}"
CONFIG_LOCALVERSION_AUTO=n

View File

@ -1,67 +1,26 @@
From 220e23ae8d0d346e1b16d843649dd137ba76861c Mon Sep 17 00:00:00 2001
From 087743912610c92eeff1ffbfbd2964faac969d0f Mon Sep 17 00:00:00 2001
From: Mark Weiman <mark.weiman@markzz.com>
Date: Sun, 24 Jun 2018 12:31:25 -0400
Subject: [PATCH] [PATCH] pci: Enable overrides for missing ACS capabilities
(4.17)
Subject: [PATCH] pci: Enable overrides for missing ACS capabilities (4.17)
This an updated version of Alex Williamson's patch from:
https://lkml.org/lkml/2013/5/30/513
Original commit message follows:
---
PCIe ACS (Access Control Services) is the PCIe 2.0+ feature that
allows us to control whether transactions are allowed to be redirected
in various subnodes of a PCIe topology. For instance, if two
endpoints are below a root port or downsteam switch port, the
downstream port may optionally redirect transactions between the
devices, bypassing upstream devices. The same can happen internally
on multifunction devices. The transaction may never be visible to the
upstream devices.
One upstream device that we particularly care about is the IOMMU. If
a redirection occurs in the topology below the IOMMU, then the IOMMU
cannot provide isolation between devices. This is why the PCIe spec
encourages topologies to include ACS support. Without it, we have to
assume peer-to-peer DMA within a hierarchy can bypass IOMMU isolation.
Unfortunately, far too many topologies do not support ACS to make this
a steadfast requirement. Even the latest chipsets from Intel are only
sporadically supporting ACS. We have trouble getting interconnect
vendors to include the PCIe spec required PCIe capability, let alone
suggested features.
Therefore, we need to add some flexibility. The pcie_acs_override=
boot option lets users opt-in specific devices or sets of devices to
assume ACS support. The "downstream" option assumes full ACS support
on root ports and downstream switch ports. The "multifunction"
option assumes the subset of ACS features available on multifunction
endpoints and upstream switch ports are supported. The "id:nnnn:nnnn"
option enables ACS support on devices matching the provided vendor
and device IDs, allowing more strategic ACS overrides. These options
may be combined in any order. A maximum of 16 id specific overrides
are available. It's suggested to use the most limited set of options
necessary to avoid completely disabling ACS across the topology.
Note to hardware vendors, we have facilities to permanently quirk
specific devices which enforce isolation but not provide an ACS
capability. Please contact me to have your devices added and save
your customers the hassle of this boot option.
Signed-off-by: Mark Weiman <mark.weiman@markzz.com>
---
.../admin-guide/kernel-parameters.txt | 9 ++
drivers/pci/quirks.c | 101 ++++++++++++++++++
.../admin-guide/kernel-parameters.txt | 8 ++
drivers/pci/quirks.c | 102 ++++++++++++++++++
2 files changed, 110 insertions(+)
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index f2040d46f095..33ccd3daa8bc 100644
index 533ff5c68970..353481231683 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -3019,6 +3019,15 @@
@@ -3028,6 +3028,14 @@
nomsi [MSI] If the PCI_MSI kernel config parameter is
enabled, this kernel boot option can be used to
disable the use of MSI interrupts system-wide.
+ pci_acs_override =
+ [PCIE] Override missing PCIe ACS support for:
+ pci_acs_override [PCIE] Override missing PCIe ACS support for:
+ downstream
+ All downstream ports - full ACS capabilities
+ multifunction
@ -73,11 +32,11 @@ index f2040d46f095..33ccd3daa8bc 100644
Safety option to keep boot IRQs enabled. This
should never be necessary.
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 2990ad1e7c99..962372b61e26 100644
index f439de848658..5c3ec5e04349 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3533,6 +3533,106 @@ static int __init pci_apply_final_quirks(void)
@@ -186,6 +186,106 @@ static int __init pci_apply_final_quirks(void)
}
fs_initcall_sync(pci_apply_final_quirks);
+static bool acs_on_downstream;
@ -181,16 +140,17 @@ index 2990ad1e7c99..962372b61e26 100644
+}
+
/*
* Following are device-specific reset methods which can be used to
* reset a single function if other methods (e.g. FLR, PM D0->D3) are
@@ -4372,6 +4472,7 @@ static const struct pci_dev_acs_enabled {
{ PCI_VENDOR_ID_CAVIUM, PCI_ANY_ID, pci_quirk_cavium_acs },
/* APM X-Gene */
{ PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs },
* Decoding should be disabled for a PCI device during BAR sizing to avoid
* conflict. But doing so may cause problems on host bridge and perhaps other
@@ -4395,6 +4495,8 @@ static const struct pci_dev_acs_enabled {
{ PCI_VENDOR_ID_AMPERE, 0xE00A, pci_quirk_xgene_acs },
{ PCI_VENDOR_ID_AMPERE, 0xE00B, pci_quirk_xgene_acs },
{ PCI_VENDOR_ID_AMPERE, 0xE00C, pci_quirk_xgene_acs },
+ /* allow acs for any */
+ { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
/* Ampere Computing */
{ PCI_VENDOR_ID_AMPERE, 0xE005, pci_quirk_xgene_acs },
{ PCI_VENDOR_ID_AMPERE, 0xE006, pci_quirk_xgene_acs },
--
2.17.1
{ 0 }
};
--
2.18.0