----------------------------------------
>> On 18-11-07 20:08, Talib Alim wrote:
>>> 
>>> I use following expression to get virtual address and copy data
>>> 
>>> virtual_address = phys_to_virt(page_to_pfn(page) << PAGE_SHIFT);
>>> 
>>> This works fine on Pentium III machine with 515324 KB memory, but when
>>> I run same code on Xeon with 2074604 KB memory, I get
> 
> Your virtual_address= only works for lowmem, the permanently and 1:1 mapped 
> portion of physical memory. With the standard 3:1 user/kernel split, there's 
> room for at most 896M of that. Your P3 will therefore have all its 512M as 
> lowmem, but the 2G Xeon will (probably I should say, check your dmesg) be 
> using most of it as highmem.
> 
> You should look into kmap{,_atomic}() to map highmem.

Thanks.

So, if virtual_address retuned is in 0xdxxxxxxx than I can assume this is 
mapped, otherwise I map it ? is this correct.

Also, can somebody explain what page_to_pfn does and why << PAGE_SHIFT is 
needed ?
(For my better understanding. page_to_pfn is adding some constant, what is the 
significance and what pfn stands for)
_________________________________________________________________
Your smile counts. The more smiles you share, the more we donate.  Join in.
www.windowslive.com/smile?ocid=TXT_TAGLM_Wave2_oprsmilewlhmtagline
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ

Reply via email to