2018-04-04 22:51:50

by Sinan Kaya

[permalink] [raw]
Subject: [PATCH] PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

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 <[email protected]>
---
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



2018-04-10 19:46:29

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH] PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

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 <[email protected]>

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
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

2018-04-10 19:53:59

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH] PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

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 <[email protected]>
>
> 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
> > [email protected]
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

2018-04-10 20:24:36

by Sinan Kaya

[permalink] [raw]
Subject: Re: [PATCH] PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

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 <[email protected]>
>> 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.

--
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

2018-04-11 13:57:28

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH] PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

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 <[email protected]>
> >> 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: [email protected] # v4.11: 62ce94a7a5a5 PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
CC: [email protected] # 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

2018-04-11 14:06:16

by Sinan Kaya

[permalink] [raw]
Subject: Re: [PATCH] PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

+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 <[email protected]>
>>>> 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: [email protected] # v4.11: 62ce94a7a5a5 PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
> CC: [email protected] # 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
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

2018-04-11 14:15:32

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

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 <[email protected]>
> >>>> 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: [email protected] # v4.11: 62ce94a7a5a5 PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
> > CC: [email protected] # 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

2018-04-11 14:17:40

by Sinan Kaya

[permalink] [raw]
Subject: Re: [PATCH] PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

On 4/11/2018 10:08 AM, Greg Kroah-Hartman wrote:
>>> So I added these stable tags:
>>>
>>> CC: [email protected] # v4.11: 62ce94a7a5a5 PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
>>> CC: [email protected] # 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

--
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

2018-04-11 16:18:54

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

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: [email protected] # v4.11: 62ce94a7a5a5 PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
> >>> CC: [email protected] # 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

2018-04-11 16:27:10

by Sinan Kaya

[permalink] [raw]
Subject: Re: [PATCH] PCI: quirk HT1100 & HT2000 and one HT2100 Root Ports for Extended Tags

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.

--
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.