Merge tag 'iommu-updates-v3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 30 May 2012 15:49:28 +0000 (08:49 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 30 May 2012 15:49:28 +0000 (08:49 -0700)
Pull IOMMU updates from Joerg Roedel:
 "Not much stuff this time.  The only change to the IOMMU core code is
  the addition of a handle to the fault handling code.  A few updates to
  the AMD IOMMU driver to work around new errata.  The other patches are
  mostly fixes and enhancements to the existing ARM IOMMU drivers and
  documentation updates.

  A new IOMMU driver for the Exynos platform was also underway but got
  merged via the Samsung tree and is not part of this tree."

* tag 'iommu-updates-v3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
  Documentation: kernel-parameters.txt Add amd_iommu_dump
  iommu/core: pass a user-provided token to fault handlers
  iommu/tegra: gart: Fix register offset correctly
  iommu: OMAP: device detach on domain destroy
  iommu: tegra/gart: Add device tree support
  iommu: tegra/gart: use correct gart_device
  iommu/tegra: smmu: Print device name correctly
  iommu/amd: Add workaround for event log erratum
  iommu/amd: Check for the right TLP prefix bit
  dma-debug: release free_entries_lock before saving stack trace

1  2 
Documentation/kernel-parameters.txt
drivers/remoteproc/remoteproc_core.c

@@@ -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.
@@@ -335,6 -335,12 +335,12 @@@ bytes respectively. Such letter suffixe
                                          requirements as needed. This option
                                          does not override iommu=pt
  
+       amd_iommu_dump= [HW,X86-64]
+                       Enable AMD IOMMU driver option to dump the ACPI table
+                       for AMD IOMMU. With this option enabled, AMD IOMMU
+                       driver will print ACPI tables for AMD IOMMU during
+                       IOMMU initialization.
        amijoy.map=     [HW,JOY] Amiga joystick support
                        Map of devices attached to JOY0DAT and JOY1DAT
                        Format: <a>,<b>
        atkbd.softrepeat= [HW]
                        Use software keyboard repeat
  
 -      autotest        [IA-64]
 -
        baycom_epp=     [HW,AX25]
                        Format: <io>,<mode>
  
                        Also note the kernel might malfunction if you disable
                        some critical bits.
  
 +      cma=nn[MG]      [ARM,KNL]
 +                      Sets the size of kernel global memory area for contiguous
 +                      memory allocations. For more information, see
 +                      include/linux/dma-contiguous.h
 +
        cmo_free_hint=  [PPC] Format: { yes | no }
                        Specify whether pages are marked as being inactive
                        when they are freed.  This is used in CMO environments
                        a hypervisor.
                        Default: yes
  
 +      coherent_pool=nn[KMG]   [ARM,KNL]
 +                      Sets the size of memory pool for coherent, atomic dma
 +                      allocations if Contiguous Memory Allocator (CMA) is used.
 +
        code_bytes      [X86] How many bytes of object code to print
                        in an oops report.
                        Range: 0 - 8192
  
        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>]]]
  
                        devices can be requested on-demand with the
                        /dev/loop-control interface.
  
 -      mcatest=        [IA-64]
 -
        mce             [X86-32] Machine Check Exception
  
        mce=option      [X86-64] See Documentation/x86/x86_64/boot-options.txt
                                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.
@@@ -78,7 -78,7 +78,7 @@@ typedef int (*rproc_handle_resource_t)(
   * the recovery of the remote processor.
   */
  static int rproc_iommu_fault(struct iommu_domain *domain, struct device *dev,
-               unsigned long iova, int flags)
+               unsigned long iova, int flags, void *token)
  {
        dev_err(dev, "iommu fault: da 0x%lx flags 0x%x\n", iova, flags);
  
@@@ -117,7 -117,7 +117,7 @@@ static int rproc_enable_iommu(struct rp
                return -ENOMEM;
        }
  
-       iommu_set_fault_handler(domain, rproc_iommu_fault);
+       iommu_set_fault_handler(domain, rproc_iommu_fault, rproc);
  
        ret = iommu_attach_device(domain, dev);
        if (ret) {
@@@ -1105,7 -1105,8 +1105,7 @@@ static void rproc_fw_config_virtio(cons
                goto out;
  
  out:
 -      if (fw)
 -              release_firmware(fw);
 +      release_firmware(fw);
        /* allow rproc_unregister() contexts, if any, to proceed */
        complete_all(&rproc->firmware_loading_complete);
  }