Message ID | 20210420063942.7041-1-ilya.lipnitskiy@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 987b42074b66cc5ca31e70cec89d3d0d14ad0ff3 |
Headers | show |
Series | MIPS: pci-legacy: revert "use generic pci_enable_resources" | expand |
On Mon, Apr 19, 2021 at 11:39:43PM -0700, Ilya Lipnitskiy wrote: > This mostly reverts commit 99bca615d895 ("MIPS: pci-legacy: use generic > pci_enable_resources"). Fixes regressions such as: > ata_piix 0000:00:0a.1: can't enable device: BAR 0 [io 0x01f0-0x01f7] not > claimed > ata_piix: probe of 0000:00:0a.1 failed with error -22 > > The only changes from the strict revert are to fix checkpatch errors: > ERROR: spaces required around that '=' (ctx:VxV) > #33: FILE: arch/mips/pci/pci-legacy.c:252: > + for (idx=0; idx < PCI_NUM_RESOURCES; idx++) { > ^ > > ERROR: do not use assignment in if condition > #67: FILE: arch/mips/pci/pci-legacy.c:284: > + if ((err = pcibios_enable_resources(dev, mask)) < 0) > > Reported-by: Guenter Roeck <linux@roeck-us.net> > Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> Tested-by: Guenter Roeck <linux@roeck-us.net> Guenter
On Mon, Apr 19, 2021 at 11:39:43PM -0700, Ilya Lipnitskiy wrote: > This mostly reverts commit 99bca615d895 ("MIPS: pci-legacy: use generic > pci_enable_resources"). Fixes regressions such as: > ata_piix 0000:00:0a.1: can't enable device: BAR 0 [io 0x01f0-0x01f7] not > claimed > ata_piix: probe of 0000:00:0a.1 failed with error -22 > > The only changes from the strict revert are to fix checkpatch errors: > ERROR: spaces required around that '=' (ctx:VxV) > #33: FILE: arch/mips/pci/pci-legacy.c:252: > + for (idx=0; idx < PCI_NUM_RESOURCES; idx++) { > ^ > > ERROR: do not use assignment in if condition > #67: FILE: arch/mips/pci/pci-legacy.c:284: > + if ((err = pcibios_enable_resources(dev, mask)) < 0) > > Reported-by: Guenter Roeck <linux@roeck-us.net> > Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> > --- > Guenter, sorry about this - let's just revert this for now to minimize > turmoil to the legacy PCI code. Obviously, this needs more testing > before applying. Thanks for your report! > > arch/mips/pci/pci-legacy.c | 38 +++++++++++++++++++++++++++++++++++++- > 1 file changed, 37 insertions(+), 1 deletion(-) applied to mips-next. Thomas.
diff --git a/arch/mips/pci/pci-legacy.c b/arch/mips/pci/pci-legacy.c index c24226ea0a6e..468722c8a5c6 100644 --- a/arch/mips/pci/pci-legacy.c +++ b/arch/mips/pci/pci-legacy.c @@ -241,9 +241,45 @@ static int __init pcibios_init(void) subsys_initcall(pcibios_init); +static int pcibios_enable_resources(struct pci_dev *dev, int mask) +{ + u16 cmd, old_cmd; + int idx; + struct resource *r; + + pci_read_config_word(dev, PCI_COMMAND, &cmd); + old_cmd = cmd; + for (idx = 0; idx < PCI_NUM_RESOURCES; idx++) { + /* Only set up the requested stuff */ + if (!(mask & (1<<idx))) + continue; + + r = &dev->resource[idx]; + if (!(r->flags & (IORESOURCE_IO | IORESOURCE_MEM))) + continue; + if ((idx == PCI_ROM_RESOURCE) && + (!(r->flags & IORESOURCE_ROM_ENABLE))) + continue; + if (!r->start && r->end) { + pci_err(dev, + "can't enable device: resource collisions\n"); + return -EINVAL; + } + if (r->flags & IORESOURCE_IO) + cmd |= PCI_COMMAND_IO; + if (r->flags & IORESOURCE_MEM) + cmd |= PCI_COMMAND_MEMORY; + } + if (cmd != old_cmd) { + pci_info(dev, "enabling device (%04x -> %04x)\n", old_cmd, cmd); + pci_write_config_word(dev, PCI_COMMAND, cmd); + } + return 0; +} + int pcibios_enable_device(struct pci_dev *dev, int mask) { - int err = pci_enable_resources(dev, mask); + int err = pcibios_enable_resources(dev, mask); if (err < 0) return err;
This mostly reverts commit 99bca615d895 ("MIPS: pci-legacy: use generic pci_enable_resources"). Fixes regressions such as: ata_piix 0000:00:0a.1: can't enable device: BAR 0 [io 0x01f0-0x01f7] not claimed ata_piix: probe of 0000:00:0a.1 failed with error -22 The only changes from the strict revert are to fix checkpatch errors: ERROR: spaces required around that '=' (ctx:VxV) #33: FILE: arch/mips/pci/pci-legacy.c:252: + for (idx=0; idx < PCI_NUM_RESOURCES; idx++) { ^ ERROR: do not use assignment in if condition #67: FILE: arch/mips/pci/pci-legacy.c:284: + if ((err = pcibios_enable_resources(dev, mask)) < 0) Reported-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> --- Guenter, sorry about this - let's just revert this for now to minimize turmoil to the legacy PCI code. Obviously, this needs more testing before applying. Thanks for your report! arch/mips/pci/pci-legacy.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-)