Skip to content

Conversation

thefossguy-ciq
Copy link

  • Commit Message Requirements
  • Built against Vault/LTS Environment
  • kABI Check Passed, where Valid (Pre 9.4 RT does not have kABI stability)
  • Boot Test
  • Kernel SelfTest results
  • Additional Tests as determined relevant

Commit message

configs: build the hyperv_drm driver as a loadable module

jira LE-3809

The JIRA LE-3809 ticket requires that the `hyperv_drm` driver be
enabled and the `hyperv_fb` driver be deprecated. Given that Rocky Linux
is a stable distribution, this is the extent of change that we can make
in the Kernel's source tree. Anything else, will be handled with
customer-specific images and/or any other methods of content delivery.

        Signed-off-by: Pratham Patel <[email protected]>

Kernel build logs

x86_64 architecture detected, copying config
'configs/kernel-x86_64.config' -> '.config'
Setting Local Version for build
CONFIG_LOCALVERSION="-ppatel_sig-cloud-8_4.18.0-553.62.1.el8_10-d546aa50c51"
Making olddefconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  YACC    scripts/kconfig/zconf.tab.c
  LEX     scripts/kconfig/zconf.lex.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf  --olddefconfig Kconfig
#
# configuration written to .config
#
Starting Build
scripts/kconfig/conf  --syncconfig Kconfig
[---snip---]
  INSTALL sound/x86/snd-hdmi-lpe-audio.ko
  INSTALL sound/xen/snd_xen_front.ko
  INSTALL virt/lib/irqbypass.ko
  DEPMOD  4.18.0-ppatel_sig-cloud-8_4.18.0-553.62.1.el8_10-d546aa50c51+
[TIMER]{MODULES}: 8s
Making Install
sh ./arch/x86/boot/install.sh 4.18.0-ppatel_sig-cloud-8_4.18.0-553.62.1.el8_10-d546aa50c51+ arch/x86/boot/bzImage \
	System.map "/boot"
[TIMER]{INSTALL}: 23s
Checking kABI
kABI check passed
Setting Default Kernel to /boot/vmlinuz-4.18.0-ppatel_sig-cloud-8_4.18.0-553.62.1.el8_10-d546aa50c51+ and Index to 3
The default is /boot/loader/entries/cdaeba74d23541389c105e74d7fad566-4.18.0-ppatel_sig-cloud-8_4.18.0-553.62.1.el8_10-d546aa50c51+.conf with index 3 and kernel /boot/vmlinuz-4.18.0-ppatel_sig-cloud-8_4.18.0-553.62.1.el8_10-d546aa50c51+
The default is /boot/loader/entries/cdaeba74d23541389c105e74d7fad566-4.18.0-ppatel_sig-cloud-8_4.18.0-553.62.1.el8_10-d546aa50c51+.conf with index 3 and kernel /boot/vmlinuz-4.18.0-ppatel_sig-cloud-8_4.18.0-553.62.1.el8_10-d546aa50c51+
Generating grub configuration file ...
Adding boot menu entry for EFI firmware configuration
done
Hopefully Grub2.0 took everything ... rebooting after time metrices
[TIMER]{MRPROPER}: 4s
[TIMER]{BUILD}: 1131s
[TIMER]{MODULES}: 8s
[TIMER]{INSTALL}: 23s
[TIMER]{TOTAL} 1201s
Rebooting in 10 seconds

build.log

Testing

The hyperv_fb and hyperv_drm drivers can stay loaded in the kernel at the same time. But the one that's actually in use is usually hyperv_fb (if available) due to DRM drivers loading a bit after framebuffer drivers.

[rocky@pratham-scn8 ~]$ sudo lsmod | grep -E 'hyperv_(fb|drm)'
hyperv_drm             24576  0
drm_shmem_helper       16384  1 hyperv_drm
drm_kms_helper        184320  1 hyperv_drm
drm                   602112  3 drm_kms_helper,drm_shmem_helper,hyperv_drm
hyperv_fb              24576  1
hv_vmbus              131072  9 hv_balloon,hv_utils,hv_netvsc,hid_hyperv,hv_storvsc,hyperv_keyboard,hyperv_drm,pci_hyperv,hyperv_fb

