]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
Merge git://git.infradead.org/iommu-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 16 Aug 2010 00:34:20 +0000 (17:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 16 Aug 2010 00:34:20 +0000 (17:34 -0700)
* git://git.infradead.org/iommu-2.6:
  intel-iommu: Fix 32-bit build warning with __cmpxchg()
  intr-remap: allow disabling source id checking

1  2 
Documentation/kernel-parameters.txt
drivers/pci/intel-iommu.c
drivers/pci/intr_remapping.c

index 4956686f99bfde517236dca2bc09cfd84ff51c2f,0afdd284d656e05661fea05d347a57dc11a69f9d..2c85c0692b015cc099710b0ba4b9a4f0c30a745d
@@@ -73,6 -73,7 +73,6 @@@ parameter is applicable
        MTD     MTD (Memory Technology Device) support is enabled.
        NET     Appropriate network support is enabled.
        NUMA    NUMA support is enabled.
 -      GENERIC_TIME The generic timeofday code is enabled.
        NFS     Appropriate NFS support is enabled.
        OSS     OSS sound support is enabled.
        PV_OPS  A paravirtualized kernel is enabled.
        RAM     RAM disk support is enabled.
        S390    S390 architecture is enabled.
        SCSI    Appropriate SCSI support is enabled.
 -                      A lot of drivers has their options described inside of
 -                      Documentation/scsi/.
 +                      A lot of drivers have their options described inside
 +                      the Documentation/scsi/ sub-directory.
        SECURITY Different security models are enabled.
        SELINUX SELinux support is enabled.
 +      APPARMOR AppArmor support is enabled.
        SERIAL  Serial support is enabled.
        SH      SuperH architecture is enabled.
        SMP     The kernel is an SMP kernel.
                        More X86-64 boot options can be found in
                        Documentation/x86/x86_64/boot-options.txt .
        X86     Either 32bit or 64bit x86 (same as X86-32+X86-64)
 +      XEN     Xen support is enabled
  
  In addition, the following text indicates that the option:
  
