Re: Problem with ioremap which returns NULL in 2.6 kernel

From: Jeff Garzik
Date: Wed Jun 02 2004 - 08:49:39 EST


On Wed, Jun 02, 2004 at 03:49:13PM +0200, Markus Lidel wrote:
> Hello,
>
> Jeff Garzik wrote:
> >>>My preferred approach would be: consider that the hardware does not
> >>>need the entire 0x8000000-byte area mapped. Plain and simple.
> >>>This is a "don't do that" situation, and that renders the other
> >>>questions moot :) You should only be mapping what you need to map.
> >>Okay, i'll let try it out with only 64MB.
> >Why do you need 64MB, even? :)
>
> I don't know how much space i need :-D But why does the device set the
> size to 128MB then?

Devices often export things you don't care about, such as direct access
to internal chip RAM.

Look through the driver that figure out the maximum value that the
driver actually _uses_. There is no need to guess.


> Also now both controllers where found, but the kernel crashes. It could
> be because the driver was never used with 2 controllers, but to be sure
> i didn't make something wrong with the ioremap here is my patch.
>
> --- a/drivers/message/i2o/i2o_core.c 2004-05-25 00:51:48.822275000 +0200
> +++ b/drivers/message/i2o/i2o_core.c 2004-06-01 22:17:55.562844312 +0200
> @@ -3664,6 +3664,8 @@
> }
>
> size = dev->resource[i].end-dev->resource[i].start+1;

You should be using pci_resource_start() and pci_resource_len()
to obtain this information.


> + if(size>67108864)
> + size = 67108864;

It's nicer if you use hex numbers, when they are powers of two.

Jeff



-
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/