On Tue, Jul 03, 2018 at 05:14:01PM +0200, Michal Hocko wrote: > On Tue 03-07-18 08:05:35, 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? > > Yes, phys_addr_t was exactly that came to my mind as well. Casting > physical address to unsigned long just screams for potential problems. Not sure if for m68k-nommu the physical address can really go beyond 32 bits, but in general this is something that should be taken care of. I think adding the cast in m68k-nommu case is a viable band aid to allow sorting out the bootmem vs nobootmem. In any case care should be taken of all those #define __va(x) ((void *)((unsigned long)(x))) all around. Regardless, I can s/u64/phys_addr_t/ in memblock.c. > -- > Michal Hocko > SUSE Labs > -- Sincerely yours, Mike.