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.
define_machine(p4080_hv) { .name = "P4080DS HV", .probe = p4080hv_probe, .setup_arch = corenet_ds_setup_arch, .init_IRQ = fsl_hv_pic_init, #ifdef CONFIG_PCI .pcibios_fixup_bus = fsl_pcibios_fixup_bus, #endif .get_irq = ehv_pic_get_irq, .restart = fsl_hv_restart, .power_off = fsl_hv_halt, .halt = fsl_hv_halt, .calibrate_decr = generic_calibrate_decr, .progress = udbg_progress, }; Rather than create two such structures for each board that can support the hypervisor (one with HV support, one without), I would like to do the following instead. What do you all think? define_machine(p4080_ds) { .name = "P4080 DS", .probe = p4080_ds_probe, ... .get_irq = mpic_get_coreint_irq, }; 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 -- Timur Tabi Linux kernel developer at Freescale _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev