All of lore.kernel.org
 help / color / mirror / Atom feed
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;

  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.