diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-03 19:41:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-03 19:41:38 -0400 |
commit | ff474e8ca8547d09cb82ebab56d4c96f9eea01ce (patch) | |
tree | c004122f04a405eddb7929cd0297ccdce016f1b8 /arch/powerpc/kernel/process.c | |
parent | 4c92b5bb14226faa16d29a1df5752baf1ff22b53 (diff) | |
parent | 390fd5929f52bdfb9dfcc03820041ba556780f4a (diff) |
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
...
Diffstat (limited to 'arch/powerpc/kernel/process.c')
-rw-r--r-- | arch/powerpc/kernel/process.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 64e6e9d9e656..75b6676c1a0b 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -86,7 +86,7 @@ void giveup_fpu_maybe_transactional(struct task_struct *tsk) | |||
86 | if (tsk == current && tsk->thread.regs && | 86 | if (tsk == current && tsk->thread.regs && |
87 | MSR_TM_ACTIVE(tsk->thread.regs->msr) && | 87 | MSR_TM_ACTIVE(tsk->thread.regs->msr) && |
88 | !test_thread_flag(TIF_RESTORE_TM)) { | 88 | !test_thread_flag(TIF_RESTORE_TM)) { |
89 | tsk->thread.tm_orig_msr = tsk->thread.regs->msr; | 89 | tsk->thread.ckpt_regs.msr = tsk->thread.regs->msr; |
90 | set_thread_flag(TIF_RESTORE_TM); | 90 | set_thread_flag(TIF_RESTORE_TM); |
91 | } | 91 | } |
92 | 92 | ||
@@ -104,7 +104,7 @@ void giveup_altivec_maybe_transactional(struct task_struct *tsk) | |||
104 | if (tsk == current && tsk->thread.regs && | 104 | if (tsk == current && tsk->thread.regs && |
105 | MSR_TM_ACTIVE(tsk->thread.regs->msr) && | 105 | MSR_TM_ACTIVE(tsk->thread.regs->msr) && |
106 | !test_thread_flag(TIF_RESTORE_TM)) { | 106 | !test_thread_flag(TIF_RESTORE_TM)) { |
107 | tsk->thread.tm_orig_msr = tsk->thread.regs->msr; | 107 | tsk->thread.ckpt_regs.msr = tsk->thread.regs->msr; |
108 | set_thread_flag(TIF_RESTORE_TM); | 108 | set_thread_flag(TIF_RESTORE_TM); |
109 | } | 109 | } |
110 | 110 | ||
@@ -540,7 +540,7 @@ static void tm_reclaim_thread(struct thread_struct *thr, | |||
540 | * the thread will no longer be transactional. | 540 | * the thread will no longer be transactional. |
541 | */ | 541 | */ |
542 | if (test_ti_thread_flag(ti, TIF_RESTORE_TM)) { | 542 | if (test_ti_thread_flag(ti, TIF_RESTORE_TM)) { |
543 | msr_diff = thr->tm_orig_msr & ~thr->regs->msr; | 543 | msr_diff = thr->ckpt_regs.msr & ~thr->regs->msr; |
544 | if (msr_diff & MSR_FP) | 544 | if (msr_diff & MSR_FP) |
545 | memcpy(&thr->transact_fp, &thr->fp_state, | 545 | memcpy(&thr->transact_fp, &thr->fp_state, |
546 | sizeof(struct thread_fp_state)); | 546 | sizeof(struct thread_fp_state)); |
@@ -591,10 +591,10 @@ static inline void tm_reclaim_task(struct task_struct *tsk) | |||
591 | /* Stash the original thread MSR, as giveup_fpu et al will | 591 | /* Stash the original thread MSR, as giveup_fpu et al will |
592 | * modify it. We hold onto it to see whether the task used | 592 | * modify it. We hold onto it to see whether the task used |
593 | * FP & vector regs. If the TIF_RESTORE_TM flag is set, | 593 | * FP & vector regs. If the TIF_RESTORE_TM flag is set, |
594 | * tm_orig_msr is already set. | 594 | * ckpt_regs.msr is already set. |
595 | */ | 595 | */ |
596 | if (!test_ti_thread_flag(task_thread_info(tsk), TIF_RESTORE_TM)) | 596 | if (!test_ti_thread_flag(task_thread_info(tsk), TIF_RESTORE_TM)) |
597 | thr->tm_orig_msr = thr->regs->msr; | 597 | thr->ckpt_regs.msr = thr->regs->msr; |
598 | 598 | ||
599 | TM_DEBUG("--- tm_reclaim on pid %d (NIP=%lx, " | 599 | TM_DEBUG("--- tm_reclaim on pid %d (NIP=%lx, " |
600 | "ccr=%lx, msr=%lx, trap=%lx)\n", | 600 | "ccr=%lx, msr=%lx, trap=%lx)\n", |
@@ -663,7 +663,7 @@ static inline void tm_recheckpoint_new_task(struct task_struct *new) | |||
663 | tm_restore_sprs(&new->thread); | 663 | tm_restore_sprs(&new->thread); |
664 | return; | 664 | return; |
665 | } | 665 | } |
666 | msr = new->thread.tm_orig_msr; | 666 | msr = new->thread.ckpt_regs.msr; |
667 | /* Recheckpoint to restore original checkpointed register state. */ | 667 | /* Recheckpoint to restore original checkpointed register state. */ |
668 | TM_DEBUG("*** tm_recheckpoint of pid %d " | 668 | TM_DEBUG("*** tm_recheckpoint of pid %d " |
669 | "(new->msr 0x%lx, new->origmsr 0x%lx)\n", | 669 | "(new->msr 0x%lx, new->origmsr 0x%lx)\n", |
@@ -723,7 +723,7 @@ void restore_tm_state(struct pt_regs *regs) | |||
723 | if (!MSR_TM_ACTIVE(regs->msr)) | 723 | if (!MSR_TM_ACTIVE(regs->msr)) |
724 | return; | 724 | return; |
725 | 725 | ||
726 | msr_diff = current->thread.tm_orig_msr & ~regs->msr; | 726 | msr_diff = current->thread.ckpt_regs.msr & ~regs->msr; |
727 | msr_diff &= MSR_FP | MSR_VEC | MSR_VSX; | 727 | msr_diff &= MSR_FP | MSR_VEC | MSR_VSX; |
728 | if (msr_diff & MSR_FP) { | 728 | if (msr_diff & MSR_FP) { |
729 | fp_enable(); | 729 | fp_enable(); |