On Fri, Feb 8, 2013 at 1:14 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: > On Fri, Feb 8, 2013 at 12:28 PM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: >> For physical hot plug should be ok, but for remove/rescan path will >> need us to disable that. >> >> otherwise rescan mmio resource for pci ioapic device will not be >> sized and allocated, aka skiped. > > When we scan other PCI devices, we can size memory BARs even if > PCI_COMMAND_MEMORY is already set. So there must be something > different about IOAPICs? Or maybe it's something different about > rescan vs. the initial scan? it is in drivers/pci/setup-bus.c::__dev_sort_resources() it will skip the reallocation for ioapic controller. ... /* Don't touch ioapic devices already enabled by firmware */ if (class == PCI_CLASS_SYSTEM_PIC) { u16 command; pci_read_config_word(dev, PCI_COMMAND, &command); if (command & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) return; } > >> For ioapic_probe:pci_enable_device will not enable the device >> correctly, and will bail out early. > > Exactly where and why do we bail out early? The only early bail out I > see is where __pci_enable_device_flags() returns if "dev->enable_cnt > > 1". Is that what you mean? pci_enable_device==>pci_enable_device_flags ==>do_pci_enable_device==>pcibios_enable_device==>pci_enable_resources ... if (!r->parent) { dev_err(&dev->dev, "device not available " "(can't reserve %pR)\n", r); return -EINVAL; } ... only reassign one will have get it's parent. Thanks Yinghai -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html