Bug 2184476

Summary: kernel-uki-virt missing provides for built-in kernel symbols
Product: Red Hat Enterprise Linux 9 Reporter: Peter Georg <peter.georg>
Component: kernelAssignee: Vitaly Kuznetsov <vkuznets>
kernel sub component: Packaging QA Contact: Li Tian <litian>
Status: CLOSED ERRATA Docs Contact:
Severity: unspecified    
Priority: unspecified CC: bstinson, jstancek, jwboyer, kernel-qe, litian, vkuznets, xiawu, xuli, yacao, yuxisun
Version: CentOS StreamKeywords: Triaged
Target Milestone: rcFlags: pm-rhel: mirror+
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: kernel-5.14.0-333.el9 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-11-07 08:43:58 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Peter Georg 2023-04-04 20:08:55 UTC
Description of problem:
kernel-uki-virt does not list any provides for built-in symbols. kernel-uki-virt should list these provides just as kernel-core does. These provides are (afaik) generated from modules.builtin which is included in kernel-core.

Version-Release number of selected component (if applicable):


How reproducible:
Compare provides listed on
https://kojihub.stream.centos.org/koji/rpminfo?rpmID=803064
to
https://kojihub.stream.centos.org/koji/rpminfo?rpmID=803105

Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 2 Josh Boyer 2023-04-05 11:57:40 UTC
(In reply to Peter Georg from comment #0)
> Description of problem:
> kernel-uki-virt does not list any provides for built-in symbols.
> kernel-uki-virt should list these provides just as kernel-core does. These
> provides are (afaik) generated from modules.builtin which is included in
> kernel-core.

Can you elaborate on why you think this is needed?

UKI isn't a general purpose kernel that we'd expect anyone to build modules against.  It's a self-contained, fully signed kernel used for a very specific usecase.

Comment 3 Peter Georg 2023-04-05 13:17:28 UTC
(In reply to Josh Boyer from comment #2)
> Can you elaborate on why you think this is needed?
> 
> UKI isn't a general purpose kernel that we'd expect anyone to build modules
> against.  It's a self-contained, fully signed kernel used for a very
> specific usecase.

I thought the kernel is the same but just distributed in a different format?
I.e., all kernel modules built against the RHEL kernel should be loadable independently of whether one uses the unified kernel image or the "regular" one. So the question is not about building against a kernel, but about whether one can use third party kernel modules when using the universal kernel image without having to install the regular one in addition.

If you do not expect anyone who is using the unified kernel image to install any third party kernel modules then these provides are not required and you can close this bug report.

Comment 4 Vitaly Kuznetsov 2023-04-05 15:14:41 UTC
(In reply to Peter Georg from comment #3)
> (In reply to Josh Boyer from comment #2)
> > Can you elaborate on why you think this is needed?
> > 
> > UKI isn't a general purpose kernel that we'd expect anyone to build modules
> > against.  It's a self-contained, fully signed kernel used for a very
> > specific usecase.
> 
> I thought the kernel is the same but just distributed in a different format?
> I.e., all kernel modules built against the RHEL kernel should be loadable
> independently of whether one uses the unified kernel image or the "regular"
> one. So the question is not about building against a kernel, but about
> whether one can use third party kernel modules when using the universal
> kernel image without having to install the regular one in addition.
> 
> If you do not expect anyone who is using the unified kernel image to install
> any third party kernel modules then these provides are not required and you
> can close this bug report.

Generally speaking your suggestion is correct and there is no reason to not support
third party modules when UKI is used instead of the standard kernel-core. As we are
in the very beginning on the adoption path, we wanted to limit UKI's use case to
virtual machines (and thus 'kernel-uki-virt' name) where third party modules are less
common.

Let me take the BZ and run some experiments.

Comment 5 Vitaly Kuznetsov 2023-04-25 08:05:38 UTC
I've created an MR for Fedora/ARK: https://gitlab.com/cki-project/kernel-ark/-/merge_requests/2408
if things go well, we can do a similar change to RHEL.

Comment 6 Vitaly Kuznetsov 2023-06-22 12:25:32 UTC
(In reply to Vitaly Kuznetsov from comment #5)
> I've created an MR for Fedora/ARK:
> https://gitlab.com/cki-project/kernel-ark/-/merge_requests/2408
> if things go well, we can do a similar change to RHEL.

The change was merged in Fedora/ARK some time ago and no issues were reported,
pushing the change to RHEL as well.

Comment 11 Li Tian 2023-06-26 03:53:09 UTC
# rpm -q --provides kernel-uki-virt-5.14.0-330.2721_908379996.el9.x86_64.rpm > uki-provides
# rpm -q --provides kernel-core-5.14.0-330.2721_908379996.el9.x86_64.rpm > core-provides
# diff -u core-provides uki-provides 
--- core-provides	2023-06-25 23:39:12.065892900 -0400
+++ uki-provides	2023-06-25 23:39:04.115430600 -0400
@@ -1,5 +1,4 @@
 installonlypkg(kernel)
-kernel = 5.14.0-330.2721_908379996.el9
 kernel(IO_APIC_get_PCI_irq_vector) = 0x1eb922a3
 kernel(I_BDEV) = 0xb99ad7c5
 kernel(LZ4_decompress_fast) = 0x4c416eb9
@@ -11163,11 +11162,9 @@
 kernel(zstd_init_dstream) = 0x3cbb940b
 kernel(zstd_is_error) = 0xafc6c68e
 kernel(zstd_reset_dstream) = 0xf1a65f7b
-kernel-core = 5.14.0-330.2721_908379996.el9
-kernel-core(x86-64) = 5.14.0-330.2721_908379996.el9
-kernel-core-uname-r = 5.14.0-330.2721_908379996.el9.x86_64
+kernel-uki-virt = 5.14.0-330.2721_908379996.el9
+kernel-uki-virt(x86-64) = 5.14.0-330.2721_908379996.el9
 kernel-uname-r = 5.14.0-330.2721_908379996.el9.x86_64
-kernel-x86_64 = 5.14.0-330.2721_908379996.el9
 kmod(8250.ko)
 kmod(8250_base.ko)
 kmod(8250_dw.ko)
# rpm -ql kernel-uki-virt-5.14.0-330.2721_908379996.el9.x86_64.rpm | grep System.map
/lib/modules/5.14.0-330.2721_908379996.el9.x86_64/System.map

Tested good on 5.14.0-330.2721_908379996.el9.x86_64.
For a comparison:

# rpm -q --provides kernel-uki-virt-5.14.0-330.el9.x86_64.rpm
installonlypkg(kernel)
kernel-uki-virt = 5.14.0-330.el9
kernel-uki-virt(x86-64) = 5.14.0-330.el9
kernel-uname-r = 5.14.0-330.el9.x86_64

Comment 16 Li Tian 2023-07-03 08:26:43 UTC
# rpm -q --provides kernel-uki-virt-5.14.0-333.el9.x86_64.rpm > uki-provides
# rpm -q --provides kernel-core-5.14.0-333.el9.x86_64.rpm > core-provides
# diff -u core-provides uki-provides
--- core-provides	2023-07-03 04:19:26.491157525 -0400
+++ uki-provides	2023-07-03 04:16:50.714236417 -0400
@@ -1,5 +1,4 @@
 installonlypkg(kernel)
-kernel = 5.14.0-333.el9
 kernel(IO_APIC_get_PCI_irq_vector) = 0x1eb922a3
 kernel(I_BDEV) = 0xbe821159
 kernel(LZ4_decompress_fast) = 0x4c416eb9
@@ -11176,11 +11175,9 @@
 kernel(zstd_init_dstream) = 0x3cbb940b
 kernel(zstd_is_error) = 0xafc6c68e
 kernel(zstd_reset_dstream) = 0xf1a65f7b
-kernel-core = 5.14.0-333.el9
-kernel-core(x86-64) = 5.14.0-333.el9
-kernel-core-uname-r = 5.14.0-333.el9.x86_64
+kernel-uki-virt = 5.14.0-333.el9
+kernel-uki-virt(x86-64) = 5.14.0-333.el9
 kernel-uname-r = 5.14.0-333.el9.x86_64
-kernel-x86_64 = 5.14.0-333.el9
 kmod(8250.ko)
 kmod(8250_base.ko)
 kmod(8250_dw.ko)

Tested good on 5.14.0-333.el9.x86_64.

Comment 18 errata-xmlrpc 2023-11-07 08:43:58 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Important: kernel security, bug fix, and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2023:6583