Re: Workaround for Intel MPS errata

From: Jon Mason
Date: Fri Sep 30 2011 - 11:39:38 EST


On Fri, Sep 30, 2011 at 2:03 AM, Rolf Eike Beer <eike-kernel@xxxxxxxxx> wrote:
>> Hey Avi,
>> Can you try this patch?  It should resolve the issue you are seeing.
>>
>> Thanks,
>> Jon
>>
>>     PCI: Workaround for Intel MPS errata
>>
>>     Intel 5000 and 5100 series memory controllers have a known issue if
>> read
>>     completion coalescing is enabled (the default setting) and the PCI-E
>>     Maximum Payload Size is set to 256B.  To work around this issue,
>> disable
>>     read completion coalescing if the MPS is 256B.
>>
>>     http://www.intel.com/content/dam/doc/specification-update/5000-chipset-memory-controller-hub-specification-update.pdf
>>     http://www.intel.com/content/dam/doc/specification-update/5100-memory-controller-hub-chipset-specification-update.pdf
>>
>>     Reported-by: Avi Kivity <avi@xxxxxxxxxx>
>>     Signed-off-by: Jon Mason <mason@xxxxxxxx>
>>
>> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
>> index a919db2..13c733a 100644
>> --- a/drivers/pci/probe.c
>> +++ b/drivers/pci/probe.c
>> @@ -1361,6 +1361,80 @@ static int pcie_find_smpss(struct pci_dev *dev,
>> void *data)
>>       return 0;
>>  }
>>
>> +static void pcie_errata_check(int mps)
>> +{
>
> While this whole function is about Intel 5x00 devices the name of it is
> very generic (and in a very generic file). Maybe this can be changed, e.g.

I made it generic in naming because I'm betting there are other chips
out there that don't play nice with others.

> "fixup:" renamed to "fixup_intel_5x00:". Also I wonder if that shouldn't
> be a nop when CONFIG_PCI_QUIRKS is not set.

It probably should be a no-op for non-x86 too, as I doubt many other
arches use Intel memory controllers (maybe IA64).

Thanks,
Jon

>
> Eike
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/