Merge branch 'drm-core-next' of git://people.freedesktop.org/~airlied/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 May 2012 19:42:54 +0000 (12:42 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 May 2012 19:42:54 +0000 (12:42 -0700)
Pull main drm updates from Dave Airlie:
 "This is the main merge window request for the drm.

  It's big, but jam packed will lots of features and of course 0
  regressions.  (okay maybe there'll be one).

  Highlights:

   - new KMS drivers for server GPU chipsets: ast, mgag200 and cirrus
     (qemu only).  These drivers use the generic modesetting drivers.

   - initial prime/dma-buf support for i915, nouveau, radeon, udl and
     exynos

   - switcheroo audio support: so GPUs with HDMI can turn off the sound
     driver without crashing stuff.

   - There are some patches drifting outside drivers/gpu into x86 and
     EFI for better handling of multiple video adapters in Apple Macs,
     they've got correct acks except one trivial fixup.

   - Core:
edid parser has better DMT and reduced blanking support,
crtc properties,
plane properties,

   - Drivers:
exynos: add 2D core accel support, prime support, hdmi features
intel: more Haswell support, initial Valleyview support, more
    hdmi infoframe fixes, update MAINTAINERS for Daniel, lots of
    cleanups and fixes
radeon: more HDMI audio support, improved GPU lockup recovery
    support, remove nested mutexes, less memory copying on PCIE, fix
    bus master enable race (kexec), improved fence handling
gma500: cleanups, 1080p support, acpi fixes
nouveau: better nva3 memory reclocking, kepler accel (needs
    external firmware rip), async buffer moves on nv84+ hw.

  I've some more dma-buf patches that rely on the dma-buf merge for vmap
  stuff, and I've a few fixes building up, but I'd decided I'd better
  get rid of the main pull sooner rather than later, so the audio guys
  are also unblocked."

Fix up trivial conflict due to some duplicated changes in
drivers/gpu/drm/i915/intel_ringbuffer.c

* 'drm-core-next' of git://people.freedesktop.org/~airlied/linux: (605 commits)
  drm/nouveau/nvd9: Fix GPIO initialisation sequence.
  drm/nouveau: Unregister switcheroo client on exit
  drm/nouveau: Check dsm on switcheroo unregister
  drm/nouveau: fix a minor annoyance in an output string
  drm/nouveau: turn a BUG into a WARN
  drm/nv50: decode PGRAPH DATA_ERROR = 0x24
  drm/nouveau/disp: fix dithering not being enabled on some eDP macbooks
  drm/nvd9/copy: initialise copy engine, seems to work like nvc0
  drm/nvc0/ttm: use copy engines for async buffer moves
  drm/nva3/ttm: use copy engine for async buffer moves
  drm/nv98/ttm: add in a (disabled) crypto engine buffer copy method
  drm/nv84/ttm: use crypto engine for async buffer copies
  drm/nouveau/ttm: untangle code to support accelerated buffer moves
  drm/nouveau/fbcon: use fence for sync, rather than notifier
  drm/nv98/crypt: non-stub implementation of the engine hooks
  drm/nouveau/fifo: turn all fifo modules into engine modules
  drm/nv50/graph: remove ability to do interrupt-driven context switching
  drm/nv50: remove manual context unload on context destruction
  drm/nv50: remove execution engine context saves on suspend
  drm/nv50/fifo: use hardware channel kickoff functionality
  ...

1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
arch/x86/pci/fixup.c
drivers/gpu/drm/i915/intel_sdvo.c
drivers/gpu/drm/radeon/radeon_gart.c
drivers/gpu/drm/radeon/radeon_gem.c
drivers/staging/omapdrm/omap_drv.c

index 5b6e5849222901c04007b9f2c81811b12a51f49a,41e398c568893f2b49555b4cbdb18a1621c26c63..b69cfdc121127e92c798a81ef2e9baa68d1d7616
@@@ -70,6 -70,7 +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.
@@@ -610,7 -610,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]
        i8k.restricted  [HW] Allow controlling fans only if SYS_ADMIN
                        capability is set.
  
+       i915.invert_brightness=
+                       [DRM] Invert the sense of the variable that is used to
+                       set the brightness of the panel backlight. Normally a
+                       brightness value of 0 indicates backlight switched off,
+                       and the maximum of the brightness value sets the backlight
+                       to maximum brightness. If this parameter is set to 0
+                       (default) and the machine requires it, or this parameter
+                       is set to 1, a brightness value of 0 sets the backlight
+                       to maximum brightness, and the maximum of the brightness
+                       value switches the backlight off.
+                       -1 -- never invert brightness
+                        0 -- machine default
+                        1 -- force brightness inversion
        icn=            [HW,ISDN]
                        Format: <io>[,<membase>[,<icn_id>[,<icn_id2>]]]
  
                                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 62b0cf496ebd7b1464e53831eeadd9c68409bff1,90e7e226a90cd5292f1ddd74a982987bf6713c22..eaff0392eb32e2677b434c88cfb17dbe323db02f
