Re: [RFC][PATCH 2/2] x86, cpu, amd: Add a per-vendor BSP function

From: Borislav Petkov
Date: Mon Aug 08 2011 - 17:57:23 EST


On Mon, Aug 08, 2011 at 03:56:08PM -0500, H. Peter Anvin wrote:
> On 08/08/2011 01:57 PM, Borislav Petkov wrote:
> > From: Borislav Petkov <borislav.petkov@xxxxxxx>
> >
> > Add a per-vendor function which runs everything that needs to run once
> > on the BSP during boot. Concentrate AMD-specific functionality there.
> >
> > Signed-off-by: Borislav Petkov <borislav.petkov@xxxxxxx>
> >
> > +static void __init vendor_run_on_bsp(struct cpuinfo_x86 *c)
> > +{
> > + switch (c->x86_vendor) {
> > + case X86_VENDOR_AMD:
> > + amd_run_on_bsp(c);
> > + break;
> > +
> > + default:
> > + break;
> > + }
> > +}
> > +
>
> This is totally going backwards. We *should* be using struct cpu_dev
> rather than switch statements for this.

Right, but all the cpu_dev things are annotated with __cpuinitconst
because they're used in CONFIG_HOTPLUG_CPU. __init, OTOH, will be
discarded once we're done booting. So, we can't convert cpu_dev
to __initdata because we need it for cpu hotplug and we want the
run_on_bsp() functionality to be __init since it runs once on boot.

Maybe leave cpu_dev in __cpuinit let it have an __init member which is
the ->run_on_bsp()? Does that even work?

Hmm..

--
Regards/Gruss,
Boris.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/