On Tue, Sep 06, 2022, Wang, Wei W wrote: > On Thursday, September 1, 2022 11:37 PM, Sean Christopherson wrote: > > > > And vmread_error() isn't the only case where asmlinkage appears to be a > > burden, e.g. > > > > schedule_tail_wrapper() => schedule_tail() seems to exist purely to > > > > deal with the side affect of asmlinkage generating -regparm=0 on 32-bit > > kernels. > > > > > > schedule_tail is external to the x86 arch directory, and for some > > > reason marked asmlinkage. So, the call from asm must follow asmlinkage > > > ABI. > > > > Ahhh, it's a common helper that's called from assembly on other architectures. > > That makes sense. > > I still doubt the necessity. The compilation is architecture specific, and we don't > build one architecture-agnostic kernel binary to run on different architectures, > right? Right, it's not strictly necessary, e.g. wrapping schedule_tail()'s asmlinkage in "#ifndef CONFIG_X86" would allow for the removal of schedule_tail_wrapper(). But that's arguably worse than forcing i386 to use a wrapper given that the few extra instructions are unlikely to add meaningful overhead, and since i386 is a rather uncommon configuration these days.