Messages in this thread | | | Date | Fri, 22 Aug 2008 21:20:24 +0200 | From | Robert Richter <> | Subject | Re: [PATCH] x86: fix: make PCI ECS for AMD CPUs hotplug capable |
| |
On 22.08.08 12:10:04, Yinghai Lu wrote: > On Fri, Aug 22, 2008 at 12:07 PM, Robert Richter <robert.richter@amd.com> wrote: > > On 22.08.08 11:56:08, Yinghai Lu wrote: > > > > [...] > > > >> > +static int __init pci_io_ecs_init(void) > >> > +{ > >> > + int cpu; > >> > + > >> > /* assume all cpus from fam10h have IO ECS */ > >> > if (boot_cpu_data.x86 < 0x10) > >> > return 0; > >> > - on_each_cpu(enable_pci_io_ecs_per_cpu, NULL, 1); > >> > + > >> > + register_cpu_notifier(&amd_cpu_notifier); > >> > + for_each_online_cpu(cpu) > >> > + amd_cpu_notify(&amd_cpu_notifier, (unsigned long)CPU_ONLINE, > >> > + (void *)(long)cpu); > >> > >> wonder if those two lines should be reversed. > > > > Do you mean setting PCI_HAS_IO_ECS before for_each_online_cpu(...)? > > PCI_HAS_IO_ECS will be used only in pci_direct_init(). PCI is > > initialized in a later init stage, so it doesn't matter. My intention > > was to set the bit after the setup of all online cpus is finished. > > > ==> > + for_each_online_cpu(cpu) > + amd_cpu_notify(&amd_cpu_notifier, (unsigned long)CPU_ONLINE, > + (void *)(long)cpu); > + register_cpu_notifier(&amd_cpu_notifier);
Hmm, most code in the kernel registers first. Theoretical, with this code, if a cpu would go online in between, it wouldn't be initialized.
-Robert
> > YH >
-- Advanced Micro Devices, Inc. Operating System Research Center email: robert.richter@amd.com
| |