1. 10 1月, 2014 1 次提交
  2. 08 1月, 2014 3 次提交
    • W
      powerpc/fsl: add E6500 PVR and SPRN_PWRMGTCR0 define · 71a6fa17
      Wang Dongsheng 提交于
      E6500 PVR and SPRN_PWRMGTCR0 will be used in subsequent pw20/altivec
      idle patches.
      Signed-off-by: NWang Dongsheng <dongsheng.wang@freescale.com>
      Signed-off-by: NScott Wood <scottwood@freescale.com>
      71a6fa17
    • J
      powerpc: fix exception clearing in e500 SPE float emulation · 640e9225
      Joseph Myers 提交于
      The e500 SPE floating-point emulation code clears existing exceptions
      (__FPU_FPSCR &= ~FP_EX_MASK;) before ORing in the exceptions from the
      emulated operation.  However, these exception bits are the "sticky",
      cumulative exception bits, and should only be cleared by the user
      program setting SPEFSCR, not implicitly by any floating-point
      instruction (whether executed purely by the hardware or emulated).
      The spurious clearing of these bits shows up as missing exceptions in
      glibc testing.
      
      Fixing this, however, is not as simple as just not clearing the bits,
      because while the bits may be from previous floating-point operations
      (in which case they should not be cleared), the processor can also set
      the sticky bits itself before the interrupt for an exception occurs,
      and this can happen in cases when IEEE 754 semantics are that the
      sticky bit should not be set.  Specifically, the "invalid" sticky bit
      is set in various cases with non-finite operands, where IEEE 754
      semantics do not involve raising such an exception, and the
      "underflow" sticky bit is set in cases of exact underflow, whereas
      IEEE 754 semantics are that this flag is set only for inexact
      underflow.  Thus, for correct emulation the kernel needs to know the
      setting of these two sticky bits before the instruction being
      emulated.
      
      When a floating-point operation raises an exception, the kernel can
      note the state of the sticky bits immediately afterwards.  Some
      <fenv.h> functions that affect the state of these bits, such as
      fesetenv and feholdexcept, need to use prctl with PR_GET_FPEXC and
      PR_SET_FPEXC anyway, and so it is natural to record the state of those
      bits during that call into the kernel and so avoid any need for a
      separate call into the kernel to inform it of a change to those bits.
      Thus, the interface I chose to use (in this patch and the glibc port)
      is that one of those prctl calls must be made after any userspace
      change to those sticky bits, other than through a floating-point
      operation that traps into the kernel anyway.  feclearexcept and
      fesetexceptflag duly make those calls, which would not be required
      were it not for this issue.
      
      The previous EGLIBC port, and the uClibc code copied from it, is
      fundamentally broken as regards any use of prctl for floating-point
      exceptions because it didn't use the PR_FP_EXC_SW_ENABLE bit in its
      prctl calls (and did various worse things, such as passing a pointer
      when prctl expected an integer).  If you avoid anything where prctl is
      used, the clearing of sticky bits still means it will never give
      anything approximating correct exception semantics with existing
      kernels.  I don't believe the patch makes things any worse for
      existing code that doesn't try to inform the kernel of changes to
      sticky bits - such code may get incorrect exceptions in some cases,
      but it would have done so anyway in other cases.
      Signed-off-by: NJoseph Myers <joseph@codesourcery.com>
      Signed-off-by: NScott Wood <scottwood@freescale.com>
      640e9225
    • M
      powerpc/booke64: Add LRAT error exception handler · 228b1a47
      Mihai Caraman 提交于
      LRAT (Logical to Real Address Translation) present in MMU v2 provides hardware
      translation from a logical page number (LPN) to a real page number (RPN) when
      tlbwe is executed by a guest or when a page table translation occurs from a
      guest virtual address.
      
      Add LRAT error exception handler to Booke3E 64-bit kernel and the basic KVM
      handler to avoid build breakage. This is a prerequisite for KVM LRAT support
      that will follow.
      Signed-off-by: NMihai Caraman <mihai.caraman@freescale.com>
      Signed-off-by: NScott Wood <scottwood@freescale.com>
      228b1a47
  3. 30 12月, 2013 5 次提交
  4. 13 12月, 2013 2 次提交
  5. 10 12月, 2013 1 次提交
    • H
      powerpc: Fix PTE page address mismatch in pgtable ctor/dtor · cf77ee54
      Hong H. Pham 提交于
      In pte_alloc_one(), pgtable_page_ctor() is passed an address that has
      not been converted by page_address() to the newly allocated PTE page.
      
      When the PTE is freed, __pte_free_tlb() calls pgtable_page_dtor()
      with an address to the PTE page that has been converted by page_address().
      The mismatch in the PTE's page address causes pgtable_page_dtor() to access
      invalid memory, so resources for that PTE (such as the page lock) is not
      properly cleaned up.
      
      On PPC32, only SMP kernels are affected.
      
      On PPC64, only SMP kernels with 4K page size are affected.
      
      This bug was introduced by commit d614bb04
      "powerpc: Move the pte free routines from common header".
      
      On a preempt-rt kernel, a spinlock is dynamically allocated for each
      PTE in pgtable_page_ctor().  When the PTE is freed, calling
      pgtable_page_dtor() with a mismatched page address causes a memory leak,
      as the pointer to the PTE's spinlock is bogus.
      
      On mainline, there isn't any immediately obvious symptoms, but the
      problem still exists here.
      
      Fixes: d614bb04 "powerpc: Move the pte free routes from common header"
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: linux-stable <stable@vger.kernel.org> # v3.10+
      Signed-off-by: NHong H. Pham <hong.pham@windriver.com>
      Reviewed-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      cf77ee54
  6. 09 12月, 2013 4 次提交
  7. 05 12月, 2013 13 次提交
  8. 02 12月, 2013 3 次提交
  9. 25 11月, 2013 1 次提交
    • H
      powerpc/kdump: Adding symbols in vmcoreinfo to facilitate dump filtering · 8ff81271
      Hari Bathini 提交于
      When CONFIG_SPARSEMEM_VMEMMAP option is used in kernel, makedumpfile fails
      to filter vmcore dump as it fails to do vmemmap translations. So far
      dump filtering on ppc64 never had to deal with vmemmap addresses seperately
      as vmemmap regions where mapped in zone normal. But with the inclusion of
      CONFIG_SPARSEMEM_VMEMMAP config option in kernel, this vmemmap address
      translation support becomes necessary for dump filtering. For vmemmap adress
      translation, few kernel symbols are needed by dump filtering tool. This patch
      adds those symbols to vmcoreinfo, which a dump filtering tool can use for
      filtering the kernel dump. Tested this changes successfully with makedumpfile
      tool that supports vmemmap to physical address translation outside zone normal.
      
      [ Removed unneeded #ifdef as suggested by Michael Ellerman --BenH ]
      Signed-off-by: NHari Bathini <hbathini@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      8ff81271
  10. 23 11月, 2013 1 次提交
  11. 21 11月, 2013 4 次提交
  12. 15 11月, 2013 1 次提交
  13. 14 11月, 2013 1 次提交