]> Git Repo - linux.git/commitdiff
Merge branch 'delete-mca' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg...
authorLinus Torvalds <[email protected]>
Thu, 24 May 2012 00:12:06 +0000 (17:12 -0700)
committerLinus Torvalds <[email protected]>
Thu, 24 May 2012 00:12:06 +0000 (17:12 -0700)
Pull the MCA deletion branch from Paul Gortmaker:
 "It was good that we could support MCA machines back in the day, but
  realistically, nobody is using them anymore.  They were mostly limited
  to 386-sx 16MHz CPU and some 486 class machines and never more than
  64MB of RAM.  Even the enthusiast hobbyist community seems to have
  dried up close to ten years ago, based on what you can find searching
  various websites dedicated to the relatively short lived hardware.

  So lets remove the support relating to CONFIG_MCA.  There is no point
  carrying this forward, wasting cycles doing routine maintenance on it;
  wasting allyesconfig build time on validating it, wasting I/O on git
  grep'ping over it, and so on."

Let's see if anybody screams.  It generally has compiled, and James
Bottomley pointed out that there was a MCA extension from NCR that
allowed for up to 4GB of memory and PPro-class machines.  So in *theory*
there may be users out there.

But even James (technically listed as a maintainer) doesn't actually
have a system, and while Alan Cox claims to have a machine in his cellar
that he offered to anybody who wants to take it off his hands, he didn't
argue for keeping MCA support either.

