The following is a list of all that is required from a 32 bit ARM platform port so that it can be enabled in multi-platform kernels.
- Convert to use ARM_PATCH_PHYS_VIRT so the physical to virtual address translation is done at runtime instead of compiletime.
- Convert to use AUTO_ZRELADDR to remove more low-level compile-time dependencies
- Convert all hardware IRQ controllers to use MULTI_IRQ_HANDLER so that several interrupt controller handlers can be compiled into the same image.
- Convert to SPARSE_IRQ, storing IRQ descriptors in a rbtree rather than an array of fixed length.
- Convert all IRQ chips to dynamically allocate descriptors, either by explicit allocation or by using linear IRQ domains.
- Preferably also convert all drivers to use IRQdomains, since this will fit nicely with dynamic allocation of IRQ descriptors and adding these to the sparse IRQ handler tree.
- Make system bootable from device tree, DT is required for single zImage
- Convert to COMMON_CLK since we need to be able to compile in several clock drivers and clock trees.
Get rid of all files in the <mach/*.h> and <plat/*,h> hierarchies as these are not be used in a multiplatform compilation, as they collide and create trouble. Many can be moved to <linux/platform_data/*.h>
- Patch platform to select ARCH_MULTIPLATFORM and move the Kconfig fragment from arch/arm/Kconfig down to the platform/machines mach-foo/Kconfig file.
- Convert to GENERIC_CLOCKEVENTS, since otherwise we will be blocked from enabling desired features in a single zImage like NO_HZ or HRTIMERS.
- Convert to ARCH_REQUIRE_GPIOLIB and handle all GPIO pins using the gpiolib. Older approaches can only be compiled-in one driver at a time.
WorkingGroups/Kernel/Consolidation/SingleKernel (last modified 2013-02-17 20:25:38)