[rocky@pratham-scn8 ~]$ sudo dmesg | grep 'drm\|fb'
[    0.000000] BIOS-e820: [mem 0x000000003fffb000-0x000000003fffefff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x0000000fbfffffff] usable
[    0.000000] ACPI: SRAT: Node 0 PXM 0 [mem 0x100000000-0xfbfffffff]
[    0.000000] NUMA: Node 0 [mem 0x00000000-0x3fffffff] + [mem 0x100000000-0xfbfffffff] -> [mem 0x00000000-0xfbfffffff]
[    0.000000] NUMA: Node 0 [mem 0x00000000-0xfbfffffff] + [mem 0x1000000000-0x10ffffffff] -> [mem 0x00000000-0x10ffffffff]
[    0.000000]   node   0: [mem 0x0000000100000000-0x0000000fbfffffff]
[    0.000000] PM: Registered nosave memory: [mem 0x3fffb000-0x3fffefff]
[    0.064347] ACPI: PM: Registering ACPI NVS region [mem 0x3fffb000-0x3fffefff] (16384 bytes)
[    1.202967] efifb: probing for efifb
[    1.205696] efifb: framebuffer at 0x40000000, using 3072k, total 3072k
[    1.210499] efifb: mode is 1024x768x32, linelength=4096, pages=1
[    1.214833] efifb: scrolling: redraw
[    1.217570] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    1.221582] fbcon: Deferring console take-over
[    1.224579] fb0: EFI VGA frame buffer device
[    1.492591] integrity: Loaded X.509 cert 'Microsoft Corporation: Windows UEFI CA 2023: aefc5fbbbe055d8f8daa585473499417ab5a5272'
[    1.864637] In beiscsi_module_init, tt=00000000efb7dd6c
[    3.982660] hv_vmbus: registering driver hyperv_fb
[    3.989873] hyperv_fb: Synthvid Version major 3, minor 5
[    3.994360] hyperv_fb: Screen resolution: 1024x768, Color depth: 32, Frame buffer size: 8388608
[    3.994925] fb0: switching to hyperv_fb from EFI VGA
[    4.025955] fbcon: Deferring console take-over
[    4.074966] ACPI: bus type drm_connector registered
[    4.123919] hv_vmbus: registering driver hyperv_drm

[rocky@pratham-scn8 ~]$ sudo lshw -c video
  *-graphics
       product: hyperv_fb
       physical id: 1
       logical name: /dev/fb0
       capabilities: fb
       configuration: depth=32 resolution=1024,768
       
[rocky@pratham-scn8 ~]$ sudo find /dev -group video
/dev/fb0

[rocky@pratham-scn8 ~]$ sudo modprobe -r hyperv_fb
modprobe: FATAL: Module hyperv_fb is in use.

[rocky@pratham-scn8 ~]$ sudo modprobe -r hyperv_drm
[rocky@pratham-scn8 ~]$ echo $?
0

But, with a blacklist in place, the driver loads up correctly:

[rocky@pratham-scn8 ~]$ sudo lsmod | grep -E 'hyperv_(fb|drm)'
hyperv_drm             24576  1
drm_shmem_helper       16384  1 hyperv_drm
drm_kms_helper        184320  2 hyperv_drm
drm                   602112  5 drm_kms_helper,drm_shmem_helper,hyperv_drm
hv_vmbus              131072  8 hv_balloon,hv_utils,hv_netvsc,hid_hyperv,hv_storvsc,hyperv_keyboard,hyperv_drm,pci_hyperv

