public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: 結友 <miagetegorann@gmail.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH pve-kernel 2/2] fix #8027: config: enable CONFIG_HYPERV_VMBUS
Date: Fri, 23 Oct 2026 21:58:54 -0700	[thread overview]
Message-ID: <CAEP6gkaTivBmssdmABBtd6VeKz7itzU=Z2kvab67P3ccQe8sdg@mail.gmail.com> (raw)
In-Reply-To: <CAEP6gkbt=XWHr8Y9JXJFwQfx8PpKxH=0xXJUEk3SkK9-LYNuog@mail.gmail.com>

Linux 6.18 split the Hyper-V guest support options: CONFIG_HYPERV became a
plain bool covering only the core hypervisor support, and the VMBus bus
driver moved to the new tristate CONFIG_HYPERV_VMBUS:

  -obj-$(CONFIG_HYPERV)       += hv_vmbus.o
  +obj-$(CONFIG_HYPERV_VMBUS) += hv_vmbus.o

(upstream 94b04355e639 ("Drivers: hv: Add CONFIG_HYPERV_VMBUS option") and
e3ec97c3abaf ("Drivers: hv: Make CONFIG_HYPERV bool"))

So the `-e CONFIG_HYPERV` added in ef257cb ("config: enable CONFIG_HYPERV")
does not build the VMBus driver into the kernel anymore. CONFIG_HYPERV_VMBUS
does default to HYPERV, but the Ubuntu config sets it to 'm' explicitly and
olddefconfig keeps that. proxmox-kernel-6.17.13-21-pve accordingly still
lists kernel/drivers/hv/hv_vmbus.ko in modules.builtin, while 7.0.2-6-pve
and 7.0.14-25-pve ship it as a module.

That breaks installing Proxmox VE in a Hyper-V Generation 2 VM, where the
storage controller is a VMBus device: VMBus devices only appear in sysfs
once hv_vmbus has been probed. The installer initrd collects the list of
/sys/devices/**/modalias once, before loading the modules discovered
through those aliases. It loads hv_vmbus through the ACPI VMBus node,
but never sees the vmbus: aliases of its children. hv_storvsc therefore
stays unloaded, no /dev/sr0 shows up and the installation aborts with
"no device with valid ISO found". Accordingly the 9.2 ISO fails, while
the 9.1 one with its 6.17 kernel works.

With hv_vmbus built in again, the VMBus children are already enumerated by
the time the initrd runs, so that single modalias scan picks up hv_storvsc
on its own.

Record in the README why it has to be built in rather than modular.

Signed-off-by: 結友 <miagetegorann@gmail.com>
---
 README                            | 5 +++++
 debian/rules.d/config-common.opts | 1 +
 2 files changed, 6 insertions(+)

diff --git a/README b/README
index 00564c8..1a16bbb 100644
--- a/README
+++ b/README
@@ -210,6 +210,11 @@ NOTE: For the exact and current list see
debian/rules (PVE_CONFIG_OPTS)

 - enable INTEL_MEI_WDT=m (to allow disabling via patch)

