<p dir="ltr">most of the io remapping I&#39;ve seen happens in virtualization - like when you want to reserve a hardware card to be accessible by a virtual machine</p>
<div class="gmail_quote">On Apr 5, 2013 3:35 PM, &quot;Alex Carver&quot; &lt;<a href="mailto:agcarver%2Bale@acarver.net">agcarver+ale@acarver.net</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Anyone familiar with IO remapping for PCI hardware?<br>
<br>
My office mate at work has a scientific data collector card in an Ubuntu machine.  At some point recently, the kernel (and most likely libraries) updated which broke an ioremap_nocache function.  In the code, it attempts:<br>

<br>
device-&gt;ioaddr = ( unsigned long )ioremap_nocache( memaddr, REGS_SIZE );<br>
<br>
But this returns zero instead of an IO address.<br>
<br>
He booted an older kernel (3.0.0.12), recompiled the driver and the detection works again.  Neither one of us understands what changed in the kernel or related code.  The driver code has not changed so it&#39;s something to do with the kernel.<br>

<br>
<br>
<br>
<br>
<br>
The output messages are below.  The first block is the problematic kernel, the second block is the rolled-back kernel with successful detection.<br>
<br>
Bad detection:<br>
[    8.040080] (astropci_init): +-----------------------------<u></u>--+<br>
[    8.040082] (astropci_init): |   ASTROPCI - Initialization   |<br>
[    8.040083] (astropci_init): +-----------------------------<u></u>--+<br>
[    8.040109] (astropci_probe): looking for ARC PCI boards ...<br>
[    8.040120] astropci 0000:06:00.0: PCI INT A -&gt; GSI 16 (level, low) -&gt; IRQ 16<br>
[    8.040124] (astropci_probe): memaddr: f9df0000<br>
[    8.040137] Modules linked in: astropci(O+) psmouse serio_raw shpchp ppdev dcdbas soundcore x38_edac snd_page_alloc edac_core parport_pc mac_hid lp parport usbhid hid firewire_ohci firewire_core crc_itu_t tg3<br>
[    8.040180]  [&lt;f84f8201&gt;] ? astropci_probe+0xdb/0x257 [astropci]<br>
[    8.040187]  [&lt;f84f8201&gt;] ? astropci_probe+0xdb/0x257 [astropci]<br>
[    8.040190]  [&lt;f84f8201&gt;] astropci_probe+0xdb/0x257 [astropci]<br>
[    8.040229]  [&lt;f84671ae&gt;] astropci_init+0x1ae/0x1000 [astropci]<br>
[    8.040246] (astropci_probe): device-&gt;ioaddr: 0(astropci_probe): IOremap failed for device 0000:06:00.0,         region 0x9C @ 0xF9DF0000<br>
[    8.040249] (astropci_probe): finished looking for ARC PCI boards<br>
<br>
<br>
<br>
Good detection:<br>
[  162.065395] (astropci_init): +-----------------------------<u></u>--+<br>
[  162.065397] (astropci_init): |   ASTROPCI - Initialization   |<br>
[  162.065399] (astropci_init): +-----------------------------<u></u>--+<br>
[  162.065433] (astropci_probe): looking for ARC PCI boards ...<br>
[  162.065444] astropci 0000:06:00.0: PCI INT A -&gt; GSI 16 (level, low) -&gt; IRQ 16<br>
[  162.065445] (astropci_probe): successfully enabled device (astropci_probe): successfully requested regions<br>
[  162.065450] (astropci_probe): memaddr: f9df0000(astropci_probe): assigned device-&gt;ioaddr<br>
[  162.065460] (astropci_probe): device-&gt;ioaddr: f82fe000<br>
[  162.065461] (astropci_probe): whooop<br>
[  162.065463] (astropci_probe): ISR name: astropci0 device num: 0<br>
[  162.065470] (astropci_probe): Successfully probed device 0, irqDevNum: 1, has_irq: 1, irq 16, func 0<br>
[  162.065923] (astropci_probe): finished looking for ARC PCI boards<br>
______________________________<u></u>_________________<br>
Ale mailing list<br>
<a href="mailto:Ale@ale.org" target="_blank">Ale@ale.org</a><br>
<a href="http://mail.ale.org/mailman/listinfo/ale" target="_blank">http://mail.ale.org/mailman/<u></u>listinfo/ale</a><br>
See JOBS, ANNOUNCE and SCHOOLS lists at<br>
<a href="http://mail.ale.org/mailman/listinfo" target="_blank">http://mail.ale.org/mailman/<u></u>listinfo</a><br>
</blockquote></div>