Enable CONFIG_PCI_MSI in the linux-kvm derivative

Bug #1914283 reported by Guilherme G. Piccoli
6
This bug affects 1 person
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://kernel.ubuntu.com/~gpiccoli/MSI/boot_time.svg
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://kernel.ubuntu.com/~gpiccoli/MSI/fio_storage.svg

* 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://kernel.ubuntu.com/~gpiccoli/MSI/iperf_network.svg

[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.

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
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (62.9 KiB)

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)
  * 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_kernel_selftests seems not reflecting sub-test
    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_kernel_selftests timeout with 5.4 P8 /
    P9 (LP: #1882503)
    - selftests/powerpc/eeh: disable kselftest timeout setting for eeh-basic
  * DMI entry syntax fix for Pegatron / ByteSpeed C15B (LP: #1910639)
    - Input: i8...

Changed in linux-kvm (Ubuntu Focal):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (130.1 KiB)

This bug was fixed in the package linux-kvm - 5.8.0-1019.21

---------------
linux-kvm (5.8.0-1019.21) groovy; urgency=medium

  * groovy/linux-kvm: 5.8.0-1019.21 -proposed tracker (LP: #1914796)

  * Enable CONFIG_PCI_MSI in the linux-kvm derivative (LP: #1914283)
    - [Config] kvm: enable PCI_MSI

  * Groovy update: upstream stable patchset 2021-01-13 (LP: #1911476)
    - [Config] kvm: Disable ZSMALLOC_PGTABLE_MAPPING

  [ Ubuntu: 5.8.0-44.50 ]

  * groovy/linux: 5.8.0-44.50 -proposed tracker (LP: #1914805)
  * 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
  * [SRU][G/H/U/OEM-5.10] re-enable s0ix of e1000e (LP: #1910541)
    - Revert "UBUNTU: SAUCE: e1000e: bump up timeout to wait when ME un-configure
      ULP mode"
    - e1000e: Only run S0ix flows if shutdown succeeded
    - Revert "e1000e: disable s0ix entry and exit flows for ME systems"
    - e1000e: Export S0ix flags to ethtool
  * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) //
    [SRU][G/H/U/OEM-5.10] re-enable s0ix of e1000e (LP: #1910541)
    - e1000e: bump up timeout to wait when ME un-configures ULP mode
  * Cannot probe sata disk on sata controller behind VMD: ata1.00: failed to
    IDENTIFY (I/O error, err_mask=0x4) (LP: #1894778)
    - PCI: vmd: Offset Client VMD MSI-X vectors
  * 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_kernel_selftests seems not reflecting sub-test
    result (LP: #1908499)
    - selftests: fix the return value for UDP GRO test
  * [UBUNTU 21.04] vfio: pass DMA availability information to userspace
    (LP: #1907421)
    - vfio/type1: Refactor vfio_iommu_type1_ioctl()
    - vfio iommu: Add dma available capability
  * 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
  * 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...

Changed in linux-kvm (Ubuntu Groovy):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (11.9 KiB)

This bug was fixed in the package linux-kvm - 4.15.0-1086.88

---------------
linux-kvm (4.15.0-1086.88) bionic; urgency=medium

  * bionic/linux-kvm: 4.15.0-1086.88 -proposed tracker (LP: #1916190)

  * Enable CONFIG_PCI_MSI in the linux-kvm derivative (LP: #1914283)
    - [Config] kvm: enable PCI_MSI

  [ Ubuntu: 4.15.0-137.141 ]

  * bionic/linux: 4.15.0-137.141 -proposed tracker (LP: #1916199)
  * Fix oops in skb_segment for Bionic series (LP: #1915552)
    - net: permit skb_segment on head_frag frag_list skb
    - net: bpf: add a test for skb_segment in test_bpf module
    - test_bpf: Fix NULL vs IS_ERR() check in test_skb_segment()
  * Bionic update: upstream stable patchset 2021-02-10 (LP: #1915328)
    - net: cdc_ncm: correct overhead in delayed_ndp_size
    - net: vlan: avoid leaks on register_vlan_dev() failures
    - net: ip: always refragment ip defragmented packets
    - net: fix pmtu check in nopmtudisc mode
    - x86/resctrl: Use an IPI instead of task_work_add() to update PQR_ASSOC MSR
    - x86/resctrl: Don't move a task to the same resource group
    - vmlinux.lds.h: Add PGO and AutoFDO input sections
    - drm/i915: Fix mismatch between misplaced vma check and vma insert
    - spi: pxa2xx: Fix use-after-free on unbind
    - iio: imu: st_lsm6dsx: flip irq return logic
    - iio: imu: st_lsm6dsx: fix edge-trigger interrupts
    - ARM: OMAP2+: omap_device: fix idling of devices during probe
    - i2c: sprd: use a specific timeout to avoid system hang up issue
    - cpufreq: powernow-k8: pass policy rather than use cpufreq_cpu_get()
    - spi: stm32: FIFO threshold level - fix align packet size
    - dmaengine: xilinx_dma: check dma_async_device_register return value
    - dmaengine: xilinx_dma: fix mixed_enum_type coverity warning
    - wil6210: select CONFIG_CRC32
    - block: rsxx: select CONFIG_CRC32
    - iommu/intel: Fix memleak in intel_irq_remapping_alloc
    - net/mlx5e: Fix memleak in mlx5e_create_l2_table_groups
    - net/mlx5e: Fix two double free cases
    - wan: ds26522: select CONFIG_BITREVERSE
    - KVM: arm64: Don't access PMCR_EL0 when no PMU is available
    - block: fix use-after-free in disk_part_iter_next
    - net: drop bogus skb with CHECKSUM_PARTIAL and offset beyond end of trimmed
      packet
    - net: hns3: fix the number of queues actually used by ARQ
    - net: stmmac: dwmac-sun8i: Balance internal PHY resource references
    - net: stmmac: dwmac-sun8i: Balance internal PHY power
    - net/sonic: Fix some resource leaks in error handling paths
    - net: ipv6: fib: flush exceptions when purging route
    - dmaengine: xilinx_dma: fix incompatible param warning in _child_probe()
    - lightnvm: select CONFIG_CRC32
    - ASoC: dapm: remove widget from dirty list on free
    - MIPS: boot: Fix unaligned access with CONFIG_MIPS_RAW_APPENDED_DTB
    - MIPS: relocatable: fix possible boot hangup with KASLR enabled
    - ACPI: scan: Harden acpi_device_add() against device ID overflows
    - mm/hugetlb: fix potential missing huge page size info
    - dm snapshot: flush merged data before committing metadata
    - r8152: Add Lenovo Powered USB-C Travel Hub
    - ext4: fix bug for rename with RENAME_WHITEOUT
...

Changed in linux-kvm (Ubuntu Bionic):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (149.0 KiB)

This bug was fixed in the package linux-kvm - 5.8.0-1020.22+21.04.1

---------------
linux-kvm (5.8.0-1020.22+21.04.1) hirsute; urgency=medium

  * hirsute/linux-kvm: 5.8.0-1020.22+21.04.1 -proposed tracker (LP: #1916133)

  * Packaging resync (LP: #1786013)
    - update dkms package versions

  [ Ubuntu: 5.8.0-1020.22 ]

  * groovy/linux-kvm: 5.8.0-1020.22 -proposed tracker (LP: #1916134)
  * Please trust Canonical Livepatch Service kmod signing key (LP: #1898716)
    - [Config] CONFIG_MODVERSIONS=y, CONFIG_SYSTEM_TRUSTED_KEYS=debian/canonical-
      certs.pem, CONFIG_ASM_MODVERSIONS=y
  * groovy/linux: 5.8.0-45.51 -proposed tracker (LP: #1916143)
  * Please trust Canonical Livepatch Service kmod signing key (LP: #1898716)
    - [Config] enable CONFIG_MODVERSIONS=y
    - [Packaging] build canonical-certs.pem from branch/arch certs
    - [Config] add Canonical Livepatch Service key to SYSTEM_TRUSTED_KEYS
    - [Config] add ubuntu-drivers key to SYSTEM_TRUSTED_KEYS
    - [Config] Allow ASM_MODVERSIONS and MODULE_REL_CRCS
  * CVE-2021-20194
    - bpf, cgroup: Fix optlen WARN_ON_ONCE toctou
    - bpf, cgroup: Fix problematic bounds check
  * Missing device id for Intel TGL-H ISH [8086:43fc] in intel-ish-hid driver
    (LP: #1914543)
    - HID: intel-ish-hid: ipc: Add Tiger Lake H PCI device ID
  * Prevent thermal shutdown during boot process (LP: #1906168)
    - thermal/core: Emit a warning if the thermal zone is updated without ops
    - thermal/core: Add critical and hot ops
    - thermal/drivers/acpi: Use hot and critical ops
    - thermal/drivers/rcar: Remove notification usage
    - thermal: int340x: Fix unexpected shutdown at critical temperature
    - thermal: intel: pch: Fix unexpected shutdown at critical temperature
  * geneve overlay network on vlan interface broken with offload enabled
    (LP: #1914447)
    - net/mlx5e: Fix SWP offsets when vlan inserted by driver
  * Groovy update: upstream stable patchset 2021-02-11 (LP: #1915473)
    - net: cdc_ncm: correct overhead in delayed_ndp_size
    - net: hns3: fix the number of queues actually used by ARQ
    - net: hns3: fix a phy loopback fail issue
    - net: stmmac: dwmac-sun8i: Balance internal PHY resource references
    - net: stmmac: dwmac-sun8i: Balance internal PHY power
    - net: vlan: avoid leaks on register_vlan_dev() failures
    - net/sonic: Fix some resource leaks in error handling paths
    - net: ipv6: fib: flush exceptions when purging route
    - tools: selftests: add test for changing routes with PTMU exceptions
    - net: fix pmtu check in nopmtudisc mode
    - net: ip: always refragment ip defragmented packets
    - octeontx2-af: fix memory leak of lmac and lmac->name
    - nexthop: Fix off-by-one error in error path
    - nexthop: Unlink nexthop group entry in error path
    - s390/qeth: fix L2 header access in qeth_l3_osa_features_check()
    - net: dsa: lantiq_gswip: Exclude RMII from modes that report 1 GbE
    - net/mlx5: Use port_num 1 instead of 0 when delete a RoCE address
    - net/mlx5e: ethtool, Fix restriction of autoneg with 56G
    - chtls: Fix hardware tid leak
    - chtls: Remove invalid set_tcb call
    - chtls: Fix panic when route to peer not co...

Changed in linux-kvm (Ubuntu Hirsute):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.