@@@ -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 <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (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 <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -739,10 -746,7 +739,10 @@@ M:       Barry Song <baohua.song@csr.com
  L:    linux-arm-kernel@lists.infradead.org (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 <linux@arm.linux.org.uk>
@@@ -855,11 -859,21 +855,11 @@@ M:      Dan Williams <dan.j.williams@intel.c
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/INTEL IXP2000 ARM ARCHITECTURE
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IXDP2850 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/INTEL IXP23XX ARM ARCHITECTURE
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IXP4XX ARM ARCHITECTURE
  M:    Imre Kaloz <kaloz@openwrt.org>
  M:    Krzysztof Halasa <khc@pm.waw.pl>
@@@ -894,12 -908,11 +894,12 @@@ ARM/MAGICIAN MACHINE SUPPOR
  M:    Philipp Zabel <philipp.zabel@gmail.com>
  S:    Maintained
  
 -ARM/Marvell Loki/Kirkwood/MV78xx0/Orion SOC support
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -M:    Nicolas Pitre <nico@fluxnic.net>
 +ARM/Marvell Dove/Kirkwood/MV78xx0/Orion SOC support
 +M:    Jason Cooper <jason@lakedaemon.net>
 +M:    Andrew Lunn <andrew@lunn.ch>
  L:    linux-arm-kernel@lists.infradead.org (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 <nicolas.ferre@atmel.c
  S:    Supported
  F:    drivers/tty/serial/atmel_serial.c
  
 +ATMEL DMA DRIVER
 +M:    Nicolas Ferre <nicolas.ferre@atmel.com>
 +L:    linux-arm-kernel@lists.infradead.org (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 <josh.wu@atmel.com>
 +L:    linux-media@vger.kernel.org
 +S:    Supported
 +F:    drivers/media/video/atmel-isi.c
 +F:    include/media/atmel-isi.h
 +
  ATMEL LCDFB DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -1350,22 -1348,10 +1350,22 @@@ M:   Nicolas Ferre <nicolas.ferre@atmel.c
  S:    Supported
  F:    drivers/spi/spi-atmel.*
  
 +ATMEL Timer Counter (TC) AND CLOCKSOURCE DRIVERS
 +M:    Nicolas Ferre <nicolas.ferre@atmel.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/misc/atmel_tclib.c
 +F:    drivers/clocksource/tcb_clksrc.c
 +
 +ATMEL TSADCC DRIVER
 +M:    Josh Wu <josh.wu@atmel.com>
 +L:    linux-input@vger.kernel.org
 +S:    Supported
 +F:    drivers/input/touchscreen/atmel_tsadcc.c
 +
  ATMEL USBA UDC DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://avr32linux.org/twiki/bin/view/Main/AtmelUsbDeviceDriver
  S:    Supported
  F:    drivers/usb/gadget/atmel_usba_udc.*
  
@@@ -1445,7 -1431,6 +1445,7 @@@ F:      include/linux/backlight.
  BATMAN ADVANCED
  M:    Marek Lindner <lindner_marek@yahoo.de>
  M:    Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
 +M:    Antonio Quartulli <ordex@autistici.org>
  L:    b.a.t.m.a.n@lists.open-mesh.org
  W:    http://www.open-mesh.org/
  S:    Maintained
@@@ -1613,7 -1598,6 +1613,7 @@@ F:      include/linux/bcma
  
  BROCADE BFA FC SCSI DRIVER
  M:    Jing Huang <huangj@brocade.com>
 +M:    Krishna C Gudipati <kgudipat@brocade.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/bfa/
@@@ -1747,7 -1731,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 <arnd@arndb.de>
@@@ -1826,12 -1809,6 +1826,12 @@@ L:    linux-kernel@zh-kernel.org (moderate
  S:    Maintained
  F:    Documentation/zh_CN/
  
 +CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER
 +M:    Alexander Shishkin <alexander.shishkin@linux.intel.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/chipidea/
 +
  CISCO VIC ETHERNET NIC DRIVER
  M:    Christian Benvenuti <benve@cisco.com>
  M:    Roopa Prabhu <roprabhu@cisco.com>
@@@ -1991,9 -1968,7 +1991,9 @@@ S:      Maintaine
  F:    drivers/net/ethernet/ti/cpmac.c
  
  CPU FREQUENCY DRIVERS
 +M:    Rafael J. Wysocki <rjw@sisk.pl>
  L:    cpufreq@vger.kernel.org
 +L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    drivers/cpufreq/
  F:    include/linux/cpufreq.h
@@@ -2398,10 -2373,10 +2398,10 @@@ F:   drivers/gpu/drm
  F:    include/drm/
  
  INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
- M:    Keith Packard <keithp@keithp.com>
+ M:    Daniel Vetter <daniel.vetter@ffwll.ch>
  L:    intel-gfx@lists.freedesktop.org (subscribers-only)
  L:    dri-devel@lists.freedesktop.org
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/keithp/linux.git
+ T:    git git://people.freedesktop.org/~danvet/drm-intel
  S:    Supported
  F:    drivers/gpu/drm/i915
  F:    include/drm/i915*
@@@ -2718,13 -2693,6 +2718,13 @@@ S:    Maintaine
  F:    Documentation/hwmon/f71805f
  F:    drivers/hwmon/f71805f.c
  
 +FC0011 TUNER DRIVER
 +M:    Michael Buesch <m@bues.ch>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/common/tuners/fc0011.h
 +F:    drivers/media/common/tuners/fc0011.c
 +
  FANOTIFY
  M:    Eric Paris <eparis@redhat.com>
  S:    Maintained
@@@ -2783,15 -2751,6 +2783,15 @@@ T:    git git://git.alsa-project.org/alsa-
  S:    Maintained
  F:    sound/firewire/
  
 +FIREWIRE SBP-2 TARGET
 +M:    Chris Boot <bootc@bootc.net>
 +L:    linux-scsi@vger.kernel.org
 +L:    target-devel@vger.kernel.org
 +L:    linux1394-devel@lists.sourceforge.net
 +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 <stefanr@s5r6.in-berlin.de>
  L:    linux1394-devel@lists.sourceforge.net
@@@ -2928,7 -2887,7 +2928,7 @@@ S:      Maintaine
  F:    arch/frv/
  
  FUJITSU LAPTOP EXTRAS
 -M:    Jonathan Woithe <jwoithe@physics.adelaide.edu.au>
 +M:    Jonathan Woithe <jwoithe@just42.net>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/fujitsu-laptop.c
@@@ -3354,6 -3313,12 +3354,6 @@@ T:     git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    arch/ia64/
  
 -IBM MCA SCSI SUBSYSTEM DRIVER
 -M:    Michael Lang <langa2@kph.uni-mainz.de>
 -W:    http://www.uni-mainz.de/~langm000/linux.html
 -S:    Maintained
 -F:    drivers/scsi/ibmmca.c
 -
  IBM Power Linux RAID adapter
  M:    Brian King <brking@us.ibm.com>
  S:    Supported
@@@ -3416,7 -3381,6 +3416,7 @@@ IIO SUBSYSTEM AND DRIVER
  M:    Jonathan Cameron <jic23@cam.ac.uk>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 +F:    drivers/iio/
  F:    drivers/staging/iio/
  
  IKANOS/ADI EAGLE ADSL USB DRIVER
@@@ -3465,8 -3429,6 +3465,8 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
  S:    Maintained
  F:    drivers/input/
 +F:    include/linux/input.h
 +F:    include/linux/input/
  
  INPUT MULTITOUCH (MT) PROTOCOL
  M:    Henrik Rydberg <rydberg@euromail.se>
@@@ -3554,6 -3516,12 +3554,6 @@@ M:     Deepak Saxena <dsaxena@plexity.net
  S:    Maintained
  F:    drivers/char/hw_random/ixp4xx-rng.c
  
 -INTEL IXP2000 ETHERNET DRIVER
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/ethernet/xscale/ixp2000/
 -
  INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf)
  M:    Jeff Kirsher <jeffrey.t.kirsher@intel.com>
  M:    Jesse Brandeburg <jesse.brandeburg@intel.com>
@@@ -3638,14 -3606,6 +3638,14 @@@ S:    Supporte
  W:    http://wireless.kernel.org/en/users/Drivers/iwmc3200wifi
  F:    drivers/net/wireless/iwmc3200wifi/
  
 +INTEL MANAGEMENT ENGINE (mei)
 +M:    Tomas Winkler <tomas.winkler@intel.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Supported
 +F:    include/linux/mei.h
 +F:    drivers/misc/mei/*
 +F:    Documentation/mei/*
 +
  IOC3 ETHERNET DRIVER
  M:    Ralf Baechle <ralf@linux-mips.org>
  L:    linux-mips@linux-mips.org
@@@ -3671,7 -3631,7 +3671,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/icplus/ipg.*
  
  IPATH DRIVER
 -M:    Mike Marciniszyn <infinipath@qlogic.com>
 +M:    Mike Marciniszyn <infinipath@intel.com>
  L:    linux-rdma@vger.kernel.org
  S:    Maintained
  F:    drivers/infiniband/hw/ipath/
@@@ -4074,7 -4034,6 +4074,7 @@@ F:      Documentation/scsi/53c700.tx
  F:    drivers/scsi/53c700*
  
  LED SUBSYSTEM
 +M:    Bryan Wu <bryan.wu@canonical.com>
  M:    Richard Purdie <rpurdie@rpsys.net>
  S:    Maintained
  F:    drivers/leds/
@@@ -4461,6 -4420,13 +4461,6 @@@ T:     git git://git.monstr.eu/linux-2.6-mi
  S:    Supported
  F:    arch/microblaze/
  
 -MICROCHANNEL ARCHITECTURE (MCA)
 -M:    James Bottomley <James.Bottomley@HansenPartnership.com>
 -S:    Maintained
 -F:    Documentation/mca.txt
 -F:    drivers/mca/
 -F:    include/linux/mca*
 -
  MICROTEK X6 SCANNER
  M:    Oliver Neukum <oliver@neukum.name>
  S:    Maintained
@@@ -5164,13 -5130,19 +5164,13 @@@ F:   Documentation/powerpc/eeh-pci-error-
  PCI SUBSYSTEM
  M:    Bjorn Helgaas <bhelgaas@google.com>
  L:    linux-pci@vger.kernel.org
 -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 <bhelgaas@google.com>
 -L:    linux-pci@vger.kernel.org
 -S:    Supported
 -F:    drivers/pci/hotplug
 -
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    linux-pcmcia@lists.infradead.org
@@@ -5233,7 -5205,7 +5233,7 @@@ S:      Maintaine
  F:    include/linux/personality.h
  
  PHONET PROTOCOL
 -M:    Remi Denis-Courmont <remi.denis-courmont@nokia.com>
 +M:    Remi Denis-Courmont <courmisch@gmail.com>
  S:    Supported
  F:    Documentation/networking/phonet.txt
  F:    include/linux/phonet.h
@@@ -5260,14 -5232,6 +5260,14 @@@ M:    Linus Walleij <linus.walleij@linaro.
  S:    Maintained
  F:    drivers/pinctrl/
  
 +PIN CONTROLLER - ST SPEAR
 +M:    Viresh Kumar <viresh.kumar@st.com>
 +L:    spear-devel@list.st.com
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +W:    http://www.st.com/spear
 +S:    Maintained
 +F:    driver/pinctrl/spear/
 +
  PKTCDVD DRIVER
  M:    Peter Osterlund <petero2@telia.com>
  S:    Maintained
@@@ -5491,7 -5455,7 +5491,7 @@@ L:      rtc-linux@googlegroups.co
  S:    Maintained
  
  QIB DRIVER
 -M:    Mike Marciniszyn <infinipath@qlogic.com>
 +M:    Mike Marciniszyn <infinipath@intel.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/hw/qib/
@@@ -5641,13 -5605,14 +5641,13 @@@ F:   net/rds
  READ-COPY UPDATE (RCU)
  M:    Dipankar Sarma <dipankar@in.ibm.com>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 -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
@@@ -5993,7 -5958,7 +5993,7 @@@ SECURITY SUBSYSTE
  M:    James Morris <james.l.morris@oracle.com>
  L:    linux-security-module@vger.kernel.org (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/
  
@@@ -6164,15 -6129,6 +6164,15 @@@ S:    Maintaine
  F:    include/linux/sl?b*.h
  F:    mm/sl?b.c
  
 +SLEEPABLE READ-COPY UPDATE (SRCU)
 +M:    Lai Jiangshan <laijs@cn.fujitsu.com>
 +M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 +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 <nico@fluxnic.net>
  S:    Odd Fixes
@@@ -6372,6 -6328,21 +6372,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 <viresh.kumar@st.com>
 -L:    spear-devel@list.st.com
 -L:    linux-arm-kernel@lists.infradead.org (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 <grant.likely@secretlab.ca>
  L:    spi-devel-general@lists.sourceforge.net
@@@ -6578,7 -6549,7 +6578,7 @@@ M:      Paul Mundt <lethal@linux-sh.org
  L:    linux-sh@vger.kernel.org
  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/
@@@ -6696,28 -6667,12 +6696,28 @@@ 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 <mr.swami.reddy@ti.com>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    sound/soc/codecs/lm49453*
 +
  TI TWL4030 SERIES SOC CODEC DRIVER
  M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Maintained
  F:    sound/soc/codecs/twl4030*
  
 +TI WILINK WIRELESS DRIVERS
 +M:    Luciano Coelho <coelho@ti.com>
 +L:    linux-wireless@vger.kernel.org
 +W:    http://wireless.kernel.org/en/users/Drivers/wl12xx
 +W:    http://wireless.kernel.org/en/users/Drivers/wl1251
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
 +S:    Maintained
 +F:    drivers/net/wireless/ti/
 +F:    include/linux/wl12xx.h
 +
  TIPC NETWORK LAYER
  M:    Jon Maloy <jon.maloy@ericsson.com>
  M:    Allan Stephens <allan.stephens@windriver.com>
@@@ -6925,14 -6880,6 +6925,14 @@@ F:    Documentation/cdrom
  F:    drivers/cdrom/cdrom.c
  F:    include/linux/cdrom.h
  
 +UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
 +M:    Vinayak Holikatti <vinholikatti@gmail.com>
 +M:    Santosh Y <santoshsy@gmail.com>
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    Documentation/scsi/ufs.txt
 +F:    drivers/scsi/ufs/
 +
  UNSORTED BLOCK IMAGES (UBI)
  M:    Artem Bityutskiy <dedekind1@gmail.com>
  W:    http://www.linux-mtd.infradead.org/
@@@ -7079,14 -7026,6 +7079,14 @@@ W:    http://pegasus2.sourceforge.net
  S:    Maintained
  F:    drivers/net/usb/pegasus.*
  
 +USB PHY LAYER
 +M:    Felipe Balbi <balbi@ti.com>
 +L:    linux-usb@vger.kernel.org
 +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 <zaitcev@redhat.com>
  L:    linux-usb@vger.kernel.org
@@@ -7200,7 -7139,7 +7200,7 @@@ F:      include/linux/usb/usbnet.
  
  USB VIDEO CLASS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 -L:    linux-uvc-devel@lists.berlios.de (subscribers-only)
 +L:    linux-uvc-devel@lists.sourceforge.net (subscribers-only)
  L:    linux-media@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git
  W:    http://www.ideasonboard.org/uvc/
@@@ -7370,18 -7309,6 +7370,18 @@@ S:    Maintaine
  F:    drivers/vlynq/vlynq.c
  F:    include/linux/vlynq.h
  
 +VME SUBSYSTEM
 +M:    Martyn Welch <martyn.welch@ge.com>
 +M:    Manohar Vanga <manohar.vanga@cern.ch>
 +M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 +L:    devel@driverdev.osuosl.org
 +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 <sbhatewara@vmware.com>
  M:    "VMware, Inc." <pv-drivers@vmware.com>
@@@ -7502,6 -7429,23 +7502,6 @@@ M:     Miloslav Trmac <mitr@volny.cz
  S:    Maintained
  F:    drivers/input/misc/wistron_btns.c
  
 -WL1251 WIRELESS DRIVER
 -M:    Luciano Coelho <coelho@ti.com>
 -L:    linux-wireless@vger.kernel.org
 -W:    http://wireless.kernel.org/en/users/Drivers/wl1251
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
 -S:    Maintained
 -F:    drivers/net/wireless/wl1251/*
 -
 -WL1271 WIRELESS DRIVER
 -M:    Luciano Coelho <coelho@ti.com>
 -L:    linux-wireless@vger.kernel.org
 -W:    http://wireless.kernel.org/en/users/Drivers/wl12xx
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
 -S:    Maintained
 -F:    drivers/net/wireless/wl12xx/
 -F:    include/linux/wl12xx.h
 -
  WL3501 WIRELESS PCMCIA CARD DRIVER
  M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
  L:    linux-wireless@vger.kernel.org
diff --combined arch/x86/pci/fixup.c
index 5dd467bd6121a3d01f86315746aa2039977fa420,82487d3d5879233e9197820733d8a8f482d709c6..af8a224db216adcae94b2957240ea96758bd4325
@@@ -6,6 -6,7 +6,7 @@@
  #include <linux/dmi.h>
  #include <linux/pci.h>
  #include <linux/init.h>
+ #include <linux/vgaarb.h>
  #include <asm/pci_x86.h>
  
  static void __devinit pci_fixup_i450nx(struct pci_dev *d)
@@@ -348,6 -349,8 +349,8 @@@ static void __devinit pci_fixup_video(s
        if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
                pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
                dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
+               if (!vga_default_device())
+                       vga_set_default_device(pdev);
        }
  }
  DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
@@@ -519,20 -522,3 +522,20 @@@ static void sb600_disable_hpet_bar(stru
        }
  }
  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4385, sb600_disable_hpet_bar);
 +
 +/*
 + * Twinhead H12Y needs us to block out a region otherwise we map devices
 + * there and any access kills the box.
 + *
 + *   See: https://bugzilla.kernel.org/show_bug.cgi?id=10231
 + *
 + * Match off the LPC and svid/sdid (older kernels lose the bridge subvendor)
 + */
 +static void __devinit twinhead_reserve_killing_zone(struct pci_dev *dev)
 +{
 +        if (dev->subsystem_vendor == 0x14FF && dev->subsystem_device == 0xA003) {
 +                pr_info("Reserving memory on Twinhead H12Y\n");
 +                request_mem_region(0xFFB00000, 0x100000, "twinhead");
 +        }
 +}
 +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x27B9, twinhead_reserve_killing_zone);
index ae5e748f39bbd0cc9109f1c0994498fc4cf731f3,125228e77c505b65a857758b4cbd0e38ce78a2f7..a949b73880c8302db5f3b255429cf24ab12fea8d
@@@ -41,7 -41,7 +41,7 @@@
  #define SDVO_TMDS_MASK (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1)
  #define SDVO_RGB_MASK  (SDVO_OUTPUT_RGB0 | SDVO_OUTPUT_RGB1)
  #define SDVO_LVDS_MASK (SDVO_OUTPUT_LVDS0 | SDVO_OUTPUT_LVDS1)
- #define SDVO_TV_MASK   (SDVO_OUTPUT_CVBS0 | SDVO_OUTPUT_SVID0)
+ #define SDVO_TV_MASK   (SDVO_OUTPUT_CVBS0 | SDVO_OUTPUT_SVID0 | SDVO_OUTPUT_YPRPB0)
  
  #define SDVO_OUTPUT_MASK (SDVO_TMDS_MASK | SDVO_RGB_MASK | SDVO_LVDS_MASK |\
                        SDVO_TV_MASK)
@@@ -74,7 -74,7 +74,7 @@@ struct intel_sdvo 
        struct i2c_adapter ddc;
  
        /* Register for the SDVO device: SDVOB or SDVOC */
-       int sdvo_reg;
+       uint32_t sdvo_reg;
  
        /* Active outputs controlled by this SDVO output */
        uint16_t controlled_output;
         */
        bool is_tv;
  
+       /* On different gens SDVOB is at different places. */
+       bool is_sdvob;
        /* This is for current tv format name */
        int tv_format_index;
  
@@@ -403,8 -406,7 +406,7 @@@ static const struct _sdvo_cmd_name 
        SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_DATA),
  };
  
