From: David Gibson <david@gibson.dropbear.id.au>
To: <linuxppc-dev@ozlabs.org>
Subject: [PATCH 9/16] Use resource_size_t for serial port IO addresses
Date: Tue, 13 Feb 2007 17:10:25 +1100 (EST) [thread overview]
Message-ID: <20070213061025.1C2B3DDD0C@ozlabs.org> (raw)
In-Reply-To: <20070213060904.GA6214@localhost.localdomain>
At present, various parts of the serial code use unsigned long to
define resource addresses. This is a problem, because some 32-bit
platforms have physical addresses larger than 32-bits, and have mmio
serial uarts located above the 4GB point.
This patch changes the type of mapbase in both struct uart_port and
struct plat_serial8250_port to resource_size_t, which can be
configured to be 64 bits on such platforms. The mapbase in
serial_struct can't safely be changed, that structure is user visible.
Signed-off-by: David Gibson <dwg@au1.ibm.com>
---
drivers/serial/8250.c | 5 +++--
drivers/serial/8250_early.c | 16 +++++++++-------
drivers/serial/serial_core.c | 9 +++++----
include/linux/serial_8250.h | 2 +-
include/linux/serial_core.h | 2 +-
5 files changed, 19 insertions(+), 15 deletions(-)
Index: working-2.6/include/linux/serial_core.h
===================================================================
--- working-2.6.orig/include/linux/serial_core.h 2007-02-05 15:21:40.000000000 +1100
+++ working-2.6/include/linux/serial_core.h 2007-02-05 15:21:40.000000000 +1100
@@ -273,7 +273,7 @@ struct uart_port {
const struct uart_ops *ops;
unsigned int custom_divisor;
unsigned int line; /* port index */
- unsigned long mapbase; /* for ioremap */
+ resource_size_t mapbase; /* for ioremap */
struct device *dev; /* parent device */
unsigned char hub6; /* this should be in the 8250 driver */
unsigned char unused[3];
Index: working-2.6/drivers/serial/serial_core.c
===================================================================
--- working-2.6.orig/drivers/serial/serial_core.c 2007-02-05 15:21:40.000000000 +1100
+++ working-2.6/drivers/serial/serial_core.c 2007-02-05 15:21:40.000000000 +1100
@@ -633,7 +633,7 @@ static int uart_get_info(struct uart_sta
tmp.hub6 = port->hub6;
tmp.io_type = port->iotype;
tmp.iomem_reg_shift = port->regshift;
- tmp.iomem_base = (void *)port->mapbase;
+ tmp.iomem_base = (void *)(unsigned long)port->mapbase;
if (copy_to_user(retinfo, &tmp, sizeof(*retinfo)))
return -EFAULT;
@@ -1673,10 +1673,11 @@ static int uart_line_info(char *buf, str
return 0;
mmio = port->iotype >= UPIO_MEM;
- ret = sprintf(buf, "%d: uart:%s %s%08lX irq:%d",
+ ret = sprintf(buf, "%d: uart:%s %s%08llX irq:%d",
port->line, uart_type(port),
mmio ? "mmio:0x" : "port:",
- mmio ? port->mapbase : (unsigned long) port->iobase,
+ mmio ? (unsigned long long)port->mapbase
+ : (unsigned long long) port->iobase,
port->irq);
if (port->type == PORT_UNKNOWN) {
@@ -2062,7 +2063,7 @@ uart_report_port(struct uart_driver *drv
case UPIO_AU:
case UPIO_TSI:
snprintf(address, sizeof(address),
- "MMIO 0x%lx", port->mapbase);
+ "MMIO 0x%llx", (unsigned long long)port->mapbase);
break;
default:
strlcpy(address, "*unknown*", sizeof(address));
Index: working-2.6/drivers/serial/8250_early.c
===================================================================
--- working-2.6.orig/drivers/serial/8250_early.c 2007-02-05 15:20:46.000000000 +1100
+++ working-2.6/drivers/serial/8250_early.c 2007-02-05 15:21:40.000000000 +1100
@@ -145,8 +145,9 @@ static int __init parse_options(struct e
port->mapbase = simple_strtoul(options + 5, &options, 0);
port->membase = ioremap(port->mapbase, mapsize);
if (!port->membase) {
- printk(KERN_ERR "%s: Couldn't ioremap 0x%lx\n",
- __FUNCTION__, port->mapbase);
+ printk(KERN_ERR "%s: Couldn't ioremap 0x%llx\n",
+ __FUNCTION__,
+ (unsigned long long)port->mapbase);
return -ENOMEM;
}
mmio = 1;
@@ -168,9 +169,10 @@ static int __init parse_options(struct e
device->baud);
}
- printk(KERN_INFO "Early serial console at %s 0x%lx (options '%s')\n",
+ printk(KERN_INFO "Early serial console at %s 0x%llx (options '%s')\n",
mmio ? "MMIO" : "I/O port",
- mmio ? port->mapbase : (unsigned long) port->iobase,
+ mmio ? (unsigned long long) port->mapbase
+ : (unsigned long long) port->iobase,
device->options);
return 0;
}
@@ -236,10 +238,10 @@ static int __init early_uart_console_swi
mmio = (port->iotype == UPIO_MEM);
line = serial8250_start_console(port, device->options);
if (line < 0)
- printk("No ttyS device at %s 0x%lx for console\n",
+ printk("No ttyS device at %s 0x%llx for console\n",
mmio ? "MMIO" : "I/O port",
- mmio ? port->mapbase :
- (unsigned long) port->iobase);
+ mmio ? (unsigned long long) port->mapbase
+ : (unsigned long long) port->iobase);
unregister_console(&early_uart_console);
if (mmio)
Index: working-2.6/include/linux/serial_8250.h
===================================================================
--- working-2.6.orig/include/linux/serial_8250.h 2007-02-05 15:20:46.000000000 +1100
+++ working-2.6/include/linux/serial_8250.h 2007-02-05 15:21:40.000000000 +1100
@@ -20,7 +20,7 @@
struct plat_serial8250_port {
unsigned long iobase; /* io base address */
void __iomem *membase; /* ioremap cookie or NULL */
- unsigned long mapbase; /* resource base */
+ resource_size_t mapbase; /* resource base */
unsigned int irq; /* interrupt number */
unsigned int uartclk; /* UART clock rate */
unsigned char regshift; /* register shift */
Index: working-2.6/drivers/serial/8250.c
===================================================================
--- working-2.6.orig/drivers/serial/8250.c 2007-02-05 15:24:16.000000000 +1100
+++ working-2.6/drivers/serial/8250.c 2007-02-05 15:24:34.000000000 +1100
@@ -2456,8 +2456,9 @@ static int __devinit serial8250_probe(st
ret = serial8250_register_port(&port);
if (ret < 0) {
dev_err(&dev->dev, "unable to register port at index %d "
- "(IO%lx MEM%lx IRQ%d): %d\n", i,
- p->iobase, p->mapbase, p->irq, ret);
+ "(IO%lx MEM%llx IRQ%d): %d\n", i,
+ p->iobase, (unsigned long long)p->mapbase,
+ p->irq, ret);
}
}
return 0;
next prev parent reply other threads:[~2007-02-13 6:10 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-13 6:09 [0/16] Preliminary Ebony (440GP) support for arch/powerpc David Gibson
2007-02-13 6:10 ` [PATCH 3/16] [powerpc] Use udbg_early_init() on ppc32 David Gibson
2007-02-13 6:22 ` Benjamin Herrenschmidt
2007-02-13 6:10 ` [PATCH 6/16] Port 44x MMU definitions to ARCH=powerpc David Gibson
2007-02-13 6:24 ` Benjamin Herrenschmidt
2007-02-13 17:13 ` Roland Dreier
2007-02-13 17:45 ` Josh Boyer
2007-02-13 21:36 ` Benjamin Herrenschmidt
2007-02-13 6:10 ` [PATCH 5/16] powerpc: Add zImage platform hook for kernel address David Gibson
2007-02-13 6:10 ` [PATCH 4/16] powerpc: Allow duplicate lmb_reserve() calls David Gibson
2007-02-13 7:05 ` Michael Neuling
2007-02-13 8:48 ` Michael Ellerman
2007-02-13 20:44 ` Benjamin Herrenschmidt
2007-02-13 6:10 ` [PATCH 8/16] Define FIXED_PORT flag for serial_core David Gibson
2007-02-13 6:10 ` [PATCH 7/16] Early serial debug support for PPC44x David Gibson
2007-02-13 15:04 ` Josh Boyer
2007-02-14 0:16 ` David Gibson
2007-02-14 1:02 ` Josh Boyer
2007-02-14 1:00 ` David Gibson
2007-02-14 2:00 ` Alan Modra
2007-02-14 2:02 ` David Gibson
2007-02-14 2:38 ` Alan Modra
2007-02-14 15:41 ` Josh Boyer
2007-02-14 23:05 ` David Gibson
2007-02-13 6:10 ` [PATCH 2/16] More DCR native fixups David Gibson
2007-02-13 6:22 ` Benjamin Herrenschmidt
2007-02-13 6:10 ` [PATCH 1/16] Remove ibm4{xx,4x}.h from arch/powerpc David Gibson
2007-02-13 14:19 ` Josh Boyer
2007-02-13 6:10 ` [PATCH 10/16] Add support for BSS stack for zImage wrapper David Gibson
2007-02-13 6:10 ` David Gibson [this message]
2007-02-13 6:10 ` [PATCH 13/16] Add initrd properties to device tree from zImage David Gibson
2007-02-13 6:10 ` [PATCH 11/16] zImage wrapper for Ebony David Gibson
2007-02-13 17:05 ` Geoff Levand
2007-02-14 0:17 ` David Gibson
2007-02-13 6:10 ` [PATCH 14/16] Add arch/powerpc driver for UIC, PPC4xx interrupt controller David Gibson
2007-02-13 6:10 ` [PATCH 12/16] Automatically lmb_reserve() initrd David Gibson
2007-02-13 7:14 ` Michael Neuling
2007-02-13 6:10 ` [PATCH 15/16] Add device tree for Ebony David Gibson
2007-02-13 20:08 ` Segher Boessenkool
2007-02-14 0:22 ` David Gibson
2007-02-14 1:51 ` Benjamin Herrenschmidt
2007-02-14 4:46 ` David Gibson
2007-02-14 17:54 ` Segher Boessenkool
2007-02-14 23:18 ` David Gibson
2007-02-15 0:25 ` Segher Boessenkool
2007-02-14 17:51 ` Segher Boessenkool
2007-02-14 17:48 ` Segher Boessenkool
2007-02-14 21:30 ` Benjamin Herrenschmidt
2007-02-15 0:03 ` Segher Boessenkool
2007-02-15 0:53 ` Benjamin Herrenschmidt
2007-02-15 1:00 ` Segher Boessenkool
2007-02-15 2:22 ` Benjamin Herrenschmidt
2007-02-15 2:51 ` Segher Boessenkool
2007-02-14 23:17 ` David Gibson
2007-02-15 0:27 ` Segher Boessenkool
2007-02-15 14:02 ` Jon Loeliger
2007-02-15 14:56 ` Segher Boessenkool
2007-02-15 17:02 ` Yoder Stuart-B08248
2007-02-15 17:10 ` Scott Wood
2007-02-16 9:20 ` Segher Boessenkool
2007-02-14 16:14 ` Yoder Stuart-B08248
2007-02-14 16:32 ` Josh Boyer
2007-02-14 17:58 ` Segher Boessenkool
2007-02-14 20:08 ` Yoder Stuart-B08248
2007-02-14 21:12 ` Segher Boessenkool
2007-02-14 21:35 ` Yoder Stuart-B08248
2007-02-14 21:42 ` Benjamin Herrenschmidt
2007-02-14 21:59 ` Scott Wood
2007-02-15 0:20 ` Segher Boessenkool
2007-02-14 22:50 ` Yoder Stuart-B08248
2007-02-14 22:57 ` Benjamin Herrenschmidt
2007-02-15 0:17 ` Segher Boessenkool
2007-02-15 2:12 ` Paul Mackerras
2007-02-15 2:43 ` Segher Boessenkool
2007-02-15 3:15 ` Paul Mackerras
2007-02-15 14:40 ` Segher Boessenkool
2007-02-16 1:17 ` Paul Mackerras
2007-02-16 9:41 ` Segher Boessenkool
2007-02-15 0:10 ` Segher Boessenkool
2007-02-14 23:32 ` David Gibson
2007-02-14 23:27 ` David Gibson
2007-02-14 23:22 ` David Gibson
2007-02-14 23:51 ` Benjamin Herrenschmidt
2007-02-15 0:36 ` Segher Boessenkool
2007-02-15 0:31 ` Segher Boessenkool
2007-02-15 1:53 ` David Gibson
2007-02-15 3:09 ` Segher Boessenkool
2007-02-15 3:33 ` David Gibson
2007-02-15 14:47 ` Segher Boessenkool
2007-02-15 10:52 ` Benjamin Herrenschmidt
2007-02-15 14:52 ` Segher Boessenkool
2007-02-15 20:43 ` Benjamin Herrenschmidt
2007-02-16 9:23 ` Segher Boessenkool
2007-02-15 16:37 ` Yoder Stuart-B08248
2007-02-15 21:41 ` Benjamin Herrenschmidt
2007-02-16 9:25 ` Segher Boessenkool
2007-02-16 15:32 ` Hartmut Penner
2007-02-16 16:47 ` Yoder Stuart-B08248
2007-02-19 12:02 ` Hartmut Penner
2007-02-14 21:29 ` Benjamin Herrenschmidt
2007-02-13 6:10 ` [PATCH 16/16] Support for Ebony in arch/powerpc David Gibson
2007-02-13 17:18 ` Roland Dreier
2007-02-14 0:20 ` David Gibson
2007-02-13 14:37 ` [0/16] Preliminary Ebony (440GP) support for arch/powerpc Josh Boyer
2007-02-13 20:21 ` Josh Boyer
2007-02-13 15:46 ` Josh Boyer
2007-02-14 16:06 ` Josh Boyer
2007-02-14 23:12 ` David Gibson
2007-02-16 2:19 ` Josh Boyer
2007-02-16 2:53 ` David Gibson
2007-02-16 4:33 ` Josh Boyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070213061025.1C2B3DDD0C@ozlabs.org \
--to=david@gibson.dropbear.id.au \
--cc=linuxppc-dev@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.