OSDN Git Service

MIPS: PCI: Reduce stack frame usage
authorKeith Busch <keith.busch@intel.com>
Tue, 13 Sep 2016 15:21:47 +0000 (09:21 -0600)
committerRalf Baechle <ralf@linux-mips.org>
Tue, 4 Oct 2016 14:13:57 +0000 (16:13 +0200)
This patch removes creating a fake pci device in MIPS early config
access and instead just uses the pci bus to get the same functionality.
The struct pci_dev is too large to allocate on the stack, and was relying
on compiler optimizations to remove its usage.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14253/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/txx9/generic/pci.c

index 1f6bc9a..285d84e 100644 (file)
@@ -29,12 +29,8 @@ static int __init
 early_read_config_word(struct pci_controller *hose,
                       int top_bus, int bus, int devfn, int offset, u16 *value)
 {
-       struct pci_dev fake_dev;
        struct pci_bus fake_bus;
 
-       fake_dev.bus = &fake_bus;
-       fake_dev.sysdata = hose;
-       fake_dev.devfn = devfn;
        fake_bus.number = bus;
        fake_bus.sysdata = hose;
        fake_bus.ops = hose->pci_ops;
@@ -45,7 +41,7 @@ early_read_config_word(struct pci_controller *hose,
        else
                fake_bus.parent = NULL;
 
-       return pci_read_config_word(&fake_dev, offset, value);
+       return pci_bus_read_config_word(&fake_bus, devfn, offset, value);
 }
 
 int __init txx9_pci66_check(struct pci_controller *hose, int top_bus,