- #define IS_SDVOB(reg) (reg == SDVOB || reg == PCH_SDVOB)
- #define SDVO_NAME(svdo) (IS_SDVOB((svdo)->sdvo_reg) ? "SDVOB" : "SDVOC")
+ #define SDVO_NAME(svdo) ((svdo)->is_sdvob ? "SDVOB" : "SDVOC")
  
  static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd,
                                   const void *args, int args_len)
@@@ -441,9 -443,17 +443,17 @@@ static const char *cmd_status_names[] 
  static bool intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd,
                                 const void *args, int args_len)
  {
-       u8 buf[args_len*2 + 2], status;
-       struct i2c_msg msgs[args_len + 3];
-       int i, ret;
+       u8 *buf, status;
+       struct i2c_msg *msgs;
+       int i, ret = true;
+       buf = (u8 *)kzalloc(args_len * 2 + 2, GFP_KERNEL);
+       if (!buf)
+               return false;
+       msgs = kcalloc(args_len + 3, sizeof(*msgs), GFP_KERNEL);
+       if (!msgs)
+               return false;
  
        intel_sdvo_debug_write(intel_sdvo, cmd, args, args_len);
  
        ret = i2c_transfer(intel_sdvo->i2c, msgs, i+3);
        if (ret < 0) {
                DRM_DEBUG_KMS("I2c transfer returned %d\n", ret);
-               return false;
+               ret = false;
+               goto out;
        }
        if (ret != i+3) {
                /* failure in I2C transfer */
                DRM_DEBUG_KMS("I2c transfer returned %d/%d\n", ret, i+3);
-               return false;
+               ret = false;
        }
  
-       return true;
+ out:
+       kfree(msgs);
+       kfree(buf);
+       return ret;
  }
  
  static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo,
