On Mon, Aug 14, 2023 at 2:37 PM Michael Ellerman <mpe@xxxxxxxxxxxxxx> wrote: > > +static inline const void *pfn_to_kaddr(unsigned long pfn) > > +{ > > + return (const void *)(((unsigned long)__va(pfn)) << PAGE_SHIFT); > > Any reason to do it this way rather than: > > + return __va(pfn << PAGE_SHIFT); > > Seems to be equivalent and much cleaner? I was afraid of changing the semantic in the original macro which converts to a virtual address before shifting, instead of shifting first, but you're right, I'm too cautious. I'll propose the elegant solution from you & Christophe instead! Yours, Linus Walleij