diff options
Diffstat (limited to 'drivers/serial')
-rw-r--r-- | drivers/serial/8250_pnp.c | 2 | ||||
-rw-r--r-- | drivers/serial/serial_core.c | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/drivers/serial/8250_pnp.c b/drivers/serial/8250_pnp.c index 739bc84f91e9..632f62d6ec7e 100644 --- a/drivers/serial/8250_pnp.c +++ b/drivers/serial/8250_pnp.c | |||
@@ -431,6 +431,8 @@ serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) | |||
431 | #endif | 431 | #endif |
432 | 432 | ||
433 | port.flags |= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF; | 433 | port.flags |= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF; |
434 | if (pnp_irq_flags(dev, 0) & IORESOURCE_IRQ_SHAREABLE) | ||
435 | port.flags |= UPF_SHARE_IRQ; | ||
434 | port.uartclk = 1843200; | 436 | port.uartclk = 1843200; |
435 | port.dev = &dev->dev; | 437 | port.dev = &dev->dev; |
436 | 438 | ||
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index c54af8774393..95831808334c 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c | |||
@@ -49,6 +49,12 @@ | |||
49 | */ | 49 | */ |
50 | static DEFINE_MUTEX(port_mutex); | 50 | static DEFINE_MUTEX(port_mutex); |
51 | 51 | ||
52 | /* | ||
53 | * lockdep: port->lock is initialized in two places, but we | ||
54 | * want only one lock-class: | ||
55 | */ | ||
56 | static struct lock_class_key port_lock_key; | ||
57 | |||
52 | #define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) | 58 | #define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) |
53 | 59 | ||
54 | #define uart_users(state) ((state)->count + ((state)->info ? (state)->info->blocked_open : 0)) | 60 | #define uart_users(state) ((state)->count + ((state)->info ? (state)->info->blocked_open : 0)) |
@@ -1865,6 +1871,7 @@ uart_set_options(struct uart_port *port, struct console *co, | |||
1865 | * early. | 1871 | * early. |
1866 | */ | 1872 | */ |
1867 | spin_lock_init(&port->lock); | 1873 | spin_lock_init(&port->lock); |
1874 | lockdep_set_class(&port->lock, &port_lock_key); | ||
1868 | 1875 | ||
1869 | memset(&termios, 0, sizeof(struct termios)); | 1876 | memset(&termios, 0, sizeof(struct termios)); |
1870 | 1877 | ||
@@ -2247,8 +2254,10 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port) | |||
2247 | * If this port is a console, then the spinlock is already | 2254 | * If this port is a console, then the spinlock is already |
2248 | * initialised. | 2255 | * initialised. |
2249 | */ | 2256 | */ |
2250 | if (!(uart_console(port) && (port->cons->flags & CON_ENABLED))) | 2257 | if (!(uart_console(port) && (port->cons->flags & CON_ENABLED))) { |
2251 | spin_lock_init(&port->lock); | 2258 | spin_lock_init(&port->lock); |
2259 | lockdep_set_class(&port->lock, &port_lock_key); | ||
2260 | } | ||
2252 | 2261 | ||
2253 | uart_configure_port(drv, state, port); | 2262 | uart_configure_port(drv, state, port); |
2254 | 2263 | ||