@@@ -733,18 -747,18 +747,18 @@@ static void intel_sdvo_get_dtd_from_mod
        uint16_t h_sync_offset, v_sync_offset;
        int mode_clock;
  
-       width = mode->crtc_hdisplay;
-       height = mode->crtc_vdisplay;
+       width = mode->hdisplay;
+       height = mode->vdisplay;
  
        /* do some mode translations */
-       h_blank_len = mode->crtc_hblank_end - mode->crtc_hblank_start;
-       h_sync_len = mode->crtc_hsync_end - mode->crtc_hsync_start;
+       h_blank_len = mode->htotal - mode->hdisplay;
+       h_sync_len = mode->hsync_end - mode->hsync_start;
  
-       v_blank_len = mode->crtc_vblank_end - mode->crtc_vblank_start;
-       v_sync_len = mode->crtc_vsync_end - mode->crtc_vsync_start;
+       v_blank_len = mode->vtotal - mode->vdisplay;
+       v_sync_len = mode->vsync_end - mode->vsync_start;
  
-       h_sync_offset = mode->crtc_hsync_start - mode->crtc_hblank_start;
-       v_sync_offset = mode->crtc_vsync_start - mode->crtc_vblank_start;
+       h_sync_offset = mode->hsync_start - mode->hdisplay;
+       v_sync_offset = mode->vsync_start - mode->vdisplay;
  
        mode_clock = mode->clock;
        mode_clock /= intel_mode_get_pixel_multiplier(mode) ?: 1;
