Re: [saa7133] resource map sanity check conflict

From: Suresh Siddha
Date: Mon Oct 20 2008 - 16:57:20 EST


On Sat, Oct 18, 2008 at 07:34:07AM -0700, Alexey Fisher wrote:
> i get this message after your patch: "IO resources, x86: ioremap sanity
> check to catch mapping requests exceeding"
>
> so may be saa7133 not clean ;) dmesg is attached.
>
> resource map sanity check conflict: 0xcfeff800 0xcff007ff 0xcfe00000
> 0xcfefffff PCI Bus 0000:01
> ------------[ cut here ]------------
> WARNING: at arch/x86/mm/ioremap.c:226 __ioremap_caller+0x2f5/0x33c()
> Modules linked in: saa7134(+) ir_common hid snd_hda_intel compat_ioctl32
> videodev v4l1_compat v4l2_common videobuf_dma_sg videobuf_core tveeprom
> snd_pcm_oss snd_mixer_oss evdev snd_pcm snd_timer snd_page_alloc
> Pid: 2345, comm: modprobe Not tainted 2.6.27-slub-04260-g6b2ada8 #9
> Call Trace:
> [<ffffffff80238459>] warn_on_slowpath+0x51/0x7e
> [<ffffffff8051d3ba>] printk+0x4e/0x5c
> [<ffffffff80490880>] pci_conf1_read+0xb1/0xdc
> [<ffffffff8023e135>] iomem_map_sanity_check+0x94/0x9b
> [<ffffffff80222a52>] __ioremap_caller+0x2f5/0x33c
> [<ffffffffa00d8f0c>] saa7134_initdev+0x32c/0x9b5 [saa7134]

Alexey, Appended patch should fix this conflict. Can you please test and
ack it?

thanks,
suresh
---
From: Suresh Siddha <suresh.b.siddha@xxxxxxxxx>
Subject: saa7134: fix the hard coded size argument in ioremap()

Alexey Fisher reported:
> resource map sanity check conflict: 0xcfeff800 0xcff007ff 0xcfe00000
> 0xcfefffff PCI Bus 0000:01

BAR base is located in the middle of the 4K page and the hardcoded
size argument makes the request span two pages causing the conflict.

Fix the hard coded size argument in ioremap()

Signed-off-by: Suresh Siddha <suresh.b.siddha@xxxxxxxxx>
---

diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c
index b686bfa..cff3b99 100644
--- a/drivers/media/video/saa7134/saa7134-core.c
+++ b/drivers/media/video/saa7134/saa7134-core.c
@@ -941,7 +941,8 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev,
dev->name,(unsigned long long)pci_resource_start(pci_dev,0));
goto fail1;
}
- dev->lmmio = ioremap(pci_resource_start(pci_dev,0), 0x1000);
+ dev->lmmio = ioremap(pci_resource_start(pci_dev,0),
+ pci_resource_len(pci_dev,0));
dev->bmmio = (__u8 __iomem *)dev->lmmio;
if (NULL == dev->lmmio) {
err = -EIO;
--
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/