diff options
Diffstat (limited to 'arch/x86/pci/i386.c')
| -rw-r--r-- | arch/x86/pci/i386.c | 27 | 
1 files changed, 16 insertions, 11 deletions
diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c index db6b1ab4325..a19ed92e74e 100644 --- a/arch/x86/pci/i386.c +++ b/arch/x86/pci/i386.c @@ -271,11 +271,16 @@ static void pcibios_allocate_dev_resources(struct pci_dev *dev, int pass)  					"BAR %d: reserving %pr (d=%d, p=%d)\n",  					idx, r, disabled, pass);  				if (pci_claim_resource(dev, idx) < 0) { -					/* We'll assign a new address later */ -					pcibios_save_fw_addr(dev, -							idx, r->start); -					r->end -= r->start; -					r->start = 0; +					if (r->flags & IORESOURCE_PCI_FIXED) { +						dev_info(&dev->dev, "BAR %d %pR is immovable\n", +							 idx, r); +					} else { +						/* We'll assign a new address later */ +						pcibios_save_fw_addr(dev, +								idx, r->start); +						r->end -= r->start; +						r->start = 0; +					}  				}  			}  		} @@ -356,6 +361,12 @@ static int __init pcibios_assign_resources(void)  	return 0;  } +/** + * called in fs_initcall (one below subsys_initcall), + * give a chance for motherboard reserve resources + */ +fs_initcall(pcibios_assign_resources); +  void pcibios_resource_survey_bus(struct pci_bus *bus)  {  	dev_printk(KERN_DEBUG, &bus->dev, "Allocating resources\n"); @@ -392,12 +403,6 @@ void __init pcibios_resource_survey(void)  	ioapic_insert_resources();  } -/** - * called in fs_initcall (one below subsys_initcall), - * give a chance for motherboard reserve resources - */ -fs_initcall(pcibios_assign_resources); -  static const struct vm_operations_struct pci_mmap_ops = {  	.access = generic_access_phys,  };  | 