+- enable CONFIG_HYPERV and CONFIG_HYPERV_VMBUS=y
+  hv_vmbus has to be built in, otherwise VMBus devices are not enumerated in
+  time for the installer initrd's single modalias scan and installing in a
+  Hyper-V Generation 2 VM fails to find its storage controller (#8027)
+
 - disable CONFIG_SND_PCM_OSS (enabled by default in Ubuntu, not needed)

 - switch CONFIG_TRANSPARENT_HUGEPAGE to MADVISE from ALWAYS
diff --git a/debian/rules.d/config-common.opts
b/debian/rules.d/config-common.opts
index 64505b4..56907e5 100644
--- a/debian/rules.d/config-common.opts
+++ b/debian/rules.d/config-common.opts
@@ -35,6 +35,7 @@
 -e CONFIG_MEMCG_SWAP_ENABLED
 -e CONFIG_MEMCG_V1
 -e CONFIG_HYPERV
+-e CONFIG_HYPERV_VMBUS
 -m CONFIG_VFIO_IOMMU_TYPE1
 -e CONFIG_VFIO_VIRQFD
 -m CONFIG_VFIO
-- 
2.56.0.windows.1



On Fri, 23 Oct 2026 21:58:41 -0700, 結友 <miagetegorann@gmail.com> wrote:
> This series restores built-in VMBus support for the Proxmox VE installer
> in Hyper-V Generation 2 guests. Linux 6.18 split HYPERV_VMBUS out of HYPERV;
> the existing HYPERV=y override therefore no longer makes hv_vmbus built in.
> The installer takes one snapshot of sysfs modalias paths, so the VMBus
> storage children must be enumerated before that snapshot.
>
> Patch 1 fixes the ABI parser first: three namespaced VMBus exports would
> otherwise be reported as missing when moved from hv_vmbus into vmlinux.
> Patch 2 enables HYPERV_VMBUS=y. Config-override cleanup and general build
> validation changes are kept in a separate follow-up series.
>
> Validation of this exact two-commit submission:
>   - Generated patches apply with git am --whitespace=error-all, with the
>     same resulting tree. Perl syntax and all 12 ABI regression tests pass.
>   - Clean complete amd64 make deb succeeds for the fixed and modular
>     control builds in Debian trixie with rustc 1.94.1 and pahole 1.30.
>     CONFIG_RUST and BTF are enabled. Both have the same existing lintian
>     perf-bench man-page warning; no build or lintian errors.
>   - Strict fresh-build ABI checks (SKIPABI=0, empty blacklist) preserve all
>     32,726 symbols, CRCs, export types and namespaces. The fixed build has
>     only the expected 47 VMBus provider moves into vmlinux.
>   - Gen2 A/B test: the fresh modular control reproduces ISO-not-found;
>     the fixed ISO auto-discovers storage on three cold boots, completes
>     installation, and passes three installed disk-only cold boots.
>     /init is unchanged and hv_storvsc is not manually preloaded.
>   - The installed image hash matches the build artifact. Storage I/O,
>     persistent data across cold boots, SSH/network, ZFS module loading
>     and PVE services pass on Gen2 and non-Hyper-V QEMU/KVM.
>   - QEMU/KVM also passes complete installation, two installed cold boots
>     and installation of the newly built headers and perf packages.
>   - Hyper-V Gen1 passes complete BIOS installation, two installed cold
>     boots, persistent disk I/O, networking and ZFS module loading.
>   - arm64: full native-emulated Debian package build and minimal QEMU
>     initramfs boot, virtio ext4 I/O and networking pass.
>
> Validation limits:
>   - No arm64 Hyper-V host was available. arm64 QEMU tests do not cover
>     Hyper-V on arm64 or a complete Proxmox VE arm64 installation.
>   - arm64 QEMU directly boots the verified packaged EFI zboot payload;
>     the EFI firmware entry path is not tested. There is no previous arm64
>     ABI or firmware baseline in this repository, so those comparisons
>     were skipped by the standard build rules.
>   - Hyper-V tests used unsigned test kernels with Secure Boot disabled.
>
> Base: current pve-kernel master at 78f3d3e2f3ce28c51b80919bc3fc35a399ddb3c7.
> Bug: https://bugzilla.proxmox.com/show_bug.cgi?id=8027
>
> 結友 (2):
>   d/scripts: correctly compare namespaced ABI exports
>   fix #8027: config: enable CONFIG_HYPERV_VMBUS
>
>  .gitignore                        |   1 +
>  README                            |  13 +++
>  debian/rules.d/config-common.opts |   1 +
>  debian/scripts/abi-check          |  56 +++++++++---
>  debian/tests/test_abi_check.py    | 140 ++++++++++++++++++++++++++++++
>  5 files changed, 198 insertions(+), 13 deletions(-)
>  create mode 100644 debian/tests/test_abi_check.py
>
>
> base-commit: 78f3d3e2f3ce28c51b80919bc3fc35a399ddb3c7
> --
> 2.56.0.windows.1



      parent reply	other threads:[~2026-10-24  4:59 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-24  4:58 [PATCH pve-kernel 0/2] fix #8027: restore built-in Hyper-V VMBus 結友
2026-10-24  4:58 ` [PATCH pve-kernel 1/2] d/scripts: correctly compare namespaced ABI exports 結友
2026-10-24  4:58 ` 結友 [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEP6gkaTivBmssdmABBtd6VeKz7itzU=Z2kvab67P3ccQe8sdg@mail.gmail.com' \
    --to=miagetegorann@gmail.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal