Updating the define_machine() structure at runtime?
Benjamin Herrenschmidt
benh at kernel.crashing.org
Tue May 17 09:37:50 EST 2011
On Mon, 2011-05-16 at 11:21 -0500, Timur Tabi wrote:
> I would like to get some opinions on the following.
>
> I'm working on extending our existing board definition files to support our
> ePAPR reference hypervisor. Because our hypervisor provides a virtual PIC, we
> need to have different functions for define_machine() structure that related to
> the PIC, but most everything else can stay the same.
.../...
> static int __init p4080_ds_probe(void)
> {
> ...
> #ifdef CONFIG_FSL_HYPERVISOR
> if (of_flat_dt_is_compatible(root, "fsl,P4080DS-hv")) {
> mach_p4080_ds.get_irq = ehv_pic_get_irq;
> ...
> return 1;
> } else
> return 0;
> #endif
One approach i've been taking more often nowadays is to have the PIC
code setup the ppc_md hooks itself.
You don't need to do it in probe(), just in setup_arch or init_IRQ,
wherever you do your PIC discovery, have it set it up.
For example, xics sets get_irq itself, which is necessary because the
xics code itself can have multiple variants.
We could probably make mpic.c do the same when MPIC_PRIMARY is set (or
keep that a wrapper for now).
Cheers,
Ben.
More information about the Linuxppc-dev
mailing list