all lists on 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal