summaryrefslogtreecommitdiffstats
path: root/include/net/lapb.h
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2015-11-03 06:03:30 +0100
committerPaul Mackerras <paulus@samba.org>2015-11-06 06:02:59 +0100
commitf74f2e2e26199f695ca3df94f29e9ab7cb707ea4 (patch)
tree67bc4239089514a1fbaa1c07b1a2705cb28b4743 /include/net/lapb.h
parentKVM: PPC: Book3S HV: Synthesize segment fault if SLB lookup fails (diff)
downloadlinux-f74f2e2e26199f695ca3df94f29e9ab7cb707ea4.tar.xz
linux-f74f2e2e26199f695ca3df94f29e9ab7cb707ea4.zip
KVM: PPC: Book3S HV: Don't dynamically split core when already split
In static micro-threading modes, the dynamic micro-threading code is supposed to be disabled, because subcores can't make independent decisions about what micro-threading mode to put the core in - there is only one micro-threading mode for the whole core. The code that implements dynamic micro-threading checks for this, except that the check was missed in one case. This means that it is possible for a subcore in static 2-way micro-threading mode to try to put the core into 4-way micro-threading mode, which usually leads to stuck CPUs, spinlock lockups, and other stalls in the host. The problem was in the can_split_piggybacked_subcores() function, which should always return false if the system is in a static micro-threading mode. This fixes the problem by making can_split_piggybacked_subcores() use subcore_config_ok() for its checks, as subcore_config_ok() includes the necessary check for the static micro-threading modes. Credit to Gautham Shenoy for working out that the reason for the hangs and stalls we were seeing was that we were trying to do dynamic 4-way micro-threading while we were in static 2-way mode. Fixes: b4deba5c41e9 Cc: vger@stable.kernel.org # v4.3 Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/net/lapb.h')
0 files changed, 0 insertions, 0 deletions