Subject: Question on of_address_to_resource() with offset != 0

From: Stefan Roese <[email-masked]>
Date: Tue, 14 Sep 2010 16:29:06 +0200

Hi,

I'm stumbling upon a problem noticed on the Ebony (440GP) eval board.
Here the first chip-select is connected to 512KiB of SRAM and 512KiB
NOR flash. The dts part look this way:

				small-flash@0,80000 {
					compatible = "jedec-flash";
					bank-width = <1>;
					reg = <0x00000000 0x00080000 0x00080000>;
					#address-cells = <1>;
					#size-cells = <1>;
					partition@0 {
						label = "OpenBIOS";
						reg = <0x00000000 0x00080000>;
						read-only;
					};
				};

Chip-select 0 has this setup:
base-addr = 0xfff00000, size = 0x100000 (phys addr 0x1fff00000 .. 0x1ffffffff)

The problem/crash happens in the physmap_of driver, when the the driver
calls do_map_probe() with the following range:
base-addr = 0xfff80000, size = 0x100000 (phys addr 0x1fff80000 .. 0x20007ffff)

My question now is, should of_address_to_resource() subtract the
offset (here 0x80000) from the size? Is this is bug here? Or should
the physmap_of driver take care of this issue somehow?

Cheers,
Stefan