powerpc/64s: Add workaround for P9 vector CI load issue
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
The Ubuntu-power-systems project |
Fix Released
|
Critical
|
Canonical Kernel Team | ||
linux (Ubuntu) |
Fix Released
|
Critical
|
Joseph Salisbury | ||
Zesty |
Fix Released
|
Critical
|
Joseph Salisbury | ||
Artful |
Fix Released
|
Critical
|
Joseph Salisbury |
Bug Description
== SRU Justification ==
POWER9 DD2.1 and earlier has an issue where some cache inhibited
vector load will return bad data. The fix is two part, one
firmware/microcode part triggers HMI interrupts when hitting such
loads, the other part is commit 5080332c2c89 from linux-next which then
emulates the instructions in Linux.
The affected instructions are limited to lxvd2x, lxvw4x, lxvb16x and
lxvh8x.
Commit ccd3cd361341 is needed as a prereq for Artful.
Commits a3d96f70c147 and ccd3cd361341 are needed as prereqs for Zesty.
== Fixes ==
a3d96f70c147 ("powerpc/64s: Fix system reset vs general interrupt reentrancy")
ccd3cd361341 ("powerpc/mce: Move 64-bit machine check code into mce.c")
5080332c2c89 ("powerpc/64s: Add workaround for P9 vector CI load issue")
== Regression Potential ==
These commits are specific to powerpc. They required some back porting but
have been tested by IBM.
-- Problem Description --
When an instruction triggers the HMI, all threads in the core will be
sent to the HMI handler, not just the one running the vector load.
In general, these spurious HMIs are detected by the emulation code and
we just return back to the running process. Unfortunately, if a
spurious interrupt occurs on a vector load that's to normal memory we
have no way to detect that it's spurious (unless we walk the page
tables, which is very expensive). In this case we emulate the load but
we need do so using a vector load itself to ensure 128bit atomicity is
preserved.
Some additional debugfs emulated instruction counters are added also.
In order to solve this bug, we need to cherry pick the following patch
Changed in linux (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → Medium |
Changed in linux (Ubuntu Zesty): | |
status: | New → Triaged |
importance: | Undecided → Medium |
tags: | added: kernel-da-key |
Changed in ubuntu-power-systems: | |
importance: | Undecided → Critical |
assignee: | nobody → Canonical Kernel Team (canonical-kernel-team) |
Changed in linux (Ubuntu Zesty): | |
importance: | Medium → Critical |
Changed in linux (Ubuntu Artful): | |
importance: | Medium → Critical |
Changed in ubuntu-power-systems: | |
status: | New → Triaged |
no longer affects: | linux (Ubuntu Zesty) |
Changed in ubuntu-power-systems: | |
status: | Triaged → In Progress |
Changed in linux (Ubuntu Zesty): | |
status: | Triaged → In Progress |
assignee: | nobody → Joseph Salisbury (jsalisbury) |
description: | updated |
tags: | added: triage-g |
summary: |
- powerpc/64s: Add workaround for P9 vector CI load issuenext + powerpc/64s: Add workaround for P9 vector CI load issue |
tags: |
added: targetmilestone-inin16043 removed: targetmilestone-inin1710 |
Changed in linux (Ubuntu Zesty): | |
status: | In Progress → Fix Committed |
Changed in linux (Ubuntu Artful): | |
status: | In Progress → Fix Committed |
Changed in ubuntu-power-systems: | |
status: | In Progress → Fix Committed |
tags: |
added: verification-done-artful removed: verification-needed-artful |
Changed in ubuntu-power-systems: | |
status: | Fix Committed → Fix Released |
Changed in linux (Ubuntu): | |
status: | In Progress → Fix Released |
Default Comment by Bridge