From 9df30a2e36b9246acdb553a513926458df3c32cd Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Fri, 14 Oct 2022 14:10:12 +0800 Subject: [PATCH] kernel: fix linux 6.0 drm support --- package/kernel/linux/modules/video.mk | 9 +- .../hack-6.0/904-debloat_dma_buf.patch | 93 +++++++++++++++++++ 2 files changed, 98 insertions(+), 4 deletions(-) create mode 100644 target/linux/generic/hack-6.0/904-debloat_dma_buf.patch diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk index 88955a8b2..90d1f1584 100644 --- a/package/kernel/linux/modules/video.mk +++ b/package/kernel/linux/modules/video.mk @@ -302,8 +302,10 @@ define KernelPackage/drm-display-helper TITLE:=DRM helpers for display adapters drivers DEPENDS:=@DISPLAY_SUPPORT +kmod-drm @(LINUX_5_19||LINUX_6_0) KCONFIG:= \ - CONFIG_DRM_DISPLAY_HELPER - FILES:=$(LINUX_DIR)/drivers/gpu/drm/display/drm_display_helper.ko + CONFIG_DRM_DISPLAY_HELPER \ + CONFIG_DRM_BUDDY + FILES:=$(LINUX_DIR)/drivers/gpu/drm/display/drm_display_helper.ko \ + $(LINUX_DIR)/drivers/gpu/drm/drm_buddy.ko AUTOLOAD:=$(call AutoProbe,drm_display_helper) endef @@ -1110,8 +1112,7 @@ define KernelPackage/drm-i915 CONFIG_DRM_I915_USERPTR=y \ CONFIG_DRM_I915_WERROR=n FILES:= \ - $(LINUX_DIR)/drivers/gpu/drm/i915/i915.ko \ - $(LINUX_DIR)/drivers/gpu/drm/drm_buddy.ko@ge5.18 + $(LINUX_DIR)/drivers/gpu/drm/i915/i915.ko AUTOLOAD:=$(call AutoProbe,i915) endef diff --git a/target/linux/generic/hack-6.0/904-debloat_dma_buf.patch b/target/linux/generic/hack-6.0/904-debloat_dma_buf.patch new file mode 100644 index 000000000..82b205a4f --- /dev/null +++ b/target/linux/generic/hack-6.0/904-debloat_dma_buf.patch @@ -0,0 +1,93 @@ +From e3692cb2fcd5ba1244512a0f43b8118f65f1c375 Mon Sep 17 00:00:00 2001 +From: Felix Fietkau +Date: Sat, 8 Jul 2017 08:20:43 +0200 +Subject: debloat: dmabuf + +Signed-off-by: Felix Fietkau +--- + drivers/base/Kconfig | 2 +- + drivers/dma-buf/Makefile | 10 +++++++--- + drivers/dma-buf/dma-buf.c | 4 +++- + kernel/sched/core.c | 1 + + 4 files changed, 12 insertions(+), 5 deletions(-) + +--- a/drivers/base/Kconfig ++++ b/drivers/base/Kconfig +@@ -198,7 +198,7 @@ config SOC_BUS + source "drivers/base/regmap/Kconfig" + + config DMA_SHARED_BUFFER +- bool ++ tristate + default n + select IRQ_WORK + help +--- a/drivers/dma-buf/heaps/Makefile ++++ b/drivers/dma-buf/heaps/Makefile +@@ -1,3 +1,3 @@ + # SPDX-License-Identifier: GPL-2.0 +-obj-$(CONFIG_DMABUF_HEAPS_SYSTEM) += system_heap.o +-obj-$(CONFIG_DMABUF_HEAPS_CMA) += cma_heap.o ++dma-buf-objs-$(CONFIG_DMABUF_HEAPS_SYSTEM) += system_heap.o ++dma-buf-objs-$(CONFIG_DMABUF_HEAPS_CMA) += cma_heap.o +--- a/drivers/dma-buf/Makefile ++++ b/drivers/dma-buf/Makefile +@@ -1,12 +1,14 @@ + # SPDX-License-Identifier: GPL-2.0-only +-obj-y := dma-buf.o dma-fence.o dma-fence-array.o dma-fence-chain.o \ ++obj-$(CONFIG_DMA_SHARED_BUFFER) := dma-shared-buffer.o ++ ++dma-buf-objs-y := dma-buf.o dma-fence.o dma-fence-array.o dma-fence-chain.o \ + dma-fence-unwrap.o dma-resv.o +-obj-$(CONFIG_DMABUF_HEAPS) += dma-heap.o +-obj-$(CONFIG_DMABUF_HEAPS) += heaps/ +-obj-$(CONFIG_SYNC_FILE) += sync_file.o +-obj-$(CONFIG_SW_SYNC) += sw_sync.o sync_debug.o +-obj-$(CONFIG_UDMABUF) += udmabuf.o +-obj-$(CONFIG_DMABUF_SYSFS_STATS) += dma-buf-sysfs-stats.o ++dma-buf-objs-$(CONFIG_DMABUF_HEAPS) += dma-heap.o ++obj-$(CONFIG_DMABUF_HEAPS) += heaps/ ++dma-buf-objs-$(CONFIG_SYNC_FILE) += sync_file.o ++dma-buf-objs-$(CONFIG_SW_SYNC) += sw_sync.o sync_debug.o ++dma-buf-objs-$(CONFIG_UDMABUF) += udmabuf.o ++dma-buf-objs-$(CONFIG_DMABUF_SYSFS_STATS) += udmabuf.o + + dmabuf_selftests-y := \ + selftest.o \ +@@ -15,4 +17,6 @@ dmabuf_selftests-y := \ + st-dma-fence-unwrap.o \ + st-dma-resv.o + +-obj-$(CONFIG_DMABUF_SELFTESTS) += dmabuf_selftests.o ++dma-buf-objs-$(CONFIG_DMABUF_SELFTESTS) += dmabuf_selftests.o ++ ++dma-shared-buffer-objs := $(dma-buf-objs-y) +--- a/drivers/dma-buf/dma-buf.c ++++ b/drivers/dma-buf/dma-buf.c +@@ -1473,4 +1473,5 @@ static void __exit dma_buf_deinit(void) + kern_unmount(dma_buf_mnt); + dma_buf_uninit_sysfs_statistics(); + } +-__exitcall(dma_buf_deinit); ++module_exit(dma_buf_deinit); ++MODULE_LICENSE("GPL"); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4293,6 +4293,7 @@ int wake_up_state(struct task_struct *p, + { + return try_to_wake_up(p, state, 0); + } ++EXPORT_SYMBOL_GPL(wake_up_state); + + /* + * Perform scheduler related setup for a newly forked process p. +--- a/fs/d_path.c ++++ b/fs/d_path.c +@@ -314,6 +314,7 @@ char *dynamic_dname(struct dentry *dentr + buffer += buflen - sz; + return memcpy(buffer, temp, sz); + } ++EXPORT_SYMBOL_GPL(dynamic_dname); + + char *simple_dname(struct dentry *dentry, char *buffer, int buflen) + {