So we could bring it back.  But somebody had better speak up and talk
about how they have actually been using said MCA hardware with modern
kernels for us to do that.  And David already took the patch to delete
all the networking driver code (commit a5e371f61ad3: "drivers/net:
delete all code/drivers depending on CONFIG_MCA").

* 'delete-mca' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
  MCA: delete all remaining traces of microchannel bus support.
  scsi: delete the MCA specific drivers and driver code
  serial: delete the MCA specific 8250 support.
  arm: remove ability to select CONFIG_MCA

17 files changed:
1  2 
Documentation/devices.txt
Documentation/kernel-parameters.txt
MAINTAINERS
arch/arm/Kconfig
arch/frv/include/asm/processor.h
arch/x86/Kconfig
arch/x86/kernel/Makefile
arch/x86/kernel/acpi/boot.c
arch/x86/kernel/apic/io_apic.c
arch/x86/kernel/nmi.c
arch/x86/kernel/setup.c
arch/x86/kernel/traps.c
drivers/Makefile
drivers/scsi/Kconfig
drivers/tty/serial/8250/Kconfig
drivers/tty/serial/8250/Makefile
include/linux/serial_8250.h

index 5941f5136c6b6adadf1f28554278896280782ccd,c162be1c32341446ddf7aa9d789d39cb48565d08..47a154f302900a9b7448723e171e7fbdc2793054
@@@ -98,8 -98,7 +98,8 @@@ Your cooperation is appreciated
                  8 = /dev/random       Nondeterministic random number gen.
                  9 = /dev/urandom      Faster, less secure random number gen.
                 10 = /dev/aio          Asynchronous I/O notification interface
 -               11 = /dev/kmsg         Writes to this come out as printk's
 +               11 = /dev/kmsg         Writes to this come out as printk's, reads
 +                                      export the buffered printk records.
                 12 = /dev/oldmem       Used by crashdump kernels to access
                                        the memory of the kernel that crashed.
  
                    ...
                 31 = /dev/tap15        16th Ethertap device
  
-  36 block     MCA ESDI hard disk
-                 0 = /dev/eda          First ESDI disk whole disk
-                64 = /dev/edb          Second ESDI disk whole disk
-                   ...
-               Partitions are handled in the same way as IDE disks
-               (see major number 3).
+  36 block     OBSOLETE (was MCA ESDI hard disk)
  
   37 char      IDE tape
                  0 = /dev/ht0          First IDE tape
index 8cb10f77c723f4d4d6290684a5a698ff739417db,38cad53620cc9a02d9dd0db1231c5e6965276f08..5b6e5849222901c04007b9f2c81811b12a51f49a
@@@ -70,7 -70,6 +70,6 @@@ parameter is applicable
        M68k    M68k architecture is enabled.
                        These options have more detailed description inside of
                        Documentation/m68k/kernel-options.txt.
-       MCA     MCA bus support is enabled.
        MDA     MDA console support is enabled.
        MIPS    MIPS architecture is enabled.
        MOUSE   Appropriate mouse support is enabled.
        USB     USB support is enabled.
        USBHID  USB Human Interface Device support is enabled.
        V4L     Video For Linux support is enabled.
 +      VMMIO   Driver for memory mapped virtio devices is enabled.
        VGA     The VGA console has been enabled.
        VT      Virtual terminal support is enabled.
        WDT     Watchdog support is enabled.
@@@ -611,7 -609,7 +610,7 @@@ bytes respectively. Such letter suffixe
  
        ddebug_query=   [KNL,DYNAMIC_DEBUG] Enable debug messages at early boot
                        time. See Documentation/dynamic-debug-howto.txt for
 -                      details.
 +                      details.  Deprecated, see dyndbg.
  
        debug           [KNL] Enable kernel debugging (events log level).
  
  
        dscc4.setup=    [NET]
  
 +      dyndbg[="val"]          [KNL,DYNAMIC_DEBUG]
 +      module.dyndbg[="val"]
 +                      Enable debug messages at boot time.  See
 +                      Documentation/dynamic-debug-howto.txt for details.
 +
        earlycon=       [KNL] Output early console device and options.
                uart[8250],io,<addr>[,options]
                uart[8250],mmio,<addr>[,options]
                                on: Turn realloc on
                realloc         same as realloc=on
                noari           do not use PCIe ARI.
 +              pcie_scan_all   Scan all possible PCIe devices.  Otherwise we
 +                              only look for one device below a PCIe downstream
 +                              port.
  
        pcie_aspm=      [PCIE] Forcibly enable or disable PCIe Active State Power
                        Management.
        ramdisk_size=   [RAM] Sizes of RAM disks in kilobytes
                        See Documentation/blockdev/ramdisk.txt.
  
 -      rcupdate.blimit=        [KNL,BOOT]
 +      rcutree.blimit= [KNL,BOOT]
                        Set maximum number of finished RCU callbacks to process
                        in one batch.
  
 -      rcupdate.qhimark=       [KNL,BOOT]
 +      rcutree.qhimark=        [KNL,BOOT]
                        Set threshold of queued
                        RCU callbacks over which batch limiting is disabled.
  
 -      rcupdate.qlowmark=      [KNL,BOOT]
 +      rcutree.qlowmark=       [KNL,BOOT]
                        Set threshold of queued RCU callbacks below which
                        batch limiting is re-enabled.
  
 +      rcutree.rcu_cpu_stall_suppress= [KNL,BOOT]
 +                      Suppress RCU CPU stall warning messages.
 +
 +      rcutree.rcu_cpu_stall_timeout= [KNL,BOOT]
 +                      Set timeout for RCU CPU stall warning messages.
 +
 +      rcutorture.fqs_duration= [KNL,BOOT]
 +                      Set duration of force_quiescent_state bursts.
 +
 +      rcutorture.fqs_holdoff= [KNL,BOOT]
 +                      Set holdoff time within force_quiescent_state bursts.
 +
 +      rcutorture.fqs_stutter= [KNL,BOOT]
 +                      Set wait time between force_quiescent_state bursts.
 +
 +      rcutorture.irqreader= [KNL,BOOT]
 +                      Test RCU readers from irq handlers.
 +
 +      rcutorture.n_barrier_cbs= [KNL,BOOT]
 +                      Set callbacks/threads for rcu_barrier() testing.
 +
 +      rcutorture.nfakewriters= [KNL,BOOT]
 +                      Set number of concurrent RCU writers.  These just
 +                      stress RCU, they don't participate in the actual
 +                      test, hence the "fake".
 +
 +      rcutorture.nreaders= [KNL,BOOT]
 +                      Set number of RCU readers.
 +
 +      rcutorture.onoff_holdoff= [KNL,BOOT]
 +                      Set time (s) after boot for CPU-hotplug testing.
 +
 +      rcutorture.onoff_interval= [KNL,BOOT]
 +                      Set time (s) between CPU-hotplug operations, or
 +                      zero to disable CPU-hotplug testing.
 +
 +      rcutorture.shuffle_interval= [KNL,BOOT]
 +                      Set task-shuffle interval (s).  Shuffling tasks
 +                      allows some CPUs to go into dyntick-idle mode
 +                      during the rcutorture test.
 +
 +      rcutorture.shutdown_secs= [KNL,BOOT]
 +                      Set time (s) after boot system shutdown.  This
 +                      is useful for hands-off automated testing.
 +
 +      rcutorture.stall_cpu= [KNL,BOOT]
 +                      Duration of CPU stall (s) to test RCU CPU stall
 +                      warnings, zero to disable.
 +
 +      rcutorture.stall_cpu_holdoff= [KNL,BOOT]
 +                      Time to wait (s) after boot before inducing stall.
 +
 +      rcutorture.stat_interval= [KNL,BOOT]
 +                      Time (s) between statistics printk()s.
 +
 +      rcutorture.stutter= [KNL,BOOT]
 +                      Time (s) to stutter testing, for example, specifying
 +                      five seconds causes the test to run for five seconds,
 +                      wait for five seconds, and so on.  This tests RCU's
 +                      ability to transition abruptly to and from idle.
 +
 +      rcutorture.test_boost= [KNL,BOOT]
 +                      Test RCU priority boosting?  0=no, 1=maybe, 2=yes.
 +                      "Maybe" means test if the RCU implementation
 +                      under test support RCU priority boosting.
 +
 +      rcutorture.test_boost_duration= [KNL,BOOT]
 +                      Duration (s) of each individual boost test.
 +
 +      rcutorture.test_boost_interval= [KNL,BOOT]
 +                      Interval (s) between each boost test.
 +
 +      rcutorture.test_no_idle_hz= [KNL,BOOT]
 +                      Test RCU's dyntick-idle handling.  See also the
 +                      rcutorture.shuffle_interval parameter.
 +
 +      rcutorture.torture_type= [KNL,BOOT]
 +                      Specify the RCU implementation to test.
 +
 +      rcutorture.verbose= [KNL,BOOT]
 +                      Enable additional printk() statements.
 +
        rdinit=         [KNL]
                        Format: <full_path>
                        Run specified binary instead of /init from the ramdisk,
  
        resume=         [SWSUSP]
                        Specify the partition device for software suspend
 +                      Format:
 +                      {/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>}
  
        resume_offset=  [SWSUSP]
                        Specify the offset from the beginning of the partition
        video=          [FB] Frame buffer configuration
                        See Documentation/fb/modedb.txt.
  
 +      virtio_mmio.device=
 +                      [VMMIO] Memory mapped virtio (platform) device.
 +
 +                              <size>@<baseaddr>:<irq>[:<id>]
 +                      where:
 +                              <size>     := size (can use standard suffixes
 +                                              like K, M and G)
 +                              <baseaddr> := physical base address
 +                              <irq>      := interrupt number (as passed to
 +                                              request_irq())
 +                              <id>       := (optional) platform device id
 +                      example:
 +                              virtio_mmio.device=1K@0x100b0000:48:7
 +
 +                      Can be used multiple times for multiple devices.
 +
        vga=            [BOOT,X86-32] Select a particular video mode
                        See Documentation/x86/boot.txt and
                        Documentation/svga.txt.
diff --combined MAINTAINERS
index 96ec7b2e25221eb98630b49ed78f7b57d9df11f4,9fa728b53d4ec5cd2a7bffbddb7da40fa16139b2..27a1d3c6eec85bb7a1de6ec46ff5c42511c93077
@@@ -640,6 -640,13 +640,6 @@@ S:        Maintaine
  F:    drivers/amba/
  F:    include/linux/amba/bus.h
  
 -ARM/ADI ROADRUNNER MACHINE SUPPORT
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-ixp23xx/
 -F:    arch/arm/mach-ixp23xx/include/mach/
 -
  ARM/ADS SPHERE MACHINE SUPPORT
  M:    Lennert Buytenhek <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -739,10 -746,7 +739,10 @@@ M:       Barry Song <[email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-prima2/
 -F:    drivers/dma/sirf-dma*
 +F:    drivers/dma/sirf-dma.c
 +F:    drivers/i2c/busses/i2c-sirf.c
 +F:    drivers/pinctrl/pinctrl-sirf.c
 +F:    drivers/spi/spi-sirf.c
  
  ARM/EBSA110 MACHINE SUPPORT
  M:    Russell King <[email protected]>
@@@ -855,11 -859,21 +855,11 @@@ M:      Dan Williams <[email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/INTEL IXP2000 ARM ARCHITECTURE
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IXDP2850 MACHINE SUPPORT
  M:    Lennert Buytenhek <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/INTEL IXP23XX ARM ARCHITECTURE
 -M:    Lennert Buytenhek <[email protected]>
 -L:    [email protected] (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IXP4XX ARM ARCHITECTURE
  M:    Imre Kaloz <[email protected]>
  M:    Krzysztof Halasa <[email protected]>
@@@ -894,12 -908,11 +894,12 @@@ ARM/MAGICIAN MACHINE SUPPOR
  M:    Philipp Zabel <[email protected]>
  S:    Maintained
  
 -ARM/Marvell Loki/Kirkwood/MV78xx0/Orion SOC support
 -M:    Lennert Buytenhek <[email protected]>
 -M:    Nicolas Pitre <[email protected]>
 +ARM/Marvell Dove/Kirkwood/MV78xx0/Orion SOC support
 +M:    Jason Cooper <[email protected]>
 +M:    Andrew Lunn <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -S:    Odd Fixes
 +S:    Maintained
 +F:    arch/arm/mach-dove/
  F:    arch/arm/mach-kirkwood/
  F:    arch/arm/mach-mv78xx0/
  F:    arch/arm/mach-orion5x/
@@@ -1318,21 -1331,6 +1318,21 @@@ M:    Nicolas Ferre <[email protected]
  S:    Supported
  F:    drivers/tty/serial/atmel_serial.c
  
 +ATMEL DMA DRIVER
 +M:    Nicolas Ferre <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/dma/at_hdmac.c
 +F:    drivers/dma/at_hdmac_regs.h
 +F:    arch/arm/mach-at91/include/mach/at_hdmac.h
 +
 +ATMEL ISI DRIVER
 +M:    Josh Wu <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/media/video/atmel-isi.c
 +F:    include/media/atmel-isi.h
 +
  ATMEL LCDFB DRIVER
  M:    Nicolas Ferre <[email protected]>
  L:    [email protected]
@@@ -1350,22 -1348,10 +1350,22 @@@ M:   Nicolas Ferre <[email protected]
  S:    Supported
  F:    drivers/spi/spi-atmel.*
  
 +ATMEL Timer Counter (TC) AND CLOCKSOURCE DRIVERS
 +M:    Nicolas Ferre <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/misc/atmel_tclib.c
 +F:    drivers/clocksource/tcb_clksrc.c
 +
 +ATMEL TSADCC DRIVER
 +M:    Josh Wu <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/input/touchscreen/atmel_tsadcc.c
 +
  ATMEL USBA UDC DRIVER
  M:    Nicolas Ferre <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 -W:    http://avr32linux.org/twiki/bin/view/Main/AtmelUsbDeviceDriver
  S:    Supported
  F:    drivers/usb/gadget/atmel_usba_udc.*
  
@@@ -1613,7 -1599,6 +1613,7 @@@ F:      include/linux/bcma
  
  BROCADE BFA FC SCSI DRIVER
  M:    Jing Huang <[email protected]>
 +M:    Krishna C Gudipati <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/scsi/bfa/
@@@ -1747,7 -1732,6 +1747,7 @@@ S:      Supporte
  F:    include/linux/capability.h
  F:    security/capability.c
  F:    security/commoncap.c 
 +F:    kernel/capability.c
  
  CELL BROADBAND ENGINE ARCHITECTURE
  M:    Arnd Bergmann <[email protected]>
@@@ -1826,12 -1810,6 +1826,12 @@@ L:    [email protected] (moderate
  S:    Maintained
  F:    Documentation/zh_CN/
  
 +CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER
 +M:    Alexander Shishkin <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/usb/chipidea/
 +
  CISCO VIC ETHERNET NIC DRIVER
  M:    Christian Benvenuti <[email protected]>
  M:    Roopa Prabhu <[email protected]>
@@@ -2776,15 -2754,6 +2776,15 @@@ T:    git git://git.alsa-project.org/alsa-
  S:    Maintained
  F:    sound/firewire/
  
 +FIREWIRE SBP-2 TARGET
 +M:    Chris Boot <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +L:    [email protected]
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nab/lio-core-2.6.git master
 +S:    Maintained
 +F:    drivers/target/sbp/
 +
  FIREWIRE SUBSYSTEM
  M:    Stefan Richter <[email protected]>
  L:    [email protected]
@@@ -2921,7 -2890,7 +2921,7 @@@ S:      Maintaine
  F:    arch/frv/
  
  FUJITSU LAPTOP EXTRAS
 -M:    Jonathan Woithe <jwoithe@physics.adelaide.edu.au>
 +M:    Jonathan Woithe <jwoithe@just42.net>
  L:    [email protected]
  S:    Maintained
  F:    drivers/platform/x86/fujitsu-laptop.c
@@@ -3347,12 -3316,6 +3347,6 @@@ T:     git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    arch/ia64/
  
- IBM MCA SCSI SUBSYSTEM DRIVER
- M:    Michael Lang <[email protected]>
- W:    http://www.uni-mainz.de/~langm000/linux.html
- S:    Maintained
- F:    drivers/scsi/ibmmca.c
  IBM Power Linux RAID adapter
  M:    Brian King <[email protected]>
  S:    Supported
@@@ -3415,7 -3378,6 +3409,7 @@@ IIO SUBSYSTEM AND DRIVER
  M:    Jonathan Cameron <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    drivers/iio/
  F:    drivers/staging/iio/
  
  IKANOS/ADI EAGLE ADSL USB DRIVER
@@@ -3635,14 -3597,6 +3629,14 @@@ S:    Supporte
  W:    http://wireless.kernel.org/en/users/Drivers/iwmc3200wifi
  F:    drivers/net/wireless/iwmc3200wifi/
  
 +INTEL MANAGEMENT ENGINE (mei)
 +M:    Tomas Winkler <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    include/linux/mei.h
 +F:    drivers/misc/mei/*
 +F:    Documentation/mei/*
 +
  IOC3 ETHERNET DRIVER
  M:    Ralf Baechle <[email protected]>
  L:    [email protected]
@@@ -3668,7 -3622,7 +3662,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/icplus/ipg.*
  
  IPATH DRIVER
 -M:    Mike Marciniszyn <infinipath@qlogic.com>
 +M:    Mike Marciniszyn <infinipath@intel.com>
  L:    [email protected]
  S:    Maintained
  F:    drivers/infiniband/hw/ipath/
@@@ -4458,13 -4412,6 +4452,6 @@@ T:     git git://git.monstr.eu/linux-2.6-mi
  S:    Supported
  F:    arch/microblaze/
  
- MICROCHANNEL ARCHITECTURE (MCA)
- M:    James Bottomley <[email protected]>
- S:    Maintained
- F:    Documentation/mca.txt
- F:    drivers/mca/
- F:    include/linux/mca*
  MICROTEK X6 SCANNER
  M:    Oliver Neukum <[email protected]>
  S:    Maintained
@@@ -5168,13 -5115,19 +5155,13 @@@ F:   Documentation/powerpc/eeh-pci-error-
  PCI SUBSYSTEM
  M:    Bjorn Helgaas <[email protected]>
  L:    [email protected]
 -Q:    http://patchwork.kernel.org/project/linux-pci/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci.git
 +Q:    http://patchwork.ozlabs.org/project/linux-pci/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/linux.git
  S:    Supported
  F:    Documentation/PCI/
  F:    drivers/pci/
  F:    include/linux/pci*
  
 -PCI HOTPLUG
 -M:    Bjorn Helgaas <[email protected]>
 -L:    [email protected]
 -S:    Supported
 -F:    drivers/pci/hotplug
 -
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    [email protected]
@@@ -5264,14 -5217,6 +5251,14 @@@ M:    Linus Walleij <linus.walleij@linaro.
  S:    Maintained
  F:    drivers/pinctrl/
  
 +PIN CONTROLLER - ST SPEAR
 +M:    Viresh Kumar <[email protected]>
 +L:    [email protected]
 +L:    [email protected] (moderated for non-subscribers)
 +W:    http://www.st.com/spear
 +S:    Maintained
 +F:    driver/pinctrl/spear/
 +
  PKTCDVD DRIVER
  M:    Peter Osterlund <[email protected]>
  S:    Maintained
@@@ -5495,7 -5440,7 +5482,7 @@@ L:      [email protected]
  S:    Maintained
  
  QIB DRIVER
 -M:    Mike Marciniszyn <infinipath@qlogic.com>
 +M:    Mike Marciniszyn <infinipath@intel.com>
  L:    [email protected]
  S:    Supported
  F:    drivers/infiniband/hw/qib/
@@@ -5645,13 -5590,14 +5632,13 @@@ F:   net/rds
  READ-COPY UPDATE (RCU)
  M:    Dipankar Sarma <[email protected]>
  M:    "Paul E. McKenney" <[email protected]>
 -W:    http://www.rdrop.com/users/paulmck/rclock/
 +W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
  F:    Documentation/RCU/
 +X:    Documentation/RCU/torture.txt
  F:    include/linux/rcu*
 -F:    include/linux/srcu*
  F:    kernel/rcu*
 -F:    kernel/srcu*
  X:    kernel/rcutorture.c
  
  REAL TIME CLOCK (RTC) SUBSYSTEM
@@@ -5997,7 -5943,7 +5984,7 @@@ SECURITY SUBSYSTE
  M:    James Morris <[email protected]>
  L:    [email protected] (suggested Cc:)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
 -W:    http://security.wiki.kernel.org/
 +W:    http://kernsec.org/
  S:    Supported
  F:    security/
  
@@@ -6168,15 -6114,6 +6155,15 @@@ S:    Maintaine
  F:    include/linux/sl?b*.h
  F:    mm/sl?b.c
  
 +SLEEPABLE READ-COPY UPDATE (SRCU)
 +M:    Lai Jiangshan <[email protected]>
 +M:    "Paul E. McKenney" <[email protected]>
 +W:    http://www.rdrop.com/users/paulmck/RCU/
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +F:    include/linux/srcu*
 +F:    kernel/srcu*
 +
  SMC91x ETHERNET DRIVER
  M:    Nicolas Pitre <[email protected]>
  S:    Odd Fixes
@@@ -6376,6 -6313,21 +6363,6 @@@ F:     arch/arm/mach-spear*/clock.
  F:    arch/arm/plat-spear/clock.c
  F:    arch/arm/plat-spear/include/plat/clock.h
  
 -SPEAR PAD MULTIPLEXING SUPPORT
 -M:    Viresh Kumar <[email protected]>
 -L:    [email protected]
 -L:    [email protected] (moderated for non-subscribers)
 -W:    http://www.st.com/spear
 -S:    Maintained
 -F:    arch/arm/plat-spear/include/plat/padmux.h
 -F:    arch/arm/plat-spear/padmux.c
 -F:    arch/arm/mach-spear*/spear*xx.c
 -F:    arch/arm/mach-spear*/include/mach/generic.h
 -F:    arch/arm/mach-spear3xx/spear3*0.c
 -F:    arch/arm/mach-spear3xx/spear3*0_evb.c
 -F:    arch/arm/mach-spear6xx/spear600.c
 -F:    arch/arm/mach-spear6xx/spear600_evb.c
 -
  SPI SUBSYSTEM
  M:    Grant Likely <[email protected]>
  L:    [email protected]
@@@ -6582,7 -6534,7 +6569,7 @@@ M:      Paul Mundt <[email protected]
  L:    [email protected]
  W:    http://www.linux-sh.org
  Q:    http://patchwork.kernel.org/project/linux-sh/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.git sh-latest
 +T:    git git://github.com/pmundt/linux-sh.git sh-latest
  S:    Supported
  F:    Documentation/sh/
  F:    arch/sh/
@@@ -6700,12 -6652,6 +6687,12 @@@ F:    drivers/misc/tifm
  F:    drivers/mmc/host/tifm_sd.c
  F:    include/linux/tifm.h
  
 +TI LM49xxx FAMILY ASoC CODEC DRIVERS
 +M:    M R Swami Reddy <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    sound/soc/codecs/lm49453*
 +
  TI TWL4030 SERIES SOC CODEC DRIVER
  M:    Peter Ujfalusi <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -6929,14 -6875,6 +6916,14 @@@ F:    Documentation/cdrom
  F:    drivers/cdrom/cdrom.c
  F:    include/linux/cdrom.h
  
 +UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
 +M:    Vinayak Holikatti <[email protected]>
 +M:    Santosh Y <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/scsi/ufs.txt
 +F:    drivers/scsi/ufs/
 +
  UNSORTED BLOCK IMAGES (UBI)
  M:    Artem Bityutskiy <[email protected]>
  W:    http://www.linux-mtd.infradead.org/
@@@ -7083,14 -7021,6 +7070,14 @@@ W:    http://pegasus2.sourceforge.net
  S:    Maintained
  F:    drivers/net/usb/pegasus.*
  
 +USB PHY LAYER
 +M:    Felipe Balbi <[email protected]>
 +L:    [email protected]
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
 +S:    Maintained
 +F:    drivers/usb/phy/
 +F:    drivers/usb/otg/
 +
  USB PRINTER DRIVER (usblp)
  M:    Pete Zaitcev <[email protected]>
  L:    [email protected]
@@@ -7374,18 -7304,6 +7361,18 @@@ S:    Maintaine
  F:    drivers/vlynq/vlynq.c
  F:    include/linux/vlynq.h
  
 +VME SUBSYSTEM
 +M:    Martyn Welch <[email protected]>
 +M:    Manohar Vanga <[email protected]>
 +M:    Greg Kroah-Hartman <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
 +F:    Documentation/vme_api.txt
 +F:    drivers/staging/vme/
 +F:    drivers/vme/
 +F:    include/linux/vme*
 +
  VMWARE VMXNET3 ETHERNET DRIVER
  M:    Shreyas Bhatewara <[email protected]>
  M:    "VMware, Inc." <[email protected]>
diff --combined arch/arm/Kconfig
index 76edcfe8b56f3d6ecad86a7fadeebbcef0b20d3d,695cc39f31381abc8f6841df13766f3f53ab5a73..4f4c8115d79b21476892e1dc0df5f90ac0f51178
@@@ -11,7 -11,6 +11,7 @@@ config AR
        select HAVE_OPROFILE if (HAVE_PERF_EVENTS)
        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
        select HAVE_ARCH_KGDB
 +      select HAVE_ARCH_TRACEHOOK
        select HAVE_KPROBES if !XIP_KERNEL
        select HAVE_KRETPROBES if (HAVE_KPROBES)
        select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
        select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7))
        select HAVE_C_RECORDMCOUNT
        select HAVE_GENERIC_HARDIRQS
 +      select HARDIRQS_SW_RESEND
 +      select GENERIC_IRQ_PROBE
        select GENERIC_IRQ_SHOW
 +      select GENERIC_IRQ_PROBE
 +      select HARDIRQS_SW_RESEND
        select CPU_PM if (SUSPEND || CPU_IDLE)
        select GENERIC_PCI_IOMAP
 -      select HAVE_BPF_JIT if NET
 +      select HAVE_BPF_JIT
 +      select GENERIC_SMP_IDLE_THREAD
        help
          The ARM series is a line of low-power-consumption RISC chip designs
          licensed by ARM Ltd and targeted at embedded applications and
@@@ -107,14 -101,6 +107,6 @@@ config EIS
  config SBUS
        bool
  
- config MCA
-       bool
-       help
-         MicroChannel Architecture is found in some IBM PS/2 machines and
-         laptops.  It is a bus system similar to PCI or ISA. See
-         <file:Documentation/mca.txt> (and especially the web page given
-         there) before attempting to build an MCA bus kernel.
  config STACKTRACE_SUPPORT
        bool
        default y
@@@ -132,6 -118,14 +124,6 @@@ config TRACE_IRQFLAGS_SUPPOR
        bool
        default y
  
 -config HARDIRQS_SW_RESEND
 -      bool
 -      default y
 -
 -config GENERIC_IRQ_PROBE
 -      bool
 -      default y
 -
  config GENERIC_LOCKBREAK
        bool
        default y
@@@ -157,6 -151,9 +149,6 @@@ config ARCH_HAS_CPUFRE
          and that the relevant menu configurations are displayed for
          it.
  
 -config ARCH_HAS_CPU_IDLE_WAIT
 -       def_bool y
 -
  config GENERIC_HWEIGHT
        bool
        default y
@@@ -275,7 -272,6 +267,7 @@@ config ARCH_INTEGRATO
        select NEED_MACH_IO_H
        select NEED_MACH_MEMORY_H
        select SPARSE_IRQ
 +      select MULTI_IRQ_HANDLER
        help
          Support for ARM's Integrator platform.
  
@@@ -336,8 -332,8 +328,8 @@@ config ARCH_AT9
        select IRQ_DOMAIN
        select NEED_MACH_IO_H if PCCARD
        help
 -        This enables support for systems based on the Atmel AT91RM9200,
 -        AT91SAM9 processors.
 +        This enables support for systems based on Atmel
 +        AT91RM9200 and AT91SAM9* processors.
  
  config ARCH_BCMRING
        bool "Broadcom BCMRING"
@@@ -369,12 -365,12 +361,12 @@@ config ARCH_HIGHBAN
          Support for the Calxeda Highbank SoC based boards.
  
  config ARCH_CLPS711X
 -      bool "Cirrus Logic CLPS711x/EP721x-based"
 +      bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
        select CPU_ARM720T
        select ARCH_USES_GETTIMEOFFSET
        select NEED_MACH_MEMORY_H
        help
 -        Support for Cirrus Logic 711x/721x based boards.
 +        Support for Cirrus Logic 711x/721x/731x based boards.
  
  config ARCH_CNS3XXX
        bool "Cavium Networks CNS3XXX family"
@@@ -403,8 -399,6 +395,8 @@@ config ARCH_PRIMA
        select CLKDEV_LOOKUP
        select GENERIC_IRQ_CHIP
        select MIGHT_HAVE_CACHE_L2X0
 +      select PINCTRL
 +      select PINCTRL_SIRF
        select USE_OF
        select ZONE_DMA
        help
@@@ -467,7 -461,6 +459,7 @@@ config ARCH_MX
        select CLKDEV_LOOKUP
        select CLKSRC_MMIO
        select HAVE_CLK_PREPARE
 +      select PINCTRL
        help
          Support for Freescale MXS-based family of processors
  
@@@ -527,6 -520,28 +519,6 @@@ config ARCH_IOP33
        help
          Support for Intel's IOP33X (XScale) family of processors.
  
 -config ARCH_IXP23XX
 -      bool "IXP23XX-based"
 -      depends on MMU
 -      select CPU_XSC3
 -      select PCI
 -      select ARCH_USES_GETTIMEOFFSET
 -      select NEED_MACH_IO_H
 -      select NEED_MACH_MEMORY_H
 -      help
 -        Support for Intel's IXP23xx (XScale) family of processors.
 -
 -config ARCH_IXP2000
 -      bool "IXP2400/2800-based"
 -      depends on MMU
 -      select CPU_XSCALE
 -      select PCI
 -      select ARCH_USES_GETTIMEOFFSET
 -      select NEED_MACH_IO_H
 -      select NEED_MACH_MEMORY_H
 -      help
 -        Support for Intel's IXP2400/2800 (XScale) family of processors.
 -
  config ARCH_IXP4XX
        bool "IXP4xx-based"
        depends on MMU
@@@ -574,7 -589,6 +566,7 @@@ config ARCH_LPC32X
        select USB_ARCH_HAS_OHCI
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
 +      select USE_OF
        help
          Support for the NXP LPC32XX family of processors
  
@@@ -610,7 -624,7 +602,7 @@@ config ARCH_MM
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
        select GPIO_PXA
 -      select TICK_ONESHOT
 +      select IRQ_DOMAIN
        select PLAT_PXA
        select SPARSE_IRQ
        select GENERIC_ALLOCATOR
@@@ -694,6 -708,7 +686,6 @@@ config ARCH_PX
        select ARCH_REQUIRE_GPIOLIB
        select GENERIC_CLOCKEVENTS
        select GPIO_PXA
 -      select TICK_ONESHOT
        select PLAT_PXA
        select SPARSE_IRQ
        select AUTO_ZRELADDR
@@@ -760,6 -775,7 +752,6 @@@ config ARCH_SA110
        select CPU_FREQ
        select GENERIC_CLOCKEVENTS
        select CLKDEV_LOOKUP
 -      select TICK_ONESHOT
        select ARCH_REQUIRE_GPIOLIB
        select HAVE_IDE
        select NEED_MACH_MEMORY_H
@@@ -922,7 -938,6 +914,7 @@@ config ARCH_NOMADI
        select CPU_ARM926T
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
 +      select PINCTRL
        select MIGHT_HAVE_CACHE_L2X0
        select ARCH_REQUIRE_GPIOLIB
        help
@@@ -1023,6 -1038,10 +1015,6 @@@ source "arch/arm/mach-iop13xx/Kconfig
  
  source "arch/arm/mach-ixp4xx/Kconfig"
  
 -source "arch/arm/mach-ixp2000/Kconfig"
 -
 -source "arch/arm/mach-ixp23xx/Kconfig"
 -
  source "arch/arm/mach-kirkwood/Kconfig"
  
  source "arch/arm/mach-ks8695/Kconfig"
@@@ -1525,15 -1544,10 +1517,15 @@@ config HAVE_ARM_SC
        help
          This option enables support for the ARM system coherency unit
  
 +config ARM_ARCH_TIMER
 +      bool "Architected timer support"
 +      depends on CPU_V7
 +      help
 +        This option enables support for the ARM architected timer
 +
  config HAVE_ARM_TWD
        bool
        depends on SMP
 -      select TICK_ONESHOT
        help
          This options enables support for the ARM timer and watchdog unit
  
@@@ -1914,10 -1928,10 +1906,10 @@@ choic
        default ZBOOT_ROM_NONE
        help
          Include experimental SD/MMC loading code in the ROM-able zImage.
 -        With this enabled it is possible to write the the ROM-able zImage
 +        With this enabled it is possible to write the ROM-able zImage
          kernel image to an MMC or SD card and boot the kernel straight
          from the reset vector. At reset the processor Mask ROM will load
 -        the first part of the the ROM-able zImage which in turn loads the
 +        the first part of the ROM-able zImage which in turn loads the
          rest the kernel image to RAM.
  
  config ZBOOT_ROM_NONE
@@@ -2259,9 -2273,9 +2251,9 @@@ menu "Power management options
  source "kernel/power/Kconfig"
  
  config ARCH_SUSPEND_POSSIBLE
 -      depends on !ARCH_S5PC100
 +      depends on !ARCH_S5PC100 && !ARCH_TEGRA
        depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
 -              CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE
 +              CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE || CPU_MOHAWK
        def_bool y
  
  config ARM_CPU_SUSPEND
index a8311d364e2af377851d763ace6d0e38f8eabf93,4a53811cd4cd68c6366ae134d62151d6a01e8e24..dccb9d162318bf9d9f6d93c0ee54a9a18d0a3158
@@@ -54,7 -54,6 +54,6 @@@ extern struct cpuinfo_frv __nongprelbs
   * Bus types
   */
  #define EISA_bus 0
- #define MCA_bus 0
  
  struct thread_struct {
        struct pt_regs          *frame;         /* [GR28] exception frame ptr for this thread */
@@@ -103,6 -102,8 +102,6 @@@ do {                                                       
        __frame->sp     = (_usp);                       \
  } while(0)
  
 -extern void prepare_to_copy(struct task_struct *tsk);
 -
  /* Free all resources held by a thread. */
  static inline void release_thread(struct task_struct *dead_task)
  {
@@@ -133,6 -134,10 +132,6 @@@ unsigned long get_wchan(struct task_str
  #define       KSTK_EIP(tsk)   ((tsk)->thread.frame0->pc)
  #define       KSTK_ESP(tsk)   ((tsk)->thread.frame0->sp)
  
 -/* Allocation and freeing of basic task resources. */
 -extern struct task_struct *alloc_task_struct_node(int node);
 -extern void free_task_struct(struct task_struct *p);
 -
  #define cpu_relax()    barrier()
  
  /* data cache prefetch */
diff --combined arch/x86/Kconfig
index 4d37072c498a8b20853e1bfdd887d720c554a051,9137057152c3eb06468b4b1397f1fd74defa6fbe..d6168994e11585814d356b45cc106554f4c3e9ca
@@@ -12,7 -12,6 +12,7 @@@ config X86_3
  
  config X86_64
        def_bool 64BIT
 +      select X86_DEV_DMA_OPS
  
  ### Arch settings
  config X86
@@@ -41,6 -40,7 +41,6 @@@
        select HAVE_FUNCTION_GRAPH_TRACER
        select HAVE_FUNCTION_GRAPH_FP_TEST
        select HAVE_FUNCTION_TRACE_MCOUNT_TEST
 -      select HAVE_FTRACE_NMI_ENTER if DYNAMIC_FTRACE
        select HAVE_SYSCALL_TRACEPOINTS
        select HAVE_KVM
        select HAVE_ARCH_KGDB
        select GENERIC_CLOCKEVENTS_MIN_ADJUST
        select IRQ_FORCED_THREADING
        select USE_GENERIC_SMP_HELPERS if SMP
 -      select HAVE_BPF_JIT if (X86_64 && NET)
 +      select HAVE_BPF_JIT if X86_64
        select CLKEVT_I8253
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
        select GENERIC_IOMAP
        select DCACHE_WORD_ACCESS
 +      select GENERIC_SMP_IDLE_THREAD
 +      select HAVE_ARCH_SECCOMP_FILTER
 +      select BUILDTIME_EXTABLE_SORT
  
  config INSTRUCTION_DECODER
        def_bool (KPROBES || PERF_EVENTS)
@@@ -163,6 -160,9 +163,6 @@@ config RWSEM_GENERIC_SPINLOC
  config RWSEM_XCHGADD_ALGORITHM
        def_bool X86_XADD
  
 -config ARCH_HAS_CPU_IDLE_WAIT
 -      def_bool y
 -
  config GENERIC_CALIBRATE_DELAY
        def_bool y
  
@@@ -328,7 -328,6 +328,7 @@@ config X86_EXTENDED_PLATFOR
                NUMAQ (IBM/Sequent)
                RDC R-321x SoC
                SGI 320/540 (Visual Workstation)
 +              STA2X11-based (e.g. Northville)
                Summit/EXA (IBM x440)
                Unisys ES7000 IA32 series
                Moorestown MID devices
@@@ -375,7 -374,6 +375,7 @@@ config X86_VSM
        select PARAVIRT
        depends on X86_64 && PCI
        depends on X86_EXTENDED_PLATFORM
 +      depends on SMP
        ---help---
          Support for ScaleMP vSMP systems.  Say 'Y' here if this kernel is
          supposed to run on these EM64T-based machines.  Only choose this option
@@@ -462,10 -460,10 +462,10 @@@ config X86_32_NON_STANDAR
        depends on X86_32 && SMP
        depends on X86_EXTENDED_PLATFORM
        ---help---
 -        This option compiles in the NUMAQ, Summit, bigsmp, ES7000, default
 -        subarchitectures.  It is intended for a generic binary kernel.
 -        if you select them all, kernel will probe it one by one. and will
 -        fallback to default.
 +        This option compiles in the NUMAQ, Summit, bigsmp, ES7000,
 +        STA2X11, default subarchitectures.  It is intended for a generic
 +        binary kernel. If you select them all, kernel will probe it
 +        one by one and will fallback to default.
  
  # Alphabetically sorted list of Non standard 32 bit platforms
  
@@@ -505,22 -503,6 +505,22 @@@ config X86_VISW
          A kernel compiled for the Visual Workstation will run on general
          PCs as well. See <file:Documentation/sgi-visws.txt> for details.
  
 +config STA2X11
 +      bool "STA2X11 Companion Chip Support"
 +      depends on X86_32_NON_STANDARD && PCI
 +      select X86_DEV_DMA_OPS
 +      select X86_DMA_REMAP
 +      select SWIOTLB
 +      select MFD_STA2X11
 +      select ARCH_REQUIRE_GPIOLIB
 +      default n
 +      ---help---
 +        This adds support for boards based on the STA2X11 IO-Hub,
 +        a.k.a. "ConneXt". The chip is used in place of the standard
 +        PC chipset, so all "standard" peripherals are missing. If this
 +        option is selected the kernel will still be able to boot on
 +        standard PC machines.
 +
  config X86_SUMMIT
        bool "Summit/EXA (IBM x440)"
        depends on X86_32_NON_STANDARD
@@@ -1257,6 -1239,10 +1257,6 @@@ config NODES_SHIF
          Specify the maximum number of NUMA Nodes available on the target
          system.  Increases memory reserved to accommodate various tables.
  
 -config HAVE_ARCH_BOOTMEM
 -      def_bool y
 -      depends on X86_32 && NUMA
 -
  config HAVE_ARCH_ALLOC_REMAP
        def_bool y
        depends on X86_32 && NUMA
@@@ -2037,16 -2023,6 +2037,6 @@@ config EIS
  
  source "drivers/eisa/Kconfig"
  
- config MCA
-       bool "MCA support"
-       ---help---
-         MicroChannel Architecture is found in some IBM PS/2 machines and
-         laptops.  It is a bus system similar to PCI or ISA. See
-         <file:Documentation/mca.txt> (and especially the web page given
-         there) before attempting to build an MCA bus kernel.
- source "drivers/mca/Kconfig"
  config SCx200
        tristate "NatSemi SCx200 support"
        ---help---
@@@ -2229,14 -2205,6 +2219,14 @@@ config HAVE_TEXT_POKE_SM
        bool
        select STOP_MACHINE if SMP
  
 +config X86_DEV_DMA_OPS
 +      bool
 +      depends on X86_64 || STA2X11
 +
 +config X86_DMA_REMAP
 +      bool
 +      depends on STA2X11
 +
  source "net/Kconfig"
  
  source "drivers/Kconfig"
diff --combined arch/x86/kernel/Makefile
index 56ebd1f98447798a484fafecceadadcfe14ff639,7d1569947204b57a1852c38979764d01dcd2fdcf..bb8529275aabeb20e92158cfe9e9aa18e91e86d2
@@@ -2,7 -2,7 +2,7 @@@
  # Makefile for the linux kernel.
  #
  
 -extra-y                := head_$(BITS).o head$(BITS).o head.o init_task.o vmlinux.lds
 +extra-y                := head_$(BITS).o head$(BITS).o head.o vmlinux.lds
  
  CPPFLAGS_vmlinux.lds += -U$(UTS_MACHINE)
  
@@@ -49,7 -49,6 +49,6 @@@ obj-y                         += cpu
  obj-y                         += acpi/
  obj-y                         += reboot.o
  obj-$(CONFIG_X86_32)          += reboot_32.o
- obj-$(CONFIG_MCA)             += mca_32.o
  obj-$(CONFIG_X86_MSR)         += msr.o
  obj-$(CONFIG_X86_CPUID)               += cpuid.o
  obj-$(CONFIG_PCI)             += early-quirks.o
index 7c439fe4941bc605913e1c741c6bcf80e3c247c6,f564b189de1a6086b663f1c17711def84ebe133e..8afb693198155c705c3e4bb42e1ba12a69427159
@@@ -593,7 -593,7 +593,7 @@@ void __init acpi_set_irq_model_ioapic(v
  #ifdef CONFIG_ACPI_HOTPLUG_CPU
  #include <acpi/processor.h>
  
 -static void __cpuinitdata acpi_map_cpu2node(acpi_handle handle, int cpu, int physid)
 +static void __cpuinit acpi_map_cpu2node(acpi_handle handle, int cpu, int physid)
  {
  #ifdef CONFIG_ACPI_NUMA
        int nid;
@@@ -990,7 -990,7 +990,7 @@@ void __init mp_config_acpi_legacy_irqs(
        int i;
        struct mpc_intsrc mp_irq;
  
- #if defined (CONFIG_MCA) || defined (CONFIG_EISA)
+ #ifdef CONFIG_EISA
        /*
         * Fabricate the legacy ISA bus (bus #31).
         */
index ffdc152e507dd842847ab0ee604ebbafe80cb5a2,675e9045a3c53d7541ec71af0a83debd18204bc1..ac96561d1a99ef499d8791ee736bdd85221ba4a9
  #define for_each_irq_pin(entry, head) \
        for (entry = head; entry; entry = entry->next)
  
 -static void           __init __ioapic_init_mappings(void);
 -
 -static unsigned int   __io_apic_read  (unsigned int apic, unsigned int reg);
 -static void           __io_apic_write (unsigned int apic, unsigned int reg, unsigned int val);
 -static void           __io_apic_modify(unsigned int apic, unsigned int reg, unsigned int val);
 -
 -static struct io_apic_ops io_apic_ops = {
 -      .init   = __ioapic_init_mappings,
 -      .read   = __io_apic_read,
 -      .write  = __io_apic_write,
 -      .modify = __io_apic_modify,
 -};
 -
 -void __init set_io_apic_ops(const struct io_apic_ops *ops)
 +#ifdef CONFIG_IRQ_REMAP
 +static void irq_remap_modify_chip_defaults(struct irq_chip *chip);
 +static inline bool irq_remapped(struct irq_cfg *cfg)
 +{
 +      return cfg->irq_2_iommu.iommu != NULL;
 +}
 +#else
 +static inline bool irq_remapped(struct irq_cfg *cfg)
 +{
 +      return false;
 +}
 +static inline void irq_remap_modify_chip_defaults(struct irq_chip *chip)
  {
 -      io_apic_ops = *ops;
  }
 +#endif
  
  /*
   *      Is the SiS APIC rmw bug present ?
@@@ -140,7 -142,7 +140,7 @@@ int mp_irq_entries
  /* GSI interrupts */
  static int nr_irqs_gsi = NR_IRQS_LEGACY;
  
- #if defined (CONFIG_MCA) || defined (CONFIG_EISA)
+ #ifdef CONFIG_EISA
  int mp_bus_id_to_type[MAX_MP_BUSSES];
  #endif
  
@@@ -311,6 -313,21 +311,6 @@@ static void free_irq_at(unsigned int at
        irq_free_desc(at);
  }
  
 -static inline unsigned int io_apic_read(unsigned int apic, unsigned int reg)
 -{
 -      return io_apic_ops.read(apic, reg);
 -}
 -
 -static inline void io_apic_write(unsigned int apic, unsigned int reg, unsigned int value)
 -{
 -      io_apic_ops.write(apic, reg, value);
 -}
 -
 -static inline void io_apic_modify(unsigned int apic, unsigned int reg, unsigned int value)
 -{
 -      io_apic_ops.modify(apic, reg, value);
 -}
 -
  
  struct io_apic {
        unsigned int index;
@@@ -332,14 -349,14 +332,14 @@@ static inline void io_apic_eoi(unsigne
        writel(vector, &io_apic->eoi);
  }
  
 -static unsigned int __io_apic_read(unsigned int apic, unsigned int reg)
 +unsigned int native_io_apic_read(unsigned int apic, unsigned int reg)
  {
        struct io_apic __iomem *io_apic = io_apic_base(apic);
        writel(reg, &io_apic->index);
        return readl(&io_apic->data);
  }
  
 -static void __io_apic_write(unsigned int apic, unsigned int reg, unsigned int value)
 +void native_io_apic_write(unsigned int apic, unsigned int reg, unsigned int value)
  {
        struct io_apic __iomem *io_apic = io_apic_base(apic);
  
   *
   * Older SiS APIC requires we rewrite the index register
   */
 -static void __io_apic_modify(unsigned int apic, unsigned int reg, unsigned int value)
 +void native_io_apic_modify(unsigned int apic, unsigned int reg, unsigned int value)
  {
        struct io_apic __iomem *io_apic = io_apic_base(apic);
  
        writel(value, &io_apic->data);
  }
  
 -static bool io_apic_level_ack_pending(struct irq_cfg *cfg)
 -{
 -      struct irq_pin_list *entry;
 -      unsigned long flags;
 -
 -      raw_spin_lock_irqsave(&ioapic_lock, flags);
 -      for_each_irq_pin(entry, cfg->irq_2_pin) {
 -              unsigned int reg;
 -              int pin;
 -
 -              pin = entry->pin;
 -              reg = io_apic_read(entry->apic, 0x10 + pin*2);
 -              /* Is the remote IRR bit set? */
 -              if (reg & IO_APIC_REDIR_REMOTE_IRR) {
 -                      raw_spin_unlock_irqrestore(&ioapic_lock, flags);
 -                      return true;
 -              }
 -      }
 -      raw_spin_unlock_irqrestore(&ioapic_lock, flags);
 -
 -      return false;
 -}
 -
  union entry_union {
        struct { u32 w1, w2; };
        struct IO_APIC_route_entry entry;
@@@ -835,7 -875,7 +835,7 @@@ static int __init find_isa_irq_apic(in
        return -1;
  }
  
- #if defined(CONFIG_EISA) || defined(CONFIG_MCA)
+ #ifdef CONFIG_EISA
  /*
   * EISA Edge/Level control register, ELCR
   */
@@@ -872,12 -912,6 +872,6 @@@ static int EISA_ELCR(unsigned int irq
  #define default_PCI_trigger(idx)      (1)
  #define default_PCI_polarity(idx)     (1)
  
- /* MCA interrupts are always polarity zero level triggered,
-  * when listed as conforming in the MP table. */
- #define default_MCA_trigger(idx)      (1)
- #define default_MCA_polarity(idx)     default_ISA_polarity(idx)
  static int irq_polarity(int idx)
  {
        int bus = mp_irqs[idx].srcbus;
@@@ -935,7 -969,7 +929,7 @@@ static int irq_trigger(int idx
                                trigger = default_ISA_trigger(idx);
                        else
                                trigger = default_PCI_trigger(idx);
- #if defined(CONFIG_EISA) || defined(CONFIG_MCA)
+ #ifdef CONFIG_EISA
                        switch (mp_bus_id_to_type[bus]) {
                                case MP_BUS_ISA: /* ISA pin */
                                {
                                        /* set before the switch */
                                        break;
                                }
-                               case MP_BUS_MCA: /* MCA pin */
-                               {
-                                       trigger = default_MCA_trigger(idx);
-                                       break;
-                               }
                                default:
                                {
                                        printk(KERN_WARNING "broken BIOS!!\n");
@@@ -1321,13 -1350,77 +1310,13 @@@ static void ioapic_register_intr(unsign
                                      fasteoi ? "fasteoi" : "edge");
  }
  
 -
 -static int setup_ir_ioapic_entry(int irq,
 -                            struct IR_IO_APIC_route_entry *entry,
 -                            unsigned int destination, int vector,
 -                            struct io_apic_irq_attr *attr)
 -{
 -      int index;
 -      struct irte irte;
 -      int ioapic_id = mpc_ioapic_id(attr->ioapic);
 -      struct intel_iommu *iommu = map_ioapic_to_ir(ioapic_id);
 -
 -      if (!iommu) {
 -              pr_warn("No mapping iommu for ioapic %d\n", ioapic_id);
 -              return -ENODEV;
 -      }
 -
 -      index = alloc_irte(iommu, irq, 1);
 -      if (index < 0) {
 -              pr_warn("Failed to allocate IRTE for ioapic %d\n", ioapic_id);
 -              return -ENOMEM;
 -      }
 -
 -      prepare_irte(&irte, vector, destination);
 -
 -      /* Set source-id of interrupt request */
 -      set_ioapic_sid(&irte, ioapic_id);
 -
 -      modify_irte(irq, &irte);
 -
 -      apic_printk(APIC_VERBOSE, KERN_DEBUG "IOAPIC[%d]: "
 -              "Set IRTE entry (P:%d FPD:%d Dst_Mode:%d "
 -              "Redir_hint:%d Trig_Mode:%d Dlvry_Mode:%X "
 -              "Avail:%X Vector:%02X Dest:%08X "
 -              "SID:%04X SQ:%X SVT:%X)\n",
 -              attr->ioapic, irte.present, irte.fpd, irte.dst_mode,
 -              irte.redir_hint, irte.trigger_mode, irte.dlvry_mode,
 -              irte.avail, irte.vector, irte.dest_id,
 -              irte.sid, irte.sq, irte.svt);
 -
 -      memset(entry, 0, sizeof(*entry));
 -
 -      entry->index2   = (index >> 15) & 0x1;
 -      entry->zero     = 0;
 -      entry->format   = 1;
 -      entry->index    = (index & 0x7fff);
 -      /*
 -       * IO-APIC RTE will be configured with virtual vector.
 -       * irq handler will do the explicit EOI to the io-apic.
 -       */
 -      entry->vector   = attr->ioapic_pin;
 -      entry->mask     = 0;                    /* enable IRQ */
 -      entry->trigger  = attr->trigger;
 -      entry->polarity = attr->polarity;
 -
 -      /* Mask level triggered irqs.
 -       * Use IRQ_DELAYED_DISABLE for edge triggered irqs.
 -       */
 -      if (attr->trigger)
 -              entry->mask = 1;
 -
 -      return 0;
 -}
 -
  static int setup_ioapic_entry(int irq, struct IO_APIC_route_entry *entry,
                               unsigned int destination, int vector,
                               struct io_apic_irq_attr *attr)
  {
 -      if (intr_remapping_enabled)
 -              return setup_ir_ioapic_entry(irq,
 -                       (struct IR_IO_APIC_route_entry *)entry,
 -                       destination, vector, attr);
 +      if (irq_remapping_enabled)
 +              return setup_ioapic_remapped_entry(irq, entry, destination,
 +                                                 vector, attr);
  
        memset(entry, 0, sizeof(*entry));
  
@@@ -1484,7 -1577,7 +1473,7 @@@ static void __init setup_timer_IRQ0_pin
  {
        struct IO_APIC_route_entry entry;
  
 -      if (intr_remapping_enabled)
 +      if (irq_remapping_enabled)
                return;
  
        memset(&entry, 0, sizeof(entry));
@@@ -1570,7 -1663,7 +1559,7 @@@ __apicdebuginit(void) print_IO_APIC(in
  
        printk(KERN_DEBUG ".... IRQ redirection table:\n");
  
 -      if (intr_remapping_enabled) {
 +      if (irq_remapping_enabled) {
                printk(KERN_DEBUG " NR Indx Fmt Mask Trig IRR"
                        " Pol Stat Indx2 Zero Vect:\n");
        } else {
        }
  
        for (i = 0; i <= reg_01.bits.entries; i++) {
 -              if (intr_remapping_enabled) {
 +              if (irq_remapping_enabled) {
                        struct IO_APIC_route_entry entry;
                        struct IR_IO_APIC_route_entry *ir_entry;
  
@@@ -1946,7 -2039,7 +1935,7 @@@ void disable_IO_APIC(void
         * IOAPIC RTE as well as interrupt-remapping table entry).
         * As this gets called during crash dump, keep this simple for now.
         */
 -      if (ioapic_i8259.pin != -1 && !intr_remapping_enabled) {
 +      if (ioapic_i8259.pin != -1 && !irq_remapping_enabled) {
                struct IO_APIC_route_entry entry;
  
                memset(&entry, 0, sizeof(entry));
         * Use virtual wire A mode when interrupt remapping is enabled.
         */
        if (cpu_has_apic || apic_from_smp_config())
 -              disconnect_bsp_APIC(!intr_remapping_enabled &&
 +              disconnect_bsp_APIC(!irq_remapping_enabled &&
                                ioapic_i8259.pin != -1);
  }
  
@@@ -2286,6 -2379,71 +2275,6 @@@ ioapic_set_affinity(struct irq_data *da
        return ret;
  }
  
 -#ifdef CONFIG_IRQ_REMAP
 -
 -/*
 - * Migrate the IO-APIC irq in the presence of intr-remapping.
 - *
 - * For both level and edge triggered, irq migration is a simple atomic
 - * update(of vector and cpu destination) of IRTE and flush the hardware cache.
 - *
 - * For level triggered, we eliminate the io-apic RTE modification (with the
 - * updated vector information), by using a virtual vector (io-apic pin number).
 - * Real vector that is used for interrupting cpu will be coming from
 - * the interrupt-remapping table entry.
 - *
 - * As the migration is a simple atomic update of IRTE, the same mechanism
 - * is used to migrate MSI irq's in the presence of interrupt-remapping.
 - */
 -static int
 -ir_ioapic_set_affinity(struct irq_data *data, const struct cpumask *mask,
 -                     bool force)
 -{
 -      struct irq_cfg *cfg = data->chip_data;
 -      unsigned int dest, irq = data->irq;
 -      struct irte irte;
 -
 -      if (!cpumask_intersects(mask, cpu_online_mask))
 -              return -EINVAL;
 -
 -      if (get_irte(irq, &irte))
 -              return -EBUSY;
 -
 -      if (assign_irq_vector(irq, cfg, mask))
 -              return -EBUSY;
 -
 -      dest = apic->cpu_mask_to_apicid_and(cfg->domain, mask);
 -
 -      irte.vector = cfg->vector;
 -      irte.dest_id = IRTE_DEST(dest);
 -
 -      /*
 -       * Atomically updates the IRTE with the new destination, vector
 -       * and flushes the interrupt entry cache.
 -       */
 -      modify_irte(irq, &irte);
 -
 -      /*
 -       * After this point, all the interrupts will start arriving
 -       * at the new destination. So, time to cleanup the previous
 -       * vector allocation.
 -       */
 -      if (cfg->move_in_progress)
 -              send_cleanup_vector(cfg);
 -
 -      cpumask_copy(data->affinity, mask);
 -      return 0;
 -}
 -
 -#else
 -static inline int
 -ir_ioapic_set_affinity(struct irq_data *data, const struct cpumask *mask,
 -                     bool force)
 -{
 -      return 0;
 -}
 -#endif
 -
  asmlinkage void smp_irq_move_cleanup_interrupt(void)
  {
        unsigned vector, me;
@@@ -2383,29 -2541,6 +2372,29 @@@ static void ack_apic_edge(struct irq_da
  atomic_t irq_mis_count;
  
  #ifdef CONFIG_GENERIC_PENDING_IRQ
 +static bool io_apic_level_ack_pending(struct irq_cfg *cfg)
 +{
 +      struct irq_pin_list *entry;
 +      unsigned long flags;
 +
 +      raw_spin_lock_irqsave(&ioapic_lock, flags);
 +      for_each_irq_pin(entry, cfg->irq_2_pin) {
 +              unsigned int reg;
 +              int pin;
 +
 +              pin = entry->pin;
 +              reg = io_apic_read(entry->apic, 0x10 + pin*2);
 +              /* Is the remote IRR bit set? */
 +              if (reg & IO_APIC_REDIR_REMOTE_IRR) {
 +                      raw_spin_unlock_irqrestore(&ioapic_lock, flags);
 +                      return true;
 +              }
 +      }
 +      raw_spin_unlock_irqrestore(&ioapic_lock, flags);
 +
 +      return false;
 +}
 +
  static inline bool ioapic_irqd_mask(struct irq_data *data, struct irq_cfg *cfg)
  {
        /* If we are moving the irq we need to mask it */
@@@ -2553,7 -2688,7 +2542,7 @@@ static void irq_remap_modify_chip_defau
        chip->irq_eoi = ir_ack_apic_level;
  
  #ifdef CONFIG_SMP
 -      chip->irq_set_affinity = ir_ioapic_set_affinity;
 +      chip->irq_set_affinity = set_remapped_irq_affinity;
  #endif
  }
  #endif /* CONFIG_IRQ_REMAP */
@@@ -2766,7 -2901,7 +2755,7 @@@ static inline void __init check_timer(v
         * 8259A.
         */
        if (pin1 == -1) {
 -              if (intr_remapping_enabled)
 +              if (irq_remapping_enabled)
                        panic("BIOS bug: timer not connected to IO-APIC");
                pin1 = pin2;
                apic1 = apic2;
                                clear_IO_APIC_pin(0, pin1);
                        goto out;
                }
 -              if (intr_remapping_enabled)
 +              if (irq_remapping_enabled)
                        panic("timer doesn't work through Interrupt-remapped IO-APIC");
                local_irq_disable();
                clear_IO_APIC_pin(apic1, pin1);
@@@ -3023,7 -3158,7 +3012,7 @@@ void destroy_irq(unsigned int irq
        irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE);
  
        if (irq_remapped(cfg))
 -              free_irte(irq);
 +              free_remapped_irq(irq);
        raw_spin_lock_irqsave(&vector_lock, flags);
        __clear_irq_vector(irq, cfg);
        raw_spin_unlock_irqrestore(&vector_lock, flags);
@@@ -3052,34 -3187,54 +3041,34 @@@ static int msi_compose_msg(struct pci_d
        dest = apic->cpu_mask_to_apicid_and(cfg->domain, apic->target_cpus());
  
        if (irq_remapped(cfg)) {
 -              struct irte irte;
 -              int ir_index;
 -              u16 sub_handle;
 -
 -              ir_index = map_irq_to_irte_handle(irq, &sub_handle);
 -              BUG_ON(ir_index == -1);
 -
 -              prepare_irte(&irte, cfg->vector, dest);
 -
 -              /* Set source-id of interrupt request */
 -              if (pdev)
 -                      set_msi_sid(&irte, pdev);
 -              else
 -                      set_hpet_sid(&irte, hpet_id);
 -
 -              modify_irte(irq, &irte);
 +              compose_remapped_msi_msg(pdev, irq, dest, msg, hpet_id);
 +              return err;
 +      }
  
 +      if (x2apic_enabled())
 +              msg->address_hi = MSI_ADDR_BASE_HI |
 +                                MSI_ADDR_EXT_DEST_ID(dest);
 +      else
                msg->address_hi = MSI_ADDR_BASE_HI;
 -              msg->data = sub_handle;
 -              msg->address_lo = MSI_ADDR_BASE_LO | MSI_ADDR_IR_EXT_INT |
 -                                MSI_ADDR_IR_SHV |
 -                                MSI_ADDR_IR_INDEX1(ir_index) |
 -                                MSI_ADDR_IR_INDEX2(ir_index);
 -      } else {
 -              if (x2apic_enabled())
 -                      msg->address_hi = MSI_ADDR_BASE_HI |
 -                                        MSI_ADDR_EXT_DEST_ID(dest);
 -              else
 -                      msg->address_hi = MSI_ADDR_BASE_HI;
  
 -              msg->address_lo =
 -                      MSI_ADDR_BASE_LO |
 -                      ((apic->irq_dest_mode == 0) ?
 -                              MSI_ADDR_DEST_MODE_PHYSICAL:
 -                              MSI_ADDR_DEST_MODE_LOGICAL) |
 -                      ((apic->irq_delivery_mode != dest_LowestPrio) ?
 -                              MSI_ADDR_REDIRECTION_CPU:
 -                              MSI_ADDR_REDIRECTION_LOWPRI) |
 -                      MSI_ADDR_DEST_ID(dest);
 +      msg->address_lo =
 +              MSI_ADDR_BASE_LO |
 +              ((apic->irq_dest_mode == 0) ?
 +                      MSI_ADDR_DEST_MODE_PHYSICAL:
 +                      MSI_ADDR_DEST_MODE_LOGICAL) |
 +              ((apic->irq_delivery_mode != dest_LowestPrio) ?
 +                      MSI_ADDR_REDIRECTION_CPU:
 +                      MSI_ADDR_REDIRECTION_LOWPRI) |
 +              MSI_ADDR_DEST_ID(dest);
 +
 +      msg->data =
 +              MSI_DATA_TRIGGER_EDGE |
 +              MSI_DATA_LEVEL_ASSERT |
 +              ((apic->irq_delivery_mode != dest_LowestPrio) ?
 +                      MSI_DATA_DELIVERY_FIXED:
 +                      MSI_DATA_DELIVERY_LOWPRI) |
 +              MSI_DATA_VECTOR(cfg->vector);
  
 -              msg->data =
 -                      MSI_DATA_TRIGGER_EDGE |
 -                      MSI_DATA_LEVEL_ASSERT |
 -                      ((apic->irq_delivery_mode != dest_LowestPrio) ?
 -                              MSI_DATA_DELIVERY_FIXED:
 -                              MSI_DATA_DELIVERY_LOWPRI) |
 -                      MSI_DATA_VECTOR(cfg->vector);
 -      }
        return err;
  }
  
@@@ -3122,6 -3277,33 +3111,6 @@@ static struct irq_chip msi_chip = 
        .irq_retrigger          = ioapic_retrigger_irq,
  };
  
 -/*
 - * Map the PCI dev to the corresponding remapping hardware unit
 - * and allocate 'nvec' consecutive interrupt-remapping table entries
 - * in it.
 - */
 -static int msi_alloc_irte(struct pci_dev *dev, int irq, int nvec)
 -{
 -      struct intel_iommu *iommu;
 -      int index;
 -
 -      iommu = map_dev_to_ir(dev);
 -      if (!iommu) {
 -              printk(KERN_ERR
 -                     "Unable to map PCI %s to iommu\n", pci_name(dev));
 -              return -ENOENT;
 -      }
 -
 -      index = alloc_irte(iommu, irq, nvec);
 -      if (index < 0) {
 -              printk(KERN_ERR
 -                     "Unable to allocate %d IRTE for PCI %s\n", nvec,
 -                     pci_name(dev));
 -              return -ENOSPC;
 -      }
 -      return index;
 -}
 -
  static int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int irq)
  {
        struct irq_chip *chip = &msi_chip;
@@@ -3152,6 -3334,7 +3141,6 @@@ int native_setup_msi_irqs(struct pci_de
        int node, ret, sub_handle, index = 0;
        unsigned int irq, irq_want;
        struct msi_desc *msidesc;
 -      struct intel_iommu *iommu = NULL;
  
        /* x86 doesn't support multiple MSI yet */
        if (type == PCI_CAP_ID_MSI && nvec > 1)
                if (irq == 0)
                        return -1;
                irq_want = irq + 1;
 -              if (!intr_remapping_enabled)
 +              if (!irq_remapping_enabled)
                        goto no_ir;
  
                if (!sub_handle) {
                         * allocate the consecutive block of IRTE's
                         * for 'nvec'
                         */
 -                      index = msi_alloc_irte(dev, irq, nvec);
 +                      index = msi_alloc_remapped_irq(dev, irq, nvec);
                        if (index < 0) {
                                ret = index;
                                goto error;
                        }
                } else {
 -                      iommu = map_dev_to_ir(dev);
 -                      if (!iommu) {
 -                              ret = -ENOENT;
 +                      ret = msi_setup_remapped_irq(dev, irq, index,
 +                                                   sub_handle);
 +                      if (ret < 0)
                                goto error;
 -                      }
 -                      /*
 -                       * setup the mapping between the irq and the IRTE
 -                       * base index, the sub_handle pointing to the
 -                       * appropriate interrupt remap table entry.
 -                       */
 -                      set_irte_irq(irq, iommu, index, sub_handle);
                }
  no_ir:
                ret = setup_msi_irq(dev, msidesc, irq);
@@@ -3300,8 -3490,15 +3289,8 @@@ int arch_setup_hpet_msi(unsigned int ir
        struct msi_msg msg;
        int ret;
  
 -      if (intr_remapping_enabled) {
 -              struct intel_iommu *iommu = map_hpet_to_ir(id);
 -              int index;
 -
 -              if (!iommu)
 -                      return -1;
 -
 -              index = alloc_irte(iommu, irq, 1);
 -              if (index < 0)
 +      if (irq_remapping_enabled) {
 +              if (!setup_hpet_msi_remapped(irq, id))
                        return -1;
        }
  
@@@ -3680,8 -3877,8 +3669,8 @@@ void __init setup_ioapic_dest(void
                else
                        mask = apic->target_cpus();
  
 -              if (intr_remapping_enabled)
 -                      ir_ioapic_set_affinity(idata, mask, false);
 +              if (irq_remapping_enabled)
 +                      set_remapped_irq_affinity(idata, mask, false);
                else
                        ioapic_set_affinity(idata, mask, false);
        }
@@@ -3723,7 -3920,12 +3712,7 @@@ static struct resource * __init ioapic_
        return res;
  }
  
 -void __init ioapic_and_gsi_init(void)
 -{
 -      io_apic_ops.init();
 -}
 -
 -static void __init __ioapic_init_mappings(void)
 +void __init native_io_apic_init_mappings(void)
  {
        unsigned long ioapic_phys, idx = FIX_IO_APIC_BASE_0;
        struct resource *ioapic_res;
diff --combined arch/x86/kernel/nmi.c
index bffdfd48c1f2707fa6c0049699211adadf523e75,7b3fdfdabf94009ef12fd1332e7d0fdadb73a268..90875279ef3d56bb04fad7262fb9ea98e2c61dcf
@@@ -19,8 -19,6 +19,6 @@@
  #include <linux/slab.h>
  #include <linux/export.h>
  
- #include <linux/mca.h>
  #if defined(CONFIG_EDAC)
  #include <linux/edac.h>
  #endif
  #include <asm/nmi.h>
  #include <asm/x86_init.h>
  
 -#define NMI_MAX_NAMELEN       16
 -struct nmiaction {
 -      struct list_head list;
 -      nmi_handler_t handler;
 -      unsigned int flags;
 -      char *name;
 -};
 -
  struct nmi_desc {
        spinlock_t lock;
        struct list_head head;
@@@ -46,14 -52,6 +44,14 @@@ static struct nmi_desc nmi_desc[NMI_MAX
                .lock = __SPIN_LOCK_UNLOCKED(&nmi_desc[1].lock),
                .head = LIST_HEAD_INIT(nmi_desc[1].head),
        },
 +      {
 +              .lock = __SPIN_LOCK_UNLOCKED(&nmi_desc[2].lock),
 +              .head = LIST_HEAD_INIT(nmi_desc[2].head),
 +      },
 +      {
 +              .lock = __SPIN_LOCK_UNLOCKED(&nmi_desc[3].lock),
 +              .head = LIST_HEAD_INIT(nmi_desc[3].head),
 +      },
  
  };
  
@@@ -84,7 -82,7 +82,7 @@@ __setup("unknown_nmi_panic", setup_unkn
  
  #define nmi_to_desc(type) (&nmi_desc[type])
  
 -static int notrace __kprobes nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
 +static int __kprobes nmi_handle(unsigned int type, struct pt_regs *regs, bool b2b)
  {
        struct nmi_desc *desc = nmi_to_desc(type);
        struct nmiaction *a;
        return handled;
  }
  
 -static int __setup_nmi(unsigned int type, struct nmiaction *action)
 +int __register_nmi_handler(unsigned int type, struct nmiaction *action)
  {
        struct nmi_desc *desc = nmi_to_desc(type);
        unsigned long flags;
  
 +      if (!action->handler)
 +              return -EINVAL;
 +
        spin_lock_irqsave(&desc->lock, flags);
  
        /*
         * to manage expectations
         */
        WARN_ON_ONCE(type == NMI_UNKNOWN && !list_empty(&desc->head));
 +      WARN_ON_ONCE(type == NMI_SERR && !list_empty(&desc->head));
 +      WARN_ON_ONCE(type == NMI_IO_CHECK && !list_empty(&desc->head));
  
        /*
         * some handlers need to be executed first otherwise a fake
        spin_unlock_irqrestore(&desc->lock, flags);
        return 0;
  }
 +EXPORT_SYMBOL(__register_nmi_handler);
  
 -static struct nmiaction *__free_nmi(unsigned int type, const char *name)
 +void unregister_nmi_handler(unsigned int type, const char *name)
  {
        struct nmi_desc *desc = nmi_to_desc(type);
        struct nmiaction *n;
  
        spin_unlock_irqrestore(&desc->lock, flags);
        synchronize_rcu();
 -      return (n);
  }
 -
 -int register_nmi_handler(unsigned int type, nmi_handler_t handler,
 -                      unsigned long nmiflags, const char *devname)
 -{
 -      struct nmiaction *action;
 -      int retval = -ENOMEM;
 -
 -      if (!handler)
 -              return -EINVAL;
 -
 -      action = kzalloc(sizeof(struct nmiaction), GFP_KERNEL);
 -      if (!action)
 -              goto fail_action;
 -
 -      action->handler = handler;
 -      action->flags = nmiflags;
 -      action->name = kstrndup(devname, NMI_MAX_NAMELEN, GFP_KERNEL);
 -      if (!action->name)
 -              goto fail_action_name;
 -
 -      retval = __setup_nmi(type, action);
 -
 -      if (retval)
 -              goto fail_setup_nmi;
 -
 -      return retval;
 -
 -fail_setup_nmi:
 -      kfree(action->name);
 -fail_action_name:
 -      kfree(action);
 -fail_action:  
 -
 -      return retval;
 -}
 -EXPORT_SYMBOL_GPL(register_nmi_handler);
 -
 -void unregister_nmi_handler(unsigned int type, const char *name)
 -{
 -      struct nmiaction *a;
 -
 -      a = __free_nmi(type, name);
 -      if (a) {
 -              kfree(a->name);
 -              kfree(a);
 -      }
 -}
 -
  EXPORT_SYMBOL_GPL(unregister_nmi_handler);
  
 -static notrace __kprobes void
 +static __kprobes void
  pci_serr_error(unsigned char reason, struct pt_regs *regs)
  {
 +      /* check to see if anyone registered against these types of errors */
 +      if (nmi_handle(NMI_SERR, regs, false))
 +              return;
 +
        pr_emerg("NMI: PCI system error (SERR) for reason %02x on CPU %d.\n",
                 reason, smp_processor_id());
  
        outb(reason, NMI_REASON_PORT);
  }
  
 -static notrace __kprobes void
 +static __kprobes void
  io_check_error(unsigned char reason, struct pt_regs *regs)
  {
        unsigned long i;
  
 +      /* check to see if anyone registered against these types of errors */
 +      if (nmi_handle(NMI_IO_CHECK, regs, false))
 +              return;
 +
        pr_emerg(
        "NMI: IOCK error (debug interrupt?) for reason %02x on CPU %d.\n",
                 reason, smp_processor_id());
 -      show_registers(regs);
 +      show_regs(regs);
  
        if (panic_on_io_nmi)
                panic("NMI IOCK error: Not continuing");
        outb(reason, NMI_REASON_PORT);
  }
  
 -static notrace __kprobes void
 +static __kprobes void
  unknown_nmi_error(unsigned char reason, struct pt_regs *regs)
  {
        int handled;
  
        __this_cpu_add(nmi_stats.unknown, 1);
  
- #ifdef CONFIG_MCA
-       /*
-        * Might actually be able to figure out what the guilty party
-        * is:
-        */
-       if (MCA_bus) {
-               mca_handle_nmi();
-               return;
-       }
- #endif
        pr_emerg("Uhhuh. NMI received for unknown reason %02x on CPU %d.\n",
                 reason, smp_processor_id());
  
  static DEFINE_PER_CPU(bool, swallow_nmi);
  static DEFINE_PER_CPU(unsigned long, last_nmi_rip);
  
 -static notrace __kprobes void default_do_nmi(struct pt_regs *regs)
 +static __kprobes void default_do_nmi(struct pt_regs *regs)
  {
        unsigned char reason = 0;
        int handled;
diff --combined arch/x86/kernel/setup.c
index 9b4204e0666585d116233a4a1bed964df9f5d125,879166402bf919606359947532b00b7a9b0a5ee3..366c688d619e85c94d0bb826dc2c874f5aa324f5
@@@ -34,7 -34,6 +34,6 @@@
  #include <linux/memblock.h>
  #include <linux/seq_file.h>
  #include <linux/console.h>
- #include <linux/mca.h>
  #include <linux/root_dev.h>
  #include <linux/highmem.h>
  #include <linux/module.h>
@@@ -179,12 -178,6 +178,6 @@@ struct cpuinfo_x86 new_cpu_data __cpuin
  /* common cpu data for all cpus */
  struct cpuinfo_x86 boot_cpu_data __read_mostly = {0, 0, 0, 0, -1, 1, 0, 0, -1};
  EXPORT_SYMBOL(boot_cpu_data);
- static void set_mca_bus(int x)
- {
- #ifdef CONFIG_MCA
-       MCA_bus = x;
- #endif
- }
  
  unsigned int def_to_bigsmp;
  
@@@ -393,9 -386,10 +386,9 @@@ static void __init reserve_initrd(void
        initrd_start = 0;
  
        if (ramdisk_size >= (end_of_lowmem>>1)) {
 -              memblock_free(ramdisk_image, ramdisk_end - ramdisk_image);
 -              printk(KERN_ERR "initrd too large to handle, "
 -                     "disabling initrd\n");
 -              return;
 +              panic("initrd too large to handle, "
 +                     "disabling initrd (%lld needed, %lld available)\n",
 +                     ramdisk_size, end_of_lowmem>>1);
        }
  
        printk(KERN_INFO "RAMDISK: %08llx - %08llx\n", ramdisk_image,
@@@ -716,7 -710,6 +709,6 @@@ void __init setup_arch(char **cmdline_p
        apm_info.bios = boot_params.apm_bios_info;
        ist_info = boot_params.ist_info;
        if (boot_params.sys_desc_table.length != 0) {
-               set_mca_bus(boot_params.sys_desc_table.table[3] & 0x2);
                machine_id = boot_params.sys_desc_table.table[0];
                machine_submodel_id = boot_params.sys_desc_table.table[1];
                BIOS_revision = boot_params.sys_desc_table.table[2];
        init_cpu_to_node();
  
        init_apic_mappings();
 -      ioapic_and_gsi_init();
 +      if (x86_io_apic_ops.init)
 +              x86_io_apic_ops.init();
  
        kvm_guest_init();
  
diff --combined arch/x86/kernel/traps.c
index 92d5756d85fcd63f5b05f5e45a8836a9ab821274,4754f510b360890eaf48ae9672c607fc2682ba4d..ff08457a025da1c6a15a5b18ce639f0eb80476eb
  #include <linux/eisa.h>
  #endif
  
- #ifdef CONFIG_MCA
- #include <linux/mca.h>
- #endif
  #if defined(CONFIG_EDAC)
  #include <linux/edac.h>
  #endif
@@@ -50,7 -46,6 +46,7 @@@
  #include <asm/processor.h>
  #include <asm/debugreg.h>
  #include <linux/atomic.h>
 +#include <asm/ftrace.h>
  #include <asm/traps.h>
  #include <asm/desc.h>
  #include <asm/i387.h>
@@@ -304,13 -299,8 +300,13 @@@ gp_in_kernel
  }
  
  /* May run on IST stack. */
 -dotraplinkage void __kprobes do_int3(struct pt_regs *regs, long error_code)
 +dotraplinkage void __kprobes notrace do_int3(struct pt_regs *regs, long error_code)
  {
 +#ifdef CONFIG_DYNAMIC_FTRACE
 +      /* ftrace must be first, everything else may cause a recursive crash */
 +      if (unlikely(modifying_ftrace_code) && ftrace_int3_handler(regs))
 +              return;
 +#endif
  #ifdef CONFIG_KGDB_LOW_LEVEL_TRAP
        if (kgdb_ll_trap(DIE_INT3, "int3", regs, error_code, X86_TRAP_BP,
                                SIGTRAP) == NOTIFY_STOP)
diff --combined drivers/Makefile
index 35d5181c8ef2d876b5c7789e2541380548fba30f,f9b82f2c7c47a49996a3abec5c510c1b1fc54ca5..0ee98d50f9752b0a77925dca996f5cd36fee12a3
@@@ -92,7 -92,6 +92,6 @@@ obj-$(CONFIG_BT)              += bluetooth
  obj-$(CONFIG_ACCESSIBILITY)   += accessibility/
  obj-$(CONFIG_ISDN)            += isdn/
  obj-$(CONFIG_EDAC)            += edac/
- obj-$(CONFIG_MCA)             += mca/
  obj-$(CONFIG_EISA)            += eisa/
  obj-y                         += lguest/
  obj-$(CONFIG_CPU_FREQ)                += cpufreq/
@@@ -134,7 -133,3 +133,7 @@@ obj-$(CONFIG_VIRT_DRIVERS) += virt
  obj-$(CONFIG_HYPERV)          += hv/
  
  obj-$(CONFIG_PM_DEVFREQ)      += devfreq/
 +obj-$(CONFIG_EXTCON)          += extcon/
 +obj-$(CONFIG_MEMORY)          += memory/
 +obj-$(CONFIG_IIO)             += iio/
 +obj-$(CONFIG_VME_BUS)         += vme/
diff --combined drivers/scsi/Kconfig
index bea04e5d3b51aa899f917915644b7e3c5748fe7b,7a66d0e97dd31bf61934e3a217a51ca8f57e940f..e9559782d3ec21878078f004761912bfc9348fc7
@@@ -408,7 -408,6 +408,7 @@@ config BLK_DEV_3W_XXXX_RAI
  config SCSI_HPSA
        tristate "HP Smart Array SCSI driver"
        depends on PCI && SCSI
 +      select CHECK_SIGNATURE
        help
          This driver supports HP Smart Array Controllers (circa 2009).
          It is a SCSI alternative to the cciss driver, which is a block
@@@ -808,19 -807,6 +808,6 @@@ config SCSI_FUTURE_DOMAI
          To compile this driver as a module, choose M here: the
          module will be called fdomain.
  
- config SCSI_FD_MCS
-       tristate "Future Domain MCS-600/700 SCSI support"
-       depends on MCA_LEGACY && SCSI
-       ---help---
-         This is support for Future Domain MCS 600/700 MCA SCSI adapters.
-         Some PS/2 computers are equipped with IBM Fast SCSI Adapter/A which
-         is identical to the MCS 700 and hence also supported by this driver.
-         This driver also supports the Reply SB16/SCSI card (the SCSI part).
-         It supports multiple adapters in the same system.
-         To compile this driver as a module, choose M here: the
-         module will be called fd_mcs.
  config SCSI_GDTH
        tristate "Intel/ICP (former GDT SCSI Disk Array) RAID Controller support"
        depends on (ISA || EISA || PCI) && SCSI && ISA_DMA_API
@@@ -890,76 -876,6 +877,6 @@@ config SCSI_GENERIC_NCR53C40
          not detect your card.  See the file
          <file:Documentation/scsi/g_NCR5380.txt> for details.
  
- config SCSI_IBMMCA
-       tristate "IBMMCA SCSI support"
-       depends on MCA && SCSI
-       ---help---
-         This is support for the IBM SCSI adapter found in many of the PS/2
-         series computers.  These machines have an MCA bus, so you need to
-         answer Y to "MCA support" as well and read
-         <file:Documentation/mca.txt>.
-         If the adapter isn't found during boot (a common problem for models
-         56, 57, 76, and 77) you'll need to use the 'ibmmcascsi=<pun>' kernel
-         option, where <pun> is the id of the SCSI subsystem (usually 7, but
-         if that doesn't work check your reference diskette).  Owners of
-         model 95 with a LED-matrix-display can in addition activate some
-         activity info like under OS/2, but more informative, by setting
-         'ibmmcascsi=display' as an additional kernel parameter.  Try "man
-         bootparam" or see the documentation of your boot loader about how to
-         pass options to the kernel.
-         To compile this driver as a module, choose M here: the
-         module will be called ibmmca.
- config IBMMCA_SCSI_ORDER_STANDARD
-       bool "Standard SCSI-order"
-       depends on SCSI_IBMMCA
-       ---help---
-         In the PC-world and in most modern SCSI-BIOS-setups, SCSI-hard disks
-         are assigned to the drive letters, starting with the lowest SCSI-id
-         (physical number -- pun) to be drive C:, as seen from DOS and
-         similar operating systems. When looking into papers describing the
-         ANSI-SCSI-standard, this assignment of drives appears to be wrong.
-         The SCSI-standard follows a hardware-hierarchy which says that id 7
-         has the highest priority and id 0 the lowest. Therefore, the host
-         adapters are still today everywhere placed as SCSI-id 7 by default.
-         In the SCSI-standard, the drive letters express the priority of the
-         disk. C: should be the hard disk, or a partition on it, with the
-         highest priority. This must therefore be the disk with the highest
-         SCSI-id (e.g. 6) and not the one with the lowest! IBM-BIOS kept the
-         original definition of the SCSI-standard as also industrial- and
-         process-control-machines, like VME-CPUs running under realtime-OSes
-         (e.g. LynxOS, OS9) do.
-         If you like to run Linux on your MCA-machine with the same
-         assignment of hard disks as seen from e.g. DOS or OS/2 on your
-         machine, which is in addition conformant to the SCSI-standard, you
-         must say Y here. This is also necessary for MCA-Linux users who want
-         to keep downward compatibility to older releases of the
-         IBM-MCA-SCSI-driver (older than driver-release 2.00 and older than
-         June 1997).
-         If you like to have the lowest SCSI-id assigned as drive C:, as
-         modern SCSI-BIOSes do, which does not conform to the standard, but
-         is widespread and common in the PC-world of today, you must say N
-         here. If unsure, say Y.
- config IBMMCA_SCSI_DEV_RESET
-       bool "Reset SCSI-devices at boottime"
-       depends on SCSI_IBMMCA
-       ---help---
-         By default, SCSI-devices are reset when the machine is powered on.
-         However, some devices exist, like special-control-devices,
-         SCSI-CNC-machines, SCSI-printer or scanners of older type, that do
-         not reset when switched on. If you say Y here, each device connected
-         to your SCSI-bus will be issued a reset-command after it has been
-         probed, while the kernel is booting. This may cause problems with
-         more modern devices, like hard disks, which do not appreciate these
-         reset commands, and can cause your system to hang. So say Y only if
-         you know that one of your older devices needs it; N is the safe
-         answer.
  config SCSI_IPS
        tristate "IBM ServeRAID support"
        depends on PCI && SCSI
index 8bc7ecbf6bea22acfa777cdd2c959f7b9c97ac05,175c2041847f1e3e94379ea62b3d216390805a61..a27dd0569bd7341b93a176be9c58755669d3829d
@@@ -241,15 -241,6 +241,6 @@@ config SERIAL_8250_RS
        help
          ::: To be written :::
  
- config SERIAL_8250_MCA
-       tristate "Support 8250-type ports on MCA buses"
-       depends on SERIAL_8250 != n && MCA
-       help
-         Say Y here if you have a MCA serial ports.
-         To compile this driver as a module, choose M here: the module
-         will be called 8250_mca.
  config SERIAL_8250_ACORN
        tristate "Acorn expansion card serial port support"
        depends on ARCH_ACORN && SERIAL_8250
@@@ -278,11 -269,3 +269,11 @@@ config SERIAL_8250_D
        help
          Selecting this option will enable handling of the extra features
          present in the Synopsys DesignWare APB UART.
 +
 +config SERIAL_8250_EM
 +      tristate "Support for Emma Mobile intergrated serial port"
 +      depends on SERIAL_8250 && ARM && HAVE_CLK
 +      help
 +        Selecting this option will add support for the integrated serial
 +        port hardware found on the Emma Mobile line of processors.
 +        If unsure, say N.
index 3f35eacdf673d1a850082d1c03f304c231b8d826,464320f52dab71c74e3225716537cdf7f92b3718..d7533c7d2c1ac227727e075444e30ba2643dfd8b
@@@ -15,7 -15,5 +15,6 @@@ obj-$(CONFIG_SERIAL_8250_ACCENT)      += 825
  obj-$(CONFIG_SERIAL_8250_BOCA)                += 8250_boca.o
  obj-$(CONFIG_SERIAL_8250_EXAR_ST16C554)       += 8250_exar_st16c554.o
  obj-$(CONFIG_SERIAL_8250_HUB6)                += 8250_hub6.o
- obj-$(CONFIG_SERIAL_8250_MCA)         += 8250_mca.o
  obj-$(CONFIG_SERIAL_8250_FSL)         += 8250_fsl.o
  obj-$(CONFIG_SERIAL_8250_DW)          += 8250_dw.o
 +obj-$(CONFIG_SERIAL_8250_EM)          += 8250_em.o
index 10dbce5205af8084f2c840f808898826cd1b1d23,6c5047dbfea3f60e3084300a1ad9fb71159d206a..a416e92012ef72db74f1d9ffe2c54bbe2c98b217
@@@ -38,7 -38,6 +38,7 @@@ struct plat_serial8250_port 
        int             (*handle_irq)(struct uart_port *);
        void            (*pm)(struct uart_port *, unsigned int state,
                              unsigned old);
 +      void            (*handle_break)(struct uart_port *);
  };
  
  /*
@@@ -55,7 -54,6 +55,6 @@@ enum 
        PLAT8250_DEV_BOCA,
        PLAT8250_DEV_EXAR_ST16C554,
        PLAT8250_DEV_HUB6,
-       PLAT8250_DEV_MCA,
        PLAT8250_DEV_AU1X00,
        PLAT8250_DEV_SM501,
  };
@@@ -69,7 -67,6 +68,7 @@@
  struct uart_port;
  struct uart_8250_port;
  
 +int serial8250_register_8250_port(struct uart_8250_port *);
  int serial8250_register_port(struct uart_port *);
  void serial8250_unregister_port(int line);
  void serial8250_suspend_port(int line);
This page took 0.161066 seconds and 4 git commands to generate.