RFC: top level compatibles for virtual platforms

Yoder Stuart-B08248 B08248 at freescale.com
Tue Jul 12 03:41:20 EST 2011

> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Monday, July 11, 2011 11:24 AM
> To: Tabi Timur-B04825
> Cc: Yoder Stuart-B08248; Grant Likely; Benjamin Herrenschmidt; Gala Kumar-B11780; Wood Scott-
> B07421; Alexander Graf; linuxppc-dev at ozlabs.org
> Subject: Re: RFC: top level compatibles for virtual platforms
> On Mon, 11 Jul 2011 10:45:47 -0500
> Timur Tabi <timur at freescale.com> wrote:
> > >> Also, if these are KVM creations, shouldn't there be a "kvm" in the
> > >> compatible string somewhere?
> > >
> > > There is nothing KVM specific about these platforms.  Any hypervisor
> > > could create a similar virtual machine.
> >
> > True, but I think we're on a slippery slope, here.  Virtualization
> > allows us to create "virtual platforms" that are not well defined.
> > Linux requires a unique compatible string for each platform.
> The device tree is supposed to describe the hardware (virtual or otherwise), not just supply
> what Linux wants.  Perhaps there simply shouldn't be a toplevel compatible if there's nothing
> appropriate to describe there -- and fix whatever issues Linux has with that.

But there is a concept in Linux of a platform 'machine':

define_machine(p4080_ds) {
        .name                   = "P4080 DS",
        .probe                  = p4080_ds_probe,
        .setup_arch             = corenet_ds_setup_arch,
        .init_IRQ               = corenet_ds_pic_init,
        .pcibios_fixup_bus      = fsl_pcibios_fixup_bus,
        .get_irq                = mpic_get_coreint_irq,
        .restart                = fsl_rstcr_restart,
        .calibrate_decr         = generic_calibrate_decr,
        .progress               = udbg_progress,

Right now p4080_ds_probe needs something to match on to determine
whether this is the machine type.   How would it work if 
there was no top level compatible to match on?   Some 
platforms (e.g. e500v2-type) need mpc85xx_ds_pic_init(),
others need corenet_ds_pic_init().  We need a way to
select the machine.


More information about the Linuxppc-dev mailing list