Merge tag 'tty-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 14 Dec 2014 23:23:32 +0000 (15:23 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 14 Dec 2014 23:23:32 +0000 (15:23 -0800)
Pull tty/serial driver updates from Greg KH:
 "Here's the big tty/serial driver update for 3.19-rc1.

  There are a number of TTY core changes/fixes in here from Peter Hurley
  that have all been teted in linux-next for a long time now.  There are
  also the normal serial driver updates as well, full details in the
  changelog below"

* tag 'tty-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (219 commits)
  serial: pxa: hold port.lock when reporting modem line changes
  tty-hvsi_lib: Deletion of an unnecessary check before the function call "tty_kref_put"
  tty: Deletion of unnecessary checks before two function calls
  n_tty: Fix read_buf race condition, increment read_head after pushing data
  serial: of-serial: add PM suspend/resume support
  Revert "serial: of-serial: add PM suspend/resume support"
  Revert "serial: of-serial: fix up PM ops on no_console_suspend and port type"
  serial: 8250: don't attempt a trylock if in sysrq
  serial: core: Add big-endian iotype
  serial: samsung: use port->fifosize instead of hardcoded values
  serial: samsung: prefer to use fifosize from driver data
  serial: samsung: fix style problems
  serial: samsung: wait for transfer completion before clock disable
  serial: icom: fix error return code
  serial: tegra: clean up tty-flag assignments
  serial: Fix io address assign flow with Fintek PCI-to-UART Product
  serial: mxs-auart: fix tx_empty against shift register
  serial: mxs-auart: fix gpio change detection on interrupt
  serial: mxs-auart: Fix mxs_auart_set_ldisc()
  serial: 8250_dw: Use 64-bit access for OCTEON.
  ...

1  2 
Documentation/devicetree/bindings/serial/pl011.txt
MAINTAINERS
drivers/tty/n_tty.c
drivers/tty/serial/Kconfig
include/linux/kernel.h
kernel/exit.c

@@@ -6,34 -6,17 +6,46 @@@ Required properties
  - interrupts: exactly one interrupt specifier
  
  Optional properties:
- - pinctrl: When present, must have one state named "default",
 -- pinctrl:            When present, must have one state named "sleep"
 -                      and one state named "default"
 -- clocks:             When present, must refer to exactly one clock named
 -                      "apb_pclk"
 -- dmas:                       When present, may have one or two dma channels.
 -                      The first one must be named "rx", the second one
 -                      must be named "tx".
 -- auto-poll:          Enables polling when using RX DMA.
 -- poll-rate-ms:               Rate at which poll occurs when auto-poll is set,
 -                      default 100ms.
 -- poll-timeout-ms:    Poll timeout when auto-poll is set, default
 -                      3000ms.
++- pinctrl:
++         When present, must have one state named "default",
 +         and may contain a second name named "sleep". The former
 +         state sets up pins for ordinary operation whereas
 +         the latter state will put the associated pins to sleep
 +         when the UART is unused
- - clocks:  When present, the first clock listed must correspond to
++- clocks:
++         When present, the first clock listed must correspond to
 +         the clock named UARTCLK on the IP block, i.e. the clock
 +         to the external serial line, whereas the second clock
 +         must correspond to the PCLK clocking the internal logic
 +         of the block. Just listing one clock (the first one) is
 +         deprecated.
- - clocks-names: When present, the first clock listed must be named
++- clocks-names:
++         When present, the first clock listed must be named
 +         "uartclk" and the second clock listed must be named
 +         "apb_pclk"
- - dmas:          When present, may have one or two dma channels.
++- dmas:       
++         When present, may have one or two dma channels.
 +         The first one must be named "rx", the second one
 +         must be named "tx".
++- auto-poll:
++         Enables polling when using RX DMA.
++- poll-rate-ms:
++         Rate at which poll occurs when auto-poll is set,
++         default 100ms.
++- poll-timeout-ms:
++         Poll timeout when auto-poll is set, default
++         3000ms.
  
  See also bindings/arm/primecell.txt
 +
 +Example:
 +
 +uart@80120000 {
 +      compatible = "arm,pl011", "arm,primecell";
 +      reg = <0x80120000 0x1000>;
 +      interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
 +      dmas = <&dma 13 0 0x2>, <&dma 13 0 0x0>;
 +      dma-names = "rx", "tx";
 +      clocks = <&foo_clk>, <&bar_clk>;
 +      clock-names = "uartclk", "apb_pclk";
 +};
diff --combined MAINTAINERS
@@@ -850,7 -850,6 +850,7 @@@ ARM/Amlogic MesonX SoC suppor
  M:    Carlo Caione <carlo@caione.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 +F:    drivers/media/rc/meson-ir.c
  N:    meson[x68]
  
  ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES
@@@ -862,7 -861,6 +862,7 @@@ W: http://maxim.org.za/at91_26.htm
  W:    http://www.linux4sam.org
  S:    Supported
  F:    arch/arm/mach-at91/
 +F:    include/soc/at91/
  F:    arch/arm/boot/dts/at91*.dts
  F:    arch/arm/boot/dts/at91*.dtsi
  F:    arch/arm/boot/dts/sama*.dts
@@@ -1310,22 -1308,30 +1310,22 @@@ F:   drivers/*/*rockchip
  F:    drivers/*/*/*rockchip*
  F:    sound/soc/rockchip/
  
 -ARM/SAMSUNG ARM ARCHITECTURES
 -M:    Ben Dooks <ben-linux@fluff.org>
 -M:    Kukjin Kim <kgene.kim@samsung.com>
 +ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
 +M:    Kukjin Kim <kgene@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
  S:    Maintained
  F:    arch/arm/boot/dts/s3c*
  F:    arch/arm/boot/dts/exynos*
  F:    arch/arm/plat-samsung/
  F:    arch/arm/mach-s3c24*/
  F:    arch/arm/mach-s3c64xx/
 +F:    arch/arm/mach-s5p*/
 +F:    arch/arm/mach-exynos*/
  F:    drivers/*/*s3c2410*
  F:    drivers/*/*/*s3c2410*
  F:    drivers/spi/spi-s3c*
  F:    sound/soc/samsung/*
 -
 -ARM/S5P EXYNOS ARM ARCHITECTURES
 -M:    Kukjin Kim <kgene.kim@samsung.com>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-s5p*/
 -F:    arch/arm/mach-exynos*/
  N:    exynos
  
  ARM/SAMSUNG MOBILE MACHINE SUPPORT
@@@ -1375,12 -1381,12 +1375,12 @@@ F:   arch/arm/boot/dts/sh
  F:    arch/arm/configs/ape6evm_defconfig
  F:    arch/arm/configs/armadillo800eva_defconfig
  F:    arch/arm/configs/bockw_defconfig
 -F:    arch/arm/configs/koelsch_defconfig
  F:    arch/arm/configs/kzm9g_defconfig
  F:    arch/arm/configs/lager_defconfig
  F:    arch/arm/configs/mackerel_defconfig
  F:    arch/arm/configs/marzen_defconfig
  F:    arch/arm/configs/shmobile_defconfig
 +F:    arch/arm/include/debug/renesas-scif.S
  F:    arch/arm/mach-shmobile/
  F:    drivers/sh/
  
