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/