Messages in this thread | | | Date | Wed, 17 Aug 2022 15:58:13 +0000 | From | Sean Christopherson <> | Subject | Re: [PATCH] KVM/VMX: Do not declare vmread_error asmlinkage |
| |
+PeterZ
On Wed, Aug 17, 2022, Uros Bizjak wrote: > There is no need to declare vmread_error asmlinkage, its arguments > can be passed via registers for both, 32-bit and 64-bit targets. > Function argument registers are considered call-clobbered registers, > they are saved in the trampoline just before the function call and > restored afterwards.
I'm officially confused. What's the purpose of asmlinkage when used in the kernel? Is it some historical wart that's no longer truly necessary and only causes pain?
When I wrote this code, I thought that the intent was that it should be applied to any and all asm => C function calls. But that's obviously not required as there are multiple instances of asm code calling C functions without annotations of any kind.
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.
| |