what to use for pte_offset, pte_offset_kernel ? with bigmem confi gured

[email protected] Wed, 19 Nov 2003 16:02:59 -0600
Newsgroups gmane.linux.redhat.devel
Message-ID <34D72BA50C420D40885D01D9966524F60157A661@ausx2kmpc105.aus.amer.dell.com>
Hello,

I have an x86 computer running Red Hat Linux 9.0,   kernel 2.4.20-8bigmem
#SMP.  
with 8G memory, SMP and BIGMEM configured.

For a non-red-hat 2.4.20 kernel, a macro pte_offset is defined in
asm-i386/pgtable.h  
But it is not defined in the red hat 9.0 kernel 2.4.20-8. 
In the Red Hat kernel I found "__pte_offset()" and some pte_offset_kernel
(),pte_offset_map" and " pte_offset_map_nested".
pte_offset_kernel() seemed to match the args, but I doubt that's correct,
for it actually crushed my driver. 

I did find the same definitions of pte_offset_kernel, pte_offset_map and
pte_offset_map_nested in the non Red Hat kernel 2.6-test version.  It seems
Red Hat 9.0 is using some of the kernel.org's 2.6 kernel code.

My driver code can run through pgd_offset(), pmd_offset() all fine, and once
it hits pte_offset_kernel(), it dies.
A message is reported:  "Unable to handle kernel paging request at virtual
address 9236b4d0.

I guess that my driver is not handling the bigmem correctly. (I have 8G
memory).

Could someone tell me what to use to replace the pte_offset in my driver /
module code. 
pte_offset() works fine for me on the non Red Hat kernels.


p.s. What I am doing in the driver is to find the physical address given a
PID and a virtual address of a user process.

Thanks a lot!!!
[email protected]