[rocky@pratham-scn8 ~]$ sudo dmesg | grep 'drm\|fb'
[    0.000000] BIOS-e820: [mem 0x000000003fffb000-0x000000003fffefff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x0000000fbfffffff] usable
[    0.000000] ACPI: SRAT: Node 0 PXM 0 [mem 0x100000000-0xfbfffffff]
[    0.000000] NUMA: Node 0 [mem 0x00000000-0x3fffffff] + [mem 0x100000000-0xfbfffffff] -> [mem 0x00000000-0xfbfffffff]
[    0.000000] NUMA: Node 0 [mem 0x00000000-0xfbfffffff] + [mem 0x1000000000-0x10ffffffff] -> [mem 0x00000000-0x10ffffffff]
[    0.000000]   node   0: [mem 0x0000000100000000-0x0000000fbfffffff]
[    0.000000] PM: Registered nosave memory: [mem 0x3fffb000-0x3fffefff]
[    0.064338] ACPI: PM: Registering ACPI NVS region [mem 0x3fffb000-0x3fffefff] (16384 bytes)
[    1.190649] efifb: probing for efifb
[    1.193186] efifb: framebuffer at 0x40000000, using 3072k, total 3072k
[    1.197706] efifb: mode is 1024x768x32, linelength=4096, pages=1
[    1.202011] efifb: scrolling: redraw
[    1.204312] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    1.208464] fbcon: Deferring console take-over
[    1.211517] fb0: EFI VGA frame buffer device
[    1.468541] integrity: Loaded X.509 cert 'Microsoft Corporation: Windows UEFI CA 2023: aefc5fbbbe055d8f8daa585473499417ab5a5272'
[    4.219122] ACPI: bus type drm_connector registered
[    4.301144] hv_vmbus: registering driver hyperv_drm
[    4.305986] hyperv_drm 5620e0c7-8062-4dce-aeb7-520c7ef76171: [drm] Synthvid Version major 3, minor 5
[    4.313480] fb0: switching to hyperv_drm from EFI VGA
[    4.323686] [drm] Initialized hyperv_drm 1.0.0 2020 for 5620e0c7-8062-4dce-aeb7-520c7ef76171 on minor 0
[    4.337397] fbcon: Deferring console take-over
[    4.343571] hyperv_drm 5620e0c7-8062-4dce-aeb7-520c7ef76171: [drm] fb0: hyperv_drmdrmfb frame buffer device

[rocky@pratham-scn8 ~]$ sudo lshw -c video
  *-graphics
       product: hyperv_drmdrmfb
       physical id: 1
       logical name: /dev/fb0
       capabilities: fb
       configuration: depth=32 resolution=1024,768

[rocky@pratham-scn8 ~]$ sudo find /dev -group video
/dev/fb0
/dev/dri/card0

Kselftests

$ grep '^ok ' kselftest-before.log | wc -l && grep '^ok ' kselftest-after.log | wc -l
221
221

$ grep '^not ok ' kselftest-before.log | wc -l && grep '^not ok ' kselftest-after.log | wc -l
53
53

kselftest-before.log
kselftest-after.log

jira LE-3809

The JIRA LE-3809 ticket requires that the `hyperv_drm` driver be
enabled and the `hyperv_fb` driver be deprecated. Given that Rocky Linux
is a stable distribution, this is the extent of change that we can make
in the Kernel's source tree. Anything else, will be handled with
customer-specific images and/or any other methods of content delivery.

	Signed-off-by: Pratham Patel <[email protected]>
Copy link
Collaborator

@PlaidCat PlaidCat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

These changes will have to be made to the dist-git as well @jdieter
As currently we do not pull the configs/ from kernel-src-tree they're copies of the upstream (RESF) content

@PlaidCat PlaidCat requested a review from jdieter August 25, 2025 14:17
Copy link
Collaborator

@bmastbergen bmastbergen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🥌

@thefossguy-ciq thefossguy-ciq merged commit 924a28d into sig-cloud-8/4.18.0-553.62.1.el8_10 Aug 25, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants