[PATCH] UBUNTU: SAUCE: PCI: Disable broken RTIT_BAR of Intel TH

Seth Forshee seth.forshee at canonical.com
Wed Oct 11 17:13:41 UTC 2017


Forgot to say in the subject, this is for artful only.

On Wed, Oct 11, 2017 at 12:11:07PM -0500, Seth Forshee wrote:
> From: Alexander Shishkin <alexander.shishkin at linux.intel.com>
> 
> BugLink: http://bugs.launchpad.net/bugs/1715833
> 
> On some intergrations of the Intel TH the reported size of RTIT_BAR
> doesn't match its actual size, which leads to overlaps with other
> devices' resources.
> 
> For this reason, we need to disable the RTIT_BAR on Denverton where
> it would overlap with XHCI MMIO space and effectively kill usb dead.
> 
> Signed-off-by: Alexander Shishkin <alexander.shishkin at linux.intel.com>
> Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
> ---
>  drivers/pci/quirks.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index 73bad58d587a..02b009426670 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -4811,6 +4811,27 @@ static void quirk_intel_no_flr(struct pci_dev *dev)
>  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_intel_no_flr);
>  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_intel_no_flr);
>  
> +static void quirk_intel_th_rtit_bar(struct pci_dev *dev)
> +{
> +	struct resource *r = &dev->resource[4];
> +
> +	/*
> +	 * Hello, Denverton!
> +	 * Denverton reports 2k of RTIT_BAR (resource 4), which can't be
> +	 * right given the 16 threads. When Intel TH gets enabled, the
> +	 * actual resource overlaps the XHCI MMIO space and causes it
> +	 * to die.
> +	 * We're not really using RTIT_BAR at all at the moment, so it's
> +	 * a safe choice to disable this resource.
> +	 */
> +	if (r->end == r->start + 0x7ff) {
> +		r->flags = 0;
> +		r->start = 0;
> +		r->end   = 0;
> +	}
> +}
> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x19e1, quirk_intel_th_rtit_bar);
> +
>  /*
>   * The hibmc card on a HiSilicon D05 board sits behind a non-compliant
>   * bridge. The bridge has the PCI_BRIDGE_CTL_VGA config bit fixed at 0
> -- 
> 2.14.1
> 




More information about the kernel-team mailing list