On Tue, Jul 03, 2018 at 08:05:35AM -0700, Matthew Wilcox wrote: > On Tue, Jul 03, 2018 at 06:03:16PM +0300, Mike Rapoport wrote: > > On Tue, Jul 03, 2018 at 04:20:54PM +0200, Michal Hocko wrote: > > > On Tue 03-07-18 13:29:54, Mike Rapoport wrote: > > > > Add explicit casting to unsigned long to the __va() parameter > > > > > > Why is this needed? > > > > To make it consitent with other architecures and asm-generic :) > > > > But more importantly, __memblock_free_late() passes u64 to page_to_pfn(). > > Why does memblock work in terms of u64 instead of phys_addr_t? Historically? It started off with unsigned long, then commit e5f270954364 ("[LMB]: Make lmb support large physical addressing") converted it to u64 for 32-bit systems sake. And the definition of ARCH_PHYS_ADDR_T_64BIT in commit 600715dcdf56 ("generic: add phys_addr_t for holding physical addresses")) came in later. -- Sincerely yours, Mike.