1. 04 10月, 2016 21 次提交
  2. 29 9月, 2016 8 次提交
    • A
      powerpc/vdso64: Use double word compare on pointers · 5045ea37
      Anton Blanchard 提交于
      __kernel_get_syscall_map() and __kernel_clock_getres() use cmpli to
      check if the passed in pointer is non zero. cmpli maps to a 32 bit
      compare on binutils, so we ignore the top 32 bits.
      
      A simple test case can be created by passing in a bogus pointer with
      the bottom 32 bits clear. Using a clk_id that is handled by the VDSO,
      then one that is handled by the kernel shows the problem:
      
        printf("%d\n", clock_getres(CLOCK_REALTIME, (void *)0x100000000));
        printf("%d\n", clock_getres(CLOCK_BOOTTIME, (void *)0x100000000));
      
      And we get:
      
        0
        -1
      
      The bigger issue is if we pass a valid pointer with the bottom 32 bits
      clear, in this case we will return success but won't write any data
      to the pointer.
      
      I stumbled across this issue because the LLVM integrated assembler
      doesn't accept cmpli with 3 arguments. Fix this by converting them to
      cmpldi.
      
      Fixes: a7f290da ("[PATCH] powerpc: Merge vdso's and add vdso support to 32 bits kernel")
      Cc: stable@vger.kernel.org # v2.6.15+
      Signed-off-by: NAnton Blanchard <anton@samba.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      5045ea37
    • B
      KVM: PPC: Book3S HV: Migrate pinned pages out of CMA · 2e5bbb54
      Balbir Singh 提交于
      When PCI Device pass-through is enabled via VFIO, KVM-PPC will
      pin pages using get_user_pages_fast(). One of the downsides of
      the pinning is that the page could be in CMA region. The CMA
      region is used for other allocations like the hash page table.
      Ideally we want the pinned pages to be from non CMA region.
      
      This patch (currently only for KVM PPC with VFIO) forcefully
      migrates the pages out (huge pages are omitted for the moment).
      There are more efficient ways of doing this, but that might
      be elaborate and might impact a larger audience beyond just
      the kvm ppc implementation.
      
      The magic is in new_iommu_non_cma_page() which allocates the
      new page from a non CMA region.
      
      I've tested the patches lightly at my end. The full solution
      requires migration of THP pages in the CMA region. That work
      will be done incrementally on top of this.
      Signed-off-by: NBalbir Singh <bsingharora@gmail.com>
      Acked-by: NAlexey Kardashevskiy <aik@ozlabs.ru>
      [mpe: Merged via powerpc tree as that's where the changes are]
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      2e5bbb54
    • G
      drivers/pci/hotplug: Support surprise hotplug in powernv driver · 360aebd8
      Gavin Shan 提交于
      This supports PCI surprise hotplug. The design is highlighted as
      below:
      
         * The PCI slot's surprise hotplug capability is exposed through
           device node property "ibm,slot-surprise-pluggable", meaning
           PCI surprise hotplug will be disabled if skiboot doesn't support
           it yet.
         * The interrupt because of presence or link state change is raised
           on surprise hotplug event. One event is allocated and queued to
           the PCI slot for workqueue to pick it up and process in serialized
           fashion. The code flow for surprise hotplug is same to that for
           managed hotplug except: the affected PEs are put into frozen state
           to avoid unexpected EEH error reporting in surprise hot remove path.
      Signed-off-by: NGavin Shan <gwshan@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      360aebd8
    • G
      powerpc/powernv: Unfreeze PE on allocation · 313483dd
      Gavin Shan 提交于
      This unfreezes PE when it's initialized because the PE might be put
      into frozen state in the last hot remove path. It's not harmful to
      do so if the PE is already in unfrozen state.
      Signed-off-by: NGavin Shan <gwshan@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      313483dd
    • G
      powerpc/eeh: Export eeh_pe_state_mark() · e0056b0a
      Gavin Shan 提交于
      This exports eeh_pe_state_mark(). It will be used to mark the surprise
      hot removed PE as isolated to avoid unexpected EEH error reporting in
      surprise remove path.
      Signed-off-by: NGavin Shan <gwshan@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      e0056b0a
    • G
      powerpc/eeh: Export confirm_error_lock · 35066c0d
      Gavin Shan 提交于
      This exports @confirm_error_lock so that eeh_serialize_{lock, unlock}()
      can be used to freeze the affected PE in PCI surprise hot remove path.
      Signed-off-by: NGavin Shan <gwshan@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      35066c0d
    • G
      powerpc/eeh: Allow to freeze PE in eeh_pe_set_option() · de5a6622
      Gavin Shan 提交于
      Function eeh_pe_set_option() is used to apply the requested options
      (enable, disable, unfreeze) in EEH virtualization path. The semantics
      of this function isn't complete until freezing is supported.
      
      This allows to freeze the indicated PE. The new semantics is going to
      be used in PCI surprise hot remove path, to freeze removed PCI devices
      (PE) to avoid unexpected EEH error reporting.
      Signed-off-by: NGavin Shan <gwshan@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      de5a6622
    • G
      powerpc/powernv: Call opal_pci_poll() if needed · fbce44d0
      Gavin Shan 提交于
      When issuing PHB reset, OPAL API opal_pci_poll() is called to drive
      the state machine in OPAL forward. However, we needn't always call
      the function under some circumstances like reset deassert.
      
      This avoids calling opal_pci_poll() when OPAL_SUCCESS is returned
      from opal_pci_reset(). Except the overhead introduced by additional
      one unnecessary OPAL call, I didn't run into real issue because of
      this.
      Reported-by: NPridhiviraj Paidipeddi <ppaiddipe@in.ibm.com>
      Signed-off-by: NGavin Shan <gwshan@linux.vnet.ibm.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      fbce44d0
  3. 28 9月, 2016 6 次提交
  4. 23 9月, 2016 5 次提交