@@@ -1424,7 -1430,6 +1424,7 @@@ F:      drivers/tty/serial/st-asc.
  F:    drivers/usb/dwc3/dwc3-st.c
  F:    drivers/usb/host/ehci-st.c
  F:    drivers/usb/host/ohci-st.c
 +F:    drivers/ata/ahci_st.c
  
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
@@@ -1498,19 -1503,6 +1498,19 @@@ S:    Maintaine
  F:    drivers/clk/ux500/
  F:    include/linux/platform_data/clk-ux500.h
  
 +ARM/VERSATILE EXPRESS PLATFORM
 +M:    Liviu Dudau <liviu.dudau@arm.com>
 +M:    Sudeep Holla <sudeep.holla@arm.com>
 +M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/boot/dts/vexpress*
 +F:    arch/arm/mach-vexpress/
 +F:    */*/vexpress*
 +F:    */*/*/vexpress*
 +F:    drivers/clk/versatile/clk-vexpress-osc.c
 +F:    drivers/clocksource/versatile.c
 +
  ARM/VFP SUPPORT
  M:    Russell King <linux@arm.linux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1722,13 -1714,6 +1722,13 @@@ F:    drivers/dma/at_hdmac.
  F:    drivers/dma/at_hdmac_regs.h
  F:    include/linux/platform_data/dma-atmel.h
  
 +ATMEL XDMA DRIVER
 +M:    Ludovic Desroches <ludovic.desroches@atmel.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +L:    dmaengine@vger.kernel.org
 +S:    Supported
 +F:    drivers/dma/at_xdmac.c
 +
  ATMEL I2C DRIVER
  M:    Ludovic Desroches <ludovic.desroches@atmel.com>
  L:    linux-i2c@vger.kernel.org
@@@ -1801,11 -1786,10 +1801,11 @@@ S:   Supporte
  F:    drivers/scsi/esas2r
  
  AUDIT SUBSYSTEM
 +M:    Paul Moore <paul@paul-moore.com>
  M:    Eric Paris <eparis@redhat.com>
 -L:    linux-audit@redhat.com (subscribers-only)
 +L:    linux-audit@redhat.com (moderated for non-subscribers)
  W:    http://people.redhat.com/sgrubb/audit/
 -T:    git git://git.infradead.org/users/eparis/audit.git
 +T:    git git://git.infradead.org/users/pcmoore/audit
  S:    Maintained
  F:    include/linux/audit.h
  F:    include/uapi/linux/audit.h
@@@ -1844,7 -1828,7 +1844,7 @@@ F:      include/net/ax25.
  F:    net/ax25/
  
  AZ6007 DVB DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -1878,6 -1862,7 +1878,6 @@@ F:      drivers/net/wireless/b43legacy
  
  BACKLIGHT CLASS/SUBSYSTEM
  M:    Jingoo Han <jg1.han@samsung.com>
 -M:    Bryan Wu <cooloney@gmail.com>
  M:    Lee Jones <lee.jones@linaro.org>
  S:    Maintained
  F:    drivers/video/backlight/
@@@ -2093,14 -2078,6 +2093,14 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  N:    bcm2835
  
 +BROADCOM BCM33XX MIPS ARCHITECTURE
 +M:    Kevin Cernekee <cernekee@gmail.com>
 +L:    linux-mips@linux-mips.org
 +S:    Maintained
 +F:    arch/mips/bcm3384/*
 +F:    arch/mips/include/asm/mach-bcm3384/*
 +F:    arch/mips/kernel/*bmips*
 +
  BROADCOM BCM5301X ARM ARCHITECTURE
  M:    Hauke Mehrtens <hauke@hauke-m.de>
  L:    linux-arm-kernel@lists.infradead.org
@@@ -2117,34 -2094,13 +2117,34 @@@ S:   Maintaine
  F:    arch/arm/mach-bcm/bcm63xx.c
  F:    arch/arm/include/debug/bcm63xx.S
  
 +BROADCOM BCM63XX/BCM33XX UDC DRIVER
 +M:    Kevin Cernekee <cernekee@gmail.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/gadget/udc/bcm63xx_udc.*
 +
  BROADCOM BCM7XXX ARM ARCHITECTURE
  M:    Marc Carino <marc.ceeeee@gmail.com>
  M:    Brian Norris <computersforpeace@gmail.com>
 +M:    Gregory Fong <gregory.0xf0@gmail.com>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-bcm/*brcmstb*
  F:    arch/arm/boot/dts/bcm7*.dts*
 +F:    drivers/bus/brcmstb_gisb.c
 +
 +BROADCOM BMIPS MIPS ARCHITECTURE
 +M:    Kevin Cernekee <cernekee@gmail.com>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
 +L:    linux-mips@linux-mips.org
 +S:    Maintained
 +F:    arch/mips/bmips/*
 +F:    arch/mips/include/asm/mach-bmips/*
 +F:    arch/mips/kernel/*bmips*
 +F:    arch/mips/boot/dts/bcm*.dts*
 +F:    drivers/irqchip/irq-bcm7*
 +F:    drivers/irqchip/irq-brcmstb*
  
  BROADCOM TG3 GIGABIT ETHERNET DRIVER
  M:    Prashant Sreedharan <prashant@broadcom.com>
@@@ -2175,20 -2131,6 +2175,20 @@@ L:    linux-scsi@vger.kernel.or
  S:    Supported
  F:    drivers/scsi/bnx2i/
  
 +BROADCOM CYGNUS/IPROC ARM ARCHITECTURE
 +M:    Ray Jui <rjui@broadcom.com>
 +M:    Scott Branden <sbranden@broadcom.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +L:    bcm-kernel-feedback-list@broadcom.com
 +T:    git git://git.github.com/brcm/linux.git
 +S:    Maintained
 +N:    iproc
 +N:    cygnus
 +N:    bcm9113*
 +N:    bcm9583*
 +N:    bcm583*
 +N:    bcm113*
 +
  BROADCOM KONA GPIO DRIVER
  M:    Ray Jui <rjui@broadcom.com>
  L:    bcm-kernel-feedback-list@broadcom.com
@@@ -2256,7 -2198,7 +2256,7 @@@ F:      Documentation/filesystems/btrfs.tx
  F:    fs/btrfs/
  
  BTTV VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -2366,14 -2308,6 +2366,14 @@@ F:    security/capability.
  F:    security/commoncap.c
  F:    kernel/capability.c
  
 +CC2520 IEEE-802.15.4 RADIO DRIVER
 +M:    Varka Bhadram <varkabhadram@gmail.com>
 +L:    linux-wpan@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ieee802154/cc2520.c
 +F:    include/linux/spi/cc2520.h
 +F:    Documentation/devicetree/bindings/net/ieee802154/cc2520.txt
 +
  CELL BROADBAND ENGINE ARCHITECTURE
  M:    Arnd Bergmann <arnd@arndb.de>
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -2555,13 -2489,6 +2555,13 @@@ F:    fs/coda
  F:    include/linux/coda*.h
  F:    include/uapi/linux/coda*.h
  
 +CODA V4L2 MEM2MEM DRIVER
 +M:    Philipp Zabel <p.zabel@pengutronix.de>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/media/coda.txt
 +F:    drivers/media/platform/coda/
 +
  COMMON CLK FRAMEWORK
  M:    Mike Turquette <mturquette@linaro.org>
  L:    linux-kernel@vger.kernel.org
@@@ -2577,7 -2504,8 +2577,7 @@@ M:      Steve French <sfrench@samba.org
  L:    linux-cifs@vger.kernel.org
  L:    samba-technical@lists.samba.org (moderated for non-subscribers)
  W:    http://linux-cifs.samba.org/
 -Q:    http://patchwork.ozlabs.org/project/linux-cifs-client/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git
 +T:    git git://git.samba.org/sfrench/cifs-2.6.git
  S:    Supported
  F:    Documentation/filesystems/cifs/
  F:    fs/cifs/
@@@ -2654,7 -2582,7 +2654,7 @@@ L:      cgroups@vger.kernel.or
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    mm/memcontrol.c
 -F:    mm/page_cgroup.c
 +F:    mm/swap_cgroup.c
  
  CORETEMP HARDWARE MONITORING DRIVER
  M:    Fenghua Yu <fenghua.yu@intel.com>
@@@ -2704,16 -2632,6 +2704,16 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    drivers/cpuidle/cpuidle-big_little.c
  
 +CPUIDLE DRIVER - ARM EXYNOS
 +M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
 +M:    Daniel Lezcano <daniel.lezcano@linaro.org>
 +M:    Kukjin Kim <kgene@kernel.org>
 +L:    linux-pm@vger.kernel.org
 +L:    linux-samsung-soc@vger.kernel.org
 +S:    Supported
 +F:    drivers/cpuidle/cpuidle-exynos.c
 +F:    arch/arm/mach-exynos/pm.c
 +
  CPUIDLE DRIVERS
  M:    Rafael J. Wysocki <rjw@rjwysocki.net>
  M:    Daniel Lezcano <daniel.lezcano@linaro.org>
@@@ -2781,7 -2699,7 +2781,7 @@@ F:      drivers/net/wireless/cw1200
  
  CX18 VIDEO4LINUX DRIVER
  M:    Andy Walls <awalls@md.metrocast.net>
 -L:    ivtv-devel@ivtvdriver.org (moderated for non-subscribers)
 +L:    ivtv-devel@ivtvdriver.org (subscribers-only)
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  W:    http://linuxtv.org
@@@ -2801,7 -2719,7 +2801,7 @@@ F:      drivers/media/common/cx2341x
  F:    include/media/cx2341x*
  
  CX88 VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -2944,10 -2862,11 +2944,10 @@@ F:   Documentation/networking/dmfe.tx
  F:    drivers/net/ethernet/dec/tulip/dmfe.c
  
  DC390/AM53C974 SCSI driver
 -M:    Kurt Garloff <garloff@suse.de>
 -W:    http://www.garloff.de/kurt/linux/dc390/
 -M:    Guennadi Liakhovetski <g.liakhovetski@gmx.de>
 +M:    Hannes Reinecke <hare@suse.de>
 +L:    linux-scsi@vger.kernel.org
  S:    Maintained
 -F:    drivers/scsi/tmscsim.*
 +F:    drivers/scsi/am53c974.c
  
  DC395x SCSI driver
  M:    Oliver Neukum <oliver@neukum.org>
@@@ -3170,8 -3089,7 +3170,8 @@@ Q:      https://patchwork.kernel.org/project
  S:    Maintained
  F:    drivers/dma/
  F:    include/linux/dma*
 -T:    git git://git.infradead.org/users/vkoul/slave-dma.git (slave-dma)
 +F:    Documentation/dmaengine/
 +T:    git git://git.infradead.org/users/vkoul/slave-dma.git
  
  DME1737 HARDWARE MONITOR DRIVER
  M:    Juerg Haefliger <juergh@gmail.com>
@@@ -3484,7 -3402,7 +3484,7 @@@ F:      fs/ecryptfs
  EDAC-CORE
  M:    Doug Thompson <dougthompson@xmission.com>
  M:    Borislav Petkov <bp@alien8.de>
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Supported
@@@ -3533,7 -3451,7 +3533,7 @@@ S:      Maintaine
  F:    drivers/edac/e7xxx_edac.c
  
  EDAC-GHES
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
@@@ -3561,21 -3479,21 +3561,21 @@@ S:   Maintaine
  F:    drivers/edac/i5000_edac.c
  
  EDAC-I5400
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i5400_edac.c
  
  EDAC-I7300
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i7300_edac.c
  
  EDAC-I7CORE
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
@@@ -3618,7 -3536,7 +3618,7 @@@ S:      Maintaine
  F:    drivers/edac/r82600_edac.c
  
  EDAC-SBRIDGE
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
@@@ -3678,7 -3596,7 +3678,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/ibm/ehea/
  
  EM28XX VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -4046,7 -3964,7 +4046,7 @@@ F:      drivers/tty/serial/ucc_uart.
  FREESCALE SOC SOUND DRIVERS
  M:    Timur Tabi <timur@tabi.org>
  M:    Nicolin Chen <nicoleotsuka@gmail.com>
 -M:    Xiubo Li <Li.Xiubo@freescale.com>
 +M:    Xiubo Li <Xiubo.Lee@gmail.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
@@@ -4657,7 -4575,6 +4657,7 @@@ W:      https://i2c.wiki.kernel.org
  Q:    https://patchwork.ozlabs.org/project/linux-i2c/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/i2c/
  F:    Documentation/i2c/
  F:    drivers/i2c/
  F:    include/linux/i2c.h
@@@ -4796,21 -4713,8 +4796,21 @@@ S:    Maintaine
  F:    net/ieee802154/
  F:    net/mac802154/
  F:    drivers/net/ieee802154/
 +F:    include/linux/nl802154.h
 +F:    include/linux/ieee802154.h
 +F:    include/net/nl802154.h
 +F:    include/net/mac802154.h
 +F:    include/net/af_ieee802154.h
 +F:    include/net/cfg802154.h
 +F:    include/net/ieee802154_netdev.h
  F:    Documentation/networking/ieee802154.txt
  
 +IGORPLUG-USB IR RECEIVER
 +M:    Sean Young <sean@mess.org>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/rc/igorplugusb.c
 +
  IGUANAWORKS USB IR TRANSCEIVER
  M:    Sean Young <sean@mess.org>
  L:    linux-media@vger.kernel.org
@@@ -4868,11 -4772,6 +4868,11 @@@ L:    linux-security-module@vger.kernel.or
  S:    Supported
  F:    security/integrity/ima/
  
 +IMGTEC IR DECODER DRIVER
 +M:    James Hogan <james.hogan@imgtec.com>
 +S:    Maintained
 +F:    drivers/media/rc/img-ir/
 +
  IMS TWINTURBO FRAMEBUFFER DRIVER
  L:    linux-fbdev@vger.kernel.org
  S:    Orphan
@@@ -5287,7 -5186,7 +5287,7 @@@ F:      drivers/media/tuners/it913x
  
  IVTV VIDEO4LINUX DRIVER
  M:    Andy Walls <awalls@md.metrocast.net>
 -L:    ivtv-devel@ivtvdriver.org (moderated for non-subscribers)
 +L:    ivtv-devel@ivtvdriver.org (subscribers-only)
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  W:    http://www.ivtvdriver.org
@@@ -5982,11 -5881,6 +5982,11 @@@ M:    Russell King <rmk+kernel@arm.linux.o
  S:    Maintained
  F:    drivers/gpu/drm/armada/
  
 +MARVELL 88E6352 DSA support
 +M:    Guenter Roeck <linux@roeck-us.net>
 +S:    Maintained
 +F:    drivers/net/dsa/mv88e6352.c
 +
  MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2)
  M:    Mirko Lindner <mlindner@marvell.com>
  M:    Stephen Hemminger <stephen@networkplumber.org>
@@@ -6068,7 -5962,7 +6068,7 @@@ S:      Maintaine
  F:    drivers/media/radio/radio-maxiradio*
  
  MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  P:    LinuxTV.org Project
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
@@@ -6097,13 -5991,10 +6097,13 @@@ W:   http://linuxtv.or
  S:    Odd Fixes
  F:    drivers/media/parport/pms*
  
 -MEGARAID SCSI DRIVERS
 -M:    Neela Syam Kolli <megaraidlinux@lsi.com>
 +MEGARAID SCSI/SAS DRIVERS
 +M:    Kashyap Desai <kashyap.desai@avagotech.com>
 +M:    Sumit Saxena <sumit.saxena@avagotech.com>
 +M:    Uday Lingala <uday.lingala@avagotech.com>
 +L:    megaraidlinux.pdl@avagotech.com
  L:    linux-scsi@vger.kernel.org
 -W:    http://megaraid.lsilogic.com
 +W:    http://www.lsi.com
  S:    Maintained
  F:    Documentation/scsi/megaraid.txt
  F:    drivers/scsi/megaraid.*
@@@ -6226,28 -6117,6 +6226,28 @@@ S:    Supporte
  F:    include/linux/mlx5/
  F:    drivers/infiniband/hw/mlx5/
  
 +MN88472 MEDIA DRIVER
 +M:    Antti Palosaari <crope@iki.fi>
 +L:    linux-media@vger.kernel.org
 +W:    http://linuxtv.org/
 +W:    http://palosaari.fi/linux/
 +Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 +T:    git git://linuxtv.org/anttip/media_tree.git
 +S:    Maintained
 +F:    drivers/staging/media/mn88472/
 +F:    drivers/media/dvb-frontends/mn88472.h
 +
 +MN88473 MEDIA DRIVER
 +M:    Antti Palosaari <crope@iki.fi>
 +L:    linux-media@vger.kernel.org
 +W:    http://linuxtv.org/
 +W:    http://palosaari.fi/linux/
 +Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 +T:    git git://linuxtv.org/anttip/media_tree.git
 +S:    Maintained
 +F:    drivers/staging/media/mn88473/
 +F:    drivers/media/dvb-frontends/mn88473.h
 +
  MODULE SUPPORT
  M:    Rusty Russell <rusty@rustcorp.com.au>
  S:    Maintained
@@@ -6436,6 -6305,7 +6436,6 @@@ F:      drivers/scsi/g_NCR5380.
  F:    drivers/scsi/g_NCR5380_mmio.c
  F:    drivers/scsi/mac_scsi.*
  F:    drivers/scsi/pas16.*
 -F:    drivers/scsi/sun3_NCR5380.c
  F:    drivers/scsi/sun3_scsi.*
  F:    drivers/scsi/sun3_scsi_vme.c
  F:    drivers/scsi/t128.*
@@@ -6691,13 -6561,6 +6691,13 @@@ S:    Maintaine
  F:    Documentation/scsi/NinjaSCSI.txt
  F:    drivers/scsi/nsp32*
  
 +NIOS2 ARCHITECTURE
 +M:    Ley Foon Tan <lftan@altera.com>
 +L:    nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
 +T:    git git://git.rocketboards.org/linux-socfpga.git
 +S:    Maintained
 +F:    arch/nios2/
 +
  NTB DRIVER
  M:    Jon Mason <jdmason@kudzu.us>
  M:    Dave Jiang <dave.jiang@intel.com>
@@@ -6738,12 -6601,6 +6738,12 @@@ S:    Supporte
  F:    drivers/gpu/drm/i2c/tda998x_drv.c
  F:    include/drm/i2c/tda998x.h
  
 +NXP TFA9879 DRIVER
 +M:    Peter Rosin <peda@axentia.se>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    sound/soc/codecs/tfa9879*
 +
  OMAP SUPPORT
  M:    Tony Lindgren <tony@atomide.com>
  L:    linux-omap@vger.kernel.org
@@@ -6813,14 -6670,6 +6813,14 @@@ L:    linux-omap@vger.kernel.or
  S:    Maintained
  F:    sound/soc/omap/
  
 +OMAP GENERAL PURPOSE MEMORY CONTROLLER SUPPORT
 +M:    Roger Quadros <rogerq@ti.com>
 +M:    Tony Lindgren <tony@atomide.com>
 +L:    linux-omap@vger.kernel.org
 +S:    Maintained
 +F:    drivers/memory/omap-gpmc.c
 +F:    arch/arm/mach-omap2/*gpmc*
 +
  OMAP FRAMEBUFFER SUPPORT
  M:    Tomi Valkeinen <tomi.valkeinen@ti.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -7198,16 -7047,6 +7198,16 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/pci/xgene-pci.txt
  F:    drivers/pci/host/pci-xgene.c
  
 +PCI DRIVER FOR FREESCALE LAYERSCAPE
 +M:    Minghuan Lian <minghuan.Lian@freescale.com>
 +M:    Mingkai Hu <mingkai.hu@freescale.com>
 +M:    Roy Zang <tie-fei.zang@freescale.com>
 +L:    linuxppc-dev@lists.ozlabs.org
 +L:    linux-pci@vger.kernel.org
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Maintained
 +F:    drivers/pci/host/*layerscape*
 +
  PCI DRIVER FOR IMX6
  M:    Richard Zhu <r65037@freescale.com>
  M:    Lucas Stach <l.stach@pengutronix.de>
@@@ -7387,13 -7226,7 +7387,13 @@@ PIN CONTROLLER - ATMEL AT9
  M:    Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    drivers/pinctrl/pinctrl-at91.c
 +F:    drivers/pinctrl/pinctrl-at91.*
 +
 +PIN CONTROLLER - INTEL
 +M:    Mika Westerberg <mika.westerberg@linux.intel.com>
 +M:    Heikki Krogerus <heikki.krogerus@linux.intel.com>
 +S:    Maintained
 +F:    drivers/pinctrl/intel/
  
  PIN CONTROLLER - RENESAS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
@@@ -8012,13 -7845,6 +8012,13 @@@ F:    drivers/hid/hid-roccat
  F:    include/linux/hid-roccat*
  F:    Documentation/ABI/*/sysfs-driver-hid-roccat*
  
 +ROCKER DRIVER
 +M:    Jiri Pirko <jiri@resnulli.us>
 +M:    Scott Feldman <sfeldma@gmail.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ethernet/rocker/
 +
  ROCKETPORT DRIVER
  P:    Comtrol Corp.
  W:    http://www.comtrol.com
