mirror of
https://anongit.gentoo.org/git/repo/gentoo.git
synced 2025-07-22 15:09:04 +02:00
The patch was incomplete. Bug: https://bugs.gentoo.org/956675 Signed-off-by: Viorel Munteanu <ceamac@gentoo.org>
251 lines
9.3 KiB
Diff
251 lines
9.3 KiB
Diff
Add initial support for kernel 6.15.0.
|
|
Patch obtained by comparing sources from 7.1.8 and 7.2.0_BETA1 where upstream added support.
|
|
https://bugs.gentoo.org/956675
|
|
|
|
--- a/vboxguest/Makefile-footer.gmk
|
|
+++ b/vboxguest/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
|
|
|
|
--- a/vboxguest/r0drv/linux/timer-r0drv-linux.c
|
|
+++ b/vboxguest/r0drv/linux/timer-r0drv-linux.c
|
|
@@ -422,7 +422,11 @@ static void rtTimerLnxStopSubTimer(PRTTIMERLNXSUBTIMER pSubTimer, bool fHighRes)
|
|
}
|
|
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 pTimer)
|
|
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,13 @@ RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_t u64NanoInterval, uint32_
|
|
#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
|
|
--- a/vboxsf/Makefile-footer.gmk
|
|
+++ b/vboxsf/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
|
|
|
|
--- a/vboxsf/dirops.c
|
|
+++ b/vboxsf/dirops.c
|
|
@@ -1088,7 +1088,9 @@ static int vbsf_inode_create(struct inode *parent, struct dentry *dentry, int mo
|
|
* @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,22 @@ static int vbsf_inode_mkdir(struct inode *parent, struct dentry *dentry, umode_t
|
|
static int vbsf_inode_mkdir(struct inode *parent, struct dentry *dentry, int mode)
|
|
#endif
|
|
{
|
|
+ int rc;
|
|
+
|
|
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,
|
|
- 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*/);
|
|
+
|
|
+ rc = 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(rc);
|
|
+#else
|
|
+ return rc;
|
|
+#endif
|
|
}
|
|
|
|
|
|
--- a/vboxvideo/Makefile-footer.gmk
|
|
+++ b/vboxvideo/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
|
|
|
|
--- a/vboxvideo/vbox_fb.c
|
|
+++ b/vboxvideo/vbox_fb.c
|
|
@@ -260,7 +260,7 @@ static struct fb_info *drm_fb_helper_alloc_fbi(struct drm_fb_helper *helper)
|
|
}
|
|
#endif
|
|
|
|
-static int vboxfb_create(struct drm_fb_helper *helper,
|
|
+int vboxfb_create(struct drm_fb_helper *helper,
|
|
struct drm_fb_helper_surface_size *sizes)
|
|
{
|
|
struct vbox_fbdev *fbdev =
|
|
@@ -407,9 +407,11 @@ static int vboxfb_create(struct drm_fb_helper *helper,
|
|
return 0;
|
|
}
|
|
|
|
+#if RTLNX_VER_MAX(6,15,0)
|
|
static struct drm_fb_helper_funcs vbox_fb_helper_funcs = {
|
|
.fb_probe = vboxfb_create,
|
|
};
|
|
+#endif
|
|
|
|
#if RTLNX_VER_MAX(4,3,0) && !RTLNX_RHEL_MAJ_PREREQ(7,3)
|
|
static void drm_fb_helper_unregister_fbi(struct drm_fb_helper *fb_helper)
|
|
@@ -478,7 +480,9 @@ int vbox_fbdev_init(struct drm_device *dev)
|
|
vbox->fbdev = fbdev;
|
|
spin_lock_init(&fbdev->dirty_lock);
|
|
|
|
-#if RTLNX_VER_MIN(6,3,0) || RTLNX_RHEL_RANGE(8,9, 8,99) || RTLNX_RHEL_RANGE(9,3, 9,99)
|
|
+#if RTLNX_VER_MIN(6,15,0)
|
|
+ drm_fb_helper_prepare(dev, &fbdev->helper, 32, NULL);
|
|
+#elif RTLNX_VER_MIN(6,3,0) || RTLNX_RHEL_RANGE(8,9, 8,99) || RTLNX_RHEL_RANGE(9,3, 9,99)
|
|
drm_fb_helper_prepare(dev, &fbdev->helper, 32, &vbox_fb_helper_funcs);
|
|
#elif RTLNX_VER_MIN(3,17,0) || RTLNX_RHEL_MIN(7,2)
|
|
drm_fb_helper_prepare(dev, &fbdev->helper, &vbox_fb_helper_funcs);
|
|
--- a/vboxvideo/vbox_mode.c
|
|
+++ b/vboxvideo/vbox_mode.c
|
|
@@ -653,12 +653,13 @@ static int vbox_get_modes(struct drm_connector *connector)
|
|
return num_modes;
|
|
}
|
|
|
|
-#if RTLNX_VER_MAX(3,14,0) && !RTLNX_RHEL_MAJ_PREREQ(7,1)
|
|
-static int vbox_mode_valid(struct drm_connector *connector,
|
|
+#if RTLNX_VER_MIN(6,15,0)
|
|
+static enum drm_mode_status vbox_mode_valid(struct drm_connector *connector, const struct drm_display_mode *mode)
|
|
+#elif RTLNX_VER_MIN(3,14,0) || RTLNX_RHEL_MAJ_PREREQ(7,1)
|
|
+static enum drm_mode_status vbox_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode)
|
|
#else
|
|
-static enum drm_mode_status vbox_mode_valid(struct drm_connector *connector,
|
|
+static int vbox_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode)
|
|
#endif
|
|
- struct drm_display_mode *mode)
|
|
{
|
|
return MODE_OK;
|
|
}
|
|
--- a/vboxvideo/vbox_drv.c
|
|
+++ b/vboxvideo/vbox_drv.c
|
|
@@ -39,6 +39,10 @@
|
|
# include <drm/drm_probe_helper.h>
|
|
#endif
|
|
|
|
+#if RTLNX_VER_MIN(6,13,0) && defined(CONFIG_APERTURE_HELPERS)
|
|
+# include <linux/aperture.h>
|
|
+#endif
|
|
+
|
|
#if RTLNX_VER_RANGE(5,14,0, 6,13,0) || RTLNX_RHEL_RANGE(8,6, 8,99)
|
|
# include <drm/drm_aperture.h>
|
|
#endif
|
|
@@ -88,7 +92,9 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
}
|
|
#endif
|
|
|
|
-# if RTLNX_VER_RANGE(5,14,0, 6,13,0) || RTLNX_RHEL_RANGE(8,6, 8,99)
|
|
+# if RTLNX_VER_MIN(6,13,0) && defined(CONFIG_APERTURE_HELPERS)
|
|
+ ret = aperture_remove_conflicting_pci_devices(pdev, driver.name);
|
|
+# elif RTLNX_VER_RANGE(5,14,0, 6,13,0) || RTLNX_RHEL_RANGE(8,6, 8,99)
|
|
# if RTLNX_VER_MIN(5,15,0) || RTLNX_RHEL_RANGE(8,7, 8,99) || RTLNX_RHEL_MIN(9,1) || RTLNX_SUSE_MAJ_PREREQ(15,4)
|
|
ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &driver);
|
|
# else
|
|
@@ -384,6 +390,9 @@ static struct drm_driver driver = {
|
|
.desc = DRIVER_DESC,
|
|
#if RTLNX_VER_MAX(6,14,0)
|
|
.date = DRIVER_DATE,
|
|
+#endif
|
|
+#if RTLNX_VER_MIN(6,15,0)
|
|
+ .fbdev_probe = vboxfb_create,
|
|
#endif
|
|
.major = DRIVER_MAJOR,
|
|
.minor = DRIVER_MINOR,
|
|
@@ -404,7 +413,9 @@ static struct drm_driver driver = {
|
|
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
|
|
#endif
|
|
.gem_prime_import = drm_gem_prime_import,
|
|
+#if RTLNX_VER_MAX(6,15,0)
|
|
.gem_prime_import_sg_table = vbox_gem_prime_import_sg_table,
|
|
+#endif
|
|
#if RTLNX_VER_MAX(6,6,0) && !RTLNX_RHEL_RANGE(9,4, 9,99) && !RTLNX_SUSE_MAJ_PREREQ(15, 6)
|
|
.gem_prime_mmap = vbox_gem_prime_mmap,
|
|
#endif
|
|
--- a/vboxvideo/vbox_prime.c
|
|
+++ b/vboxvideo/vbox_prime.c
|
|
@@ -49,18 +49,20 @@ struct sg_table *vbox_gem_prime_get_sg_table(struct drm_gem_object *obj)
|
|
return ERR_PTR(-ENOSYS);
|
|
}
|
|
|
|
-#if RTLNX_VER_MAX(3,18,0) && !RTLNX_RHEL_MAJ_PREREQ(7,2)
|
|
+#if RTLNX_VER_MAX(6,15,0)
|
|
+# if RTLNX_VER_MAX(3,18,0) && !RTLNX_RHEL_MAJ_PREREQ(7,2)
|
|
struct drm_gem_object *vbox_gem_prime_import_sg_table(
|
|
struct drm_device *dev, size_t size, struct sg_table *table)
|
|
-#else
|
|
+# else
|
|
struct drm_gem_object *vbox_gem_prime_import_sg_table(
|
|
struct drm_device *dev, struct dma_buf_attachment *attach,
|
|
struct sg_table *table)
|
|
-#endif
|
|
+# endif
|
|
{
|
|
WARN_ONCE(1, "not implemented");
|
|
return ERR_PTR(-ENOSYS);
|
|
}
|
|
+#endif
|
|
|
|
void *vbox_gem_prime_vmap(struct drm_gem_object *obj)
|
|
{
|
|
--- a/vboxvideo/vbox_drv.h
|
|
+++ b/vboxvideo/vbox_drv.h
|
|
@@ -428,6 +428,8 @@ int vbox_framebuffer_init(struct drm_device *dev,
|
|
#endif
|
|
struct drm_gem_object *obj);
|
|
|
|
+int vboxfb_create(struct drm_fb_helper *helper, struct drm_fb_helper_surface_size *sizes);
|
|
+
|
|
int vbox_fbdev_init(struct drm_device *dev);
|
|
void vbox_fbdev_fini(struct drm_device *dev);
|
|
void vbox_fbdev_set_base(struct vbox_private *vbox, unsigned long gpu_addr);
|