On Thu, 2022-12-08 at 06:58 -0800, Dave Hansen wrote: > On 12/8/22 04:56, Huang, Kai wrote: > > I haven't looked into the reason yet but I suspect the address isn't aligned (I > > used __pa() to get the physical address). I'll take a look and report back. > > > > In the meantime, do you have any comments? Should I still pursue to keep them > > as local variable on the stack? > > Yes, you should investigate the reason for the failure and try to > understand both the success and the failure cases. Hi Dave, Learned something new from Kirill today. The reason is not the alignment, but it's wrong to use __pa() to get the physical address of function local variable on the stack. It is because Kirill told me kernel stack can now be allocated via vmalloc(), so use __pa() won't work. I changed to use slow_virt_to_phys() and tried in my testing and it now works. So I'll change to use slow_virt_to_phys() for the next version. We can take a look at the new version to see if that is what you wanted. Thanks for your time.