[Hyper-V] Additional patches for Lv2 storage performance
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux-azure (Ubuntu) |
Fix Released
|
Undecided
|
Marcelo Cerri | ||
Bionic |
Fix Released
|
Undecided
|
Marcelo Cerri | ||
Cosmic |
Invalid
|
Undecided
|
Unassigned |
Bug Description
After analysis of the first 4.15 kernel for Lv2 performance, and while we are delayed getting to 4.18, we have identified and backported the following patches for the 4.15 linux-azure kernel:
commit 1268ed0c474a5c8
Author: K. Y. Srinivasan <email address hidden>
Date: Tue Jul 3 16:01:55 2018 -0700
x86/hyper-v: Fix the circular dependency in IPI enlightenment
linux-next: https:/
commit 366f03b0cf90ef5
Author: K. Y. Srinivasan <email address hidden>
Date: Wed May 16 14:53:32 2018 -0700
X86/Hyper-V: Enhanced IPI enlightenment
https:/
commit 68bb7bfb7985df2
Author: K. Y. Srinivasan <email address hidden>
Date: Wed May 16 14:53:31 2018 -0700
X86/Hyper-V: Enable IPI enlightenments
https:/
commit 6b48cb5f8347bc0
Author: K. Y. Srinivasan <email address hidden>
Date: Wed May 16 14:53:30 2018 -0700
X86/Hyper-V: Enlighten APIC access
https:/
commit 68d1eb72ee99e26
Author: Vitaly Kuznetsov <email address hidden>
Date: Tue Mar 20 15:02:09 2018 +0100
x86/hyper-v: define struct hv_enlightened_vmcs and clean field bits
https:/
commit a46d15cc1ae5af9
Author: Vitaly Kuznetsov <email address hidden>
Date: Tue Mar 20 15:02:08 2018 +0100
x86/hyper-v: allocate and use Virtual Processor Assist Pages
https:/
commit 415bd1cd3a42897
Author: Vitaly Kuznetsov <email address hidden>
Date: Tue Mar 20 15:02:06 2018 +0100
x86/hyper-v: move definitions from TLFS to hyperv-tlfs.h
https:/
commit 5a4858032217770
Author: Vitaly Kuznetsov <email address hidden>
Date: Tue Mar 20 15:02:05 2018 +0100
x86/hyper-v: move hyperv.h out of uapi
https:/
commit e7c4e36c447daca
Author: Vitaly Kuznetsov <email address hidden>
Date: Wed Jan 24 14:23:34 2018 +0100
x86/hyperv: Redirect reenlightment notifications on CPU offlining
https:/
commit 93286261de1b463
Author: Vitaly Kuznetsov <email address hidden>
Date: Wed Jan 24 14:23:33 2018 +0100
x86/hyperv: Reenlightenment notifications support
https:/
commit e2768eaa1ca4fbb
Author: Vitaly Kuznetsov <email address hidden>
Date: Wed Jan 24 14:23:32 2018 +0100
x86/hyperv: Add a function to read both TSC and TSC page value simulateneously
https:/
commit 4a5f3cde4d51c7a
Author: Michael Kelley <email address hidden>
Date: Fri Dec 22 11:19:02 2017 -0700
Drivers: hv: vmbus: Remove x86-isms from arch independent drivers
https:/
From: Dexuan Cui <email address hidden>
We can concurrently try to open the same sub-channel from 2 paths:
path #1: vmbus_onoffer() -> vmbus_process_
path #2: storvsc_probe() -> storvsc_
-> storvsc_
-> vmbus_are_
They conflict with each other, but it was not an issue before the recent
commit ae6935ed7d42 ("vmbus: split ring buffer allocation from open"),
because at the beginning of vmbus_open() we checked newchannel->state so
only one path could succeed, and the other would return with -EINVAL.
After ae6935ed7d42, the failing path frees the channel's ringbuffer by
vmbus_free_ring(), and this causes a panic later.
Commit ae6935ed7d42 itself is good, and it just reveals the longstanding
race. We can resolve the issue by removing path #2, i.e. removing the
second vmbus_are_
BTW, the comment "Check to see if sub-channels have already been created"
in handle_
we first close the sub-channel(s) and then close the primary channel, next
the host sends rescind-offer message(s) so primary->sc_list will become
empty. This means the first vmbus_are_
handle_
Fixes: ae6935ed7d42 ("vmbus: split ring buffer allocation from open")
CVE References
tags: | added: patch |
Changed in linux-azure (Ubuntu): | |
status: | New → Confirmed |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Bionic): | |
status: | New → In Progress |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
Changed in linux-azure (Ubuntu Cosmic): | |
status: | New → In Progress |
Changed in linux-azure (Ubuntu Cosmic): | |
status: | In Progress → Invalid |
Sorry, the name for the last patch on the list will be "scsi: storvsc: Fix a race in sub-channel creation that can cause panic"