Re: [PATCH 1/2 #tj-percpu] x86: fix build breakage on voyage

Brian Gerst
2009-01-27T16:26:09Z

On Tue, Jan 27, 2009 at 11:04 AM, James Bottomley
<James.Bottomley@hansenpartnership.com> wrote:
> On Tue, 2009-01-27 at 16:50 +0100, Ingo Molnar wrote:
>> * James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
>>
>> > On Tue, 2009-01-27 at 12:37 +0100, Ingo Molnar wrote:
>> > > * Tejun Heo <htejun@gmail.com> wrote:
>> > >
>> > > > From: James Bottomley <James.Bottomley@HansenPartnership.com>
>> > > >
>> > > > Impact: build fix
>> > > >
>> > > > x86_cpu_to_apicid and x86_bios_cpu_apicid aren't defined for voyage.
>> > > > Earlier patch forgot to conditionalize early percpu clearing. Fix it.
>> > >
>> > > > +#ifdef CONFIG_X86_LOCAL_APIC
>> > > > early_per_cpu_ptr(x86_cpu_to_apicid) = NULL;
>> > > > early_per_cpu_ptr(x86_bios_cpu_apicid) = NULL;
>> > > > +#endif
>> > >
>> > > That patch is not acceptable - it is ugly and it adds another set of
>> > > #ifdefs to an already complex piece of code.
>> > >
>> > > As i explained it to James in recent threads, the clean and acceptable
>> > > solution to this class of problems is to switch Voyager away from that
>> > > fragile subarch code to proper generic x86 code. (just like we did it for
>> > > other subarchitectures)
>> > >
>> > > There is nothing in Voyager that justifies special treatment in the area
>> > > of x86 percpu code.
>> > >
>> > > This is one of the mails that explains the principles:
>> > >
>> > > http://lkml.indiana.edu/hypermail/linux/kernel/0901.2/00954.html
>> > >
>> > > Or - if there's no time/interest in doing that, we can mark Voyager as
>> > > CONFIG_BROKEN.
>> >
>> > Have you quite finished?
>>
>> What is that supposed to mean?
>
> It's a conventional response implying your rant wasn't factually
> connected to the actual problem at hand. The justification was actually
> in the text you cut ... but boils down to you can reproduce it in a non
> voyager configuration, so it's not a voyager specific problem.
>
> The actual problem, as I see it, is how (or whether) to get rid of the
> nine #if/#ifdefs that clutter setup_percpu.c ... none of which is
> voyager specific.

To be fair, setup_percpu.c isn't built on UP. But we're splitting
hairs over just 3 conditional variables. I'm open to ideas, but I'm
quite certain that any general solution will have more overhead than
the current code. I am looking at a patch to remove the early percpu
pointers, so the second set of ifdefs would go away.

--
Brian Gerst