@@@ -281,17 -280,36 +281,17 @@@ and is between 256 and 4096 characters
                        no: ACPI OperationRegions are not marked as reserved,
                        no further checks are performed.
  
 -      ad1848=         [HW,OSS]
 -                      Format: <io>,<irq>,<dma>,<dma2>,<type>
 -
        add_efi_memmap  [EFI; X86] Include EFI memory map in
                        kernel's map of available physical RAM.
  
 -      advansys=       [HW,SCSI]
 -                      See header of drivers/scsi/advansys.c.
 -
 -      aedsp16=        [HW,OSS] Audio Excel DSP 16
 -                      Format: <io>,<irq>,<dma>,<mss_io>,<mpu_io>,<mpu_irq>
 -                      See also header of sound/oss/aedsp16.c.
 -
        agp=            [AGP]
                        { off | try_unsupported }
                        off: disable AGP support
                        try_unsupported: try to drive unsupported chipsets
                                (may crash computer or cause data corruption)
  
 -      aha152x=        [HW,SCSI]
 -                      See Documentation/scsi/aha152x.txt.
 -
 -      aha1542=        [HW,SCSI]
 -                      Format: <portbase>[,<buson>,<busoff>[,<dmaspeed>]]
 -
 -      aic7xxx=        [HW,SCSI]
 -                      See Documentation/scsi/aic7xxx.txt.
 -
 -      aic79xx=        [HW,SCSI]
 -                      See Documentation/scsi/aic79xx.txt.
 +      ALSA            [HW,ALSA]
 +                      See Documentation/sound/alsa/alsa-parameters.txt
  
        alignment=      [KNL,ARM]
                        Allow the default userspace alignment fault handler
  
        atarimouse=     [HW,MOUSE] Atari Mouse
  
 -      atascsi=        [HW,SCSI] Atari SCSI
 -
        atkbd.extra=    [HW] Enable extra LEDs and keys on IBM RapidAccess,
                        EzKey and similar keyboards
  
        bttv.pll=       See Documentation/video4linux/bttv/Insmod-options
        bttv.tuner=     and Documentation/video4linux/bttv/CARDLIST
  
 -      BusLogic=       [HW,SCSI]
 -                      See drivers/scsi/BusLogic.c, comment before function
 -                      BusLogic_ParseDriverOptions().
 -
        c101=           [NET] Moxa C101 synchronous serial card
  
        cachesize=      [BUGS=X86-32] Override level 2 CPU cache size detection.
                        clocksource is not available, it defaults to PIT.
                        Format: { pit | tsc | cyclone | pmtmr }
  
 -      clocksource=    [GENERIC_TIME] Override the default clocksource
 +      clocksource=    Override the default clocksource
                        Format: <string>
                        Override the default clocksource and use the clocksource
                        with the name specified.
                        Disable PIN 1 of APIC timer
                        Can be useful to work around chipset bugs.
  
 -      dmasound=       [HW,OSS] Sound subsystem buffers
 -
        dma_debug=off   If the kernel is compiled with DMA_API_DEBUG support,
                        this option disables the debugging code at boot.
  
  
        dscc4.setup=    [NET]
  
 -      dtc3181e=       [HW,SCSI]
 -
        dynamic_printk  Enables pr_debug()/dev_dbg() calls if
                        CONFIG_DYNAMIC_PRINTK_DEBUG has been enabled.
                        These can also be switched on/off via
        earlycon=       [KNL] Output early console device and options.
                uart[8250],io,<addr>[,options]
                uart[8250],mmio,<addr>[,options]
 +              uart[8250],mmio32,<addr>[,options]
                        Start an early, polled-mode console on the 8250/16550
                        UART at the specified I/O port or MMIO address.
 +                      MMIO inter-register address stride is either 8bit (mmio)
 +                        or 32bit (mmio32).
                        The options are the same as for ttyS, above.
  
        earlyprintk=    [X86,SH,BLACKFIN]
                        This is desgined to be used in conjunction with
                        the boot argument: earlyprintk=vga
  
 -      eata=           [HW,SCSI]
 -
        edd=            [EDD]
                        Format: {"off" | "on" | "skip[mbr]"}
  
                        Format: <interval>,<probability>,<space>,<times>
                        See also /Documentation/fault-injection/.
  
 -      fd_mcs=         [HW,SCSI]
 -                      See header of drivers/scsi/fd_mcs.c.
 -
 -      fdomain=        [HW,SCSI]
 -                      See header of drivers/scsi/fdomain.c.
 -
        floppy=         [HW]
                        See Documentation/blockdev/floppy.txt.
  
                        When zero, profiling data is discarded and associated
                        debugfs files are removed at module unload time.
  
 -      gdth=           [HW,SCSI]
 -                      See header of drivers/scsi/gdth.c.
 -
        gpt             [EFI] Forces disk with valid GPT signature but
                        invalid Protective MBR to be treated as GPT.
  
 -      gvp11=          [HW,SCSI]
 -
        hashdist=       [KNL,NUMA] Large hashes allocated during boot
                        are distributed across NUMA nodes.  Defaults on
                        for 64bit NUMA, off otherwise.
                             controller
        i8042.nopnp     [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
                             controllers
 -      i8042.panicblink=
 -                      [HW] Frequency with which keyboard LEDs should blink
 -                           when kernel panics (default is 0.5 sec)
        i8042.reset     [HW] Reset the controller during init and cleanup
        i8042.unlock    [HW] Unlock (ignore) the keylock
  
        i8k.restricted  [HW] Allow controlling fans only if SYS_ADMIN
                        capability is set.
  
 -      ibmmcascsi=     [HW,MCA,SCSI] IBM MicroChannel SCSI adapter
 -                      See Documentation/mca.txt.
 -
        icn=            [HW,ISDN]
                        Format: <io>[,<membase>[,<icn_id>[,<icn_id2>]]]
  
                        programs exec'd, files mmap'd for exec, and all files
                        opened for read by uid=0.
  
 -      in2000=         [HW,SCSI]
 -                      See header of drivers/scsi/in2000.c.
 -
        init=           [KNL]
                        Format: <full_path>
                        Run specified binary instead of /sbin/init as init
                        result in a hardware IOTLB flush operation as opposed
                        to batching them for performance.
  
+       intremap=       [X86-64, Intel-IOMMU]
+                       Format: { on (default) | off | nosid }
+                       on      enable Interrupt Remapping (default)
+                       off     disable Interrupt Remapping
+                       nosid   disable Source ID checking
        inttest=        [IA64]
  
        iomem=          Disable strict checking of access to MMIO memory
                        See comment before ip2_setup() in
                        drivers/char/ip2/ip2base.c.
  
 -      ips=            [HW,SCSI] Adaptec / IBM ServeRAID controller
 -                      See header of drivers/scsi/ips.c.
 -
        irqfixup        [HW]
                        When an interrupt is not handled search all handlers
                        for it. Intended to get systems with badly broken
        kgdboc=         [KGDB,HW] kgdb over consoles.
                        Requires a tty driver that supports console polling,
                        or a supported polling keyboard driver (non-usb).
 -                      Serial only format: <serial_device>[,baud]
 -                      keyboard only format: kbd
 -                      keyboard and serial format: kbd,<serial_device>[,baud]
 +                       Serial only format: <serial_device>[,baud]
 +                       keyboard only format: kbd
 +                       keyboard and serial format: kbd,<serial_device>[,baud]
 +                      Optional Kernel mode setting:
 +                       kms, kbd format: kms,kbd
 +                       kms, kbd and serial format: kms,kbd,<ser_dev>[,baud]
  
        kgdbwait        [KGDB] Stop kernel execution and enter the
                        kernel debugger at the earliest opportunity.
        ltpc=           [NET]
                        Format: <io>,<irq>,<dma>
  
 -      mac5380=        [HW,SCSI] Format:
 -                      <can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags>
 -
        machvec=        [IA64] Force the use of a particular machine-vector
                        (machvec) in a generic kernel.
                        Example: machvec=hpzx1_swiotlb
                        be mounted
                        Format: <1-256>
  
 -      max_luns=       [SCSI] Maximum number of LUNs to probe.
 -                      Should be between 1 and 2^32-1.
 -
 -      max_report_luns=
 -                      [SCSI] Maximum number of LUNs received.
 -                      Should be between 1 and 16384.
 -
        mcatest=        [IA-64]
  
        mce             [X86-32] Machine Check Exception
                        that the amount of memory usable for all allocations
                        is not too small.
  
 -      mpu401=         [HW,OSS]
 -                      Format: <io>,<irq>
 -
        MTD_Partition=  [MTD]
                        Format: <name>,<region-number>,<size>,<offset>
  
  
        n2=             [NET] SDL Inc. RISCom/N2 synchronous serial card
  
 -      NCR_D700=       [HW,SCSI]
 -                      See header of drivers/scsi/NCR_D700.c.
 -
 -      ncr5380=        [HW,SCSI]
 -
 -      ncr53c400=      [HW,SCSI]
 -
 -      ncr53c400a=     [HW,SCSI]
 -
 -      ncr53c406a=     [HW,SCSI]
 -
 -      ncr53c8xx=      [HW,SCSI]
 -
        netdev=         [NET] Network devices parameters
                        Format: <irq>,<io>,<mem_start>,<mem_end>,<name>
                        Note that mem_start is often overloaded to mean
                        [NETFILTER] Enable connection tracking flow accounting
                        0 to disable accounting
                        1 to enable accounting
 -                      Default value depends on CONFIG_NF_CT_ACCT that is
 -                      going to be removed in 2.6.29.
 +                      Default value is 0.
  
        nfsaddrs=       [NFS]
                        See Documentation/filesystems/nfs/nfsroot.txt.
  
        nointremap      [X86-64, Intel-IOMMU] Do not enable interrupt
                        remapping.
+                       [Deprecated - use intremap=off]
  
        nointroute      [IA-64]
  
  
        nousb           [USB] Disable the USB subsystem
  
 +      nowatchdog      [KNL] Disable the lockup detector.
 +
        nowb            [ARM]
  
        nox2apic        [X86-64,APIC] Do not enable x2APIC mode.
                        For example, to override I2C bus2:
                        omap_mux=i2c2_scl.i2c2_scl=0x100,i2c2_sda.i2c2_sda=0x100
  
 -      opl3=           [HW,OSS]
 -                      Format: <io>
 -
        oprofile.timer= [HW]
                        Use timer interrupt instead of performance counters
  
                                perfmon on Intel CPUs instead of the
                                CPU specific event set.
  
 -      osst=           [HW,SCSI] SCSI Tape Driver
 -                      Format: <buffer_size>,<write_threshold>
 -                      See also Documentation/scsi/st.txt.
 +      OSS             [HW,OSS]
 +                      See Documentation/sound/oss/oss-parameters.txt
  
        panic=          [KNL] Kernel behaviour on panic
                        Format: <timeout>
                        Currently this function knows 686a and 8231 chips.
                        Format: [spp|ps2|epp|ecp|ecpepp]
  
 -      pas2=           [HW,OSS] Format:
 -                      <io>,<irq>,<dma>,<dma16>,<sb_io>,<sb_irq>,<sb_dma>,<sb_dma16>
 -
 -      pas16=          [HW,SCSI]
 -                      See header of drivers/scsi/pas16.c.
 -
        pause_on_oops=
                        Halt all CPUs after the first oops has been printed for
                        the specified number of seconds.  This is to be used if
                norom           [X86] Do not assign address space to
                                expansion ROMs that do not already have
                                BIOS assigned address ranges.
 +              nobar           [X86] Do not assign address space to the
 +                              BARs that weren't assigned by the BIOS.
                irqmask=0xMMMM  [X86] Set a bit mask of IRQs allowed to be
                                assigned automatically to PCI devices. You can
                                make the kernel exclude IRQs of your ISA cards
                        [HW,MOUSE] Controls Logitech smartscroll autorepeat.
                        0 = disabled, 1 = enabled (default).
  
 -      pss=            [HW,OSS] Personal Sound System (ECHO ESC614)
 -                      Format:
 -                      <io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq>
 -
        pt.             [PARIDE]
                        See Documentation/blockdev/paride.txt.
  
  
        sched_debug     [KNL] Enables verbose scheduler debug messages.
  
 -      scsi_debug_*=   [SCSI]
 -                      See drivers/scsi/scsi_debug.c.
 -
 -      scsi_default_dev_flags=
 -                      [SCSI] SCSI default device flags
 -                      Format: <integer>
 -
 -      scsi_dev_flags= [SCSI] Black/white list entry for vendor and model
 -                      Format: <vendor>:<model>:<flags>
 -                      (flags are integer value)
 -
 -      scsi_logging_level=     [SCSI] a bit mask of logging levels
 -                      See drivers/scsi/scsi_logging.h for bits.  Also
 -                      settable via sysctl at dev.scsi.logging_level
 -                      (/proc/sys/dev/scsi/logging_level).
 -                      There is also a nice 'scsi_logging_level' script in the
 -                      S390-tools package, available for download at
 -                      http://www-128.ibm.com/developerworks/linux/linux390/s390-tools-1.5.4.html
 -
 -      scsi_mod.scan=  [SCSI] sync (default) scans SCSI busses as they are
 -                      discovered.  async scans them in kernel threads,
 -                      allowing boot to proceed.  none ignores them, expecting
 -                      user space to do the scan.
 -
        security=       [SECURITY] Choose a security module to enable at boot.
                        If this boot parameter is not specified, only the first
                        security module asking for security registration will be
                        If enabled at boot time, /selinux/disable can be used
                        later to disable prior to initial policy load.
  
 +      apparmor=       [APPARMOR] Disable or enable AppArmor at boot time
 +                      Format: { "0" | "1" }
 +                      See security/apparmor/Kconfig help text
 +                      0 -- disable.
 +                      1 -- enable.
 +                      Default value is set via kernel config option.
 +
        serialnumber    [BUGS=X86-32]
  
        shapers=        [NET]
                        The parameter means the number of CPUs to show,
                        for example 1 means boot CPU only.
  
 -      sim710=         [SCSI,HW]
 -                      See header of drivers/scsi/sim710.c.
 -
        simeth=         [IA-64]
        simscsi=
  
                                1: Fast pin select (default)
                                2: ATC IRMode
  
 -      snd-ad1816a=    [HW,ALSA]
 -
 -      snd-ad1848=     [HW,ALSA]
 -
 -      snd-ali5451=    [HW,ALSA]
 -
 -      snd-als100=     [HW,ALSA]
 -
 -      snd-als4000=    [HW,ALSA]
 -
 -      snd-azt2320=    [HW,ALSA]
 -
 -      snd-cmi8330=    [HW,ALSA]
 -
 -      snd-cmipci=     [HW,ALSA]
 -
 -      snd-cs4231=     [HW,ALSA]
 -
 -      snd-cs4232=     [HW,ALSA]
 -
 -      snd-cs4236=     [HW,ALSA]
 -
 -      snd-cs4281=     [HW,ALSA]
 -
 -      snd-cs46xx=     [HW,ALSA]
 -
 -      snd-dt019x=     [HW,ALSA]
 -
 -      snd-dummy=      [HW,ALSA]
 -
 -      snd-emu10k1=    [HW,ALSA]
 -
 -      snd-ens1370=    [HW,ALSA]
 -
 -      snd-ens1371=    [HW,ALSA]
 -
 -      snd-es968=      [HW,ALSA]
 -
 -      snd-es1688=     [HW,ALSA]
 -
 -      snd-es18xx=     [HW,ALSA]
 -
 -      snd-es1938=     [HW,ALSA]
 -
 -      snd-es1968=     [HW,ALSA]
 -
 -      snd-fm801=      [HW,ALSA]
 -
 -      snd-gusclassic= [HW,ALSA]
 -
 -      snd-gusextreme= [HW,ALSA]
 -
 -      snd-gusmax=     [HW,ALSA]
 -
 -      snd-hdsp=       [HW,ALSA]
 -
 -      snd-ice1712=    [HW,ALSA]
 -
 -      snd-intel8x0=   [HW,ALSA]
 -
 -      snd-interwave=  [HW,ALSA]
 -
 -      snd-interwave-stb=
 -                      [HW,ALSA]
 -
 -      snd-korg1212=   [HW,ALSA]
 -
 -      snd-maestro3=   [HW,ALSA]
 -
 -      snd-mpu401=     [HW,ALSA]
 -
 -      snd-mtpav=      [HW,ALSA]
 -
 -      snd-nm256=      [HW,ALSA]
 -
 -      snd-opl3sa2=    [HW,ALSA]
 -
 -      snd-opti92x-ad1848=
 -                      [HW,ALSA]
 -
 -      snd-opti92x-cs4231=
 -                      [HW,ALSA]
 -
 -      snd-opti93x=    [HW,ALSA]
 -
 -      snd-pmac=       [HW,ALSA]
 -
 -      snd-rme32=      [HW,ALSA]
 -
 -      snd-rme96=      [HW,ALSA]
 -
 -      snd-rme9652=    [HW,ALSA]
 -
 -      snd-sb8=        [HW,ALSA]
 -
 -      snd-sb16=       [HW,ALSA]
 -
 -      snd-sbawe=      [HW,ALSA]
 -
 -      snd-serial=     [HW,ALSA]
 -
 -      snd-sgalaxy=    [HW,ALSA]
 -
 -      snd-sonicvibes= [HW,ALSA]
 -
 -      snd-sun-amd7930=
 -                      [HW,ALSA]
 -
 -      snd-sun-cs4231= [HW,ALSA]
 -
 -      snd-trident=    [HW,ALSA]
 -
 -      snd-usb-audio=  [HW,ALSA,USB]
 -
 -      snd-via82xx=    [HW,ALSA]
 -
 -      snd-virmidi=    [HW,ALSA]
 -
 -      snd-wavefront=  [HW,ALSA]
 -
 -      snd-ymfpci=     [HW,ALSA]
 -
        softlockup_panic=
                        [KNL] Should the soft-lockup detector generate panics.
  
        spia_pedr=
        spia_peddr=
  
 -      sscape=         [HW,OSS]
 -                      Format: <io>,<irq>,<dma>,<mpu_io>,<mpu_irq>
 -
 -      st=             [HW,SCSI] SCSI tape parameters (buffers, etc.)
 -                      See Documentation/scsi/st.txt.
 -
        stacktrace      [FTRACE]
                        Enabled the stack tracer on boot up.
  
  
        switches=       [HW,M68k]
  
 -      sym53c416=      [HW,SCSI]
 -                      See header of drivers/scsi/sym53c416.c.
 -
        sysrq_always_enabled
                        [KNL]
                        Ignore sysrq setting - this boot parameter will
                        neutralize any effect of /proc/sys/kernel/sysrq.
                        Useful for debugging.
  
 -      t128=           [HW,SCSI]
 -                      See header of drivers/scsi/t128.c.
 -
        tdfx=           [HW,DRM]
  
        test_suspend=   [SUSPEND]
                        <deci-seconds>: poll all this frequency
                        0: no polling (default)
  
 -      tmscsim=        [HW,SCSI]
 -                      See comment before function dc390_setup() in
 -                      drivers/scsi/tmscsim.c.
 -
        topology=       [S390]
                        Format: {off | on}
                        Specify if the kernel should make use of the cpu
                        to facilitate early boot debugging.
                        See also Documentation/trace/events.txt
  
 -      trix=           [HW,OSS] MediaTrix AudioTrix Pro
 -                      Format:
 -                      <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq>
 -
        tsc=            Disable clocksource-must-verify flag for TSC.
                        Format: <string>
                        [x86] reliable: mark tsc clocksource as reliable, this
                        <port#>,<js1>,<js2>,<js3>,<js4>,<js5>,<js6>,<js7>
                        See also Documentation/input/joystick-parport.txt
  
 -      u14-34f=        [HW,SCSI] UltraStor 14F/34F SCSI host adapter
 -                      See header of drivers/scsi/u14-34f.c.
 -
 -      uart401=        [HW,OSS]
 -                      Format: <io>,<irq>
 -
 -      uart6850=       [HW,OSS]
 -                      Format: <io>,<irq>
 -
        uhash_entries=  [KNL,NET]
                        Set number of hash buckets for UDP/UDP-Lite connections
  
                        overridden by individual drivers. 0 will hide
                        cursors, 1 will display them.
  
 -      waveartist=     [HW,OSS]
 -                      Format: <io>,<irq>,<dma>,<dma2>
 -
 -      wd33c93=        [HW,SCSI]
 -                      See header of drivers/scsi/wd33c93.c.
 -
 -      wd7000=         [HW,SCSI]
 -                      See header of drivers/scsi/wd7000.c.
 -
        watchdog timers [HW,WDT] For information on watchdog timers,
                        see Documentation/watchdog/watchdog-parameters.txt
                        or other driver-specific files in the
        xd=             [HW,XT] Original XT pre-IDE (RLL encoded) disks.
        xd_geo=         See header of drivers/block/xd.c.
  
 +      xen_emul_unplug=                [HW,X86,XEN]
 +                      Unplug Xen emulated devices
 +                      Format: [unplug0,][unplug1]
 +                      ide-disks -- unplug primary master IDE devices
 +                      aux-ide-disks -- unplug non-primary-master IDE devices
 +                      nics -- unplug network devices
 +                      all -- unplug all emulated devices (NICs and IDE disks)
 +                      ignore -- continue loading the Xen platform PCI driver even
 +                              if the version check failed
 +
        xirc2ps_cs=     [NET,PCMCIA]
                        Format:
                        <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
@@@ -2633,4 -2894,5 +2640,4 @@@ _______________________________________
  
  TODO:
  
 -      Add documentation for ALSA options.
        Add more DRM drivers.
index b0de57947189ecadc6a0627a73b7cbe66d3df583,603cdc0c854ad436993e4e51ff5d078c8f78032a..c3ceebb5be84168ae71b845bdc52b3c9a6b557b3
@@@ -236,7 -236,7 +236,7 @@@ static inline u64 dma_pte_addr(struct d
        return pte->val & VTD_PAGE_MASK;
  #else
        /* Must have a full atomic 64-bit read */
-       return  __cmpxchg64(pte, 0ULL, 0ULL) & VTD_PAGE_MASK;
+       return  __cmpxchg64(&pte->val, 0ULL, 0ULL) & VTD_PAGE_MASK;
  #endif
  }
  
@@@ -3030,34 -3030,6 +3030,34 @@@ static void __init iommu_exit_mempool(v
  
  }
  
 +static void quirk_ioat_snb_local_iommu(struct pci_dev *pdev)
 +{
 +      struct dmar_drhd_unit *drhd;
 +      u32 vtbar;
 +      int rc;
 +
 +      /* We know that this device on this chipset has its own IOMMU.
 +       * If we find it under a different IOMMU, then the BIOS is lying
 +       * to us. Hope that the IOMMU for this device is actually
 +       * disabled, and it needs no translation...
 +       */
 +      rc = pci_bus_read_config_dword(pdev->bus, PCI_DEVFN(0, 0), 0xb0, &vtbar);
 +      if (rc) {
 +              /* "can't" happen */
 +              dev_info(&pdev->dev, "failed to run vt-d quirk\n");
 +              return;
 +      }
 +      vtbar &= 0xffff0000;
 +
 +      /* we know that the this iommu should be at offset 0xa000 from vtbar */
 +      drhd = dmar_find_matched_drhd_unit(pdev);
 +      if (WARN_TAINT_ONCE(!drhd || drhd->reg_base_addr - vtbar != 0xa000,
 +                          TAINT_FIRMWARE_WORKAROUND,
 +                          "BIOS assigned incorrect VT-d unit for Intel(R) QuickData Technology device\n"))
 +              pdev->dev.archdata.iommu = DUMMY_DEVICE_DOMAIN_INFO;
 +}
 +DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IOAT_SNB, quirk_ioat_snb_local_iommu);
 +
  static void __init init_no_remapping_devices(void)
  {
        struct dmar_drhd_unit *drhd;
@@@ -3726,8 -3698,6 +3726,8 @@@ static int intel_iommu_domain_has_cap(s
  
        if (cap == IOMMU_CAP_CACHE_COHERENCY)
                return dmar_domain->iommu_snooping;
 +      if (cap == IOMMU_CAP_INTR_REMAP)
 +              return intr_remapping_enabled;
  
        return 0;
  }
index 1694a0e2845b1a4074c3c29e4332455a89a83676,45478ef7dd74dd2b74a9682e4bfb82d367f69379..fd1d2867cdcc518431032c4562681d53a79de5fe
@@@ -21,6 -21,8 +21,8 @@@ static int ir_ioapic_num, ir_hpet_num
  int intr_remapping_enabled;
  
  static int disable_intremap;
+ static int disable_sourceid_checking;
  static __init int setup_nointremap(char *str)
  {
        disable_intremap = 1;
  }
  early_param("nointremap", setup_nointremap);
  
+ static __init int setup_intremap(char *str)
+ {
+       if (!str)
+               return -EINVAL;
+       if (!strncmp(str, "on", 2))
+               disable_intremap = 0;
+       else if (!strncmp(str, "off", 3))
+               disable_intremap = 1;
+       else if (!strncmp(str, "nosid", 5))
+               disable_sourceid_checking = 1;
+       return 0;
+ }
+ early_param("intremap", setup_intremap);
  struct irq_2_iommu {
        struct intel_iommu *iommu;
        u16 irte_index;
@@@ -311,8 -329,8 +329,8 @@@ int modify_irte(int irq, struct irte *i
        index = irq_iommu->irte_index + irq_iommu->sub_handle;
        irte = &iommu->ir_table->base[index];
  
 -      set_64bit((unsigned long *)&irte->low, irte_modified->low);
 -      set_64bit((unsigned long *)&irte->high, irte_modified->high);
 +      set_64bit(&irte->low, irte_modified->low);
 +      set_64bit(&irte->high, irte_modified->high);
        __iommu_flush_cache(iommu, irte, sizeof(*irte));
  
        rc = qi_flush_iec(iommu, index, 0);
@@@ -393,8 -411,8 +411,8 @@@ static int clear_entries(struct irq_2_i
        end = start + (1 << irq_iommu->irte_mask);
  
        for (entry = start; entry < end; entry++) {
 -              set_64bit((unsigned long *)&entry->low, 0);
 -              set_64bit((unsigned long *)&entry->high, 0);
 +              set_64bit(&entry->low, 0);
 +              set_64bit(&entry->high, 0);
        }
  
        return qi_flush_iec(iommu, index, irq_iommu->irte_mask);
@@@ -453,6 -471,8 +471,8 @@@ int free_irte(int irq
  static void set_irte_sid(struct irte *irte, unsigned int svt,
                         unsigned int sq, unsigned int sid)
  {
+       if (disable_sourceid_checking)
+               svt = SVT_NO_VERIFY;
        irte->svt = svt;
        irte->sq = sq;
        irte->sid = sid;