diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2017-11-21 20:32:25 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-11-28 20:39:07 -0600 |
commit | ddc35b93fcadf624e9c60c4b9fefd83330748613 (patch) | |
tree | da264b6255a519c08320d3332dedea090aef8add | |
parent | 639ed194dedcdfdd18a0daf0c2459928f2266647 (diff) | |
download | skiboot-ddc35b93fcadf624e9c60c4b9fefd83330748613.zip skiboot-ddc35b93fcadf624e9c60c4b9fefd83330748613.tar.gz skiboot-ddc35b93fcadf624e9c60c4b9fefd83330748613.tar.bz2 |
xive: When disabling a VP, wipe all of its settings
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r-- | doc/xive.rst | 2 | ||||
-rw-r--r-- | hw/xive.c | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/doc/xive.rst b/doc/xive.rst index 85fe111..c35db6e 100644 --- a/doc/xive.rst +++ b/doc/xive.rst @@ -699,6 +699,8 @@ This call configures a VP: * report_cl_pair: This is the real address of the reporting cache line pair for that VP or 0 to disable. + .. note:: When disabling a VP, all other VP settings are lost. + OPAL_XIVE_ALLOCATE_IRQ ^^^^^^^^^^^^^^^^^^^^^^ @@ -4142,13 +4142,13 @@ static int64_t opal_xive_set_vp_info(uint64_t vp_id, return OPAL_PARAMETER; vp_new = *vp; - if (flags & OPAL_XIVE_VP_ENABLED) + if (flags & OPAL_XIVE_VP_ENABLED) { vp_new.w0 |= VP_W0_VALID; - else - vp_new.w0 &= ~VP_W0_VALID; + vp_new.w6 = report_cl_pair >> 32; + vp_new.w7 = report_cl_pair & 0xffffffff; + } else + vp_new.w0 = vp_new.w6 = vp_new.w7 = 0; - vp_new.w7 = report_cl_pair & 0xffffffff; - vp_new.w6 = report_cl_pair >> 32; lock(&x->lock); rc = xive_vpc_cache_update(x, blk, idx, 0, 8, &vp_new, false, false); |