summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0003-zram-Shrink-zram_table_entry-flags.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0003-zram-Shrink-zram_table_entry-flags.patch')
-rw-r--r--debian/patches-rt/0003-zram-Shrink-zram_table_entry-flags.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/debian/patches-rt/0003-zram-Shrink-zram_table_entry-flags.patch b/debian/patches-rt/0003-zram-Shrink-zram_table_entry-flags.patch
new file mode 100644
index 0000000000..153dee8fd2
--- /dev/null
+++ b/debian/patches-rt/0003-zram-Shrink-zram_table_entry-flags.patch
@@ -0,0 +1,48 @@
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Thu, 20 Jun 2024 12:53:06 +0200
+Subject: [PATCH 3/3] zram: Shrink zram_table_entry::flags.
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.10/older/patches-6.10.2-rt14.tar.xz
+
+The zram_table_entry::flags member is of type long and uses 8 bytes on a
+64bit architecture. With a PAGE_SIZE of 256KiB we have PAGE_SHIFT of 18
+which in turn leads to __NR_ZRAM_PAGEFLAGS = 27. This still fits in an
+ordinary integer.
+By reducing it the size of `flags' to four bytes, the size of the struct
+goes back to 16 bytes. The padding between the lock and ac_time (if
+enabled) is also gone.
+
+Make zram_table_entry::flags an unsigned int and update the build test
+to reflect the change.
+
+Link: https://lore.kernel.org/r/20240620153556.777272-4-bigeasy@linutronix.de
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ drivers/block/zram/zram_drv.c | 3 ++-
+ drivers/block/zram/zram_drv.h | 2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/block/zram/zram_drv.c
++++ b/drivers/block/zram/zram_drv.c
+@@ -2412,9 +2412,10 @@ static void destroy_devices(void)
+
+ static int __init zram_init(void)
+ {
++ struct zram_table_entry zram_te;
+ int ret;
+
+- BUILD_BUG_ON(__NR_ZRAM_PAGEFLAGS > BITS_PER_LONG);
++ BUILD_BUG_ON(__NR_ZRAM_PAGEFLAGS > sizeof(zram_te.flags) * 8);
+
+ ret = cpuhp_setup_state_multi(CPUHP_ZCOMP_PREPARE, "block/zram:prepare",
+ zcomp_cpu_up_prepare, zcomp_cpu_dead);
+--- a/drivers/block/zram/zram_drv.h
++++ b/drivers/block/zram/zram_drv.h
+@@ -66,7 +66,7 @@ struct zram_table_entry {
+ unsigned long handle;
+ unsigned long element;
+ };
+- unsigned long flags;
++ unsigned int flags;
+ spinlock_t lock;
+ #ifdef CONFIG_ZRAM_TRACK_ENTRY_ACTIME
+ ktime_t ac_time;