diff mbox

PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

Message ID 1522882209-9743-1-git-send-email-okaya@codeaurora.org (mailing list archive)
State New, archived
Headers show

Commit Message

Sinan Kaya April 4, 2018, 10:50 p.m. UTC
Per PCIe r3.1, sec 2.2.6.2 and 7.8.4, a Requester may not use 8-bit Tags
unless its Extended Tag Field Enable is set, but all Receivers/Completers
must handle 8-bit Tags correctly regardless of their Extended Tag Field
Enable.

Some devices do not handle 8-bit Tags as Completers, so add a quirk for
them.  If we find such a device, we disable Extended Tags for the entire
hierarchy to make peer-to-peer DMA possible.

The Broadcom HT1100/HT2000/HT2100 seems to have issues with handling 8-bit
tags.  Mark it as broken.

Fixes: 60db3a4d8cc9 ("PCI: Enable PCIe Extended Tags if supported")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=196197
Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/pci/quirks.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Bjorn Helgaas April 10, 2018, 7:41 p.m. UTC | #1
On Wed, Apr 04, 2018 at 06:50:09PM -0400, Sinan Kaya wrote:
> Per PCIe r3.1, sec 2.2.6.2 and 7.8.4, a Requester may not use 8-bit Tags
> unless its Extended Tag Field Enable is set, but all Receivers/Completers
> must handle 8-bit Tags correctly regardless of their Extended Tag Field
> Enable.
> 
> Some devices do not handle 8-bit Tags as Completers, so add a quirk for
> them.  If we find such a device, we disable Extended Tags for the entire
> hierarchy to make peer-to-peer DMA possible.
> 
> The Broadcom HT1100/HT2000/HT2100 seems to have issues with handling 8-bit
> tags.  Mark it as broken.
> 
> Fixes: 60db3a4d8cc9 ("PCI: Enable PCIe Extended Tags if supported")
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=196197
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>

Applied to pci/enumeration for v4.18, thanks!

