KMAP Physical Page to Kernel Virtual Address: unable to handle kernel paging request
I have seemed to come across some strange behavior and was hoping to either get a solution or explanation for what I am seeing.
Using kernel 188.8.131.52, I compiled two slightly different 32-bit builds. One build is PAE enabled, one is not. This is the only difference between the two. On my PAE enabled build I can map a physical frame number to a kernel virtual address by using: page = pfn_to_page(phypageaddr); va = kmap(page); Using "va" I can read the contents successfully. However, if I try the same for the non-PAE build I get an error: "unable to handle kernel paging request." The PDE = 00000000.
The memory I am accessing is mapped just below the 2 gb boundary and this is marked as BIOS reserved in the bios memory map. I can successfully map lower memory (e.g. 0xe0000) which is also BIOS reserved without an issue.
At this point I am very stumped on the issue I am having given such a minimal change. I don't believe PAE should effect such a request.
Any help, insight, or direction for solving such a problem would be greatly appreciated. Or suggest a better way to map a physical address area to virtual memory.