From b3d2a2b95e67eecc899afc0cc93732ae095979c41be33a2e249dd7f610fab45d Mon Sep 17 00:00:00 2001 From: Jiri Slaby Date: Wed, 9 Apr 2025 11:04:00 +0200 Subject: [PATCH] build against kernel 6.15 --- kernel-6-15-EXTRA_CFLAGS.patch | 14 +++++++++++ kernel-6-15-fb_probe.patch | 27 +++++++++++++++++++++ kernel-6-15-mkdir.patch | 40 +++++++++++++++++++++++++++++++ kernel-6-15-mode_valid.patch | 18 ++++++++++++++ kernel-6-15-timer.patch | 43 ++++++++++++++++++++++++++++++++++ virtualbox.changes | 12 ++++++++++ virtualbox.spec | 5 ++++ 7 files changed, 159 insertions(+) create mode 100644 kernel-6-15-EXTRA_CFLAGS.patch create mode 100644 kernel-6-15-fb_probe.patch create mode 100644 kernel-6-15-mkdir.patch create mode 100644 kernel-6-15-mode_valid.patch create mode 100644 kernel-6-15-timer.patch diff --git a/kernel-6-15-EXTRA_CFLAGS.patch b/kernel-6-15-EXTRA_CFLAGS.patch new file mode 100644 index 0000000..dbad45e --- /dev/null +++ b/kernel-6-15-EXTRA_CFLAGS.patch @@ -0,0 +1,14 @@ +--- + src/VBox/Installer/linux/Makefile-footer.gmk | 1 + + 1 file changed, 1 insertion(+) + +--- a/src/VBox/Installer/linux/Makefile-footer.gmk ++++ b/src/VBox/Installer/linux/Makefile-footer.gmk +@@ -115,6 +115,7 @@ VBOXMOD_EXT := ko + + # build defs + EXTRA_CFLAGS += $(VBOXMOD_CFLAGS) $(addprefix -I,$(KERN_INCL) $(VBOXMOD_INCL)) $(VBOXMOD_0_KFLAGS) $(KDEBUG) ++ccflags-y += $(EXTRA_CFLAGS) + $(VBOXMOD_0_TARGET)-y := $(VBOXMOD_OBJS) + obj-m += $(VBOXMOD_0_TARGET).o + diff --git a/kernel-6-15-fb_probe.patch b/kernel-6-15-fb_probe.patch new file mode 100644 index 0000000..3474711 --- /dev/null +++ b/kernel-6-15-fb_probe.patch @@ -0,0 +1,27 @@ +--- + src/VBox/Additions/linux/drm/vbox_fb.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/src/VBox/Additions/linux/drm/vbox_fb.c ++++ b/src/VBox/Additions/linux/drm/vbox_fb.c +@@ -56,6 +56,7 @@ + # define VBOX_FBDEV_INFO(_helper) _helper.fbdev + #endif + ++#if RTLNX_VER_MAX(6,15,0) + #if RTLNX_VER_MAX(4,7,0) && !RTLNX_RHEL_MAJ_PREREQ(7,4) + /** + * Tell the host about dirty rectangles to update. +@@ -412,9 +413,12 @@ static int vboxfb_create(struct drm_fb_h + + return 0; + } ++#endif + + static struct drm_fb_helper_funcs vbox_fb_helper_funcs = { ++#if RTLNX_VER_MAX(6,15,0) + .fb_probe = vboxfb_create, ++#endif + }; + + #if RTLNX_VER_MAX(4,3,0) && !RTLNX_RHEL_MAJ_PREREQ(7,3) diff --git a/kernel-6-15-mkdir.patch b/kernel-6-15-mkdir.patch new file mode 100644 index 0000000..f56e0b8 --- /dev/null +++ b/kernel-6-15-mkdir.patch @@ -0,0 +1,40 @@ +--- + src/VBox/Additions/linux/sharedfolders/dirops.c | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +--- a/src/VBox/Additions/linux/sharedfolders/dirops.c ++++ b/src/VBox/Additions/linux/sharedfolders/dirops.c +@@ -1088,7 +1088,9 @@ static int vbsf_inode_create(struct inod + * @param mode file mode + * @returns 0 on success, Linux error code otherwise + */ +-#if RTLNX_VER_MIN(6,3,0) || RTLNX_RHEL_RANGE(9,6, 9,99) || defined(DOXYGEN_RUNNING) ++#if RTLNX_VER_MIN(6,15,0) ++static struct dentry *vbsf_inode_mkdir(struct mnt_idmap *idmap, struct inode *parent, struct dentry *dentry, umode_t mode) ++#elif RTLNX_VER_MIN(6,3,0) || RTLNX_RHEL_RANGE(9,6, 9,99) || defined(DOXYGEN_RUNNING) + static int vbsf_inode_mkdir(struct mnt_idmap *idmap, struct inode *parent, struct dentry *dentry, umode_t mode) + #elif RTLNX_VER_MIN(5,12,0) + static int vbsf_inode_mkdir(struct user_namespace *ns, struct inode *parent, struct dentry *dentry, umode_t mode) +@@ -1098,14 +1100,21 @@ static int vbsf_inode_mkdir(struct inode + static int vbsf_inode_mkdir(struct inode *parent, struct dentry *dentry, int mode) + #endif + { ++ int ret; + TRACE(); + AssertMsg(!(mode & S_IFMT) || (mode & S_IFMT) == S_IFDIR, ("0%o\n", mode)); +- return vbsf_create_worker(parent, dentry, (mode & ~S_IFMT) | S_IFDIR, ++ ++ ret = vbsf_create_worker(parent, dentry, (mode & ~S_IFMT) | S_IFDIR, + SHFL_CF_ACT_CREATE_IF_NEW + | SHFL_CF_ACT_FAIL_IF_EXISTS + | SHFL_CF_ACCESS_READWRITE + | SHFL_CF_DIRECTORY, + false /*fStashHandle*/, false /*fDoLookup*/, NULL /*phHandle*/, NULL /*fCreated*/); ++#if RTLNX_VER_MIN(6,15,0) ++ return ERR_PTR(ret); ++#else ++ return ret; ++#endif + } + + diff --git a/kernel-6-15-mode_valid.patch b/kernel-6-15-mode_valid.patch new file mode 100644 index 0000000..4261f93 --- /dev/null +++ b/kernel-6-15-mode_valid.patch @@ -0,0 +1,18 @@ +--- + src/VBox/Additions/linux/drm/vbox_mode.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/src/VBox/Additions/linux/drm/vbox_mode.c ++++ b/src/VBox/Additions/linux/drm/vbox_mode.c +@@ -665,7 +665,11 @@ static int vbox_mode_valid(struct drm_co + #else + static enum drm_mode_status vbox_mode_valid(struct drm_connector *connector, + #endif ++#if RTLNX_VER_MIN(6,15,0) ++ const struct drm_display_mode *mode) ++#else + struct drm_display_mode *mode) ++#endif + { + return MODE_OK; + } diff --git a/kernel-6-15-timer.patch b/kernel-6-15-timer.patch new file mode 100644 index 0000000..067aae5 --- /dev/null +++ b/kernel-6-15-timer.patch @@ -0,0 +1,43 @@ +--- + src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c ++++ b/src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c +@@ -422,7 +422,11 @@ static void rtTimerLnxStopSubTimer(PRTTI + } + else + #endif ++#if RTLNX_VER_MIN(6,15,0) ++ timer_delete(&pSubTimer->u.Std.LnxTimer); ++#else + del_timer(&pSubTimer->u.Std.LnxTimer); ++#endif + + rtTimerLnxSetState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED); + } +@@ -470,7 +474,11 @@ static void rtTimerLnxDestroyIt(PRTTIMER + hrtimer_cancel(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer); + else + #endif ++#if RTLNX_VER_MIN(6,15,0) ++ timer_delete_sync(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer); ++#else + del_timer_sync(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer); ++#endif + } + + /* +@@ -1626,8 +1634,12 @@ RTDECL(int) RTTimerCreateEx(PRTTIMER *pp + #ifdef RTTIMER_LINUX_WITH_HRTIMER + if (pTimer->fHighRes) + { ++#if RTLNX_VER_MIN(6,15,0) ++ hrtimer_setup(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer, rtTimerLinuxHrCallback, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); ++#else + hrtimer_init(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); + pTimer->aSubTimers[iCpu].u.Hr.LnxTimer.function = rtTimerLinuxHrCallback; ++#endif + } + else + #endif diff --git a/virtualbox.changes b/virtualbox.changes index a0862cc..56c3a31 100644 --- a/virtualbox.changes +++ b/virtualbox.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Wed Apr 9 09:02:26 UTC 2025 - Jiri Slaby + +- build with kernel 6.15, add: + * kernel-6-15-EXTRA_CFLAGS.patch + * kernel-6-15-fb_probe.patch -- this disables fb_probe and needs + a rewrite similar to "9fa154f40eb6 drm/{i915,xe}: Run DRM default + client setup". Good luck. + * kernel-6-15-mkdir.patch + * kernel-6-15-mode_valid.patch + * kernel-6-15-timer.patch + ------------------------------------------------------------------- Fri Mar 28 10:06:19 UTC 2025 - Jan Engelhardt diff --git a/virtualbox.spec b/virtualbox.spec index 36e3241..47840d3 100644 --- a/virtualbox.spec +++ b/virtualbox.spec @@ -126,6 +126,11 @@ Patch10: fix_for_leap15.5.patch Patch11: cxx17.patch Patch12: host-source.patch Patch14: kernel-6-14.patch +Patch15: kernel-6-15-EXTRA_CFLAGS.patch +Patch16: kernel-6-15-timer.patch +Patch17: kernel-6-15-mkdir.patch +Patch18: kernel-6-15-mode_valid.patch +Patch19: kernel-6-15-fb_probe.patch # # Common BuildRequires for both virtualbox and virtualbox-kmp BuildRequires: %{kernel_module_package_buildreqs} -- 2.51.1