@@@ -873,17 -887,24 +887,24 @@@ static bool intel_sdvo_set_avi_infofram
        };
        uint8_t tx_rate = SDVO_HBUF_TX_VSYNC;
        uint8_t set_buf_index[2] = { 1, 0 };
-       uint64_t *data = (uint64_t *)&avi_if;
+       uint8_t sdvo_data[4 + sizeof(avi_if.body.avi)];
+       uint64_t *data = (uint64_t *)sdvo_data;
        unsigned i;
  
        intel_dip_infoframe_csum(&avi_if);
  
+       /* sdvo spec says that the ecc is handled by the hw, and it looks like
+        * we must not send the ecc field, either. */
+       memcpy(sdvo_data, &avi_if, 3);
+       sdvo_data[3] = avi_if.checksum;
+       memcpy(&sdvo_data[4], &avi_if.body, sizeof(avi_if.body.avi));
        if (!intel_sdvo_set_value(intel_sdvo,
                                  SDVO_CMD_SET_HBUF_INDEX,
                                  set_buf_index, 2))
                return false;
  
-       for (i = 0; i < sizeof(avi_if); i += 8) {
+       for (i = 0; i < sizeof(sdvo_data); i += 8) {
                if (!intel_sdvo_set_value(intel_sdvo,
                                          SDVO_CMD_SET_HBUF_DATA,
                                          data, 8))
@@@ -1220,14 -1241,8 +1241,14 @@@ static bool intel_sdvo_get_capabilities
  
  static int intel_sdvo_supports_hotplug(struct intel_sdvo *intel_sdvo)
  {
 +      struct drm_device *dev = intel_sdvo->base.base.dev;
        u8 response[2];
  
 +      /* HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise
 +       * on the line. */
 +      if (IS_I945G(dev) || IS_I945GM(dev))
 +              return false;
 +
        return intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT,
                                    &response, 2) && response[0];
  }
@@@ -1260,10 -1275,11 +1281,11 @@@ intel_sdvo_get_analog_edid(struct drm_c
        struct drm_i915_private *dev_priv = connector->dev->dev_private;
  
        return drm_get_edid(connector,
-                           &dev_priv->gmbus[dev_priv->crt_ddc_pin].adapter);
+                           intel_gmbus_get_adapter(dev_priv,
+                                                   dev_priv->crt_ddc_pin));
  }
  
