Merge tag 'powerpc-4.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc updates from Michael Ellerman: - support "hybrid" iommu/direct DMA ops for coherent_mask < dma_mask from Benjamin Herrenschmidt - EEH fixes for SRIOV from Gavin - introduce rtas_get_sensor_fast() for IRQ handlers from Thomas Huth - use hardware RNG for arch_get_random_seed_* not arch_get_random_* from Paul Mackerras - seccomp filter support from Michael Ellerman - opal_cec_reboot2() handling for HMIs & machine checks from Mahesh Salgaonkar - add powerpc timebase as a trace clock source from Naveen N. Rao - misc cleanups in the xmon, signal & SLB code from Anshuman Khandual - add an inline function to update POWER8 HID0 from Gautham R. Shenoy - fix pte_pagesize_index() crash on 4K w/64K hash from Michael Ellerman - drop support for 64K local store on 4K kernels from Michael Ellerman - move dma_get_required_mask() from pnv_phb to pci_controller_ops from Andrew Donnellan - initialize distance lookup table from drconf path from Nikunj A Dadhania - enable RTC class support from Vaibhav Jain - disable automatically blocked PCI config from Gavin Shan - add LEDs driver for PowerNV platform from Vasant Hegde - fix endianness issues in the HVSI driver from Laurent Dufour - kexec endian fixes from Samuel Mendoza-Jonas - fix corrupted pdn list from Gavin Shan - fix fenced PHB caused by eeh_slot_error_detail() from Gavin Shan - Freescale updates from Scott: Highlights include 32-bit memcpy/memset optimizations, checksum optimizations, 85xx config fragments and updates, device tree updates, e6500 fixes for non-SMP, and misc cleanup and minor fixes. - a ton of cxl updates & fixes: - add explicit precision specifiers from Rasmus Villemoes - use more common format specifier from Rasmus Villemoes - destroy cxl_adapter_idr on module_exit from Johannes Thumshirn - destroy afu->contexts_idr on release of an afu from Johannes Thumshirn - compile with -Werror from Daniel Axtens - EEH support from Daniel Axtens - plug irq_bitmap getting leaked in cxl_context from Vaibhav Jain - add alternate MMIO error handling from Ian Munsie - allow release of contexts which have been OPENED but not STARTED from Andrew Donnellan - remove use of macro DEFINE_PCI_DEVICE_TABLE from Vaishali Thakkar - release irqs if memory allocation fails from Vaibhav Jain - remove racy attempt to force EEH invocation in reset from Daniel Axtens - fix + cleanup error paths in cxl_dev_context_init from Ian Munsie - fix force unmapping mmaps of contexts allocated through the kernel api from Ian Munsie - set up and enable PSL Timebase from Philippe Bergheaud * tag 'powerpc-4.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (140 commits) cxl: Set up and enable PSL Timebase cxl: Fix force unmapping mmaps of contexts allocated through the kernel api cxl: Fix + cleanup error paths in cxl_dev_context_init powerpc/eeh: Fix fenced PHB caused by eeh_slot_error_detail() powerpc/pseries: Cleanup on pci_dn_reconfig_notifier() powerpc/pseries: Fix corrupted pdn list powerpc/powernv: Enable LEDS support powerpc/iommu: Set default DMA offset in dma_dev_setup cxl: Remove racy attempt to force EEH invocation in reset cxl: Release irqs if memory allocation fails cxl: Remove use of macro DEFINE_PCI_DEVICE_TABLE powerpc/powernv: Fix mis-merge of OPAL support for LEDS driver powerpc/powernv: Reset HILE before kexec_sequence() powerpc/kexec: Reset secondary cpu endianness before kexec powerpc/hvsi: Fix endianness issues in the HVSI driver leds/powernv: Add driver for PowerNV platform powerpc/powernv: Create LED platform device powerpc/powernv: Add OPAL interfaces for accessing and modifying system LED states powerpc/powernv: Fix the log message when disabling VF cxl: Allow release of contexts which have been OPENED but not STARTED ...
This commit is contained in:
@@ -86,7 +86,7 @@ void giveup_fpu_maybe_transactional(struct task_struct *tsk)
|
||||
if (tsk == current && tsk->thread.regs &&
|
||||
MSR_TM_ACTIVE(tsk->thread.regs->msr) &&
|
||||
!test_thread_flag(TIF_RESTORE_TM)) {
|
||||
tsk->thread.tm_orig_msr = tsk->thread.regs->msr;
|
||||
tsk->thread.ckpt_regs.msr = tsk->thread.regs->msr;
|
||||
set_thread_flag(TIF_RESTORE_TM);
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ void giveup_altivec_maybe_transactional(struct task_struct *tsk)
|
||||
if (tsk == current && tsk->thread.regs &&
|
||||
MSR_TM_ACTIVE(tsk->thread.regs->msr) &&
|
||||
!test_thread_flag(TIF_RESTORE_TM)) {
|
||||
tsk->thread.tm_orig_msr = tsk->thread.regs->msr;
|
||||
tsk->thread.ckpt_regs.msr = tsk->thread.regs->msr;
|
||||
set_thread_flag(TIF_RESTORE_TM);
|
||||
}
|
||||
|
||||
@@ -540,7 +540,7 @@ static void tm_reclaim_thread(struct thread_struct *thr,
|
||||
* the thread will no longer be transactional.
|
||||
*/
|
||||
if (test_ti_thread_flag(ti, TIF_RESTORE_TM)) {
|
||||
msr_diff = thr->tm_orig_msr & ~thr->regs->msr;
|
||||
msr_diff = thr->ckpt_regs.msr & ~thr->regs->msr;
|
||||
if (msr_diff & MSR_FP)
|
||||
memcpy(&thr->transact_fp, &thr->fp_state,
|
||||
sizeof(struct thread_fp_state));
|
||||
@@ -591,10 +591,10 @@ static inline void tm_reclaim_task(struct task_struct *tsk)
|
||||
/* Stash the original thread MSR, as giveup_fpu et al will
|
||||
* modify it. We hold onto it to see whether the task used
|
||||
* FP & vector regs. If the TIF_RESTORE_TM flag is set,
|
||||
* tm_orig_msr is already set.
|
||||
* ckpt_regs.msr is already set.
|
||||
*/
|
||||
if (!test_ti_thread_flag(task_thread_info(tsk), TIF_RESTORE_TM))
|
||||
thr->tm_orig_msr = thr->regs->msr;
|
||||
thr->ckpt_regs.msr = thr->regs->msr;
|
||||
|
||||
TM_DEBUG("--- tm_reclaim on pid %d (NIP=%lx, "
|
||||
"ccr=%lx, msr=%lx, trap=%lx)\n",
|
||||
@@ -663,7 +663,7 @@ static inline void tm_recheckpoint_new_task(struct task_struct *new)
|
||||
tm_restore_sprs(&new->thread);
|
||||
return;
|
||||
}
|
||||
msr = new->thread.tm_orig_msr;
|
||||
msr = new->thread.ckpt_regs.msr;
|
||||
/* Recheckpoint to restore original checkpointed register state. */
|
||||
TM_DEBUG("*** tm_recheckpoint of pid %d "
|
||||
"(new->msr 0x%lx, new->origmsr 0x%lx)\n",
|
||||
@@ -723,7 +723,7 @@ void restore_tm_state(struct pt_regs *regs)
|
||||
if (!MSR_TM_ACTIVE(regs->msr))
|
||||
return;
|
||||
|
||||
msr_diff = current->thread.tm_orig_msr & ~regs->msr;
|
||||
msr_diff = current->thread.ckpt_regs.msr & ~regs->msr;
|
||||
msr_diff &= MSR_FP | MSR_VEC | MSR_VSX;
|
||||
if (msr_diff & MSR_FP) {
|
||||
fp_enable();
|
||||
|
Reference in New Issue
Block a user