On Wed, Oct 21, 2020 at 08:57:36PM +0100, Qais Yousef wrote: > On 10/21/20 18:23, Will Deacon wrote: > > On Wed, Oct 21, 2020 at 05:07:30PM +0100, Qais Yousef wrote: > > > > > For example, the new sysctl_enable_asym_32bit could be a cpumask instead of > > > > > a bool as it currently is. Or we can make it a cmdline parameter too. > > > > > In both cases some admin (bootloader or init process) has to ensure to fill it > > > > > correctly for the target platform. The bootloader should be able to read the > > > > > registers to figure out the mask. So more weight to make it a cmdline param. > > > > > > > > I think this is adding complexity for the sake of it. I'm much more in > > > > > > I actually think it reduces complexity. No special ABI to generate the mask > > > from the kernel. The same opt-in flag is the cpumask too. > > > > Maybe I'm misunderstanding your proposal but having a cpumask instead of > > What I meant is that if we change the requirement to opt-in from a boolean > switch > > sysctl.enable_32bit_asym=1 > > to require the bootloader/init scripts provide the mask of aarch32 capable cpus > > sysctl.asym_32bit_cpus=0xf0 > > This will achieve multiple things at the same time: > > * Defer cpus specification to platform designers who want to > enable this feature on their platform. What do you mean by this? The kernel will obviously have to check that the mask is correct (i.e. it doesn't contain 64-bit only CPUs), at which point it's a boolean in disguise. > * We don't need a separate API to export which cpus are 32bit capable. > They can read it directly from /proc/sys/kernel/asym_32bit_cpus. > When it's 0 it means the system is not asymmetric. I don't see how this is better than a separate cpumask for this purpose. It feels like you're trying to overload the control and the identification, but that just makes things confusing and hard to use as I now need to know which logical CPUs correspond to which physical CPUs in order to set the command-line. > * If/when we want to disable this support in the future. The sysctl > handler will just have to return 0 all the time and ignore all > writes. It can do that as a boolean too, right? Will