1. 15 Jan, 2015 15 commits
    • Jiang Liu's avatar
      iommu/irq_remapping: Kill function irq_remapping_supported() and related code · c392f56c
      Jiang Liu authored
      Simplify irq_remapping code by killing irq_remapping_supported() and
      related interfaces.
      
      Joerg posted a similar patch at https://lkml.org/lkml/2014/12/15/490,
      so assume an signed-off from Joerg.
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
      Tested-by: default avatarJoerg Roedel <joro@8bytes.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: David Rientjes <rientjes@google.com>
      Cc: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
      Cc: Jan Beulich <JBeulich@suse.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Oren Twaig <oren@scalemp.com>
      Link: http://lkml.kernel.org/r/1420615903-28253-14-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      c392f56c
    • Joerg Roedel's avatar
      iommu/amd: Check for irq-remap support amd_iommu_prepare() · 84d07793
      Joerg Roedel authored
      This allows to get rid of the irq_remapping_supported() function and
      all its call-backs into the Intel and AMD IOMMU drivers.
      Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Tested-by: default avatarJoerg Roedel <joro@8bytes.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Link: http://lkml.kernel.org/r/1420615903-28253-13-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      84d07793
    • Jiang Liu's avatar
      x86/apic: Only disable CPU x2apic mode when necessary · 5fcee53c
      Jiang Liu authored
      When interrupt remapping hardware is not in X2APIC, CPU X2APIC mode
      will be disabled if:
      1) Maximum CPU APIC ID is bigger than 255
      2) hypervisior doesn't support x2apic mode.
      
      But we should only check whether hypervisor supports X2APIC mode when
      hypervisor(CONFIG_HYPERVISOR_GUEST) is enabled, otherwise X2APIC will
      always be disabled when CONFIG_HYPERVISOR_GUEST is disabled and IR
      doesn't work in X2APIC mode.
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Tested-by: default avatarJoerg Roedel <joro@8bytes.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: David Rientjes <rientjes@google.com>
      Cc: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
      Cc: Jan Beulich <JBeulich@suse.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Oren Twaig <oren@scalemp.com>
      Link: http://lkml.kernel.org/r/1420615903-28253-12-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      5fcee53c
    • Jiang Liu's avatar
      iommu/vt-d: Allow IR works in XAPIC mode though CPU works in X2APIC mode · 13d09b66
      Jiang Liu authored
      Currently if CPU supports X2APIC, IR hardware must work in X2APIC mode
      or disabled. Change the code to support IR working in XAPIC mode when
      CPU supports X2APIC. Then the CPU APIC driver will decide how to handle
      such as configuration by:
      1) Disabling X2APIC mode
      2) Forcing X2APIC physical mode
      
      This change also fixes a live locking when
      1) BIOS enables CPU X2APIC
      2) DMAR table disables X2APIC mode or IR hardware doesn't support X2APIC
      with following messages:
      [   37.863463] dmar: INTR-REMAP: Request device [[f0:1f.7] fault index 2
      [   37.863463] INTR-REMAP:[fault reason 36] Detected reserved fields in the IRTE entry
      [   37.879372] dmar: INTR-REMAP: Request device [[f0:1f.7] fault index 2
      [   37.879372] INTR-REMAP:[fault reason 36] Detected reserved fields in the IRTE entry
      [   37.895282] dmar: INTR-REMAP: Request device [[f0:1f.7] fault index 2
      [   37.895282] INTR-REMAP:[fault reason 36] Detected reserved fields in the IRTE entry
      [   37.911192] dmar: INTR-REMAP: Request device [[f0:1f.7] fault index 2
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Tested-by: default avatarJoerg Roedel <joro@8bytes.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Link: http://lkml.kernel.org/r/1420615903-28253-11-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      13d09b66
    • Joerg Roedel's avatar
      iommu/vt-d: Allocate IRQ remapping data structures only for all IOMMUs · 69cf1d8a
      Joerg Roedel authored
      IRQ remapping is only supported when all IOMMUs in the
      system support it. So check if all IOMMUs in the system
      support IRQ remapping before doing the allocations.
      
      [Jiang]
      1) Rebased to v3.19.
      2) Remove redundant check of ecap_ir_support(iommu->ecap) in function
         intel_enable_irq_remapping().
      Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Tested-by: default avatarJoerg Roedel <joro@8bytes.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Link: http://lkml.kernel.org/r/1420615903-28253-10-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      69cf1d8a
    • Jiang Liu's avatar
      iommu/vt-d: Prepare for killing function irq_remapping_supported() · 2966d956
      Jiang Liu authored
      Prepare for killing function irq_remapping_supported() by moving code
      from intel_irq_remapping_supported() into intel_prepare_irq_remapping().
      
      Combined with patch from Joerg at https://lkml.org/lkml/2014/12/15/487,
      so assume an signed-off from Joerg.
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
      Tested-by: default avatarJoerg Roedel <joro@8bytes.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Link: http://lkml.kernel.org/r/1420615903-28253-9-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      2966d956
    • Jiang Liu's avatar
      x86/apic: Handle XAPIC remap mode proper. · ef1b2b8a
      Jiang Liu authored
      If remapping is in XAPIC mode, the setup code just skips X2APIC
      initialization without checking max CPU APIC ID in system, which may
      cause problem if system has a CPU with APIC ID bigger than 255.
      
      Handle IR in XAPIC mode the same way as if remapping is disabled.
      
      [ tglx: Split out from previous patch ]
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: David Rientjes <rientjes@google.com>
      Cc: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
      Cc: Jan Beulich <JBeulich@suse.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Oren Twaig <oren@scalemp.com>
      Link: http://lkml.kernel.org/r/1420615903-28253-8-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      ef1b2b8a
    • Jiang Liu's avatar
      x86/apic: Refine enable_IR_x2apic() and related functions · 07806c50
      Jiang Liu authored
      Refine enable_IR_x2apic() and related functions for better readability.
      
      [ tglx: Removed the XAPIC mode change and split it out into a seperate
        	patch. Added comments. ]
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: David Rientjes <rientjes@google.com>
      Cc: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
      Cc: Jan Beulich <JBeulich@suse.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Oren Twaig <oren@scalemp.com>
      Link: http://lkml.kernel.org/r/1420615903-28253-8-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      07806c50
    • Jiang Liu's avatar
      x86/apic: Correctly detect X2APIC status in function enable_IR() · 89356cf2
      Jiang Liu authored
      X2APIC will be disabled if user specifies "nox2apic" on kernel command
      line, even when x2apic_preenabled is true. So correctly detect X2APIC
      status by using x2apic_enabled() instead of x2apic_preenabled.
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: David Rientjes <rientjes@google.com>
      Cc: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
      Cc: Jan Beulich <JBeulich@suse.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Oren Twaig <oren@scalemp.com>
      Link: http://lkml.kernel.org/r/1420615903-28253-7-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      89356cf2
    • Jiang Liu's avatar
      x86/apic: Kill useless variable x2apic_enabled in function enable_IR_x2apic() · 7f530a27
      Jiang Liu authored
      Local variable x2apic_enabled has been assigned to but never referred,
      so kill it.
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: David Rientjes <rientjes@google.com>
      Cc: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
      Cc: Jan Beulich <JBeulich@suse.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Oren Twaig <oren@scalemp.com>
      Link: http://lkml.kernel.org/r/1420615903-28253-6-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      7f530a27
    • Jiang Liu's avatar
      x86/apic: Panic if kernel doesn't support x2apic but BIOS has enabled x2apic · 2599094f
      Jiang Liu authored
      When kernel doesn't support X2APIC but BIOS has enabled X2APIC, system
      may panic or hang without useful messages. On the other hand, it's
      hard to dynamically disable X2APIC when CONFIG_X86_X2APIC is disabled.
      So panic with a clear message in such a case.
      
      Now system panics as below when X2APIC is disabled and interrupt remapping
      is enabled:
      [    0.316118] LAPIC pending interrupts after 512 EOI
      [    0.322126] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
      [    0.368655] Kernel panic - not syncing: timer doesn't work through Interrupt-remapped IO-APIC
      [    0.378300] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.18.0+ #340
      [    0.385300] Hardware name: Intel Corporation BRICKLAND/BRICKLAND, BIOS BRIVTIN1.86B.0051.L05.1406240953 06/24/2014
      [    0.396997]  ffff88046dc03000 ffff88046c307dd8 ffffffff8179dada 00000000000043f2
      [    0.405629]  ffffffff81a92158 ffff88046c307e58 ffffffff8179b757 0000000000000002
      [    0.414261]  0000000000000008 ffff88046c307e68 ffff88046c307e08 ffffffff813ad82b
      [    0.422890] Call Trace:
      [    0.425711]  [<ffffffff8179dada>] dump_stack+0x45/0x57
      [    0.431533]  [<ffffffff8179b757>] panic+0xc1/0x1f5
      [    0.436978]  [<ffffffff813ad82b>] ? delay_tsc+0x3b/0x70
      [    0.442910]  [<ffffffff8166fa2c>] panic_if_irq_remap+0x1c/0x20
      [    0.449524]  [<ffffffff81d73645>] setup_IO_APIC+0x405/0x82e
      [    0.464979]  [<ffffffff81d6fcc2>] native_smp_prepare_cpus+0x2d9/0x31c
      [    0.472274]  [<ffffffff81d5d0ac>] kernel_init_freeable+0xd6/0x223
      [    0.479170]  [<ffffffff81792ad0>] ? rest_init+0x80/0x80
      [    0.485099]  [<ffffffff81792ade>] kernel_init+0xe/0xf0
      [    0.490932]  [<ffffffff817a537c>] ret_from_fork+0x7c/0xb0
      [    0.497054]  [<ffffffff81792ad0>] ? rest_init+0x80/0x80
      [    0.502983] ---[ end Kernel panic - not syncing: timer doesn't work through Interrupt-remapped IO-APIC
      
      System hangs as below when X2APIC and interrupt remapping are both disabled:
      [    1.102782] pci 0000:00:02.0: System wakeup disabled by ACPI
      [    1.109351] pci 0000:00:03.0: System wakeup disabled by ACPI
      [    1.115915] pci 0000:00:03.2: System wakeup disabled by ACPI
      [    1.122479] pci 0000:00:03.3: System wakeup disabled by ACPI
      [    1.132274] pci 0000:00:1c.0: Enabling MPC IRBNCE
      [    1.137620] pci 0000:00:1c.0: Intel PCH root port ACS workaround enabled
      [    1.145239] pci 0000:00:1c.0: System wakeup disabled by ACPI
      [    1.151790] pci 0000:00:1c.7: Enabling MPC IRBNCE
      [    1.157128] pci 0000:00:1c.7: Intel PCH root port ACS workaround enabled
      [    1.164748] pci 0000:00:1c.7: System wakeup disabled by ACPI
      [    1.171447] pci 0000:00:1e.0: System wakeup disabled by ACPI
      [    1.178612] acpiphp: Slot [8] registered
      [    1.183095] pci 0000:00:02.0: PCI bridge to [bus 01]
      [    1.188867] acpiphp: Slot [2] registered
      
      With this patch applied, the system panics in both cases with a proper
      panic message.
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: David Rientjes <rientjes@google.com>
      Cc: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
      Cc: Jan Beulich <JBeulich@suse.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Oren Twaig <oren@scalemp.com>
      Link: http://lkml.kernel.org/r/1420615903-28253-5-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      2599094f
    • Thomas Gleixner's avatar
      x86/apic: Clear stale x2apic mode · f7ccadac
      Thomas Gleixner authored
      If x2apic got disabled on the kernel command line, then the following
      issue can happen:
      
      enable_IR_x2apic()
         ....
         x2apic_mode = 1;
         enable_x2apic();
      
           if (x2apic_disabled) {
      	__disable_x2apic();
      	return;
           }
      
      That leaves X2APIC disabled in hardware, but x2apic_mode stays 1. So
      all other code which checks x2apic_mode gets the wrong information.
      
      Set x2apic_mode to 0 after disabling it in hardware.
      
      This is just a hotfix. The proper solution is to rework this code so
      it has seperate functions for the initial setup on the boot processor
      and the secondary cpus, but that's beyond the scope of this fix.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Jiang Liu <jiang.liu@linux.intel.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: David Rientjes <rientjes@google.com>
      Cc: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
      Cc: Jan Beulich <JBeulich@suse.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Oren Twaig <oren@scalemp.com>
      f7ccadac
    • Thomas Gleixner's avatar
      iommu/vt-d: Convert allocations to GFP_KERNEL · e3a981d6
      Thomas Gleixner authored
      No reason anymore to do GFP_ATOMIC allocations which are not harmful
      in the normal bootup case, but matter in the physical hotplug
      scenario.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarBorislav Petkov <bp@alien8.de>
      Acked-and-tested-by: default avatarJoerg Roedel <joro@8bytes.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: x86@kernel.org
      Link: http://lkml.kernel.org/r/20141205084147.472428339@linutronix.de
      Link: http://lkml.kernel.org/r/1420615903-28253-4-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      e3a981d6
    • Thomas Gleixner's avatar
      iommu/vt-d: Move iommu preparatory allocations to irq_remap_ops.prepare · 11190302
      Thomas Gleixner authored
      The whole iommu setup for irq remapping is a convoluted mess. The
      iommu detect function gets called from mem_init() and the prepare
      callback gets called from enable_IR_x2apic() for unknown reasons.
      
      Of course AMD and Intel setup differs in nonsensical ways. Intels
      prepare callback is explicit while AMDs prepare callback is implicit
      in setup_irq_remapping_ops() just to be called in the prepare call
      again.
      
      Because all of this gets called from enable_IR_x2apic() and the dmar
      prepare function merily parses the ACPI tables, but does not allocate
      memory we end up with memory allocation from irq disabled context
      later on.
      
      AMDs iommu code at least allocates the required memory from the
      prepare function. That has issues as well, but thats not scope of this
      patch.
      
      The goal of this change is to distangle the allocation from the actual
      enablement. There is no point to allocate memory from irq disabled
      regions with GFP_ATOMIC just because it does not matter at that point
      in the boot stage. It matters with physical hotplug later on.
      
      There is another issue with the current setup. Due to the conversion
      to stacked irqdomains we end up with a call into the irqdomain
      allocation code from irq disabled context, but that code does
      GFP_KERNEL allocations rightfully as there is no reason to do
      preperatory allocations with GFP_ATOMIC.
      
      That change caused the allocator code to complain about GFP_KERNEL
      allocations invoked in atomic context. Boris provided a temporary
      hackaround which changed the GFP flags if irq_domain_add() got called
      from atomic context. Not pretty and we really dont want to get this
      into a mainline release for obvious reasons.
      
      Move the ACPI table parsing and the resulting memory allocations from
      the enable to the prepare function. That allows to get rid of the
      horrible hackaround in irq_domain_add() later.
      
      [Jiang] Rebased onto v3.19
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarBorislav Petkov <bp@alien8.de>
      Acked-and-tested-by: default avatarJoerg Roedel <joro@8bytes.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: x86@kernel.org
      Link: http://lkml.kernel.org/r/20141205084147.313026156@linutronix.de
      Link: http://lkml.kernel.org/r/1420615903-28253-3-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      11190302
    • Thomas Gleixner's avatar
      iommu, x86: Restructure setup of the irq remapping feature · a1dafe85
      Thomas Gleixner authored
      enable_IR_x2apic() calls setup_irq_remapping_ops() which by default
      installs the intel dmar remapping ops and then calls the amd iommu irq
      remapping prepare callback to figure out whether we are running on an
      AMD machine with irq remapping hardware.
      
      Right after that it calls irq_remapping_prepare() which pointlessly
      checks:
      	if (!remap_ops || !remap_ops->prepare)
                     return -ENODEV;
      and then calls
      
          remap_ops->prepare()
      
      which is silly in the AMD case as it got called from
      setup_irq_remapping_ops() already a few microseconds ago.
      
      Simplify this and just collapse everything into
      irq_remapping_prepare().
      
      The irq_remapping_prepare() remains still silly as it assigns blindly
      the intel ops, but that's not scope of this patch.
      
      The scope here is to move the preperatory work, i.e. memory
      allocations out of the atomic section which is required to enable irq
      remapping.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Tested-by: default avatarBorislav Petkov <bp@alien8.de>
      Acked-and-tested-by: default avatarJoerg Roedel <joro@8bytes.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: iommu@lists.linux-foundation.org
      Cc: Joerg Roedel <jroedel@suse.de>
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Cc: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
      Cc: Jan Beulich <JBeulich@suse.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Oren Twaig <oren@scalemp.com>
      Cc: x86@kernel.org
      Link: http://lkml.kernel.org/r/20141205084147.232633738@linutronix.de
      Link: http://lkml.kernel.org/r/1420615903-28253-2-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      a1dafe85
  2. 11 Jan, 2015 9 commits
  3. 10 Jan, 2015 10 commits
    • Linus Torvalds's avatar
      Merge tag 'vfio-v3.19-rc4' of git://github.com/awilliam/linux-vfio · 4850d37d
      Linus Torvalds authored
      Pull VFIO fix from Alex Williamson:
       "Fix PCI header check in vfio_pci_probe() (Wei Yang)"
      
      * tag 'vfio-v3.19-rc4' of git://github.com/awilliam/linux-vfio:
        vfio-pci: Fix the check on pci device type in vfio_pci_probe()
      4850d37d
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · aff8ad59
      Linus Torvalds authored
      Pull SCSI fix from James Bottomley:
       "Just one fix: a qlogic busy wait regression"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        qla2xxx: fix busy wait regression
      aff8ad59
    • Linus Torvalds's avatar
      Merge tag 'sound-3.19-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · eb749269
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "All a few small regression or stable fixes: a Nvidia HDMI ID addition,
        a regression fix for CAIAQ stream count, a typo fix for GPIO setup
        with STAC/IDT HD-audio codecs, and a Fireworks big-endian fix"
      
      * tag 'sound-3.19-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: fireworks: fix an endianness bug for transaction length
        ALSA: hda - Add new GPU codec ID 0x10de0072 to snd-hda
        ALSA: hda - Fix wrong gpio_dir & gpio_mask hint setups for IDT/STAC codecs
        ALSA: snd-usb-caiaq: fix stream count check
      eb749269
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · 28023d2a
      Linus Torvalds authored
      Pull HID updates from Jiri Kosina:
      
       - bounds checking fixes in logitech and roccat drivers, from Peter Wu
         and Dan Carpenter
      
       - double-kfree fix in i2c-hid driver on bus shutdown, from Mika
         Westerberg
      
       - a couple of various small driver fixes
      
       - a few device id additions
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
        HID: roccat: potential out of bounds in pyra_sysfs_write_settings()
        HID: Add a new id 0x501a for Genius MousePen i608X
        HID: logitech-hidpp: prefix the name with "Logitech"
        HID: logitech-hidpp: avoid unintended fall-through
        HID: Allow HID_BATTERY_STRENGTH to be enabled
        HID: i2c-hid: Do not free buffers in i2c_hid_stop()
        HID: add battery quirk for USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO keyboard
        HID: logitech-hidpp: check WTP report length
        HID: logitech-dj: check report length
      28023d2a
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 1dd34daa
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "I'm briefly working between holidays and LCA, so this is close to a
        couple of weeks of fixes,
      
        Two sets of amdkfd fixes, this is a new feature this kernel, and this
        pull fixes a few issues since it got merged, ordering when built-in to
        kernel and also the iommu vs gpu ordering patch, it also reworks the
        ioctl before the initial release.
      
        Otherwise:
         - radeon: some misc fixes all over, hdmi, 4k, dpm
         - nouveau: mcp77 init fixes, oops fix, bug on fix, msi fix
         - i915: power fixes, revert VGACNTR patch
      
        Probably be quiteer next week since I'll be at LCA anyways"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (33 commits)
        drm/amdkfd: rewrite kfd_ioctl() according to drm_ioctl()
        drm/amdkfd: reformat IOCTL definitions to drm-style
        drm/amdkfd: Do copy_to/from_user in general kfd_ioctl()
        drm/radeon: integer underflow in radeon_cp_dispatch_texture()
        drm/radeon: adjust default bapm settings for KV
        drm/radeon: properly filter DP1.2 4k modes on non-DP1.2 hw
        drm/radeon: fix sad_count check for dce3
        drm/radeon: KV has three PPLLs (v2)
        drm/amdkfd: unmap VMID<-->PASID when relesing VMID (non-HWS)
        drm/radeon: Init amdkfd only if it was compiled
        amdkfd: actually allocate longs for the pasid bitmask
        drm/nouveau/nouveau: Do not BUG_ON(!spin_is_locked()) on UP
        drm/nv4c/mc: disable msi
        drm/nouveau/fb/ram/mcp77: enable NISO poller
        drm/nouveau/fb/ram/mcp77: use carveout reg to determine size
        drm/nouveau/fb/ram/mcp77: subclass nouveau_ram
        drm/nouveau: wake up the card if necessary during gem callbacks
        drm/nouveau/device: Add support for GK208B, resolves bug 86935
        drm/nouveau: fix missing return statement in nouveau_ttm_tt_unpopulate
        drm/nouveau/bios: fix oops on pre-nv50 chipsets
        ...
      1dd34daa
    • Linus Torvalds's avatar
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · d80b34c9
      Linus Torvalds authored
      Pull arm64 fixes from Will Deacon:
       "Here is a handful of minor arm64 fixes discovered and fixed over the
        Christmas break.  The main part is adding some missing #includes that
        we seem to be getting transitively but have started causing problems
        in -next.
      
         - Fix early mapping fixmap corruption by EFI runtime services
         - Fix __NR_compat_syscalls off-by-one
         - Add missing sanity checks for some 32-bit registers
         - Add some missing #includes which we get transitively
         - Remove unused prepare_to_copy() macro"
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        arm64/efi: add missing call to early_ioremap_reset()
        arm64: fix missing asm/io.h include in kernel/smp_spin_table.c
        arm64: fix missing asm/alternative.h include in kernel/module.c
        arm64: fix missing linux/bug.h include in asm/arch_timer.h
        arm64: fix missing asm/pgtable-hwdef.h include in asm/processor.h
        arm64: sanity checks: add missing AArch32 registers
        arm64: Remove unused prepare_to_copy()
        arm64: Correct __NR_compat_syscalls for bpf
      d80b34c9
    • Linus Torvalds's avatar
      Merge tag 'for_linus-3.19-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb · aa929135
      Linus Torvalds authored
      Pull kgdb/kdb fixes from Jason Wessel:
       "These have been around since 3.17 and in kgdb-next for the last 9
        weeks and some will go back to -stable.
      
        Summary of changes:
      
        Cleanups
         - kdb: Remove unused command flags, repeat flags and KDB_REPEAT_NONE
      
        Fixes
         - kgdb/kdb: Allow access on a single core, if a CPU round up is
           deemed impossible, which will allow inspection of the now "trashed"
           kernel
         - kdb: Add enable mask for the command groups
         - kdb: access controls to restrict sensitive commands"
      
      * tag 'for_linus-3.19-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb:
        kernel/debug/debug_core.c: Logging clean-up
        kgdb: timeout if secondary CPUs ignore the roundup
        kdb: Allow access to sensitive commands to be restricted by default
        kdb: Add enable mask for groups of commands
        kdb: Categorize kdb commands (similar to SysRq categorization)
        kdb: Remove KDB_REPEAT_NONE flag
        kdb: Use KDB_REPEAT_* values as flags
        kdb: Rename kdb_register_repeat() to kdb_register_flags()
        kdb: Rename kdb_repeat_t to kdb_cmdflags_t, cmd_repeat to cmd_flags
        kdb: Remove currently unused kdbtab_t->cmd_flags
      aa929135
    • Linus Torvalds's avatar
      Merge branch 'for-3.19' of git://linux-nfs.org/~bfields/linux · dc9319f5
      Linus Torvalds authored
      Pull two nfsd bugfixes from Bruce Fields.
      
      * 'for-3.19' of git://linux-nfs.org/~bfields/linux:
        rpc: fix xdr_truncate_encode to handle buffer ending on page boundary
        nfsd: fix fi_delegees leak when fi_had_conflict returns true
      dc9319f5
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client · 20ebb345
      Linus Torvalds authored
      Pull two Ceph fixes from Sage Weil:
       "These are both pretty trivial: a sparse warning fix and size_t printk
        thing"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
        libceph: fix sparse endianness warnings
        ceph: use %zu for len in ceph_fill_inline_data()
      20ebb345
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · 03c751a5
      Linus Torvalds authored
      Pull btrfs fixes from Chris Mason:
       "None of these are huge, but my commit does fix a regression from 3.18
        that could cause lost files during log replay.
      
        This also adds Dave Sterba to the list of Btrfs maintainers.  It
        doesn't mean we're doing things differently, but Dave has really been
        helping with the maintainer workload for years"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
        Btrfs: don't delay inode ref updates during log replay
        Btrfs: correctly get tree level in tree_backref_for_extent
        Btrfs: call inode_dec_link_count() on mkdir error path
        Btrfs: abort transaction if we don't find the block group
        Btrfs, scrub: uninitialized variable in scrub_extent_for_parity()
        Btrfs: add more maintainers
      03c751a5
  4. 09 Jan, 2015 6 commits
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · b3d574ae
      Linus Torvalds authored
      Merge misc fixes from Andrew Morton:
       "12 fixes"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        mm, vmscan: prevent kswapd livelock due to pfmemalloc-throttled process being killed
        memcg: fix destination cgroup leak on task charges migration
        mm: memcontrol: switch soft limit default back to infinity
        mm/debug_pagealloc: remove obsolete Kconfig options
        vfs: renumber FMODE_NONOTIFY and add to uniqueness check
        arch/blackfin/mach-bf533/boards/stamp.c: add linux/delay.h
        ocfs2: fix the wrong directory passed to ocfs2_lookup_ino_from_name() when link file
        MAINTAINERS: update rydberg's addresses
        mm: protect set_page_dirty() from ongoing truncation
        mm: prevent endless growth of anon_vma hierarchy
        exit: fix race between wait_consider_task() and wait_task_zombie()
        ocfs2: remove bogus check in dlm_process_recovery_data
      b3d574ae
    • Victor Kamensky's avatar
      ARM: 8275/1: mm: fix PMD_SECT_RDONLY undeclared compile error · 1e347922
      Victor Kamensky authored
      In v3.19-rc3 tree when CONFIG_ARM_LPAE and CONFIG_DEBUG_RODATA are enabled
      image failed to compile with the following error:
      
      arch/arm/mm/init.c:661:14: error: ‘PMD_SECT_RDONLY’ undeclared here (not in a function)
      
      It seems that '80d6b0c2 ARM: mm: allow text and rodata sections to be read-only'
      and 'ded94779 ARM: 8109/1: mm: Modify pte_write and pmd_write logic for LPAE'
      commits crossed. 80d6b0c2 uses PMD_SECT_RDONLY macro but ded94779 renames it
      and uses software bits L_PMD_SECT_RDONLY instead.
      
      Fix is to use L_PMD_SECT_RDONLY instead PMD_SECT_RDONLY as ded94779 does in
      another places.
      Signed-off-by: default avatarVictor Kamensky <victor.kamensky@linaro.org>
      Acked-by: default avatarWill Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      1e347922
    • Dan Carpenter's avatar
      HID: roccat: potential out of bounds in pyra_sysfs_write_settings() · 606185b2
      Dan Carpenter authored
      This is a static checker fix.  We write some binary settings to the
      sysfs file.  One of the settings is the "->startup_profile".  There
      isn't any checking to make sure it fits into the
      pyra->profile_settings[] array in the profile_activated() function.
      
      I added a check to pyra_sysfs_write_settings() in both places because
      I wasn't positive that the other callers were correct.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      606185b2
    • Chris Wilson's avatar
      mutex: Always clear owner field upon mutex_unlock() · a63b03e2
      Chris Wilson authored
      Currently if DEBUG_MUTEXES is enabled, the mutex->owner field is only
      cleared iff debug_locks is active. This exposes a race to other users of
      the field where the mutex->owner may be still set to a stale value,
      potentially upsetting mutex_spin_on_owner() among others.
      
      References: https://bugs.freedesktop.org/show_bug.cgi?id=87955Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Acked-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1420540175-30204-1-git-send-email-chris@chris-wilson.co.ukSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      a63b03e2
    • Tetsuo Handa's avatar
      sched/fair: Fix RCU stall upon -ENOMEM in sched_create_group() · 7f1a169b
      Tetsuo Handa authored
      When alloc_fair_sched_group() in sched_create_group() fails,
      free_sched_group() is called, and free_fair_sched_group() is called by
      free_sched_group(). Since destroy_cfs_bandwidth() is called by
      free_fair_sched_group() without calling init_cfs_bandwidth(),
      RCU stall occurs at hrtimer_cancel():
      
        INFO: rcu_sched self-detected stall on CPU { 1}  (t=60000 jiffies g=13074 c=13073 q=0)
        Task dump for CPU 1:
        (fprintd)       R  running task        0  6249      1 0x00000088
        ...
        Call Trace:
         <IRQ>  [<ffffffff81094988>] sched_show_task+0xa8/0x110
         [<ffffffff81097acd>] dump_cpu_task+0x3d/0x50
         [<ffffffff810c3a80>] rcu_dump_cpu_stacks+0x90/0xd0
         [<ffffffff810c7751>] rcu_check_callbacks+0x491/0x700
         [<ffffffff810cbf2b>] update_process_times+0x4b/0x80
         [<ffffffff810db046>] tick_sched_handle.isra.20+0x36/0x50
         [<ffffffff810db0a2>] tick_sched_timer+0x42/0x70
         [<ffffffff810ccb19>] __run_hrtimer+0x69/0x1a0
         [<ffffffff810db060>] ? tick_sched_handle.isra.20+0x50/0x50
         [<ffffffff810ccedf>] hrtimer_interrupt+0xef/0x230
         [<ffffffff810452cb>] local_apic_timer_interrupt+0x3b/0x70
         [<ffffffff8164a465>] smp_apic_timer_interrupt+0x45/0x60
         [<ffffffff816485bd>] apic_timer_interrupt+0x6d/0x80
         <EOI>  [<ffffffff810cc588>] ? lock_hrtimer_base.isra.23+0x18/0x50
         [<ffffffff81193cf1>] ? __kmalloc+0x211/0x230
         [<ffffffff810cc9d2>] hrtimer_try_to_cancel+0x22/0xd0
         [<ffffffff81193cf1>] ? __kmalloc+0x211/0x230
         [<ffffffff810ccaa2>] hrtimer_cancel+0x22/0x30
         [<ffffffff810a3cb5>] free_fair_sched_group+0x25/0xd0
         [<ffffffff8108df46>] free_sched_group+0x16/0x40
         [<ffffffff810971bb>] sched_create_group+0x4b/0x80
         [<ffffffff810aa383>] sched_autogroup_create_attach+0x43/0x1c0
         [<ffffffff8107dc9c>] sys_setsid+0x7c/0x110
         [<ffffffff81647729>] system_call_fastpath+0x12/0x17
      
      Check whether init_cfs_bandwidth() was called before calling
      destroy_cfs_bandwidth().
      Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      [ Move the check into destroy_cfs_bandwidth() to aid compilability. ]
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Paul Turner <pjt@google.com>
      Cc: Ben Segall <bsegall@google.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/201412252210.GCC30204.SOMVFFOtQJFLOH@I-love.SAKURA.ne.jpSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      7f1a169b
    • Luca Abeni's avatar
      sched/deadline: Avoid double-accounting in case of missed deadlines · 269ad801
      Luca Abeni authored
      The dl_runtime_exceeded() function is supposed to ckeck if
      a SCHED_DEADLINE task must be throttled, by checking if its
      current runtime is <= 0. However, it also checks if the
      scheduling deadline has been missed (the current time is
      larger than the current scheduling deadline), further
      decreasing the runtime if this happens.
      This "double accounting" is wrong:
      
      - In case of partitioned scheduling (or single CPU), this
        happens if task_tick_dl() has been called later than expected
        (due to small HZ values). In this case, the current runtime is
        also negative, and replenish_dl_entity() can take care of the
        deadline miss by recharging the current runtime to a value smaller
        than dl_runtime
      
      - In case of global scheduling on multiple CPUs, scheduling
        deadlines can be missed even if the task did not consume more
        runtime than expected, hence penalizing the task is wrong
      
      This patch fix this problem by throttling a SCHED_DEADLINE task
      only when its runtime becomes negative, and not modifying the runtime
      Signed-off-by: default avatarLuca Abeni <luca.abeni@unitn.it>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Acked-by: default avatarJuri Lelli <juri.lelli@gmail.com>
      Cc: <stable@vger.kernel.org>
      Cc: Dario Faggioli <raistlin@linux.it>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/1418813432-20797-3-git-send-email-luca.abeni@unitn.itSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      269ad801