We build several variants of existing supported Microkit targets that have slight option variations from the standard ones, e.g., x86 KernelHugePage disabled for x86 cloud targets, or ARM KernelArmExportPTMRUser enabled for runtime profiling of PDs.
There is no existing way for Microkit users to supplement the pre-defined configurations, so making these changes requires source patching build_sdk.py. I would like to propose letting users override existing configurations or
deriving new, separately-named board or config from an existing one and add it to the matrix under its own name.
Something like:
--extra-targets PATH.json
where PATH.json might look like if you wanted to override the existing configurations:
[
{
"kind": "board",
"name": "x86_64_generic",
"from": "x86_64_generic",
"kernel_options": { "KernelHugePage": false }
},
{
"kind": "config",
"name": "debug",
"from": "debug",
"kernel_options_arch": { "AARCH64": { "KernelArmExportPTMRUser": true } }
}
]
or this if you want to derive new ones from existing ones:
[
{
"kind": "board",
"name": "x86_64_generic_nohugepage",
"from": "x86_64_generic",
"kernel_options": { "KernelHugePage": false }
},
{
"kind": "config",
"name": "debug_ptmr",
"from": "debug",
"kernel_options_arch": { "AARCH64": { "KernelArmExportPTMRUser": true } }
}
]
Any BoardInfo/ConfigInfo field can be overridden this way (not just kernel_options), which also covers cases like a derived board needing a different loader_link_address or smp_cores.
We build several variants of existing supported Microkit targets that have slight option variations from the standard ones, e.g., x86
KernelHugePagedisabled for x86 cloud targets, or ARMKernelArmExportPTMRUserenabled for runtime profiling of PDs.There is no existing way for Microkit users to supplement the pre-defined configurations, so making these changes requires source patching
build_sdk.py. I would like to propose letting users override existing configurations orderiving new, separately-named board or config from an existing one and add it to the matrix under its own name.
Something like:
where
PATH.jsonmight look like if you wanted to override the existing configurations:[ { "kind": "board", "name": "x86_64_generic", "from": "x86_64_generic", "kernel_options": { "KernelHugePage": false } }, { "kind": "config", "name": "debug", "from": "debug", "kernel_options_arch": { "AARCH64": { "KernelArmExportPTMRUser": true } } } ]or this if you want to derive new ones from existing ones:
[ { "kind": "board", "name": "x86_64_generic_nohugepage", "from": "x86_64_generic", "kernel_options": { "KernelHugePage": false } }, { "kind": "config", "name": "debug_ptmr", "from": "debug", "kernel_options_arch": { "AARCH64": { "KernelArmExportPTMRUser": true } } } ]Any
BoardInfo/ConfigInfofield can be overridden this way (not justkernel_options), which also covers cases like a derived board needing a differentloader_link_addressorsmp_cores.