On Tue, 2006-01-31 at 13:18 -0500, Dave Anderson wrote: > Badari Pulavarty wrote: > > On Tue, 2006-01-31 at 21:38 +0530, Rachita Kothiyal wrote: > > > On Tue, Jan 31, 2006 at 09:11:36AM -0500, Dave Anderson wrote: > > > > > > > > Thanks for handling this. I haven't looked at this, and correct > > me > > > > if I'm wrong, but the kernel (what version exactly?) now has > > contains > > > > a _cpu_pda[NR_CPUS] array containing pointers to the actual per- > > cpu > > > > x8664_pda structures. > > > > > > Hi Dave, > > > > > > This change was introduced 2.6.16-rc1 onwards. > > > > > > > > Unless I'm missing something, that simplifies things and should > > work > > > > just fine. But I can't test it here other than to verify that > > it's > > > > backwards compatible. Can you verify that? > > > > > > Yes, this is infact more simpler and cleaner. I have incorporated > > the > > > changes and regenerated the patch, which I am sending along. I > > have > > > also tested it on a 2.6.16-rc1 kernel, and it works fine. > > > > > > Thanks > > > Rachita > > > > Hmm.. Lots of duplicated code. I hacked the same thing earlier to > > make > > it work. I incorporated my changes into yours. > > > > Does this look better ? > > > > (BTW, is there a way to combine CPU_PDA_READ() and _CPU_PDA_READ() > > by > > abstracting some of it out ?) > > > > Thanks, > > Badari > > > > > Rachita, Badari, > > I think I agree about the unnecessary duplication of code in > x86_64_cpu_pda_init() and x86_64_get_smp_cpus(). > > And while abstracting some of it out to CPU_PDA_READ() may be > desirable, keeping them separate may make future maintenance > and/or understandability of the differences may make it worth > keeping them separate. But I don't have a preference either way. > > However, upon further review, I don't see how this piece of the > patch can work for x86_64_display_cpu_data(): > > @@ -2828,7 +2855,10 @@ x86_64_display_cpu_data(void) > boot_cpu = TRUE; > cpus = 1; > } > q > - cpu_pda = symbol_value("cpu_pda"); > + if (symbol_exists("_cpu_data")) > + cpu_pda = symbol_value("_cpu_pda"); > + else if (symbol_exists("cpu_data")) > + cpu_pda = symbol_value("cpu_pda"); > > for (cpu = 0; cpu < cpus; cpu++) { > if (boot_cpu) > > because here is how "cpu_data" is used later on in the function: > Yep. I just took those changes from Rachita's patch. Let me look and get back to you. Thanks, Badari