1. 30 5月, 2014 1 次提交
  2. 24 5月, 2014 1 次提交
  3. 22 5月, 2014 1 次提交
  4. 20 5月, 2014 3 次提交
  5. 18 5月, 2014 1 次提交
  6. 17 5月, 2014 1 次提交
    • M
      arm64: fix pud_huge() for 2-level pagetables · 4797ec2d
      Mark Salter 提交于
      The following happens when trying to run a kvm guest on a kernel
      configured for 64k pages. This doesn't happen with 4k pages:
      
        BUG: failure at include/linux/mm.h:297/put_page_testzero()!
        Kernel panic - not syncing: BUG!
        CPU: 2 PID: 4228 Comm: qemu-system-aar Tainted: GF            3.13.0-0.rc7.31.sa2.k32v1.aarch64.debug #1
        Call trace:
        [<fffffe0000096034>] dump_backtrace+0x0/0x16c
        [<fffffe00000961b4>] show_stack+0x14/0x1c
        [<fffffe000066e648>] dump_stack+0x84/0xb0
        [<fffffe0000668678>] panic+0xf4/0x220
        [<fffffe000018ec78>] free_reserved_area+0x0/0x110
        [<fffffe000018edd8>] free_pages+0x50/0x88
        [<fffffe00000a759c>] kvm_free_stage2_pgd+0x30/0x40
        [<fffffe00000a5354>] kvm_arch_destroy_vm+0x18/0x44
        [<fffffe00000a1854>] kvm_put_kvm+0xf0/0x184
        [<fffffe00000a1938>] kvm_vm_release+0x10/0x1c
        [<fffffe00001edc1c>] __fput+0xb0/0x288
        [<fffffe00001ede4c>] ____fput+0xc/0x14
        [<fffffe00000d5a2c>] task_work_run+0xa8/0x11c
        [<fffffe0000095c14>] do_notify_resume+0x54/0x58
      
      In arch/arm/kvm/mmu.c:unmap_range(), we end up doing an extra put_page()
      on the stage2 pgd which leads to the BUG in put_page_testzero(). This
      happens because a pud_huge() test in unmap_range() returns true when it
      should always be false with 2-level pages tables used by 64k pages.
      This patch removes support for huge puds if 2-level pagetables are
      being used.
      Signed-off-by: NMark Salter <msalter@redhat.com>
      [catalin.marinas@arm.com: removed #ifndef around PUD_SIZE check]
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      Cc: <stable@vger.kernel.org> # v3.11+
      4797ec2d
  7. 16 5月, 2014 4 次提交
    • L
      mips: dts: Fix missing device_type="memory" property in memory nodes · dfc44f80
      Leif Lindholm 提交于
      A few platforms lack a 'device_type = "memory"' for their memory
      nodes, relying on an old ppc quirk in order to discover its memory.
      Add the missing data so that all parsing code can find memory nodes
      correctly.
      Signed-off-by: NLeif Lindholm <leif.lindholm@linaro.org>
      Cc: linux-mips@linux-mips.org
      Cc: devicetree@vger.kernel.org
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: <stable@vger.kernel.org>
      Acked-by: NJohn Crispin <blogic@openwrt.org>
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      dfc44f80
    • L
      arm: dts: Fix missing device_type="memory" for ste-ccu8540 · bfaed5ab
      Leif Lindholm 提交于
      The current .dts for ste-ccu8540 lacks a 'device_type = "memory"' for
      its memory node, relying on an old ppc quirk in order to discover its
      memory. Fix the data so that all parsing code can handle it correctly.
      Signed-off-by: NLeif Lindholm <leif.lindholm@linaro.org>
      Acked-by: NLee Jones <lee.jones@linaro.org>
      Acked-by: NLinus Walleij <linus.walleij@linaro.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: devicetree@vger.kernel.org
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      bfaed5ab
    • J
      parisc: Improve LWS-CAS performance · c776cd89
      John David Anglin 提交于
      The attached change significantly improves the performance of the LWS-CAS code
      in syscall.S.
      This allows a number of packages to build (e.g., zeromq3, gtest and libxs)
      that previously failed because slow LWS-CAS performance under contention. In
      particular, interrupts taken while the lock was taken degraded performance
      significantly.
      
      The change does the following:
      
      1) Disables interrupts around the CAS operation, and
      2) Changes the loads and stores to use the ordered completer, "o", on
      PA 2.0. "o" and "ma" with a zero offset are equivalent. The latter is
      accepted on both PA 1.X and 2.0.
      
      The use of ordered loads and stores probably makes no difference on all
      existing hardware, but it seemed pedantically correct. In particular, the CAS
      operation must complete before LDCW lock is released. As written before, a
      processor could reorder the operations.
      
      I don't believe the period interrupts are disabled is long enough to
      significantly increase interrupt latency. For example, the TLB insert code is
      longer. Worst case is a memory fault in the CAS operation.
      Signed-off-by: NJohn David Anglin <dave.anglin@bell.net>
      Cc: stable@vger.kernel.org # 3.13+
      Signed-off-by: NHelge Deller <deller@gmx.de>
      c776cd89
    • H
      parisc: ratelimit userspace segfault printing · fef47e2a
      Helge Deller 提交于
      Ratelimit printing of userspace segfaults and make it runtime
      configurable via the /proc/sys/debug/exception-trace variable. This
      should resolve syslog from growing way too fast and thus prevents
      possible system service attacks.
      Signed-off-by: NHelge Deller <deller@gmx.de>
      Cc: stable@vger.kernel.org # 3.13+
      fef47e2a
  8. 15 5月, 2014 7 次提交
    • L
      x86-64, modify_ldt: Make support for 16-bit segments a runtime option · fa81511b
      Linus Torvalds 提交于
      Checkin:
      
      b3b42ac2 x86-64, modify_ldt: Ban 16-bit segments on 64-bit kernels
      
      disabled 16-bit segments on 64-bit kernels due to an information
      leak.  However, it does seem that people are genuinely using Wine to
      run old 16-bit Windows programs on Linux.
      
      A proper fix for this ("espfix64") is coming in the upcoming merge
      window, but as a temporary fix, create a sysctl to allow the
      administrator to re-enable support for 16-bit segments.
      
      It adds a "/proc/sys/abi/ldt16" sysctl that defaults to zero (off). If
      you hit this issue and care about your old Windows program more than
      you care about a kernel stack address information leak, you can do
      
         echo 1 > /proc/sys/abi/ldt16
      
      as root (add it to your startup scripts), and you should be ok.
      
      The sysctl table is only added if you have COMPAT support enabled on
      x86-64, but I assume anybody who runs old windows binaries very much
      does that ;)
      Signed-off-by: NH. Peter Anvin <hpa@linux.intel.com>
      Link: http://lkml.kernel.org/r/CA%2B55aFw9BPoD10U1LfHbOMpHWZkvJTkMcfCs9s3urPr1YyWBxw@mail.gmail.com
      Cc: <stable@vger.kernel.org>
      fa81511b
    • J
      metag: Remove _STK_LIM_MAX override · c70458f5
      James Hogan 提交于
      Meta overrode _STK_LIM_MAX (the default RLIMIT_STACK hard limit) to
      256MB, apparently in an attempt to prevent setup_arg_pages's
      STACK_GROWSUP code from choosing the maximum stack size of 1GB, which is
      far too large for Meta's limited virtual address space and hits a BUG_ON
      (stack_top is usually 0x3ffff000).
      
      However the commit "metag: Reduce maximum stack size to 256MB" reduces
      the absolute stack size limit to a safe value for metag. This allows the
      default _STK_LIM_MAX override to be removed, bringing the default
      behaviour in line with all other architectures. Parisc in particular
      recently removed their override of _STK_LIMT_MAX in commit e0d8898d
      (parisc: remove _STK_LIM_MAX override) since it subtly affects stack
      allocation semantics in userland. Meta's uapi/asm/resource.h can now be
      removed and switch to using generic-y.
      Suggested-by: NHelge Deller <deller@gmx.de>
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: linux-metag@vger.kernel.org
      Cc: John David Anglin <dave.anglin@bell.net>
      c70458f5
    • H
      parisc,metag: Do not hardcode maximum userspace stack size · 042d27ac
      Helge Deller 提交于
      This patch affects only architectures where the stack grows upwards
      (currently parisc and metag only). On those do not hardcode the maximum
      initial stack size to 1GB for 32-bit processes, but make it configurable
      via a config option.
      
      The main problem with the hardcoded stack size is, that we have two
      memory regions which grow upwards: stack and heap. To keep most of the
      memory available for heap in a flexmap memory layout, it makes no sense
      to hard allocate up to 1GB of the memory for stack which can't be used
      as heap then.
      
      This patch makes the stack size for 32-bit processes configurable and
      uses 80MB as default value which has been in use during the last few
      years on parisc and which hasn't showed any problems yet.
      Signed-off-by: NHelge Deller <deller@gmx.de>
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
      Cc: linux-parisc@vger.kernel.org
      Cc: linux-metag@vger.kernel.org
      Cc: John David Anglin <dave.anglin@bell.net>
      042d27ac
    • J
      metag: Reduce maximum stack size to 256MB · d71f290b
      James Hogan 提交于
      Specify the maximum stack size for arches where the stack grows upward
      (parisc and metag) in asm/processor.h rather than hard coding in
      fs/exec.c so that metag can specify a smaller value of 256MB rather than
      1GB.
      
      This fixes a BUG on metag if the RLIMIT_STACK hard limit is increased
      beyond a safe value by root. E.g. when starting a process after running
      "ulimit -H -s unlimited" it will then attempt to use a stack size of the
      maximum 1GB which is far too big for metag's limited user virtual
      address space (stack_top is usually 0x3ffff000):
      
      BUG: failure at fs/exec.c:589/shift_arg_pages()!
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: Helge Deller <deller@gmx.de>
      Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
      Cc: linux-parisc@vger.kernel.org
      Cc: linux-metag@vger.kernel.org
      Cc: John David Anglin <dave.anglin@bell.net>
      Cc: stable@vger.kernel.org # only needed for >= v3.9 (arch/metag)
      d71f290b
    • M
      metag: fix memory barriers · 2425ce84
      Mikulas Patocka 提交于
      Volatile access doesn't really imply the compiler barrier. Volatile access
      is only ordered with respect to other volatile accesses, it isn't ordered
      with respect to general memory accesses. Gcc may reorder memory accesses
      around volatile access, as we can see in this simple example (if we
      compile it with optimization, both increments of *b will be collapsed to
      just one):
      
      void fn(volatile int *a, long *b)
      {
      	(*b)++;
      	*a = 10;
      	(*b)++;
      }
      
      Consequently, we need the compiler barrier after a write to the volatile
      variable, to make sure that the compiler doesn't reorder the volatile
      write with something else.
      Signed-off-by: NMikulas Patocka <mpatocka@redhat.com>
      Cc: stable@vger.kernel.org
      Acked-by: NPeter Zijlstra <peterz@infradead.org>
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      2425ce84
    • H
      net: filter: s390: fix JIT address randomization · e84d2f8d
      Heiko Carstens 提交于
      This is the s390 variant of Alexei's JIT bug fix.
      (patch description below stolen from Alexei's patch)
      
      bpf_alloc_binary() adds 128 bytes of room to JITed program image
      and rounds it up to the nearest page size. If image size is close
      to page size (like 4000), it is rounded to two pages:
      round_up(4000 + 4 + 128) == 8192
      then 'hole' is computed as 8192 - (4000 + 4) = 4188
      If prandom_u32() % hole selects a number >= PAGE_SIZE - sizeof(*header)
      then kernel will crash during bpf_jit_free():
      
      kernel BUG at arch/x86/mm/pageattr.c:887!
      Call Trace:
       [<ffffffff81037285>] change_page_attr_set_clr+0x135/0x460
       [<ffffffff81694cc0>] ? _raw_spin_unlock_irq+0x30/0x50
       [<ffffffff810378ff>] set_memory_rw+0x2f/0x40
       [<ffffffffa01a0d8d>] bpf_jit_free_deferred+0x2d/0x60
       [<ffffffff8106bf98>] process_one_work+0x1d8/0x6a0
       [<ffffffff8106bf38>] ? process_one_work+0x178/0x6a0
       [<ffffffff8106c90c>] worker_thread+0x11c/0x370
      
      since bpf_jit_free() does:
        unsigned long addr = (unsigned long)fp->bpf_func & PAGE_MASK;
        struct bpf_binary_header *header = (void *)addr;
      to compute start address of 'bpf_binary_header'
      and header->pages will pass junk to:
        set_memory_rw(addr, header->pages);
      
      Fix it by making sure that &header->image[prandom_u32() % hole] and &header
      are in the same page.
      
      Fixes: aa2d2c73 ("s390/bpf,jit: address randomize and write protect jit code")
      Reported-by: NAlexei Starovoitov <ast@plumgrid.com>
      Cc: <stable@vger.kernel.org> # v3.11+
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e84d2f8d
    • S
      MIPS: mm: Fix broken microMIPS kernel regression. · 7bb39409
      Steven J. Hill 提交于
      Commit f4ae17aa [MIPS: mm: Use scratch for
      PGD when !CONFIG_MIPS_PGD_C0_CONTEXT] broke microMIPS kernel builds. This
      patch refactors that code similar to what was done for the 'clear_page'
      and 'copy_page' functions.
      Signed-off-by: NSteven J. Hill <Steven.Hill@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/6744/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      7bb39409
  9. 14 5月, 2014 3 次提交
  10. 13 5月, 2014 11 次提交
    • R
      MIPS: Wire up renameat2 syscall. · 367f0b50
      Ralf Baechle 提交于
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      367f0b50
    • R
      MIPS: inst.h: Rename BITFIELD_FIELD to __BITFIELD_FIELD. · 8471ac1b
      Ralf Baechle 提交于
      <uapi/asm/inst.h> is exported to userland so the macro name BITFIELD_FIELD
      pollutes the namespace.  Prefix the name with __ fixes this.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      8471ac1b
    • R
    • A
      MIPS/loongson2_cpufreq: Fix CPU clock rate setting · 8e8acb32
      Aaro Koskinen 提交于
      Loongson2 has been using (incorrectly) kHz for cpu_clk rate. This has
      been unnoticed, as loongson2_cpufreq was the only place where the rate
      was set/get. After commit 652ed95d
      (cpufreq: introduce cpufreq_generic_get() routine) things however broke,
      and now loops_per_jiffy adjustments are incorrect (1000 times too long).
      The patch fixes this by changing cpu_clk rate to Hz.
      Signed-off-by: NAaro Koskinen <aaro.koskinen@iki.fi>
      Cc: stable@vger.kernel.org
      Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
      Cc: Viresh Kumar <viresh.kumar@linaro.org>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Cc: cpufreq@vger.kernel.org
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Patchwork: https://patchwork.linux-mips.org/patch/6678/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      8e8acb32
    • P
      MIPS: Loongson: No need to select GENERIC_HARDIRQS_NO__DO_IRQ · 3deff253
      Paul Bolle 提交于
      Commit 0e476d91 ("MIPS: Loongson: Add Loongson-3 Kconfig options")
      added "select GENERIC_HARDIRQS_NO__DO_IRQ". But the Kconfig symbol
      GENERIC_HARDIRQS_NO__DO_IRQ was already removed in v2.6.38, so that
      select is a nop. Drop it.
      Signed-off-by: NPaul Bolle <pebolle@tiscali.nl>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/6677/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      3deff253
    • M
      MIPS: csum_partial.S CPU_DADDI_WORKAROUNDS bug fix · 44ba138f
      Maciej W. Rozycki 提交于
      This change reverts most of commit
      60724ca5 [MIPS: IP checksums: Remove
      unncessary .set pseudos] that introduced warnings with the
      CPU_DADDI_WORKAROUNDS option set:
      
      arch/mips/lib/csum_partial.S: Assembler messages:
      arch/mips/lib/csum_partial.S:467: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:467: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:467: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:467: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:467: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:467: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:467: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:467: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:467: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:467: Warning: used $3 with ".set at=$3"
      [...]
      arch/mips/lib/csum_partial.S:577: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:577: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:577: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:601: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:601: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:601: Warning: used $3 with ".set at=$3"
      arch/mips/lib/csum_partial.S:601: Warning: used $3 with ".set at=$3"
      [and so on, and so on...]
      
      The warnings are benign and good code is produced regardless because no
      macros that'd use the assembler's temporary register are involved, however
      the `.set noat' directives removed by the commit referred are crucial to
      guarantee this is still going to be the case after any changes in the
      future.  Therefore they need to be brought back to place which this
      change does.
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/6686/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      44ba138f
    • M
      MIPS: __strncpy_from_user_asm CPU_DADDI_WORKAROUNDS bug fix · 465ca5d6
      Maciej W. Rozycki 提交于
      This corrects assembler warnings and broken code generated in
      __strncpy_from_user_asm:
      
      arch/mips/lib/strncpy_user.S: Assembler messages:
      arch/mips/lib/strncpy_user.S:52: Warning: Macro instruction expanded into
      multiple instructions in a branch delay slot
      
      with the CPU_DADDI_WORKAROUNDS option set.  The function schedules delay
      slots manually where there is really no need to as GAS is happy to do it
      all itself, so undo it all and remove `.set noreorder'.
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/6685/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      465ca5d6
    • M
      MIPS: __delay CPU_DADDI_WORKAROUNDS bug fix · 2db4bc34
      Maciej W. Rozycki 提交于
      With CPU_DADDI_WORKAROUNDS enabled __delay assembles with a macro in a
      branch delay slot:
      
      {standard input}: Assembler messages:
      {standard input}:18: Warning: Macro instruction expanded into multiple
      instructions in a branch delay slot
      
      and broken code results:
      
      0000000000000000 <__delay>:
         0:	1480ffff 	bnez	a0,0 <__delay>
         4:	24010001 	li	at,1
         8:	0081202f 	dsubu	a0,a0,at
         c:	03e00008 	jr	ra
        10:	00000000 	nop
        14:	00000000 	nop
      
      Consequently the function loops indefinitely, showing up prominently as a
      hang in the delay loop calibration at bootstrap.
      
      This change corrects the problem by forcing the immediate 1 into a
      register while keeping code produced identical where CPU_DADDI_WORKAROUNDS
      is disabled.
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/6669/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      2db4bc34
    • M
      MIPS: DEC/SNI: O32 wrapper stack switching fixes · 824122a3
      Maciej W. Rozycki 提交于
      Commit 231a35d3 [[MIPS] RM: Collected
      changes] broke DECstation support by introducing an incompatible copy of
      arch/mips/dec/prom/call_o32.S in arch/mips/fw/lib/, built unconditionally.
      The copy happens to land earlier of the two among the modules used in the
      link and is therefore chosen for the DECstation rather than the intended
      original.  As a result random kernel data is corrupted because a pointer
      to the "%s" formatted output template is used as a temporary stack pointer
      rather than being passed down to prom_printf.  This also explains why
      prom_printf still works, up to a point -- the next argument is the actual
      string to output so it works just fine as the output template until enough
      kernel data has been corrupted to cause a crash.
      
      This change adjusts the modified wrapper in arch/mips/fw/lib/call_o32.S to
      let callers request no stack switching by passing a null temporary stack
      pointer in $a1, reworks the DECstation callers to work with the updated
      interface and removes the old copy from arch/mips/dec/prom/call_o32.S.  A
      few minor readability adjustments are included as well, most importantly
      O32_SZREG is now used throughout where applicable rather than hardcoded
      multiplies of 4 and $fp is used to access the argument save area as a more
      usual register to operate the stack with rather than $s0.
      
      Finally an update is made to the temporary stack space used by the SNI
      platform to guarantee 8-byte alignment as per o32 requirements.
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/6668/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      824122a3
    • M
      MIPS: DEC: Bus error handler <asm/cpu-type.h> fixes · af37530b
      Maciej W. Rozycki 提交于
      Commit 69f24d17 [MIPS: Optimize
      current_cpu_type() for better code.] missed an update for two DECstation
      bus error support files that now do not build, this is a fix.
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/6667/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      af37530b
    • R
      Revert "MIPS: MT: proc: Add support for printing VPE and TC ids" · 5508d456
      Ralf Baechle 提交于
      Reverts commit 795038a6 because
      d6d3c9af provides the same functionality
      in a more generic way.  Both patches applied however means that the
      VPE and TC IDs get printed twice currently.
      5508d456
  11. 12 5月, 2014 5 次提交
    • S
      arm64: use cpu_online_mask when using forced irq_set_affinity · 601c9421
      Sudeep Holla 提交于
      Commit 01f8fa4f("genirq: Allow forcing cpu affinity of interrupts")
      enabled the forced irq_set_affinity which previously refused to route an
      interrupt to an offline cpu.
      
      Commit ffde1de6("irqchip: Gic: Support forced affinity setting")
      implements this force logic and disables the cpu online check for GIC
      interrupt controller.
      
      When __cpu_disable calls migrate_irqs, it disables the current cpu in
      cpu_online_mask and uses forced irq_set_affinity to migrate the IRQs
      away from the cpu but passes affinity mask with the cpu being offlined
      also included in it.
      
      When calling irq_set_affinity with force == true in a cpu hotplug path,
      the caller must ensure that the cpu being offlined is not present in the
      affinity mask or it may be selected as the target CPU, leading to the
      interrupt not being migrated.
      
      This patch uses cpu_online_mask when using forced irq_set_affinity so
      that the IRQs are properly migrated away.
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Acked-by: NMark Rutland <mark.rutland@arm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      601c9421
    • S
      arm64: introduce virt_to_pfn · 1f53ba6e
      Stefano Stabellini 提交于
      virt_to_pfn has been defined in arch/arm/include/asm/memory.h by commit
      e26a9e00 "ARM: Better virt_to_page() handling" and Xen has come to rely
      on it.  Introduce virt_to_pfn on arm64 too.
      Signed-off-by: NStefano Stabellini <stefano.stabellini@eu.citrix.com>
      Acked-by: NCatalin Marinas <catalin.marinas@arm.com>
      1f53ba6e
    • A
      powerpc: irq work racing with timer interrupt can result in timer interrupt hang · 8050936c
      Anton Blanchard 提交于
      I am seeing an issue where a CPU running perf eventually hangs.
      Traces show timer interrupts happening every 4 seconds even
      when a userspace task is running on the CPU. /proc/timer_list
      also shows pending hrtimers have not run in over an hour,
      including the scheduler.
      
      Looking closer, decrementers_next_tb is getting set to
      0xffffffffffffffff, and at that point we will never take
      a timer interrupt again.
      
      In __timer_interrupt() we set decrementers_next_tb to
      0xffffffffffffffff and rely on ->event_handler to update it:
      
              *next_tb = ~(u64)0;
              if (evt->event_handler)
                      evt->event_handler(evt);
      
      In this case ->event_handler is hrtimer_interrupt. This will eventually
      call back through the clockevents code with the next event to be
      programmed:
      
      static int decrementer_set_next_event(unsigned long evt,
                                            struct clock_event_device *dev)
      {
              /* Don't adjust the decrementer if some irq work is pending */
              if (test_irq_work_pending())
                      return 0;
              __get_cpu_var(decrementers_next_tb) = get_tb_or_rtc() + evt;
      
      If irq work came in between these two points, we will return
      before updating decrementers_next_tb and we never process a timer
      interrupt again.
      
      This looks to have been introduced by 0215f7d8 (powerpc: Fix races
      with irq_work). Fix it by removing the early exit and relying on
      code later on in the function to force an early decrementer:
      
             /* We may have raced with new irq work */
             if (test_irq_work_pending())
                     set_dec(1);
      Signed-off-by: NAnton Blanchard <anton@samba.org>
      Cc: stable@vger.kernel.org # 3.14+
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      8050936c
    • H
      x86, rdrand: When nordrand is specified, disable RDSEED as well · 7a5091d5
      H. Peter Anvin 提交于
      One can logically expect that when the user has specified "nordrand",
      the user doesn't want any use of the CPU random number generator,
      neither RDRAND nor RDSEED, so disable both.
      Reported-by: NStephan Mueller <smueller@chronox.de>
      Cc: Theodore Ts'o <tytso@mit.edu>
      Link: http://lkml.kernel.org/r/21542339.0lFnPSyGRS@myon.chronox.deSigned-off-by: NH. Peter Anvin <hpa@linux.intel.com>
      7a5091d5
    • G
      powerpc/powernv: Reset root port in firmware · 372cf124
      Gavin Shan 提交于
      Resetting root port has more stuff to do than that for PCIe switch
      ports and we should have resetting root port done in firmware instead
      of the kernel itself. The problem was introduced by commit 5b2e198e
      ("powerpc/powernv: Rework EEH reset").
      
      Cc: linux-stable <stable@vger.kernel.org>
      Signed-off-by: NGavin Shan <gwshan@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      372cf124
  12. 11 5月, 2014 1 次提交
  13. 09 5月, 2014 1 次提交