From 20ba5a01cfa46a3c56dc26b57f2f922afba61a4b Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 19 Jan 2016 21:09:11 +0000 Subject: [PATCH] kernel: modularize dma shared buffer code to eliminate kernel bloat Signed-off-by: Felix Fietkau SVN-Revision: 48371 --- package/kernel/linux/modules/other.mk | 10 ++++++ package/kernel/linux/modules/video.mk | 1 + .../patches-3.18/904-debloat_dma_buf.patch | 35 +++++++++++++++++++ .../patches-4.1/904-debloat_dma_buf.patch | 35 +++++++++++++++++++ .../patches-4.3/904-debloat_dma_buf.patch | 35 +++++++++++++++++++ .../patches-4.4/904-debloat_dma_buf.patch | 35 +++++++++++++++++++ 6 files changed, 151 insertions(+) create mode 100644 target/linux/generic/patches-3.18/904-debloat_dma_buf.patch create mode 100644 target/linux/generic/patches-4.1/904-debloat_dma_buf.patch create mode 100644 target/linux/generic/patches-4.3/904-debloat_dma_buf.patch create mode 100644 target/linux/generic/patches-4.4/904-debloat_dma_buf.patch diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk index 62fdc3cd69..b244fbe538 100644 --- a/package/kernel/linux/modules/other.mk +++ b/package/kernel/linux/modules/other.mk @@ -130,6 +130,16 @@ endef $(eval $(call KernelPackage,bluetooth-hci-h4p)) +define KernelPackage/dma-buf + TITLE:=DMA shared buffer support + HIDDEN:=1 + KCONFIG:=CONFIG_DMA_SHARED_BUFFER + FILES:=$(LINUX_DIR)/drivers/dma-buf/dma-shared-buffer.ko + AUTOLOAD:=$(call AutoLoad,20,dma-shared-buffer) +endef +$(eval $(call KernelPackage,dma-buf)) + + define KernelPackage/eeprom-93cx6 SUBMENU:=$(OTHER_MENU) TITLE:=EEPROM 93CX6 support diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk index 0fcacb2d89..4226adc33a 100644 --- a/package/kernel/linux/modules/video.mk +++ b/package/kernel/linux/modules/video.mk @@ -121,6 +121,7 @@ endef define KernelPackage/video-videobuf2 TITLE:=videobuf2 lib + DEPENDS:=+kmod-dma-buf KCONFIG:= \ CONFIG_VIDEOBUF2_CORE \ CONFIG_VIDEOBUF2_MEMOPS \ diff --git a/target/linux/generic/patches-3.18/904-debloat_dma_buf.patch b/target/linux/generic/patches-3.18/904-debloat_dma_buf.patch new file mode 100644 index 0000000000..dc6a3b93dc --- /dev/null +++ b/target/linux/generic/patches-3.18/904-debloat_dma_buf.patch @@ -0,0 +1,35 @@ +--- a/drivers/base/Kconfig ++++ b/drivers/base/Kconfig +@@ -229,7 +229,7 @@ config SOC_BUS + source "drivers/base/regmap/Kconfig" + + config DMA_SHARED_BUFFER +- bool ++ tristate + default n + select ANON_INODES + help +--- a/drivers/dma-buf/Makefile ++++ b/drivers/dma-buf/Makefile +@@ -1 +1,2 @@ +-obj-y := dma-buf.o fence.o reservation.o seqno-fence.o ++obj-$(CONFIG_DMA_SHARED_BUFFER) := dma-shared-buffer.o ++dma-shared-buffer-objs := dma-buf.o fence.o reservation.o seqno-fence.o +--- a/drivers/dma-buf/dma-buf.c ++++ b/drivers/dma-buf/dma-buf.c +@@ -904,4 +904,4 @@ static void __exit dma_buf_deinit(void) + { + dma_buf_uninit_debugfs(); + } +-__exitcall(dma_buf_deinit); ++module_exit(dma_buf_deinit); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1801,6 +1801,7 @@ int wake_up_state(struct task_struct *p, + { + return try_to_wake_up(p, state, 0); + } ++EXPORT_SYMBOL_GPL(wake_up_state); + + /* + * This function clears the sched_dl_entity static params. diff --git a/target/linux/generic/patches-4.1/904-debloat_dma_buf.patch b/target/linux/generic/patches-4.1/904-debloat_dma_buf.patch new file mode 100644 index 0000000000..b14e1d2e9d --- /dev/null +++ b/target/linux/generic/patches-4.1/904-debloat_dma_buf.patch @@ -0,0 +1,35 @@ +--- a/drivers/base/Kconfig ++++ b/drivers/base/Kconfig +@@ -229,7 +229,7 @@ config SOC_BUS + source "drivers/base/regmap/Kconfig" + + config DMA_SHARED_BUFFER +- bool ++ tristate + default n + select ANON_INODES + help +--- a/drivers/dma-buf/Makefile ++++ b/drivers/dma-buf/Makefile +@@ -1 +1,2 @@ +-obj-y := dma-buf.o fence.o reservation.o seqno-fence.o ++obj-$(CONFIG_DMA_SHARED_BUFFER) := dma-shared-buffer.o ++dma-shared-buffer-objs := dma-buf.o fence.o reservation.o seqno-fence.o +--- a/drivers/dma-buf/dma-buf.c ++++ b/drivers/dma-buf/dma-buf.c +@@ -901,4 +901,4 @@ static void __exit dma_buf_deinit(void) + { + dma_buf_uninit_debugfs(); + } +-__exitcall(dma_buf_deinit); ++module_exit(dma_buf_deinit); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1768,6 +1768,7 @@ int wake_up_state(struct task_struct *p, + { + return try_to_wake_up(p, state, 0); + } ++EXPORT_SYMBOL_GPL(wake_up_state); + + /* + * This function clears the sched_dl_entity static params. diff --git a/target/linux/generic/patches-4.3/904-debloat_dma_buf.patch b/target/linux/generic/patches-4.3/904-debloat_dma_buf.patch new file mode 100644 index 0000000000..a47c7a8ad2 --- /dev/null +++ b/target/linux/generic/patches-4.3/904-debloat_dma_buf.patch @@ -0,0 +1,35 @@ +--- a/drivers/base/Kconfig ++++ b/drivers/base/Kconfig +@@ -229,7 +229,7 @@ config SOC_BUS + source "drivers/base/regmap/Kconfig" + + config DMA_SHARED_BUFFER +- bool ++ tristate + default n + select ANON_INODES + help +--- a/drivers/dma-buf/Makefile ++++ b/drivers/dma-buf/Makefile +@@ -1 +1,2 @@ +-obj-y := dma-buf.o fence.o reservation.o seqno-fence.o ++obj-$(CONFIG_DMA_SHARED_BUFFER) := dma-shared-buffer.o ++dma-shared-buffer-objs := dma-buf.o fence.o reservation.o seqno-fence.o +--- a/drivers/dma-buf/dma-buf.c ++++ b/drivers/dma-buf/dma-buf.c +@@ -914,4 +914,4 @@ static void __exit dma_buf_deinit(void) + { + dma_buf_uninit_debugfs(); + } +-__exitcall(dma_buf_deinit); ++module_exit(dma_buf_deinit); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2040,6 +2040,7 @@ int wake_up_state(struct task_struct *p, + { + return try_to_wake_up(p, state, 0); + } ++EXPORT_SYMBOL_GPL(wake_up_state); + + /* + * This function clears the sched_dl_entity static params. diff --git a/target/linux/generic/patches-4.4/904-debloat_dma_buf.patch b/target/linux/generic/patches-4.4/904-debloat_dma_buf.patch new file mode 100644 index 0000000000..e7b7f72442 --- /dev/null +++ b/target/linux/generic/patches-4.4/904-debloat_dma_buf.patch @@ -0,0 +1,35 @@ +--- a/drivers/base/Kconfig ++++ b/drivers/base/Kconfig +@@ -229,7 +229,7 @@ config SOC_BUS + source "drivers/base/regmap/Kconfig" + + config DMA_SHARED_BUFFER +- bool ++ tristate + default n + select ANON_INODES + help +--- a/drivers/dma-buf/Makefile ++++ b/drivers/dma-buf/Makefile +@@ -1 +1,2 @@ +-obj-y := dma-buf.o fence.o reservation.o seqno-fence.o ++obj-$(CONFIG_DMA_SHARED_BUFFER) := dma-shared-buffer.o ++dma-shared-buffer-objs := dma-buf.o fence.o reservation.o seqno-fence.o +--- a/drivers/dma-buf/dma-buf.c ++++ b/drivers/dma-buf/dma-buf.c +@@ -914,4 +914,4 @@ static void __exit dma_buf_deinit(void) + { + dma_buf_uninit_debugfs(); + } +-__exitcall(dma_buf_deinit); ++module_exit(dma_buf_deinit); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2072,6 +2072,7 @@ int wake_up_state(struct task_struct *p, + { + return try_to_wake_up(p, state, 0); + } ++EXPORT_SYMBOL_GPL(wake_up_state); + + /* + * This function clears the sched_dl_entity static params.