@@@ -8026,6 -7852,12 +8026,12 @@@ S:    Maintaine
  F:    Documentation/serial/rocket.txt
  F:    drivers/tty/rocket*
  
+ ROCKETPORT EXPRESS/INFINITY DRIVER
+ M:    Kevin Cernekee <cernekee@gmail.com>
+ L:    linux-serial@vger.kernel.org
+ S:    Odd Fixes
+ F:    drivers/tty/serial/rp2.*
  ROSE NETWORK LAYER
  M:    Ralf Baechle <ralf@linux-mips.org>
  L:    linux-hams@vger.kernel.org
@@@ -8066,10 -7898,11 +8072,10 @@@ S:   Maintaine
  F:    drivers/media/dvb-frontends/rtl2832_sdr*
  
  RTL8180 WIRELESS DRIVER
 -M:    "John W. Linville" <linville@tuxdriver.com>
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
 -S:    Maintained
 +S:    Orphan
  F:    drivers/net/wireless/rtl818x/rtl8180/
  
  RTL8187 WIRELESS DRIVER
@@@ -8186,7 -8019,7 +8192,7 @@@ S:      Odd Fixe
  F:    drivers/media/i2c/saa6588*
  
  SAA7134 VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -8644,7 -8477,7 +8650,7 @@@ S:      Maintaine
  F:    drivers/media/radio/si4713/radio-usb-si4713.c
  
  SIANO DVB DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -8654,14 -8487,6 +8660,14 @@@ F:    drivers/media/usb/siano
  F:    drivers/media/usb/siano/
  F:    drivers/media/mmc/siano/
  
 +SIMPLEFB FB DRIVER
 +M:    Hans de Goede <hdegoede@redhat.com>
 +L:    linux-fbdev@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/video/simple-framebuffer.txt
 +F:    drivers/video/fbdev/simplefb.c
 +F:    include/linux/platform_data/simplefb.h
 +
  SH_VEU V4L2 MEM2MEM DRIVER
  L:    linux-media@vger.kernel.org
  S:    Orphan
