mbox series

[V16,0/7] PCI: Loongson pci improvements and quirks

Message ID 20220714124216.1489304-1-chenhuacai@loongson.cn
Headers show
Series PCI: Loongson pci improvements and quirks | expand

Message

陈华才 July 14, 2022, 12:42 p.m. UTC
This patchset improves Loongson PCI controller driver and resolves some
problems: LS2K/LS7A's PCI config space supports 1/2/4-bytes access, so
the first patch use pci_generic_config_read()/pci_generic_config_write()
for them; the second patch add ACPI init support which will be used by
LoongArch; the third patch improves the mrrs quirk for LS7A chipset; The
fourth patch add a new quirk for LS7A chipset to avoid poweroff/reboot
failure, and the fifth patch add a new quirk for LS7A chipset to fix the
multifunction devices' irq pin mappings.

V1 -> V2:
1, Rework the 4th patch;
2, Improve commit messages;
3, Remove the last patch since there is better solutions.

V2 -> V3:
1, Add more affected device ids for the 4th patch;
2, Improve commit messages to describe root causes.

V3 -> V4:
1, Rework the MRRS quirk patch;
2, Improve commit messages to describe root causes, again.

V4 -> V5:
1, Improve the MRRS quirk patch;
2, Change the order of 2nd and 3rd patch;
3, Improve commit messages to describe root causes, again.

V5 -> V6:
1, Rework the 1st patch;
2, Adjust the order of the series.

V6 -> V7:
1, Use correct pci config access operations;
2, Add ACPI init support for LoongArch;
3, Don't move to quirks.c since the driver has ACPI support;
4, Some other minor improvements.

V7 -> V8:
1, Use CFG1 method for LS2K/LS7A pci config.

V8 -> V9:
1, Use pci_controller_data for the first patch. 

V9 -> V10:
1, Add a patch to avoid LS2K/LS7A access unexisting devices.

V10 -> V11:
1, Rebased on 5.16-rc4.

V11 -> V12:
1, Rebased on 5.17-rc5.

V12 -> V13:
1, Rebased on 5.18-rc2;
2, Some minor improvements (adopt Rob Herring's suggestions).

V13 -> V14:
1, Rebased on 5.18;
2, Split ARM64-specific mcfg_quirks to a separate patch;
3, Refactor "PCI: loongson: Don't access non-existant devices";
4, Refactor "PCI: Add quirk for LS7A to avoid reboot failure";
5, Some other minor improvements (adopt Bjorn's suggestions).

V14 -> V15:
1, Rebased on 5.19-rc4;
2, Refactor "PCI: loongson: Don't access non-existant devices".

V15 -> V16:
1, Rebased on 5.19-rc6;
2, Refactor "PCI: loongson: Add ACPI init support".

Huacai Chen, Tiezhu Yang and Jianmin Lv(6):
 PCI/ACPI: Guard ARM64-specific mcfg_quirks
 PCI: loongson: Use generic 8/16/32-bit config ops on LS2K/LS7A.
 PCI: loongson: Add ACPI init support.
 PCI: loongson: Don't access non-existant devices.
 PCI: loongson: Improve the MRRS quirk for LS7A.
 PCI: Add quirk for LS7A to avoid reboot failure.
 PCI: Add quirk for multifunction devices of LS7A.

Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn> 
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---
 drivers/acpi/pci_mcfg.c               |  13 ++
 drivers/pci/controller/Kconfig        |   2 +-
 drivers/pci/controller/pci-loongson.c | 233 ++++++++++++++++++++++++++--------
 drivers/pci/pci.c                     |   6 +
 drivers/pci/pcie/portdrv_core.c       |   1 -
 drivers/pci/pcie/portdrv_pci.c        |  20 ++-
 include/linux/pci-ecam.h              |   1 +
 include/linux/pci.h                   |   2 +
 8 files changed, 225 insertions(+), 53 deletions(-)
--
2.27.0

Comments

Bjorn Helgaas July 15, 2022, 10:18 p.m. UTC | #1
On Thu, Jul 14, 2022 at 08:42:09PM +0800, Huacai Chen wrote:
> This patchset improves Loongson PCI controller driver and resolves some
> problems: LS2K/LS7A's PCI config space supports 1/2/4-bytes access, so
> the first patch use pci_generic_config_read()/pci_generic_config_write()
> for them; the second patch add ACPI init support which will be used by
> LoongArch; the third patch improves the mrrs quirk for LS7A chipset; The
> fourth patch add a new quirk for LS7A chipset to avoid poweroff/reboot
> failure, and the fifth patch add a new quirk for LS7A chipset to fix the
> multifunction devices' irq pin mappings.
> ...

> Huacai Chen, Tiezhu Yang and Jianmin Lv(6):
>  PCI/ACPI: Guard ARM64-specific mcfg_quirks
>  PCI: loongson: Use generic 8/16/32-bit config ops on LS2K/LS7A.
>  PCI: loongson: Add ACPI init support.
>  PCI: loongson: Don't access non-existant devices.
>  PCI: Add quirk for multifunction devices of LS7A.

I applied the above to pci/ctrl/loongson to get them out of the way.

>  PCI: loongson: Improve the MRRS quirk for LS7A.
>  PCI: Add quirk for LS7A to avoid reboot failure.

These touch core code in some sort of ugly ways and I'm still thinking
about them.
Huacai Chen July 16, 2022, 9:54 a.m. UTC | #2
Hi, Bjorn,

On Sat, Jul 16, 2022 at 6:18 AM Bjorn Helgaas <helgaas@kernel.org> wrote:
>
> On Thu, Jul 14, 2022 at 08:42:09PM +0800, Huacai Chen wrote:
> > This patchset improves Loongson PCI controller driver and resolves some
> > problems: LS2K/LS7A's PCI config space supports 1/2/4-bytes access, so
> > the first patch use pci_generic_config_read()/pci_generic_config_write()
> > for them; the second patch add ACPI init support which will be used by
> > LoongArch; the third patch improves the mrrs quirk for LS7A chipset; The
> > fourth patch add a new quirk for LS7A chipset to avoid poweroff/reboot
> > failure, and the fifth patch add a new quirk for LS7A chipset to fix the
> > multifunction devices' irq pin mappings.
> > ...
>
> > Huacai Chen, Tiezhu Yang and Jianmin Lv(6):
> >  PCI/ACPI: Guard ARM64-specific mcfg_quirks
> >  PCI: loongson: Use generic 8/16/32-bit config ops on LS2K/LS7A.
> >  PCI: loongson: Add ACPI init support.
> >  PCI: loongson: Don't access non-existant devices.
> >  PCI: Add quirk for multifunction devices of LS7A.
>
> I applied the above to pci/ctrl/loongson to get them out of the way.
Thank you very much!

>
> >  PCI: loongson: Improve the MRRS quirk for LS7A.
> >  PCI: Add quirk for LS7A to avoid reboot failure.
>
> These touch core code in some sort of ugly ways and I'm still thinking
> about them.
Yes, it is ugly, but I hope it can be solved in some way, at least the
MRRS problem is not only Loongson-specific and can be shared by
others.

Huacai