doesn't ioremap() retrun contigious addressess...?
Prabhu nath
gprabhunath at gmail.com
Thu Feb 28 06:26:18 EST 2013
I guess your reading is wrong. If you are mapping 16KB of physical address
from 0x03900000. The mapping is as follows.
0x03900000 to 0x03903FFF --> 0xEA880000 to 0xEA883FFF
For every iteration you are reading 4 bytes. hence you have to reduce your
loop as follows and also declare tcpm_base as unsigned int *
unsigned int __iomem *tcpm_base;
*tcpm_base = ioremap_nocache(0x03900000, SZ_16KB);
printk("Virtual addresss %x\n",tcpm_base);
if(tcpm_base!=NULL)
{
printk("Jiffies %x %ld\n\n\n\n", jiffies, jiffies);
for(i=0;i<*0xFFF*;i++)
src = readl(tcpm_base+i);
printk("%d\n",src);
printk("Jiffies %x %ld\n\n\n\n", jiffies, jiffies);
}
else
printk("unable to map \n");
Regards,
Prabhu
On Thu, Feb 28, 2013 at 4:41 PM, Prabhu nath <gprabhunath at gmail.com> wrote:
> Yes, ioremap() maps the given physical address to contiguous Kernel
> virtual address above high_memory and returns the first address of the
> mapped kernel virtual address.
>
> Regards,
> Prabhu
>
>
>
> On Thu, Feb 28, 2013 at 4:06 PM, sandeep kumar <coolsandyforyou at gmail.com>wrote:
>
>>
>> Hi All
>> Please find a piece of code that i wrote in my driver,
>>
>> void __iomem *tcpm_base = ioremap_nocache(0x03900000, SZ_16KB);
>> printk("Virtual addresss %x\n",tcpm_base);
>> if(tcpm_base!=NULL)
>> {
>> printk("Jiffies %x %ld\n\n\n\n", jiffies, jiffies);
>> for(i=0;i<(SZ_16KB-1);i++)
>> src = readl(tcpm_base+i);
>> printk("%d\n",src);
>> printk("Jiffies %x %ld\n\n\n\n", jiffies, jiffies);
>> }
>> else
>> printk("unable to map \n");
>>
>>
>> When i execute this code, i am seeing a kernel panic telling
>> ----- LOG --------
>> "Virtual addresss ea880000"
>> "Unable to handle kernel paging request at virtual address ea890000"
>> -----LOG-----
>>
>> If you observe,
>> virtual address of tcpm_base is ea880000.
>> if ioremap() returns all contigious memory, There should be no
>> dereferencing of "ea890000"(the max address should be ea88fffe)
>>
>> But in kernel logs show, it is dereferencing that address.
>>
>> My question now is...
>> doesn't ioremap() returns contigious address space?
>>
>>
>> With regards,
>> Sandeep Kumar Anantapalli,
>>
>> _______________________________________________
>> Kernelnewbies mailing list
>> Kernelnewbies at kernelnewbies.org
>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20130228/20db6256/attachment-0001.html
More information about the Kernelnewbies
mailing list