Re: Oops in 2.6.23-rc1-git9, arch/x86_64/pci/k8-bus.c::fill_mp_bus_to_cpumask()

Andrew Morton
2007-08-04T18:16:38Z

On Sat, 4 Aug 2007 10:45:31 -0700 "Yinghai Lu" <yhlu.kernel@gmail.com> wrote:

> Andrew,
>
> still need
> x86_64-get-mp_bus_to_node-as-early-v2.patch in the -mm
> it fix

What does it fix? Much more detail, please.

> diff -puN arch/i386/pci/irq.c~x86_64-get-mp_bus_to_node-as-early-v2
> arch/i386/pci/irq.c
> --- a/arch/i386/pci/irq.c~x86_64-get-mp_bus_to_node-as-early-v2
> +++ a/arch/i386/pci/irq.c
> @@ -136,10 +136,26 @@ static void __init pirq_peer_trick(void)
> busmap[e->bus] = 1;
> }
> for(i = 1; i < 256; i++) {
> + struct pci_bus *bus = NULL;
> + struct pci_sysdata *sd;
> if (!busmap[i] || pci_find_bus(0, i))
> continue;
> - if (pci_scan_bus(i, &pci_root_ops, NULL))
> + /* Allocate per-root-bus (not per bus) arch-specific data.
> + * TODO: leak; this memory is never freed.
> + * It's arguable whether it's worth the trouble to care.
> + */
> + sd = kzalloc(sizeof(*sd), GFP_KERNEL);
> + if (!sd) {
> + printk(KERN_ERR "PCI: OOM, not probing PCI bus %02x\n",
> + i);
> + continue;
> + }
> + sd->node = get_mp_bus_to_node(i);
> + bus = pci_scan_bus(i, &pci_root_ops, sd);
> + if (bus)
> printk(KERN_INFO "PCI: Discovered primary peer
> bus %02x [IRQ]\n", i);

Wordwrapped, tabs replaced with spaces.

Please, for once and for all, fix your email client?

Thanks.