On Wed, Jan 30, 2019 at 9:41 AM Geert Uytterhoeven <ge...@linux-m68k.org> wrote: > On Wed, Jan 30, 2019 at 9:32 AM Michael Schmitz <schmitz...@gmail.com> wrote: > > Am 30.01.2019 um 21:08 schrieb Geert Uytterhoeven: > > >> The remainder is a fix for address wrap around when there is memory > > >> located > > >> at the end of the 32-bit address space. > > >> That part looks OK to me, and is still applicable. > > >> > > >> I will retest with just the last part of the patch applied. > > >> > > >> max_addr was reduced by one earlier in the last part, so isn't this one > > >> > > >> min_low_pfn = availmem >> PAGE_SHIFT; > > >> - max_low_pfn = max_addr >> PAGE_SHIFT; > > >> + max_low_pfn = (max_addr >> PAGE_SHIFT) + 1; > > >> > > >> wrong? i.e. shouldn't we use > > >> > > >> max_low_pfn = (max_addr+1) >> PAGE_SHIFT; > > >> > > >> instead? > > > > > > That would give 0 if max_addr = 0xffffffff, due to overflow. > > > > Yep, figured that out right after hitting 'send'. The PFN doesn't > > overflow, but wouldn't calculating end addresses from max_low_pfn lead > > to overflow later on? It seems to me that max_low_pfn would point to the > > page right after max_addr i.e. beyond end of memory? Is that expected > > behaviour? > > Yes, people shifting max_low_pfn or max_pfn by PAGE_SIZE may get back > zero, if doing the shift in 32-bit arithmetic. > The m68k-specific code doesn't seem to do that, but who knows about > generic (PC-centric? ;-) code... > > I see microblaze does: > > max_low_pfn = ((u64)memory_start + (u64)lowmem_size) >> PAGE_SHIFT; > > so probably they also encountered memory at the end of the address space.
At least for userspace, some people prefer avoiding the last page: https://lore.kernel.org/lkml/CAG48ez0QRmU9fGV3x7nceGqBGADNTb66MnG4PW_xu+xnGUqg=g...@mail.gmail.com/ m68knommu uses: #define TASK_SIZE (0xFFFFFFFFUL) Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds