diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2021-09-23 11:19:49 -0700 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2021-09-23 11:19:49 -0700 |
| commit | 2fcd14d0f78090f57aecd7f424e2b0373cd631a7 (patch) | |
| tree | f8946c307a3b5d319c17ec988d8a38c0fe7a08de /arch/powerpc/kernel/mce.c | |
| parent | 9aad3e4ede9bebda23579f674420123dacb61fda (diff) | |
| parent | 9bc62afe03afdf33904f5e784e1ad68c50ff00bb (diff) | |
| download | linux-next-2fcd14d0f78090f57aecd7f424e2b0373cd631a7.tar.gz linux-next-2fcd14d0f78090f57aecd7f424e2b0373cd631a7.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
net/mptcp/protocol.c
977d293e23b4 ("mptcp: ensure tx skbs always have the MPTCP ext")
efe686ffce01 ("mptcp: ensure tx skbs always have the MPTCP ext")
same patch merged in both trees, keep net-next.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'arch/powerpc/kernel/mce.c')
| -rw-r--r-- | arch/powerpc/kernel/mce.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/mce.c b/arch/powerpc/kernel/mce.c index 47a683cd00d2..fd829f7f25a4 100644 --- a/arch/powerpc/kernel/mce.c +++ b/arch/powerpc/kernel/mce.c @@ -249,6 +249,7 @@ void machine_check_queue_event(void) { int index; struct machine_check_event evt; + unsigned long msr; if (!get_mce_event(&evt, MCE_EVENT_RELEASE)) return; @@ -262,8 +263,20 @@ void machine_check_queue_event(void) memcpy(&local_paca->mce_info->mce_event_queue[index], &evt, sizeof(evt)); - /* Queue irq work to process this event later. */ - irq_work_queue(&mce_event_process_work); + /* + * Queue irq work to process this event later. Before + * queuing the work enable translation for non radix LPAR, + * as irq_work_queue may try to access memory outside RMO + * region. + */ + if (!radix_enabled() && firmware_has_feature(FW_FEATURE_LPAR)) { + msr = mfmsr(); + mtmsr(msr | MSR_IR | MSR_DR); + irq_work_queue(&mce_event_process_work); + mtmsr(msr); + } else { + irq_work_queue(&mce_event_process_work); + } } void mce_common_process_ue(struct pt_regs *regs, |
