TLB updates from 4.14 for linux-azure
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux-azure (Ubuntu) |
Fix Committed
|
Undecided
|
Marcelo Cerri | ||
Xenial |
Fix Released
|
Undecided
|
Marcelo Cerri |
Bug Description
This request is based on a patch series from linux-next:
commit ab7ff471aa5db67
Author: Marcelo Henrique Cerri <email address hidden>
Date: Thu Oct 5 10:34:29 2017 -0300
x86/hyperv: Fix hypercalls with extended CPU ranges for TLB flushing
Do not consider the fixed size of hv_vp_set when passing the variable
header size to hv_do_rep_
The Hyper-V hypervisor specification states that for a hypercall with a
variable header only the size of the variable portion should be supplied
via the input control.
For HVCALL_
fixed portion of hv_vp_set should not be considered.
That fixes random failures of some applications that are unexpectedly
killed with SIGBUS or SIGSEGV.
commit 60d73a7c9660143
Author: Vitaly Kuznetsov <email address hidden>
Date: Thu Oct 5 13:39:24 2017 +0200
x86/hyperv: Don't use percpu areas for pcpu_flush/
hv_
(CONFIG_SLAB) this doesn't work for percpu areas, we pass wrong memory to
hypervisor and get #GP. We could use working slow_virt_to_phys() instead
but doing so kills the performance.
Move pcpu_flush/
allocate memory on first call. The additional level of indirection gives
us a small performance penalty, in future we may consider introducing
hypercall functions which avoid virt_to_phys() conversion and cache
physical addresses of pcpu_flush/
commit a3b7424392924e7
Author: Vitaly Kuznetsov <email address hidden>
Date: Fri Oct 6 17:48:54 2017 +0200
x86/hyperv: Clear vCPU banks between calls to avoid flushing unneeded vCPUs
hv_
reasons (they're variable size up to PAGE_SIZE each) but we must clear
hv_
rest of the structure is formed correctly.
To do the clearing in an efficient way stash the maximum possible vCPU
number (this may differ from Linux CPU id).
description: | updated |
information type: | Private → Public |
Changed in linux-azure (Ubuntu Xenial): | |
status: | New → In Progress |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu): | |
status: | In Progress → Fix Committed |
Changed in linux-azure (Ubuntu Xenial): | |
status: | In Progress → Fix Committed |
Status changed to 'Confirmed' because the bug affects multiple users.