@@@ -8863,9 -8688,7 +8869,9 @@@ S:      Maintaine
  F:    drivers/leds/leds-net48xx.c
  
  SOFTLOGIC 6x10 MPEG CODEC
 -M:    Ismael Luceno <ismael.luceno@corp.bluecherry.net>
 +M:    Bluecherry Maintainers <maintainers@bluecherrydvr.com>
 +M:    Andrey Utkin <andrey.utkin@corp.bluecherry.net>
 +M:    Andrey Utkin <andrey.krieger.utkin@gmail.com>
  L:    linux-media@vger.kernel.org
  S:    Supported
  F:    drivers/media/pci/solo6x10/
@@@ -9222,13 -9045,6 +9228,13 @@@ F:    lib/swiotlb.
  F:    arch/*/kernel/pci-swiotlb.c
  F:    include/linux/swiotlb.h
  
 +SWITCHDEV
 +M:    Jiri Pirko <jiri@resnulli.us>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    net/switchdev/
 +F:    include/net/switchdev.h
 +
  SYNOPSYS ARC ARCHITECTURE
  M:    Vineet Gupta <vgupta@synopsys.com>
  S:    Supported
@@@ -9346,7 -9162,7 +9352,7 @@@ S:      Maintaine
  F:    drivers/media/i2c/tda9840*
  
  TEA5761 TUNER DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -9354,7 -9170,7 +9360,7 @@@ S:      Odd fixe
  F:    drivers/media/tuners/tea5761.*
  
  TEA5767 TUNER DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -9666,7 -9482,7 +9672,7 @@@ F:      include/linux/shmem_fs.
  F:    mm/shmem.c
  
  TM6000 VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -10486,15 -10302,8 +10492,15 @@@ L: linux-edac@vger.kernel.or
  S:    Maintained
  F:    arch/x86/kernel/cpu/mcheck/*
  
 +X86 VDSO
 +M:    Andy Lutomirski <luto@amacapital.net>
 +L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/vdso
 +S:    Maintained
 +F:    arch/x86/vdso/
 +
  XC2028/3028 TUNER DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
diff --combined drivers/tty/n_tty.c
@@@ -321,7 -321,8 +321,8 @@@ static void n_tty_check_unthrottle(stru
  
  static inline void put_tty_queue(unsigned char c, struct n_tty_data *ldata)
  {
-       *read_buf_addr(ldata, ldata->read_head++) = c;
+       *read_buf_addr(ldata, ldata->read_head) = c;
+       ldata->read_head++;
  }
  
  /**
@@@ -351,13 -352,13 +352,13 @@@ static void n_tty_packet_mode_flush(str
  {
        unsigned long flags;
  
-       spin_lock_irqsave(&tty->ctrl_lock, flags);
        if (tty->link->packet) {
+               spin_lock_irqsave(&tty->ctrl_lock, flags);
                tty->ctrl_status |= TIOCPKT_FLUSHREAD;
+               spin_unlock_irqrestore(&tty->ctrl_lock, flags);
                if (waitqueue_active(&tty->link->read_wait))
                        wake_up_interruptible(&tty->link->read_wait);
        }
-       spin_unlock_irqrestore(&tty->ctrl_lock, flags);
  }
  
  /**
@@@ -2123,12 -2124,11 +2124,11 @@@ static ssize_t n_tty_read(struct tty_st
  {
        struct n_tty_data *ldata = tty->disc_data;
        unsigned char __user *b = buf;
 -      DECLARE_WAITQUEUE(wait, current);
 +      DEFINE_WAIT_FUNC(wait, woken_wake_function);
        int c;
        int minimum, time;
        ssize_t retval = 0;
        long timeout;
-       unsigned long flags;
        int packet;
  
        c = job_control(tty, file);
  
        add_wait_queue(&tty->read_wait, &wait);
        while (nr) {
 -              /* This statement must be first before checking for input
 -                 so that any interrupt will set the state back to
 -                 TASK_RUNNING. */
 -              set_current_state(TASK_INTERRUPTIBLE);
 -
                /* First test for status change. */
                if (packet && tty->link->ctrl_status) {
                        unsigned char cs;
                        if (b != buf)
                                break;
-                       spin_lock_irqsave(&tty->link->ctrl_lock, flags);
+                       spin_lock_irq(&tty->link->ctrl_lock);
                        cs = tty->link->ctrl_status;
                        tty->link->ctrl_status = 0;
-                       spin_unlock_irqrestore(&tty->link->ctrl_lock, flags);
+                       spin_unlock_irq(&tty->link->ctrl_lock);
                        if (tty_put_user(tty, cs, b++)) {
                                retval = -EFAULT;
                                b--;
  
                if (!input_available_p(tty, 0)) {
                        if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) {
-                               up_read(&tty->termios_rwsem);
-                               tty_flush_to_ldisc(tty);
-                               down_read(&tty->termios_rwsem);
-                               if (!input_available_p(tty, 0)) {
-                                       retval = -EIO;
-                                       break;
-                               }
-                       } else {
-                               if (tty_hung_up_p(file))
-                                       break;
-                               if (!timeout)
-                                       break;
-                               if (file->f_flags & O_NONBLOCK) {
-                                       retval = -EAGAIN;
-                                       break;
-                               }
-                               if (signal_pending(current)) {
-                                       retval = -ERESTARTSYS;
-                                       break;
-                               }
-                               n_tty_set_room(tty);
-                               up_read(&tty->termios_rwsem);
-                               timeout = wait_woken(&wait, TASK_INTERRUPTIBLE,
-                                                    timeout);
-                               down_read(&tty->termios_rwsem);
-                               continue;
+                               retval = -EIO;
+                               break;
                        }
-               }
-               /* Deal with packet mode. */
-               if (packet && b == buf) {
-                       if (tty_put_user(tty, TIOCPKT_DATA, b++)) {
-                               retval = -EFAULT;
-                               b--;
+                       if (tty_hung_up_p(file))
+                               break;
+                       if (!timeout)
+                               break;
+                       if (file->f_flags & O_NONBLOCK) {
+                               retval = -EAGAIN;
                                break;
                        }
-                       nr--;
+                       if (signal_pending(current)) {
+                               retval = -ERESTARTSYS;
+                               break;
+                       }
+                       n_tty_set_room(tty);
+                       up_read(&tty->termios_rwsem);
 -                      timeout = schedule_timeout(timeout);
++                      timeout = wait_woken(&wait, TASK_INTERRUPTIBLE,
++                                           timeout);
+                       down_read(&tty->termios_rwsem);
+                       continue;
                }
 -              __set_current_state(TASK_RUNNING);
  
                if (ldata->icanon && !L_EXTPROC(tty)) {
                        retval = canon_copy_from_read_buf(tty, &b, &nr);
                                break;
                } else {
                        int uncopied;
-                       /* The copy function takes the read lock and handles
-                          locking internally for this case */
+                       /* Deal with packet mode. */
+                       if (packet && b == buf) {
+                               if (tty_put_user(tty, TIOCPKT_DATA, b++)) {
+                                       retval = -EFAULT;
+                                       b--;
+                                       break;
+                               }
+                               nr--;
+                       }
                        uncopied = copy_from_read_buf(tty, &b, &nr);
                        uncopied += copy_from_read_buf(tty, &b, &nr);
                        if (uncopied) {
  
        mutex_unlock(&ldata->atomic_read_lock);
  
 -      __set_current_state(TASK_RUNNING);
        if (b - buf)
                retval = b - buf;
  
@@@ -2301,7 -2300,7 +2294,7 @@@ static ssize_t n_tty_write(struct tty_s
                           const unsigned char *buf, size_t nr)
  {
        const unsigned char *b = buf;
 -      DECLARE_WAITQUEUE(wait, current);
 +      DEFINE_WAIT_FUNC(wait, woken_wake_function);
        int c;
        ssize_t retval = 0;
  
  
        add_wait_queue(&tty->write_wait, &wait);
        while (1) {
 -              set_current_state(TASK_INTERRUPTIBLE);
                if (signal_pending(current)) {
                        retval = -ERESTARTSYS;
                        break;
                }
                up_read(&tty->termios_rwsem);
  
 -              schedule();
 +              wait_woken(&wait, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
  
                down_read(&tty->termios_rwsem);
        }
  break_out:
 -      __set_current_state(TASK_RUNNING);
        remove_wait_queue(&tty->write_wait, &wait);
        if (b - buf != nr && tty->fasync)
                set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
@@@ -249,14 -249,14 +249,14 @@@ config SERIAL_SAMSUN
  
  config SERIAL_SAMSUNG_UARTS_4
        bool
 -      depends on PLAT_SAMSUNG
 +      depends on SERIAL_SAMSUNG
        default y if !(CPU_S3C2410 || CPU_S3C2412 || CPU_S3C2440 || CPU_S3C2442)
        help
          Internal node for the common case of 4 Samsung compatible UARTs
  
  config SERIAL_SAMSUNG_UARTS
        int
 -      depends on PLAT_SAMSUNG
 +      depends on SERIAL_SAMSUNG
        default 4 if SERIAL_SAMSUNG_UARTS_4 || CPU_S3C2416
        default 3
        help
@@@ -701,7 -701,7 +701,7 @@@ config PDC_CONSOL
          Saying Y here will enable the software based PDC console to be 
          used as the system console.  This is useful for machines in 
          which the hardware based console has not been written yet.  The
 -        following steps must be competed to use the PDC console:
 +        following steps must be completed to use the PDC console:
  
            1. create the device entry (mknod /dev/ttyB0 c 11 0)
            2. Edit the /etc/inittab to start a getty listening on /dev/ttyB0
@@@ -1029,11 -1029,11 +1029,11 @@@ config SERIAL_VR41XX_CONSOL
          a console on a serial port, say Y.  Otherwise, say N.
  
  config SERIAL_JSM
-       tristate "Digi International NEO PCI Support"
+       tristate "Digi International NEO and Classic PCI Support"
        depends on PCI
        select SERIAL_CORE
        help
-         This is a driver for Digi International's Neo series
+         This is a driver for Digi International's Neo and Classic series
          of cards which provide multiple serial ports. You would need
          something like this to connect more than two modems to your Linux
          box, for instance in order to become a dial-in server. This driver
@@@ -1281,22 -1281,25 +1281,25 @@@ config SERIAL_TIMBERDAL
        Add support for UART controller on timberdale.
  
  config SERIAL_BCM63XX
-       tristate "bcm63xx serial port support"
+       tristate "Broadcom BCM63xx/BCM33xx UART support"
        select SERIAL_CORE
-       depends on BCM63XX
+       depends on MIPS || ARM || COMPILE_TEST
        help
-         If you have a bcm63xx CPU, you can enable its onboard
-         serial port by enabling this options.
+         This enables the driver for the onchip UART core found on
+         the following chipsets:
  
-           To compile this driver as a module, choose M here: the
-           module will be called bcm963xx_uart.
+           BCM33xx (cable modem)
+           BCM63xx/BCM63xxx (DSL)
+           BCM68xx (PON)
+           BCM7xxx (STB) - DOCSIS console
  
  config SERIAL_BCM63XX_CONSOLE
-       bool "Console on bcm63xx serial port"
+       bool "Console on BCM63xx serial port"
        depends on SERIAL_BCM63XX=y
        select SERIAL_CORE_CONSOLE
+       select SERIAL_EARLYCON
        help
-         If you have enabled the serial port on the bcm63xx CPU
+         If you have enabled the serial port on the BCM63xx CPU
          you can make it the console by answering Y to this option.
  
  config SERIAL_GRLIB_GAISLER_APBUART
@@@ -1408,6 -1411,7 +1411,7 @@@ config SERIAL_MXS_AUAR
        depends on ARCH_MXS
        tristate "MXS AUART support"
        select SERIAL_CORE
+       select SERIAL_MCTRL_GPIO if GPIOLIB
        help
          This driver supports the MXS Application UART (AUART) port.
  
diff --combined include/linux/kernel.h
@@@ -162,7 -162,6 +162,7 @@@ extern int _cond_resched(void)
  #endif
  
  #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
 +  void ___might_sleep(const char *file, int line, int preempt_offset);
    void __might_sleep(const char *file, int line, int preempt_offset);
  /**
   * might_sleep - annotation for functions that can sleep
   */
  # define might_sleep() \
        do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0)
 +# define sched_annotate_sleep()       __set_current_state(TASK_RUNNING)
  #else
 +  static inline void ___might_sleep(const char *file, int line,
 +                                 int preempt_offset) { }
    static inline void __might_sleep(const char *file, int line,
                                   int preempt_offset) { }
  # define might_sleep() do { might_resched(); } while (0)
 +# define sched_annotate_sleep() do { } while (0)
  #endif
  
  #define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
@@@ -416,9 -411,6 +416,6 @@@ extern int __kernel_text_address(unsign
  extern int kernel_text_address(unsigned long addr);
  extern int func_ptr_is_kernel_text(void *ptr);
  
- struct pid;
- extern struct pid *session_of_pgrp(struct pid *pgrp);
  unsigned long int_sqrt(unsigned long);
  
  extern void bust_spinlocks(int yes);
@@@ -427,7 -419,6 +424,7 @@@ extern int panic_timeout
  extern int panic_on_oops;
  extern int panic_on_unrecovered_nmi;
  extern int panic_on_io_nmi;
 +extern int panic_on_warn;
  extern int sysctl_panic_on_stackoverflow;
  /*
   * Only to be used by arch init code. If the user over-wrote the default
diff --combined kernel/exit.c
@@@ -118,10 -118,13 +118,10 @@@ static void __exit_signal(struct task_s
        }
  
        /*
 -       * Accumulate here the counters for all threads but the group leader
 -       * as they die, so they can be added into the process-wide totals
 -       * when those are taken.  The group leader stays around as a zombie as
 -       * long as there are other threads.  When it gets reaped, the exit.c
 -       * code will add its counts into these totals.  We won't ever get here
 -       * for the group leader, since it will have been the last reference on
 -       * the signal_struct.
 +       * Accumulate here the counters for all threads as they die. We could
 +       * skip the group leader because it is the last user of signal_struct,
 +       * but we want to avoid the race with thread_group_cputime() which can
 +       * see the empty ->thread_head list.
         */
        task_cputime(tsk, &utime, &stime);
        write_seqlock(&sig->stats_lock);
@@@ -212,27 -215,6 +212,6 @@@ repeat
  }
  
  /*
-  * This checks not only the pgrp, but falls back on the pid if no
-  * satisfactory pgrp is found. I dunno - gdb doesn't work correctly
-  * without this...
-  *
-  * The caller must hold rcu lock or the tasklist lock.
-  */
- struct pid *session_of_pgrp(struct pid *pgrp)
- {
-       struct task_struct *p;
-       struct pid *sid = NULL;
-       p = pid_task(pgrp, PIDTYPE_PGID);
-       if (p == NULL)
-               p = pid_task(pgrp, PIDTYPE_PID);
-       if (p != NULL)
-               sid = task_session(p);
-       return sid;
- }
- /*
   * Determine if a process group is "orphaned", according to the POSIX
   * definition in 2.2.2.52.  Orphaned process groups are not to be affected
   * by terminal-generated stop signals.  Newly orphaned process groups are
@@@ -459,44 -441,6 +438,44 @@@ static void exit_mm(struct task_struct 
        clear_thread_flag(TIF_MEMDIE);
  }
  
 +static struct task_struct *find_alive_thread(struct task_struct *p)
 +{
 +      struct task_struct *t;
 +
 +      for_each_thread(p, t) {
 +              if (!(t->flags & PF_EXITING))
 +                      return t;
 +      }
 +      return NULL;
 +}
 +
 +static struct task_struct *find_child_reaper(struct task_struct *father)
 +      __releases(&tasklist_lock)
 +      __acquires(&tasklist_lock)
 +{
 +      struct pid_namespace *pid_ns = task_active_pid_ns(father);
 +      struct task_struct *reaper = pid_ns->child_reaper;
 +
 +      if (likely(reaper != father))
 +              return reaper;
 +
 +      reaper = find_alive_thread(father);
 +      if (reaper) {
 +              pid_ns->child_reaper = reaper;
 +              return reaper;
 +      }
 +
 +      write_unlock_irq(&tasklist_lock);
 +      if (unlikely(pid_ns == &init_pid_ns)) {
 +              panic("Attempted to kill init! exitcode=0x%08x\n",
 +                      father->signal->group_exit_code ?: father->exit_code);
 +      }
 +      zap_pid_ns_processes(pid_ns);
 +      write_lock_irq(&tasklist_lock);
 +
 +      return father;
 +}
 +
  /*
   * When we die, we re-parent all our children, and try to:
   * 1. give them to another thread in our thread group, if such a member exists
   *    child_subreaper for its children (like a service manager)
   * 3. give it to the init process (PID 1) in our pid namespace
   */
 -static struct task_struct *find_new_reaper(struct task_struct *father)
 -      __releases(&tasklist_lock)
 -      __acquires(&tasklist_lock)
 +static struct task_struct *find_new_reaper(struct task_struct *father,
 +                                         struct task_struct *child_reaper)
  {
 -      struct pid_namespace *pid_ns = task_active_pid_ns(father);
 -      struct task_struct *thread;
 +      struct task_struct *thread, *reaper;
  
 -      thread = father;
 -      while_each_thread(father, thread) {
 -              if (thread->flags & PF_EXITING)
 -                      continue;
 -              if (unlikely(pid_ns->child_reaper == father))
 -                      pid_ns->child_reaper = thread;
 +      thread = find_alive_thread(father);
 +      if (thread)
                return thread;
 -      }
 -
 -      if (unlikely(pid_ns->child_reaper == father)) {
 -              write_unlock_irq(&tasklist_lock);
 -              if (unlikely(pid_ns == &init_pid_ns)) {
 -                      panic("Attempted to kill init! exitcode=0x%08x\n",
 -                              father->signal->group_exit_code ?:
 -                                      father->exit_code);
 -              }
 -
 -              zap_pid_ns_processes(pid_ns);
 -              write_lock_irq(&tasklist_lock);
 -      } else if (father->signal->has_child_subreaper) {
 -              struct task_struct *reaper;
  
 +      if (father->signal->has_child_subreaper) {
                /*
 -               * Find the first ancestor marked as child_subreaper.
 -               * Note that the code below checks same_thread_group(reaper,
 -               * pid_ns->child_reaper).  This is what we need to DTRT in a
 -               * PID namespace. However we still need the check above, see
 -               * http://marc.info/?l=linux-kernel&m=131385460420380
 +               * Find the first ->is_child_subreaper ancestor in our pid_ns.
 +               * We start from father to ensure we can not look into another
 +               * namespace, this is safe because all its threads are dead.
                 */
 -              for (reaper = father->real_parent;
 -                   reaper != &init_task;
 +              for (reaper = father;
 +                   !same_thread_group(reaper, child_reaper);
                     reaper = reaper->real_parent) {
 -                      if (same_thread_group(reaper, pid_ns->child_reaper))
 +                      /* call_usermodehelper() descendants need this check */
 +                      if (reaper == &init_task)
                                break;
                        if (!reaper->signal->is_child_subreaper)
                                continue;
 -                      thread = reaper;
 -                      do {
 -                              if (!(thread->flags & PF_EXITING))
 -                                      return reaper;
 -                      } while_each_thread(reaper, thread);
 +                      thread = find_alive_thread(reaper);
 +                      if (thread)
 +                              return thread;
                }
        }
  
 -      return pid_ns->child_reaper;
 +      return child_reaper;
  }
  
  /*
  static void reparent_leader(struct task_struct *father, struct task_struct *p,
                                struct list_head *dead)
  {
 -      list_move_tail(&p->sibling, &p->real_parent->children);
 -
 -      if (p->exit_state == EXIT_DEAD)
 -              return;
 -      /*
 -       * If this is a threaded reparent there is no need to
 -       * notify anyone anything has happened.
 -       */
 -      if (same_thread_group(p->real_parent, father))
 +      if (unlikely(p->exit_state == EXIT_DEAD))
                return;
  
        /* We don't want people slaying init. */
            p->exit_state == EXIT_ZOMBIE && thread_group_empty(p)) {
                if (do_notify_parent(p, p->exit_signal)) {
                        p->exit_state = EXIT_DEAD;
 -                      list_move_tail(&p->sibling, dead);
 +                      list_add(&p->ptrace_entry, dead);
                }
        }
  
        kill_orphaned_pgrp(p, father);
  }
  
 -static void forget_original_parent(struct task_struct *father)
 +/*
 + * This does two things:
 + *
 + * A.  Make init inherit all the child processes
 + * B.  Check to see if any process groups have become orphaned
 + *    as a result of our exiting, and if they have any stopped
 + *    jobs, send them a SIGHUP and then a SIGCONT.  (POSIX 3.2.2.2)
 + */
 +static void forget_original_parent(struct task_struct *father,
 +                                      struct list_head *dead)
  {
 -      struct task_struct *p, *n, *reaper;
 -      LIST_HEAD(dead_children);
 +      struct task_struct *p, *t, *reaper;
  
 -      write_lock_irq(&tasklist_lock);
 -      /*
 -       * Note that exit_ptrace() and find_new_reaper() might
 -       * drop tasklist_lock and reacquire it.
 -       */
 -      exit_ptrace(father);
 -      reaper = find_new_reaper(father);
 +      if (unlikely(!list_empty(&father->ptraced)))
 +              exit_ptrace(father, dead);
  
 -      list_for_each_entry_safe(p, n, &father->children, sibling) {
 -              struct task_struct *t = p;
 +      /* Can drop and reacquire tasklist_lock */
 +      reaper = find_child_reaper(father);
 +      if (list_empty(&father->children))
 +              return;
  
 -              do {
 +      reaper = find_new_reaper(father, reaper);
 +      list_for_each_entry(p, &father->children, sibling) {
 +              for_each_thread(p, t) {
                        t->real_parent = reaper;
 -                      if (t->parent == father) {
 -                              BUG_ON(t->ptrace);
 +                      BUG_ON((!t->ptrace) != (t->parent == father));
 +                      if (likely(!t->ptrace))
                                t->parent = t->real_parent;
 -                      }
                        if (t->pdeath_signal)
                                group_send_sig_info(t->pdeath_signal,
                                                    SEND_SIG_NOINFO, t);
 -              } while_each_thread(p, t);
 -              reparent_leader(father, p, &dead_children);
 -      }
 -      write_unlock_irq(&tasklist_lock);
 -
 -      BUG_ON(!list_empty(&father->children));
 -
 -      list_for_each_entry_safe(p, n, &dead_children, sibling) {
 -              list_del_init(&p->sibling);
 -              release_task(p);
 +              }
 +              /*
 +               * If this is a threaded reparent there is no need to
 +               * notify anyone anything has happened.
 +               */
 +              if (!same_thread_group(reaper, father))
 +                      reparent_leader(father, p, dead);
        }
 +      list_splice_tail_init(&father->children, &reaper->children);
  }
  
  /*
  static void exit_notify(struct task_struct *tsk, int group_dead)
  {
        bool autoreap;
 -
 -      /*
 -       * This does two things:
 -       *
 -       * A.  Make init inherit all the child processes
 -       * B.  Check to see if any process groups have become orphaned
 -       *      as a result of our exiting, and if they have any stopped
 -       *      jobs, send them a SIGHUP and then a SIGCONT.  (POSIX 3.2.2.2)
 -       */
 -      forget_original_parent(tsk);
 +      struct task_struct *p, *n;
 +      LIST_HEAD(dead);
  
        write_lock_irq(&tasklist_lock);
 +      forget_original_parent(tsk, &dead);
 +
        if (group_dead)
                kill_orphaned_pgrp(tsk->group_leader, NULL);
  
        }
  
        tsk->exit_state = autoreap ? EXIT_DEAD : EXIT_ZOMBIE;
 +      if (tsk->exit_state == EXIT_DEAD)
 +              list_add(&tsk->ptrace_entry, &dead);
  
        /* mt-exec, de_thread() is waiting for group leader */
        if (unlikely(tsk->signal->notify_count < 0))
                wake_up_process(tsk->signal->group_exit_task);
        write_unlock_irq(&tasklist_lock);
  
 -      /* If the process is dead, release it - nobody will wait for it */
 -      if (autoreap)
 -              release_task(tsk);
 +      list_for_each_entry_safe(p, n, &dead, ptrace_entry) {
 +              list_del_init(&p->ptrace_entry);
 +              release_task(p);
 +      }
  }
  
  #ifdef CONFIG_DEBUG_STACK_USAGE
@@@ -988,7 -961,8 +967,7 @@@ static int wait_noreap_copyout(struct w
   */
  static int wait_task_zombie(struct wait_opts *wo, struct task_struct *p)
  {
 -      unsigned long state;
 -      int retval, status, traced;
 +      int state, retval, status;
        pid_t pid = task_pid_vnr(p);
        uid_t uid = from_kuid_munged(current_user_ns(), task_uid(p));
        struct siginfo __user *infop;
  
                get_task_struct(p);
                read_unlock(&tasklist_lock);
 +              sched_annotate_sleep();
 +
                if ((exit_code & 0x7f) == 0) {
                        why = CLD_EXITED;
                        status = exit_code >> 8;
                }
                return wait_noreap_copyout(wo, p, pid, uid, why, status);
        }
 -
 -      traced = ptrace_reparented(p);
        /*
         * Move the task's state to DEAD/TRACE, only one thread can do this.
         */
 -      state = traced && thread_group_leader(p) ? EXIT_TRACE : EXIT_DEAD;
 +      state = (ptrace_reparented(p) && thread_group_leader(p)) ?
 +              EXIT_TRACE : EXIT_DEAD;
        if (cmpxchg(&p->exit_state, EXIT_ZOMBIE, state) != EXIT_ZOMBIE)
                return 0;
        /*
 -       * It can be ptraced but not reparented, check
 -       * thread_group_leader() to filter out sub-threads.
 +       * We own this thread, nobody else can reap it.
         */
 -      if (likely(!traced) && thread_group_leader(p)) {
 -              struct signal_struct *psig;
 -              struct signal_struct *sig;
 +      read_unlock(&tasklist_lock);
 +      sched_annotate_sleep();
 +
 +      /*
 +       * Check thread_group_leader() to exclude the traced sub-threads.
 +       */
 +      if (state == EXIT_DEAD && thread_group_leader(p)) {
 +              struct signal_struct *sig = p->signal;
 +              struct signal_struct *psig = current->signal;
                unsigned long maxrss;
                cputime_t tgutime, tgstime;
  
                 * accumulate in the parent's signal_struct c* fields.
                 *
                 * We don't bother to take a lock here to protect these
 -               * p->signal fields, because they are only touched by
 -               * __exit_signal, which runs with tasklist_lock
 -               * write-locked anyway, and so is excluded here.  We do
 -               * need to protect the access to parent->signal fields,
 -               * as other threads in the parent group can be right
 -               * here reaping other children at the same time.
 +               * p->signal fields because the whole thread group is dead
 +               * and nobody can change them.
 +               *
 +               * psig->stats_lock also protects us from our sub-theads
 +               * which can reap other children at the same time. Until
 +               * we change k_getrusage()-like users to rely on this lock
 +               * we have to take ->siglock as well.
                 *
                 * We use thread_group_cputime_adjusted() to get times for
                 * the thread group, which consolidates times for all threads
                 * in the group including the group leader.
                 */
                thread_group_cputime_adjusted(p, &tgutime, &tgstime);
 -              spin_lock_irq(&p->real_parent->sighand->siglock);
 -              psig = p->real_parent->signal;
 -              sig = p->signal;
 +              spin_lock_irq(&current->sighand->siglock);
                write_seqlock(&psig->stats_lock);
                psig->cutime += tgutime + sig->cutime;
                psig->cstime += tgstime + sig->cstime;
                task_io_accounting_add(&psig->ioac, &p->ioac);
                task_io_accounting_add(&psig->ioac, &sig->ioac);
                write_sequnlock(&psig->stats_lock);
 -              spin_unlock_irq(&p->real_parent->sighand->siglock);
 +              spin_unlock_irq(&current->sighand->siglock);
        }
  
 -      /*
 -       * Now we are sure this task is interesting, and no other
 -       * thread can reap it because we its state == DEAD/TRACE.
 -       */
 -      read_unlock(&tasklist_lock);
 -
        retval = wo->wo_rusage
                ? getrusage(p, RUSAGE_BOTH, wo->wo_rusage) : 0;
        status = (p->signal->flags & SIGNAL_GROUP_EXIT)
@@@ -1214,7 -1189,6 +1193,7 @@@ unlock_sig
        pid = task_pid_vnr(p);
        why = ptrace ? CLD_TRAPPED : CLD_STOPPED;
        read_unlock(&tasklist_lock);
 +      sched_annotate_sleep();
  
        if (unlikely(wo->wo_flags & WNOWAIT))
                return wait_noreap_copyout(wo, p, pid, uid, why, exit_code);
@@@ -1277,7 -1251,6 +1256,7 @@@ static int wait_task_continued(struct w
        pid = task_pid_vnr(p);
        get_task_struct(p);
        read_unlock(&tasklist_lock);
 +      sched_annotate_sleep();
  
        if (!wo->wo_info) {
                retval = wo->wo_rusage