On Mon, Apr 9, 2012 at 7:59 PM, Yegoshin, Leonid <yegoshin@xxxxxxxx> wrote: > Sorry, it was a couple of months ago while I worked on HIGHMEM with cache aliasing. I got a soak test failure and rollback of this patch helped. Is it possible that HIGHMEM / kmap was using pages above the PKMAP range, and the bug was masked by re-enabling the old behavior (create PMDs all the way up to the top of the virtual address space)? >Besides that it is clearly wrong to add unmodified memory area length to aligned start address of that memory. It seems easy to fix but I hadn't time. On the pre-464fd83e implementation, that would have been a problem because of the "vaddr != end" terminating condition. On the post-464fd83e implementation, it should be fine because we are checking for "vaddr < end" instead. This means we should get just enough PMDs to cover the requested range. I just checked one of my systems and it is calling fixrange_init(0xff000000, 0xff039000, pgd_base). This creates a single PMD covering a 4MB range, as expected.