ioremap question.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I have a question about the usage of ioremp() in
2.6.5.

My development Linux system has 512 MB memory. 
Through kernel command line (mem=448M), the kernel is
using only 448 MB (setting aside 64 MB).  I have a
driver that uses the upper 64 MB.

I get a virtual address of the 64M region as follows:

cpuAddr = ioremap(0x1c000000, 64MB);

Having a virtual addres within the 64 MB meomry (lets
call it newAddr1), I can find it's page/offset as
follows:

page       = virt_to_page(newAddr1);      -  (1)
page_ofset = newAddr1 & (~PAGE_MASK);     -  (1)

Later on, to get the virtual address from
page/page_offset, I do the following:

newAddr2 = page_address(page) + page_offset  (2)

Using random virtual address within the 64MB region,
and performing steps (1) and (2), sometimes I get
newAddr1==newAdrr2, and sometimes they are different.

My understanding is that newAddr1==newAddr2 always. 
Can someone help me understand why I am getting this
erratic behaviour.  Am I doing something wrong?

Thank you,
Aha.



		
__________________________________ 
Do you Yahoo!? 
Meet the all-new My Yahoo! - Try it today! 
http://my.yahoo.com 
 


--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux