Enable CONFIG_PCI_MSI in the linux-kvm derivative
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux-kvm (Ubuntu) |
Fix Released
|
Medium
|
Guilherme G. Piccoli | ||
Xenial |
Invalid
|
Medium
|
Guilherme G. Piccoli | ||
Bionic |
Fix Released
|
Medium
|
Guilherme G. Piccoli | ||
Focal |
Fix Released
|
Medium
|
Guilherme G. Piccoli | ||
Groovy |
Fix Released
|
Medium
|
Guilherme G. Piccoli | ||
Hirsute |
Fix Released
|
Medium
|
Guilherme G. Piccoli |
Bug Description
[Impact]
* Currently linux-kvm derivative doesn't have CONFIG_PCI_MSI (and its dependency options) enabled. The goal for such derivative is to be minimal and boot as fast as possible in virtual environments, hence most config options were dropped.
* Happens that MSI/MSI-X are the de facto drivers' standard with regards to interrupts, and as such the hot path is optimized for MSIs. Boot testing with that config enabled showed that we have improvements in boot time (details in next section).
* Also, performance-wise MSIs are a good idea too, since it usually allows multiple queues in network devices and KVM is more optimized to MSIs in comparison with regular IRQs - tests (detailed in next section) showed performance improvements in virtio devices with MSIs.
* Based on that findings, we are hereby enabling MSIs for the linux-kvm derivatives in all series (Bionic / Focal / Groovy / Hirsute) - notice that Xenial already has that config option enabled.
[Test Case]
* All below tests were performed in a x86-64 KVM guest with 2 VCPUs and 2GB of RAM, running in a Focal host. Three runs of each test were performed, and we took the average.
* Boot time test (measured by dmesg timestamp) showed an improvement of ~21%, the following chart exhibiting the data: https:/
We also timed the full boot until the login prompt is available, we had a decrease from ~1 second.
* The storage test was performed with the fio tool, using a virtio-blk empty disk. The following arguments were used:
fio --filename /dev/vdc --rw=rw --runtime 600 --loops 100 --ioengine libaio --numjobs 2 --group_reporting
On average we had a ~4.5% speedup in both reads and writes, the following chart represents the data: https:/
* From the network perspective, we've used iPerf with the following arguments: iperf -c <server> -t 300 (server was the host machine). On average, the performance improvement was ~8%, as per the following chart: https:/
[Where problems could occur]
* Given that the main linux package (generic) and basically all other derivatives already enable this option, and given that MSIs are the standard with regards to interrupts from drivers point-of-view, it's safe to say the risks are minimal, likely smaller than not enabling MSIs (since the hot path is usually more tested/exercised).
* That said, problems could occur if we have bugs in MSI-related code in drivers or in PCI MSI core code, then those potential problems that would already affect all other derivatives begin to affect linux-kvm with this change.
CVE References
no longer affects: | linux (Ubuntu) |
Changed in linux-kvm (Ubuntu): | |
status: | New → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Guilherme G. Piccoli (gpiccoli) |
Changed in linux-kvm (Ubuntu Groovy): | |
status: | New → In Progress |
Changed in linux-kvm (Ubuntu Focal): | |
status: | New → In Progress |
Changed in linux-kvm (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in linux-kvm (Ubuntu Xenial): | |
status: | New → In Progress |
Changed in linux-kvm (Ubuntu Groovy): | |
importance: | Undecided → Medium |
Changed in linux-kvm (Ubuntu Focal): | |
importance: | Undecided → Medium |
Changed in linux-kvm (Ubuntu Bionic): | |
importance: | Undecided → Medium |
Changed in linux-kvm (Ubuntu Xenial): | |
importance: | Undecided → Medium |
Changed in linux-kvm (Ubuntu Groovy): | |
assignee: | nobody → Guilherme G. Piccoli (gpiccoli) |
Changed in linux-kvm (Ubuntu Focal): | |
assignee: | nobody → Guilherme G. Piccoli (gpiccoli) |
Changed in linux-kvm (Ubuntu Bionic): | |
assignee: | nobody → Guilherme G. Piccoli (gpiccoli) |
Changed in linux-kvm (Ubuntu Xenial): | |
assignee: | nobody → Guilherme G. Piccoli (gpiccoli) |
description: | updated |
Changed in linux-kvm (Ubuntu Xenial): | |
status: | In Progress → Invalid |
Changed in linux-kvm (Ubuntu Groovy): | |
status: | In Progress → Fix Committed |
Changed in linux-kvm (Ubuntu Focal): | |
status: | In Progress → Fix Committed |
Changed in linux-kvm (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
This bug was fixed in the package linux-kvm - 5.4.0-1033.34
---------------
linux-kvm (5.4.0-1033.34) focal; urgency=medium
* focal/linux-kvm: 5.4.0-1033.34 -proposed tracker (LP: #1913147)
* Focal update: v5.4.84 upstream stable release (LP: #1910816)
- [Config] kvm: updateconfigs for PGTABLE_MAPPING
* Enable CONFIG_PCI_MSI in the linux-kvm derivative (LP: #1914283)
- [Config] kvm: enable PCI_MSI
[ Ubuntu: 5.4.0-66.74 ]
* focal/linux: 5.4.0-66.74 -proposed tracker (LP: #1913152) kernel_ selftests seems not reflecting sub-test kernel_ selftests timeout with 5.4 P8 / powerpc/ eeh: disable kselftest timeout setting for eeh-basic
* Add support for selective build of special drivers (LP: #1912789)
- [Packaging] Add support for ODM drivers
- [Packaging] Turn on ODM support for amd64
* Packaging resync (LP: #1786013)
- update dkms package versions
- update dkms package versions
* Introduce the new NVIDIA 460-server series and update the 460 series
(LP: #1913200)
- [Config] dkms-versions -- drop NVIDIA 435 455 and 440-server
- [Config] dkms-versions -- add the 460-server nvidia driver
* Enable mute and micmute LED on HP EliteBook 850 G7 (LP: #1910102)
- ALSA: hda/realtek: Enable mute and micmute LED on HP EliteBook 850 G7
* SYNA30B4:00 06CB:CE09 Mouse on HP EliteBook 850 G7 not working at all
(LP: #1908992)
- HID: multitouch: Enable multi-input for Synaptics pointstick/touchpad device
* HD Audio Device PCI ID for the Intel Cometlake-R platform (LP: #1912427)
- SAUCE: ALSA: hda: Add Cometlake-R PCI ID
* switch to an autogenerated nvidia series based core via dkms-versions
(LP: #1912803)
- [Packaging] nvidia -- use dkms-versions to define versions built
- [Packaging] update-version-dkms -- maintain flags fields
- [Config] dkms-versions -- add transitional/skip information for nvidia
packages
* udpgro.sh in net from ubuntu_
result (LP: #1908499)
- selftests: fix the return value for UDP GRO test
* qede: Kubernetes Internal DNS Failure due to QL41xxx NIC not supporting IPIP
tx csum offload (LP: #1909062)
- qede: fix offload for IPIP tunnel packets
* Use DCPD to control HP DreamColor panel (LP: #1911001)
- SAUCE: drm/dp: Another HP DreamColor panel brigntness fix
* kvm: Windows 2k19 with Hyper-v role gets stuck on pending hypervisor
requests on cascadelake based kvm hosts (LP: #1911848)
- KVM: x86: Set KVM_REQ_EVENT if run is canceled with req_immediate_exit set
* Ubuntu 20.10 four needed fixes to 'Add driver for Mellanox Connect-IB
adapters' (LP: #1905574)
- net/mlx5: Fix a race when moving command interface to polling mode
* Fix right sounds and mute/micmute LEDs for HP ZBook Fury 15/17 G7 Mobile
Workstation (LP: #1910561)
- ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machines
* Ubuntu 20.04 - multicast counter is not increased in ip -s (LP: #1901842)
- net/mlx5e: Fix multicast counter not up-to-date in "ip -s"
* eeh-basic.sh in powerpc from ubuntu_
P9 (LP: #1882503)
- selftests/
* DMI entry syntax fix for Pegatron / ByteSpeed C15B (LP: #1910639)
- Input: i8...