2006-01-01 15:12:32

by Gyorgy Jeney

[permalink] [raw]
Subject: [patch] serial: compare mapbase and not membase in find_port

From: Gyorgy Jeney

If the 8250_early driver uses bt_ioremap, find_port() is unable to find the
correct device since the address returned by ioremap is different to that
returned by bt_ioremap for the same address. Since no more than one device
occupies the same physical address, compareing the physical addresses should
be safe.

Signed-off-by: Gyorgy Jeney <[email protected]>

nog.

--- drivers/serial/8250.c 2005-10-28 02:02:08.000000000 +0200
+++ ../../linux-2.6.14/drivers/serial/8250.c 2006-01-01 10:27:39.000000000 +0100
@@ -2229,7 +2229,7 @@ static int __init find_port(struct uart_
port = &serial8250_ports[line].port;
if (p->iotype == port->iotype &&
p->iobase == port->iobase &&
- p->membase == port->membase)
+ p->mapbase == port->mapbase)
return line;
}
return -ENODEV;


2006-01-04 18:12:36

by Russell King

[permalink] [raw]
Subject: Re: [patch] serial: compare mapbase and not membase in find_port

On Sun, Jan 01, 2006 at 04:12:31PM +0100, Gyorgy Jeney wrote:
> From: Gyorgy Jeney
>
> If the 8250_early driver uses bt_ioremap, find_port() is unable to find the
> correct device since the address returned by ioremap is different to that
> returned by bt_ioremap for the same address. Since no more than one device
> occupies the same physical address, compareing the physical addresses should
> be safe.

Really, this should be using uart_match_port(). Fixed to use that.

(And in combination with Ben's patch from November time, it works out
to do the right thing.)

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core