Re: [PATCH] Re: [PATCH v10 00/12] sched, steal_governor: Introduce preferred CPUs and steal-driven vCPU backoff
Shrikanth Hegde <[email protected]>
| Newsgroups | org.kernel.vger.linux-doc,dev.linux.lists.virtualization,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi Mete, On 8/14/26 2:52 PM, Mete Durlu wrote: > On 13/08/2026 13:12, Shrikanth Hegde wrote: >> Hi Mete, Thanks for going through the patches/discussions. >> >> On 8/13/26 12:20 PM, Mete Durlu wrote: > > ... > >>> >>> I think all of these points can be addressed better if >>> Xen used said framework and implemented their own governor >>> module. That way we wouldn't see an overinflated single >>> steal_governor but instead nicely separated arch/platform >>> specific ones, that are tailored best for their needs. >>> The current implementation could be the fallback option >>> if platform does not implement their own and would also >>> serve as an example. >> >> For now, I prefer adding a defensive check for dom0 >> and keep the driver simple. > > Fair enough. > > ... >> I prefer we defer the arch specific hooks for now, until there is a >> need for one. If you guys insist it should be done, then i can start >> looking at cpuidle framework. But it will be a bigger rework. > > s390 plans to adopt and start using the preferred CPU approach along That's nice. I am happy to hear that it will come in soon. > with the governor. The concern is that there are some enhancements > planned which would not really fit into the current governor. > > Later on, s390 will probably introduce its own governor module and > for that I was hoping that there would be a framework similar to > cpuidle drivers. > I was skimming through cpuidle logic. The problem with steal_governor is that, it is not a built in module. For loadable modules, core_initcall and device_initcall will evaluate to the same thing, which makes a direct cpuidle-like approach tricky. However, as you mentioned, we just need a common infrastructure for the init/exit/methods leaving the decision-making to the arch. I've thought of a few ways we can cleanly pull this off post-merge: 1. ifdefs and ops function pointers: We define a struct of function pointers and a bit ifdefs for init etc. The core initializes ops to default or s390 depending on the config. 2. __weak Functions: We define the main routines as __weak and let s390 simply override them. This is the lowest boilerplate, though its usage is not preferred. 3. Multiple Modules (The cpuidle module approach): We split it into steal_governor_core.ko and steal_governor_s390.ko. The core exports a steal_governor_register_driver() symbol, and the s390 module registers its specific ops when loaded. However, this would still need elements of the first approach to handle Dom0-like cases natively. Depending on users and adoption of the feature by different archs, we can go about it which is more appropriate. > What I mean essentially is a common infrastructure to initialize > the basics required for the preferred CPUs management and maybe > the update loop mechanism. That should ideally leave just the > decision making part to the individual arch/platform to implement. > I imagine the whole thing being much more simpler than cpuidle > drivers as it had a lot more moving parts involved. > > ... > >> If the driver eventually outgrows a single file, we can work on a >> modular framework post-merge. But for now, let's keep it simple and >> get the simple version upstream. > > I understand the concern and I think it's the right approach to keep > it simple initially. Thanks. Yes. Lets keep it simple for now. Once this series is merged, We can work out the framework for s390-specific enhancements. > > Thank you! > PS: I will wait for few days to hear from Ionut/Yury on the patch addressing all the comments. If i don't hear anything back, i will post v11 next week.