Re: [PATCH] PCI: Add two more values for PCIe Max_Read_Request_Size

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 13.04.2018 um 00:55 schrieb Bjorn Helgaas:
> Hello Heiner,
> 
> On Thu, Apr 12, 2018 at 11:08:04PM +0200, Heiner Kallweit wrote:
>> This patch adds missing values for the max read request size.
>> E.g. network driver r8169 uses a value of 4K.
> 
> Is there a r8169 patch that adds uses of PCI_EXP_DEVCTL_READRQ_4096B?
> If so, we should probably keep it together with this one since this
> one would have to be merged first.
> 
Not yet, so far r8169 uses the following to set a MRRS of 4K.

#define MAX_READ_REQUEST_SHIFT	12
0x5 << MAX_READ_REQUEST_SHIFT

I have to check when setting 4K MRRS was added, but it seems
that so far it's fine with all users.

Before submitting the r8169 patch I wanted to check for feedback
regarding use of the two additional MRRS values, so what you write
in the following is exactly the type of feedback I was looking for.

I will read through the linked discussion and then also submit the
r8169 patch.

Thanks, Heiner

> There's also a larger issue in that when Linux configures MPS and MRRS
> at enumeration-time, it makes some assumptions about how MRRS is set.
> If a driver like r8169 changes MRRS later, it may break those
> assumptions, which might lead to PCIe errors.
> 
> If a user boots with "pci=pcie_bus_perf", we use PCIE_BUS_PERFORMANCE
> mode, and in that case we may set MPS to something larger than some
> devices can support, and we rely on MRRS to avoid problems.
> 
> I don't really *like* that scheme because it makes assumptions like
> "drivers never change MRRS", but that's what we have right now.
> 
> So just be aware that if r8169 changes MRRS and users boot with
> "pci=pcie_bus_perf", there is the potential for PCIe bus errors.
> 
> There was some recent discussion about this; [1] is a good place to
> start.
> 
> [1] http://lkml.kernel.org/r/20180119205153.GB160618@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> 
>> Signed-off-by: Heiner Kallweit <hkallweit1@xxxxxxxxx>
>> ---
>>  include/uapi/linux/pci_regs.h | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h
>> index 0c79eac5..699257fb 100644
>> --- a/include/uapi/linux/pci_regs.h
>> +++ b/include/uapi/linux/pci_regs.h
>> @@ -506,6 +506,8 @@
>>  #define  PCI_EXP_DEVCTL_READRQ_256B  0x1000 /* 256 Bytes */
>>  #define  PCI_EXP_DEVCTL_READRQ_512B  0x2000 /* 512 Bytes */
>>  #define  PCI_EXP_DEVCTL_READRQ_1024B 0x3000 /* 1024 Bytes */
>> +#define  PCI_EXP_DEVCTL_READRQ_2048B 0x4000 /* 2048 Bytes */
>> +#define  PCI_EXP_DEVCTL_READRQ_4096B 0x5000 /* 4096 Bytes */
>>  #define  PCI_EXP_DEVCTL_BCR_FLR 0x8000  /* Bridge Configuration Retry / FLR */
>>  #define PCI_EXP_DEVSTA		10	/* Device Status */
>>  #define  PCI_EXP_DEVSTA_CED	0x0001	/* Correctable Error Detected */
>> -- 
>> 2.17.0
>>
> 




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux