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
prev 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