> ---
>  drivers/pci/quirks.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index 8b14bd3..f012742 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -4813,9 +4813,13 @@ static void quirk_no_ext_tags(struct pci_dev *pdev)
>  
>  	pci_walk_bus(bridge->bus, pci_configure_extended_tags, NULL);
>  }
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0132, quirk_no_ext_tags);
>  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0140, quirk_no_ext_tags);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0141, quirk_no_ext_tags);
>  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0142, quirk_no_ext_tags);
>  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0144, quirk_no_ext_tags);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0420, quirk_no_ext_tags);
> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0422, quirk_no_ext_tags);
>  
>  #ifdef CONFIG_PCI_ATS
>  /*
> -- 
> 2.7.4
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Bjorn Helgaas April 10, 2018, 7:50 p.m. UTC | #2
On Tue, Apr 10, 2018 at 02:41:44PM -0500, Bjorn Helgaas wrote:
> On Wed, Apr 04, 2018 at 06:50:09PM -0400, Sinan Kaya wrote:
> > Per PCIe r3.1, sec 2.2.6.2 and 7.8.4, a Requester may not use 8-bit Tags
> > unless its Extended Tag Field Enable is set, but all Receivers/Completers
> > must handle 8-bit Tags correctly regardless of their Extended Tag Field
> > Enable.
> > 
> > Some devices do not handle 8-bit Tags as Completers, so add a quirk for
> > them.  If we find such a device, we disable Extended Tags for the entire
> > hierarchy to make peer-to-peer DMA possible.
> > 
> > The Broadcom HT1100/HT2000/HT2100 seems to have issues with handling 8-bit
> > tags.  Mark it as broken.
> > 
> > Fixes: 60db3a4d8cc9 ("PCI: Enable PCIe Extended Tags if supported")
> > Link: https://bugzilla.kernel.org/show_bug.cgi?id=196197
> > Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> 
> Applied to pci/enumeration for v4.18, thanks!

Actually, this is a really annoying issue and I think the fix is
appropriate for v4.17, so I moved it to my for-linus branch.

> > ---
> >  drivers/pci/quirks.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> > index 8b14bd3..f012742 100644
> > --- a/drivers/pci/quirks.c
> > +++ b/drivers/pci/quirks.c
> > @@ -4813,9 +4813,13 @@ static void quirk_no_ext_tags(struct pci_dev *pdev)
> >  
> >  	pci_walk_bus(bridge->bus, pci_configure_extended_tags, NULL);
> >  }
> > +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0132, quirk_no_ext_tags);
> >  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0140, quirk_no_ext_tags);
> > +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0141, quirk_no_ext_tags);
> >  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0142, quirk_no_ext_tags);
> >  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0144, quirk_no_ext_tags);
> > +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0420, quirk_no_ext_tags);
> > +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0422, quirk_no_ext_tags);
> >  
> >  #ifdef CONFIG_PCI_ATS
> >  /*
> > -- 
> > 2.7.4
> > 
> > 
> > _______________________________________________
> > linux-arm-kernel mailing list
> > linux-arm-kernel@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Sinan Kaya April 10, 2018, 8:18 p.m. UTC | #3
On 4/10/2018 3:50 PM, Bjorn Helgaas wrote:
> On Tue, Apr 10, 2018 at 02:41:44PM -0500, Bjorn Helgaas wrote:
>> On Wed, Apr 04, 2018 at 06:50:09PM -0400, Sinan Kaya wrote:
>>> Per PCIe r3.1, sec 2.2.6.2 and 7.8.4, a Requester may not use 8-bit Tags
>>> unless its Extended Tag Field Enable is set, but all Receivers/Completers
>>> must handle 8-bit Tags correctly regardless of their Extended Tag Field
>>> Enable.
>>>
>>> Some devices do not handle 8-bit Tags as Completers, so add a quirk for
>>> them.  If we find such a device, we disable Extended Tags for the entire
>>> hierarchy to make peer-to-peer DMA possible.
>>>
>>> The Broadcom HT1100/HT2000/HT2100 seems to have issues with handling 8-bit
>>> tags.  Mark it as broken.
>>>
>>> Fixes: 60db3a4d8cc9 ("PCI: Enable PCIe Extended Tags if supported")
>>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=196197
>>> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
>> Applied to pci/enumeration for v4.18, thanks!
> Actually, this is a really annoying issue and I think the fix is
> appropriate for v4.17, so I moved it to my for-linus branch.
> 

I agree. It causes boot issues on some AMD Opteron machines. It should
probably be back-ported too.
Bjorn Helgaas April 11, 2018, 1:51 p.m. UTC | #4
On Tue, Apr 10, 2018 at 04:18:01PM -0400, Sinan Kaya wrote:
> On 4/10/2018 3:50 PM, Bjorn Helgaas wrote:
> > On Tue, Apr 10, 2018 at 02:41:44PM -0500, Bjorn Helgaas wrote:
> >> On Wed, Apr 04, 2018 at 06:50:09PM -0400, Sinan Kaya wrote:
> >>> Per PCIe r3.1, sec 2.2.6.2 and 7.8.4, a Requester may not use 8-bit Tags
> >>> unless its Extended Tag Field Enable is set, but all Receivers/Completers
> >>> must handle 8-bit Tags correctly regardless of their Extended Tag Field
> >>> Enable.
> >>>
> >>> Some devices do not handle 8-bit Tags as Completers, so add a quirk for
> >>> them.  If we find such a device, we disable Extended Tags for the entire
> >>> hierarchy to make peer-to-peer DMA possible.
> >>>
> >>> The Broadcom HT1100/HT2000/HT2100 seems to have issues with handling 8-bit
> >>> tags.  Mark it as broken.
> >>>
> >>> Fixes: 60db3a4d8cc9 ("PCI: Enable PCIe Extended Tags if supported")
> >>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=196197
> >>> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> >> Applied to pci/enumeration for v4.18, thanks!
> > Actually, this is a really annoying issue and I think the fix is
> > appropriate for v4.17, so I moved it to my for-linus branch.
> > 
> 
> I agree. It causes boot issues on some AMD Opteron machines. It should
> probably be back-ported too. 

We started enabling extended tags with 60db3a4d8cc9 ("PCI: Enable PCIe
Extended Tags if supported"), which appeared in v4.11.

So I added these stable tags:

  CC: stable@vger.kernel.org      # v4.11: 62ce94a7a5a5 PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
  CC: stable@vger.kernel.org      # v4.11

I'm not sure I'm using the stable request correctly, but my intent is:

  - 62ce94a7a5a5 appeared in v4.14, so cherry-pick 62ce94a7a5a5 to
    v4.11 through v4.13
  - cherry-pick *this* patch on top of 62ce94a7a5a5 to v4.11 and later
Sinan Kaya April 11, 2018, 2:02 p.m. UTC | #5
+GregKH

On 4/11/2018 9:51 AM, Bjorn Helgaas wrote:
> On Tue, Apr 10, 2018 at 04:18:01PM -0400, Sinan Kaya wrote:
>> On 4/10/2018 3:50 PM, Bjorn Helgaas wrote:
>>> On Tue, Apr 10, 2018 at 02:41:44PM -0500, Bjorn Helgaas wrote:
>>>> On Wed, Apr 04, 2018 at 06:50:09PM -0400, Sinan Kaya wrote:
>>>>> Per PCIe r3.1, sec 2.2.6.2 and 7.8.4, a Requester may not use 8-bit Tags
>>>>> unless its Extended Tag Field Enable is set, but all Receivers/Completers
>>>>> must handle 8-bit Tags correctly regardless of their Extended Tag Field
>>>>> Enable.
>>>>>
>>>>> Some devices do not handle 8-bit Tags as Completers, so add a quirk for
>>>>> them.  If we find such a device, we disable Extended Tags for the entire
>>>>> hierarchy to make peer-to-peer DMA possible.
>>>>>
>>>>> The Broadcom HT1100/HT2000/HT2100 seems to have issues with handling 8-bit
>>>>> tags.  Mark it as broken.
>>>>>
>>>>> Fixes: 60db3a4d8cc9 ("PCI: Enable PCIe Extended Tags if supported")
>>>>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=196197
>>>>> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
>>>> Applied to pci/enumeration for v4.18, thanks!
>>> Actually, this is a really annoying issue and I think the fix is
>>> appropriate for v4.17, so I moved it to my for-linus branch.
>>>
>>
>> I agree. It causes boot issues on some AMD Opteron machines. It should
>> probably be back-ported too. 
> 
> We started enabling extended tags with 60db3a4d8cc9 ("PCI: Enable PCIe
> Extended Tags if supported"), which appeared in v4.11.
> 
> So I added these stable tags:
> 
>   CC: stable@vger.kernel.org      # v4.11: 62ce94a7a5a5 PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
>   CC: stable@vger.kernel.org      # v4.11
> 
> I'm not sure I'm using the stable request correctly, but my intent is:
> 
>   - 62ce94a7a5a5 appeared in v4.14, so cherry-pick 62ce94a7a5a5 to
>     v4.11 through v4.13
>   - cherry-pick *this* patch on top of 62ce94a7a5a5 to v4.11 and later
>
Greg KH April 11, 2018, 2:08 p.m. UTC | #6
On Wed, Apr 11, 2018 at 10:02:07AM -0400, Sinan Kaya wrote:
> +GregKH

Why?

> On 4/11/2018 9:51 AM, Bjorn Helgaas wrote:
> > On Tue, Apr 10, 2018 at 04:18:01PM -0400, Sinan Kaya wrote:
> >> On 4/10/2018 3:50 PM, Bjorn Helgaas wrote:
> >>> On Tue, Apr 10, 2018 at 02:41:44PM -0500, Bjorn Helgaas wrote:
> >>>> On Wed, Apr 04, 2018 at 06:50:09PM -0400, Sinan Kaya wrote:
> >>>>> Per PCIe r3.1, sec 2.2.6.2 and 7.8.4, a Requester may not use 8-bit Tags
> >>>>> unless its Extended Tag Field Enable is set, but all Receivers/Completers
> >>>>> must handle 8-bit Tags correctly regardless of their Extended Tag Field
> >>>>> Enable.
> >>>>>
> >>>>> Some devices do not handle 8-bit Tags as Completers, so add a quirk for
> >>>>> them.  If we find such a device, we disable Extended Tags for the entire
> >>>>> hierarchy to make peer-to-peer DMA possible.
> >>>>>
> >>>>> The Broadcom HT1100/HT2000/HT2100 seems to have issues with handling 8-bit
> >>>>> tags.  Mark it as broken.
> >>>>>
> >>>>> Fixes: 60db3a4d8cc9 ("PCI: Enable PCIe Extended Tags if supported")
> >>>>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=196197
> >>>>> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> >>>> Applied to pci/enumeration for v4.18, thanks!
> >>> Actually, this is a really annoying issue and I think the fix is
> >>> appropriate for v4.17, so I moved it to my for-linus branch.
> >>>
> >>
> >> I agree. It causes boot issues on some AMD Opteron machines. It should
> >> probably be back-ported too. 
> > 
> > We started enabling extended tags with 60db3a4d8cc9 ("PCI: Enable PCIe
> > Extended Tags if supported"), which appeared in v4.11.
> > 
> > So I added these stable tags:
> > 
> >   CC: stable@vger.kernel.org      # v4.11: 62ce94a7a5a5 PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
> >   CC: stable@vger.kernel.org      # v4.11
> > 
> > I'm not sure I'm using the stable request correctly, but my intent is:
> > 
> >   - 62ce94a7a5a5 appeared in v4.14, so cherry-pick 62ce94a7a5a5 to
> >     v4.11 through v4.13
> >   - cherry-pick *this* patch on top of 62ce94a7a5a5 to v4.11 and later

Bjorn is correct here, why are you dragging me into this?

greg k-h
Sinan Kaya April 11, 2018, 2:13 p.m. UTC | #7
On 4/11/2018 10:08 AM, Greg Kroah-Hartman wrote:
>>> So I added these stable tags:
>>>
>>>   CC: stable@vger.kernel.org      # v4.11: 62ce94a7a5a5 PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
>>>   CC: stable@vger.kernel.org      # v4.11
>>>
>>> I'm not sure I'm using the stable request correctly, but my intent is:

Asking if we placed the tags correctly. Sounds like we did.

>>>
>>>   - 62ce94a7a5a5 appeared in v4.14, so cherry-pick 62ce94a7a5a5 to
>>>     v4.11 through v4.13
>>>   - cherry-pick *this* patch on top of 62ce94a7a5a5 to v4.11 and later
> Bjorn is correct here, why are you dragging me into this?

Thanks
Greg KH April 11, 2018, 2:19 p.m. UTC | #8
On Wed, Apr 11, 2018 at 10:13:11AM -0400, Sinan Kaya wrote:
> On 4/11/2018 10:08 AM, Greg Kroah-Hartman wrote:
> >>> So I added these stable tags:
> >>>
> >>>   CC: stable@vger.kernel.org      # v4.11: 62ce94a7a5a5 PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
> >>>   CC: stable@vger.kernel.org      # v4.11
> >>>
> >>> I'm not sure I'm using the stable request correctly, but my intent is:
> 
> Asking if we placed the tags correctly. Sounds like we did.
> 
> >>>
> >>>   - 62ce94a7a5a5 appeared in v4.14, so cherry-pick 62ce94a7a5a5 to
> >>>     v4.11 through v4.13
> >>>   - cherry-pick *this* patch on top of 62ce94a7a5a5 to v4.11 and later
> > Bjorn is correct here, why are you dragging me into this?
> 
> Thanks

Next time explicitly ask the question, don't expect someone to rummage
through an email to determine what you are thinking.  You are being lazy
by just adding someone else to an email thread like this, be considerate
and take the time to explain yourself when asking someone else to do
work.

greg k-h
Sinan Kaya April 11, 2018, 4:23 p.m. UTC | #9
On 4/11/2018 10:19 AM, Greg Kroah-Hartman wrote:
> Next time explicitly ask the question, don't expect someone to rummage
> through an email to determine what you are thinking.  You are being lazy
> by just adding someone else to an email thread like this, be considerate
> and take the time to explain yourself when asking someone else to do
> work.

Sorry, I should have stripped irrelevant pieces like you said.
diff mbox

Patch

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 8b14bd3..f012742 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4813,9 +4813,13 @@  static void quirk_no_ext_tags(struct pci_dev *pdev)
 
 	pci_walk_bus(bridge->bus, pci_configure_extended_tags, NULL);
 }
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0132, quirk_no_ext_tags);
 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0140, quirk_no_ext_tags);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0141, quirk_no_ext_tags);
 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0142, quirk_no_ext_tags);
 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0144, quirk_no_ext_tags);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0420, quirk_no_ext_tags);
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0422, quirk_no_ext_tags);
 
 #ifdef CONFIG_PCI_ATS
 /*