Re: Failed to initialize MSI interrupts && ioremap reserve_memtype failed -22

From: Mark Knecht
Date: Thu Apr 08 2010 - 10:54:06 EST


On Wed, Apr 7, 2010 at 11:37 PM, Clemens Ladisch <clemens@xxxxxxxxxx> wrote:
> Robert Hancock wrote:
>> Hmm, not really clear to me why MSI wouldn't be used.. there aren't
>> any kernel messages that seem to say why MSI would be disabled or
>> unsupported. Unless maybe that particular model doesn't support MSI?
>
> This Intel onboard adapter always supports MSI, and AFAICS there is no
> MSI quirk for this chipset.
>
> Mark, is CONFIG_PCI_MSI actually enabled?
>
>> > ioremap reserve_memtype failed -22
>
> ioremap is used by drivers (and sometimes by the kernel itself) to get
> access to some device's memory-mapped I/O range. Â"-22" is -EINVAL and
> is returned by reserve_memtype to indicate that the requested memory
> range includes both RAM and not-RAM.
>
> Without a following error message, it's not possible to find out which
> device that is, and where that funny address range comes from. ÂThe fact
> that there is no error message might indicate that this is harmless, but
> if you want to find out more, add the following lines to
> arch/x86/mm/ioremap.c directly after the error message:
>
> Â Â Â Â Â Â Â Âprintk(KERN_ERR "phys_addr: %#Lx, size: %#Lx\n",
> Â Â Â Â Â Â Â Â Â Â Â (u64)phys_addr, (u64)size);
> Â Â Â Â Â Â Â Âdump_stack();
>
>
> Regards,
> Clemens
>

Indeed, MSI was not enabled so turning it on got rid of the MSI message.

Here is the new stuff in dmesg from the code stub above:

Adding 4200988k swap on /dev/sda2. Priority:-1 extents:1
across:4200988k
Adding 4200988k swap on /dev/sdb2. Priority:-2 extents:1
across:4200988k
Adding 4200988k swap on /dev/sdc2. Priority:-3 extents:1
across:4200988k
e1000e 0000:00:19.0: irq 31 for MSI/MSI-X
e1000e 0000:00:19.0: irq 31 for MSI/MSI-X
e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX
0000:00:19.0: eth0: 10/100 speed: disabling TSO
NET: Registered protocol family 10
ioremap reserve_memtype failed -22
phys_addr: 0xcf7fe000, size: 0x2000
Pid: 3897, comm: X Tainted: P 2.6.33-gentoo #4
Call Trace:
[<ffffffff8101b7ee>] ? __ioremap_caller+0x1e2/0x30e
[<ffffffffa052345b>] ? _nv006553rm+0x3a/0x40 [nvidia]
[<ffffffffa052345b>] ? _nv006553rm+0x3a/0x40 [nvidia]
[<ffffffffa04ab215>] ? _nv007450rm+0xa0/0x1e4 [nvidia]
[<ffffffffa04ab4d3>] ? _nv007499rm+0x76/0xb3 [nvidia]
[<ffffffffa04a79f1>] ? _nv007478rm+0xc8/0x325 [nvidia]
[<ffffffffa04a7cf8>] ? _nv007428rm+0xaa/0x19a [nvidia]
[<ffffffffa04a7e38>] ? _nv007479rm+0x50/0x5d [nvidia]
[<ffffffffa04b47cf>] ? _nv007487rm+0x6e/0x78 [nvidia]
[<ffffffffa052fec8>] ? _nv010998rm+0x69/0x121 [nvidia]
[<ffffffffa052fe46>] ? _nv010944rm+0xde/0xf7 [nvidia]
[<ffffffffa04abb9a>] ? _nv025178rm+0x68/0x194 [nvidia]
[<ffffffffa04ccc1f>] ? _nv014218rm+0x177/0x45c [nvidia]
[<ffffffffa04cc20f>] ? _nv013795rm+0xc9/0x13a [nvidia]
[<ffffffffa039d9b8>] ? _nv014028rm+0xd/0x12 [nvidia]
[<ffffffffa052fbf5>] ? _nv004517rm+0x160/0x26f [nvidia]
[<ffffffffa05309fd>] ? _nv004523rm+0x47e/0x651 [nvidia]
[<ffffffffa052b31a>] ? rm_init_adapter+0x69/0xbd [nvidia]
[<ffffffffa0618f27>] ? nv_kern_open+0x4f5/0x640 [nvidia]
[<ffffffff8108cbef>] ? chrdev_open+0x190/0x1af
[<ffffffff8108ca5f>] ? chrdev_open+0x0/0x1af
[<ffffffff81088ac8>] ? __dentry_open+0x19d/0x2b9
[<ffffffff81095307>] ? do_filp_open+0x504/0xa96
[<ffffffff8103669a>] ? capable+0x22/0x41
[<ffffffff8109d1fe>] ? notify_change+0x2b3/0x2c5
[<ffffffff8109db43>] ? alloc_fd+0x112/0x123
[<ffffffff81088853>] ? do_sys_open+0x55/0x102
[<ffffffff81001f6b>] ? system_call_fastpath+0x16/0x1b
eth0: no IPv6 routers present
mark@k2 ~ $

Hopefully I put it in the way you intended me to do:

if (retval) {
printk(KERN_ERR "ioremap reserve_memtype failed %d\n", retval);

printk(KERN_ERR "phys_addr: %#Lx, size: %#Lx\n",
(u64)phys_addr, (u64)size);
dump_stack();
return NULL;
}

Seems like maybe you would want symbols or something. If so then
please let me know how to turn that on and I'll give it a try.

Thanks,
Mark
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/