- enum drm_connector_status
static enum drm_connector_status
  intel_sdvo_tmds_sink_detect(struct drm_connector *connector)
  {
        struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector);
@@@ -1349,8 -1365,7 +1371,7 @@@ intel_sdvo_detect(struct drm_connector 
                return connector_status_unknown;
  
        /* add 30ms delay when the output type might be TV */
-       if (intel_sdvo->caps.output_flags &
-           (SDVO_OUTPUT_SVID0 | SDVO_OUTPUT_CVBS0))
+       if (intel_sdvo->caps.output_flags & SDVO_TV_MASK)
                mdelay(30);
  
        if (!intel_sdvo_read_response(intel_sdvo, &response, 2))
@@@ -1570,9 -1585,6 +1591,6 @@@ end
                        intel_sdvo->sdvo_lvds_fixed_mode =
                                drm_mode_duplicate(connector->dev, newmode);
  
-                       drm_mode_set_crtcinfo(intel_sdvo->sdvo_lvds_fixed_mode,
-                                             0);
                        intel_sdvo->is_lvds = true;
                        break;
                }
@@@ -1901,7 -1913,7 +1919,7 @@@ intel_sdvo_select_ddc_bus(struct drm_i9
  {
        struct sdvo_device_mapping *mapping;
  
-       if (IS_SDVOB(reg))
+       if (sdvo->is_sdvob)
                mapping = &(dev_priv->sdvo_mappings[0]);
        else
                mapping = &(dev_priv->sdvo_mappings[1]);
@@@ -1919,7 -1931,7 +1937,7 @@@ intel_sdvo_select_i2c_bus(struct drm_i9
        struct sdvo_device_mapping *mapping;
        u8 pin;
  
-       if (IS_SDVOB(reg))
+       if (sdvo->is_sdvob)
                mapping = &dev_priv->sdvo_mappings[0];
        else
                mapping = &dev_priv->sdvo_mappings[1];
        if (mapping->initialized)
                pin = mapping->i2c_pin;
  
-       if (pin < GMBUS_NUM_PORTS) {
-               sdvo->i2c = &dev_priv->gmbus[pin].adapter;
+       if (intel_gmbus_is_port_valid(pin)) {
+               sdvo->i2c = intel_gmbus_get_adapter(dev_priv, pin);
                intel_gmbus_set_speed(sdvo->i2c, GMBUS_RATE_1MHZ);
                intel_gmbus_force_bit(sdvo->i2c, true);
        } else {
-               sdvo->i2c = &dev_priv->gmbus[GMBUS_PORT_DPB].adapter;
+               sdvo->i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPB);
        }
  }
  
@@@ -1944,12 -1956,12 +1962,12 @@@ intel_sdvo_is_hdmi_connector(struct int
  }
  
  static u8
- intel_sdvo_get_slave_addr(struct drm_device *dev, int sdvo_reg)
+ intel_sdvo_get_slave_addr(struct drm_device *dev, struct intel_sdvo *sdvo)
  {
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct sdvo_device_mapping *my_mapping, *other_mapping;
  
-       if (IS_SDVOB(sdvo_reg)) {
+       if (sdvo->is_sdvob) {
                my_mapping = &dev_priv->sdvo_mappings[0];
                other_mapping = &dev_priv->sdvo_mappings[1];
        } else {
        /* No SDVO device info is found for another DVO port,
         * so use mapping assumption we had before BIOS parsing.
         */
-       if (IS_SDVOB(sdvo_reg))
+       if (sdvo->is_sdvob)
                return 0x70;
        else
                return 0x72;
@@@ -2199,6 -2211,10 +2217,10 @@@ intel_sdvo_output_setup(struct intel_sd
                if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_CVBS0))
                        return false;
  
+       if (flags & SDVO_OUTPUT_YPRPB0)
+               if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_YPRPB0))
+                       return false;
        if (flags & SDVO_OUTPUT_RGB0)
                if (!intel_sdvo_analog_init(intel_sdvo, 0))
                        return false;
@@@ -2490,7 -2506,7 +2512,7 @@@ intel_sdvo_init_ddc_proxy(struct intel_
        return i2c_add_adapter(&sdvo->ddc) == 0;
  }
  
- bool intel_sdvo_init(struct drm_device *dev, int sdvo_reg)
+ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob)
  {
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_encoder *intel_encoder;
                return false;
  
        intel_sdvo->sdvo_reg = sdvo_reg;
-       intel_sdvo->slave_addr = intel_sdvo_get_slave_addr(dev, sdvo_reg) >> 1;
+       intel_sdvo->is_sdvob = is_sdvob;
+       intel_sdvo->slave_addr = intel_sdvo_get_slave_addr(dev, intel_sdvo) >> 1;
        intel_sdvo_select_i2c_bus(dev_priv, intel_sdvo, sdvo_reg);
        if (!intel_sdvo_init_ddc_proxy(intel_sdvo, dev)) {
                kfree(intel_sdvo);
                u8 byte;
  
                if (!intel_sdvo_read_byte(intel_sdvo, i, &byte)) {
-                       DRM_DEBUG_KMS("No SDVO device found on SDVO%c\n",
-                                     IS_SDVOB(sdvo_reg) ? 'B' : 'C');
+                       DRM_DEBUG_KMS("No SDVO device found on %s\n",
+                                     SDVO_NAME(intel_sdvo));
                        goto err;
                }
        }
  
-       if (IS_SDVOB(sdvo_reg))
+       if (intel_sdvo->is_sdvob)
                dev_priv->hotplug_supported_mask |= SDVOB_HOTPLUG_INT_STATUS;
        else
                dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS;
  
        if (intel_sdvo_output_setup(intel_sdvo,
                                    intel_sdvo->caps.output_flags) != true) {
-               DRM_DEBUG_KMS("SDVO output failed to setup on SDVO%c\n",
-                             IS_SDVOB(sdvo_reg) ? 'B' : 'C');
+               DRM_DEBUG_KMS("SDVO output failed to setup on %s\n",
+                             SDVO_NAME(intel_sdvo));
                goto err;
        }
  
index 456a77cf4b7f6bb4e8a2415ca7a22ff14d296c90,4fa540273f15e35fac9117bce9591a7b35d28527..79db56e6c2ac2ca66d48bc6519e6406ee1a477ae
@@@ -80,7 -80,7 +80,7 @@@ int radeon_gart_table_vram_alloc(struc
        if (rdev->gart.robj == NULL) {
                r = radeon_bo_create(rdev, rdev->gart.table_size,
                                     PAGE_SIZE, true, RADEON_GEM_DOMAIN_VRAM,
-                                    &rdev->gart.robj);
+                                    NULL, &rdev->gart.robj);
                if (r) {
                        return r;
                }
@@@ -326,7 -326,7 +326,7 @@@ static void radeon_vm_unbind_locked(str
        rdev->vm_manager.use_bitmap &= ~(1 << vm->id);
        list_del_init(&vm->list);
        vm->id = -1;
-       radeon_sa_bo_free(rdev, &vm->sa_bo);
+       radeon_sa_bo_free(rdev, &vm->sa_bo, NULL);
        vm->pt = NULL;
  
        list_for_each_entry(bo_va, &vm->va, vm_list) {
@@@ -395,7 -395,7 +395,7 @@@ int radeon_vm_bind(struct radeon_devic
  retry:
        r = radeon_sa_bo_new(rdev, &rdev->vm_manager.sa_manager, &vm->sa_bo,
                             RADEON_GPU_PAGE_ALIGN(vm->last_pfn * 8),
-                            RADEON_GPU_PAGE_SIZE);
+                            RADEON_GPU_PAGE_SIZE, false);
        if (r) {
                if (list_empty(&rdev->vm_manager.lru_vm)) {
                        return r;
                radeon_vm_unbind(rdev, vm_evict);
                goto retry;
        }
-       vm->pt = rdev->vm_manager.sa_manager.cpu_ptr;
-       vm->pt += (vm->sa_bo.offset >> 3);
-       vm->pt_gpu_addr = rdev->vm_manager.sa_manager.gpu_addr;
-       vm->pt_gpu_addr += vm->sa_bo.offset;
+       vm->pt = radeon_sa_bo_cpu_addr(vm->sa_bo);
+       vm->pt_gpu_addr = radeon_sa_bo_gpu_addr(vm->sa_bo);
        memset(vm->pt, 0, RADEON_GPU_PAGE_ALIGN(vm->last_pfn * 8));
  
  retry_id:
        /* do hw bind */
        r = rdev->vm_manager.funcs->bind(rdev, vm, id);
        if (r) {
-               radeon_sa_bo_free(rdev, &vm->sa_bo);
+               radeon_sa_bo_free(rdev, &vm->sa_bo, NULL);
                return r;
        }
        rdev->vm_manager.use_bitmap |= 1 << id;
        vm->id = id;
        list_add_tail(&vm->list, &rdev->vm_manager.lru_vm);
-       return radeon_vm_bo_update_pte(rdev, vm, rdev->ib_pool.sa_manager.bo,
-                                      &rdev->ib_pool.sa_manager.bo->tbo.mem);
+       return radeon_vm_bo_update_pte(rdev, vm, rdev->ring_tmp_bo.bo,
+                                      &rdev->ring_tmp_bo.bo->tbo.mem);
  }
  
  /* object have to be reserved */
@@@ -551,7 -549,7 +549,7 @@@ int radeon_vm_bo_update_pte(struct rade
  
        /* nothing to do if vm isn't bound */
        if (vm->id == -1)
 -              return 0;;
 +              return 0;
  
        bo_va = radeon_bo_va(bo, vm);
        if (bo_va == NULL) {
@@@ -633,7 -631,7 +631,7 @@@ int radeon_vm_init(struct radeon_devic
        /* map the ib pool buffer at 0 in virtual address space, set
         * read only
         */
-       r = radeon_vm_bo_add(rdev, vm, rdev->ib_pool.sa_manager.bo, 0,
+       r = radeon_vm_bo_add(rdev, vm, rdev->ring_tmp_bo.bo, 0,
                             RADEON_VM_PAGE_READABLE | RADEON_VM_PAGE_SNOOPED);
        return r;
  }
@@@ -650,12 -648,12 +648,12 @@@ void radeon_vm_fini(struct radeon_devic
        radeon_mutex_unlock(&rdev->cs_mutex);
  
        /* remove all bo */
-       r = radeon_bo_reserve(rdev->ib_pool.sa_manager.bo, false);
+       r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false);
        if (!r) {
-               bo_va = radeon_bo_va(rdev->ib_pool.sa_manager.bo, vm);
+               bo_va = radeon_bo_va(rdev->ring_tmp_bo.bo, vm);
                list_del_init(&bo_va->bo_list);
                list_del_init(&bo_va->vm_list);
-               radeon_bo_unreserve(rdev->ib_pool.sa_manager.bo);
+               radeon_bo_unreserve(rdev->ring_tmp_bo.bo);
                kfree(bo_va);
        }
        if (!list_empty(&vm->va)) {
index 0519b05968b5aee7d92fda49da7df228daaaf162,c0130b052e3e96b91d5866a791b3c0f2b067d487..f28bd4b7ef980937c88eb54c30b5534adc5abf3b
@@@ -42,6 -42,8 +42,8 @@@ void radeon_gem_object_free(struct drm_
        struct radeon_bo *robj = gem_to_radeon_bo(gobj);
  
        if (robj) {
+               if (robj->gem_base.import_attach)
+                       drm_prime_gem_destroy(&robj->gem_base, robj->tbo.sg);
                radeon_bo_unref(&robj);
        }
  }
@@@ -59,7 -61,7 +61,7 @@@ int radeon_gem_object_create(struct rad
        if (alignment < PAGE_SIZE) {
                alignment = PAGE_SIZE;
        }
-       r = radeon_bo_create(rdev, size, alignment, kernel, initial_domain, &robj);
+       r = radeon_bo_create(rdev, size, alignment, kernel, initial_domain, NULL, &robj);
        if (r) {
                if (r != -ERESTARTSYS)
                        DRM_ERROR("Failed to allocate GEM object (%d, %d, %u, %d)\n",
@@@ -91,7 -93,7 +93,7 @@@ int radeon_gem_set_domain(struct drm_ge
        }
        if (!domain) {
                /* Do nothings */
 -              printk(KERN_WARNING "Set domain withou domain !\n");
 +              printk(KERN_WARNING "Set domain without domain !\n");
                return 0;
        }
        if (domain == RADEON_GEM_DOMAIN_CPU) {
@@@ -154,6 -156,17 +156,17 @@@ void radeon_gem_object_close(struct drm
        radeon_bo_unreserve(rbo);
  }
  
+ static int radeon_gem_handle_lockup(struct radeon_device *rdev, int r)
+ {
+       if (r == -EDEADLK) {
+               radeon_mutex_lock(&rdev->cs_mutex);
+               r = radeon_gpu_reset(rdev);
+               if (!r)
+                       r = -EAGAIN;
+               radeon_mutex_unlock(&rdev->cs_mutex);
+       }
+       return r;
+ }
  
  /*
   * GEM ioctls.
@@@ -210,12 -223,14 +223,14 @@@ int radeon_gem_create_ioctl(struct drm_
                                        args->initial_domain, false,
                                        false, &gobj);
        if (r) {
+               r = radeon_gem_handle_lockup(rdev, r);
                return r;
        }
        r = drm_gem_handle_create(filp, gobj, &handle);
        /* drop reference from allocate - handle holds it now */
        drm_gem_object_unreference_unlocked(gobj);
        if (r) {
+               r = radeon_gem_handle_lockup(rdev, r);
                return r;
        }
        args->handle = handle;
@@@ -245,6 -260,7 +260,7 @@@ int radeon_gem_set_domain_ioctl(struct 
        r = radeon_gem_set_domain(gobj, args->read_domains, args->write_domain);
  
        drm_gem_object_unreference_unlocked(gobj);
+       r = radeon_gem_handle_lockup(robj->rdev, r);
        return r;
  }
  
@@@ -301,6 -317,7 +317,7 @@@ int radeon_gem_busy_ioctl(struct drm_de
                break;
        }
        drm_gem_object_unreference_unlocked(gobj);
+       r = radeon_gem_handle_lockup(robj->rdev, r);
        return r;
  }
  
@@@ -322,6 -339,7 +339,7 @@@ int radeon_gem_wait_idle_ioctl(struct d
        if (robj->rdev->asic->ioctl_wait_idle)
                robj->rdev->asic->ioctl_wait_idle(robj->rdev, robj);
        drm_gem_object_unreference_unlocked(gobj);
+       r = radeon_gem_handle_lockup(robj->rdev, r);
        return r;
  }
  
index 0d2acca376ca7c971fa64178be0a622ac6070f91,1edbd777bf404f3ddeb86b66f4a5c8c28f7823b8..4beab9447ceb9b7def14b825645181308860f6a4
@@@ -58,7 -58,7 +58,7 @@@ static void omap_fb_output_poll_changed
        }
  }
  
- static struct drm_mode_config_funcs omap_mode_config_funcs = {
+ static const struct drm_mode_config_funcs omap_mode_config_funcs = {
        .fb_create = omap_framebuffer_create,
        .output_poll_changed = omap_fb_output_poll_changed,
  };
@@@ -726,7 -726,7 +726,7 @@@ static void dev_irq_uninstall(struct dr
        DBG("irq_uninstall: dev=%p", dev);
  }
  
- static struct vm_operations_struct omap_gem_vm_ops = {
+ static const struct vm_operations_struct omap_gem_vm_ops = {
        .fault = omap_gem_fault,
        .open = drm_gem_vm_open,
        .close = drm_gem_vm_close,
@@@ -746,7 -746,7 +746,7 @@@ static const struct file_operations oma
  
  static struct drm_driver omap_drm_driver = {
                .driver_features =
 -                              DRIVER_HAVE_IRQ | DRIVER_MODESET | DRIVER_GEM,
 +                              DRIVER_HAVE_IRQ | DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME,
                .load = dev_load,
                .unload = dev_unload,
                .open = dev_open,
                .debugfs_init = omap_debugfs_init,
                .debugfs_cleanup = omap_debugfs_cleanup,
  #endif
 +              .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
 +              .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
 +              .gem_prime_export = omap_gem_prime_export,
 +              .gem_prime_import = omap_gem_prime_import,
                .gem_init_object = omap_gem_init_object,
                .gem_free_object = omap_gem_free_object,
                .gem_vm_ops = &omap_gem_vm_ops,