From: Tom Zanussi <[email protected]>
Dear RT Folks,
This is the RT stable review cycle of patch 5.4.109-rt56-rc1.
Please scream at me if I messed something up. Please test the patches
too.
The -rc release will be uploaded to kernel.org and will be deleted
when the final release is out. This is just a review release (or
release candidate).
The pre-releases will not be pushed to the git repository, only the
final release is.
If all goes well, this patch will be converted to the next main
release on 2021-04-12.
To build 5.4.109-rt56-rc1 directly, the following patches should be applied:
https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.xz
https://www.kernel.org/pub/linux/kernel/v5.x/patch-5.4.109.xz
https://www.kernel.org/pub/linux/kernel/projects/rt/5.4/patch-5.4.109-rt56-rc1.patch.xz
You can also build from 5.4.109-rt55 by applying the incremental patch:
https://www.kernel.org/pub/linux/kernel/projects/rt/5.4/incr/patch-5.4.109-rt55-rt56-rc1.patch.xz
Enjoy,
-- Tom
Sebastian Andrzej Siewior (1):
mm: slub: Don't resize the location tracking cache on PREEMPT_RT
Tom Zanussi (1):
Linux 5.4.109-rt56-rc1
localversion-rt | 2 +-
mm/slub.c | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
--
2.17.1
From: Sebastian Andrzej Siewior <[email protected]>
v5.4.109-rt56-rc1 stable review patch.
If anyone has any objections, please let me know.
-----------
[ Upstream commit 87bd0bf324f4c5468ea3d1de0482589f491f3145 ]
The location tracking cache has a size of a page and is resized if its
current size is too small.
This allocation happens with disabled interrupts and can't happen on
PREEMPT_RT.
Should one page be too small, then we have to allocate more at the
beginning. The only downside is that less callers will be visible.
Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
Signed-off-by: Tom Zanussi <[email protected]>
---
mm/slub.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/mm/slub.c b/mm/slub.c
index 1815e28852fe..0d78368d149a 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4647,6 +4647,9 @@ static int alloc_loc_track(struct loc_track *t, unsigned long max, gfp_t flags)
struct location *l;
int order;
+ if (IS_ENABLED(CONFIG_PREEMPT_RT) && flags == GFP_ATOMIC)
+ return 0;
+
order = get_order(sizeof(struct location) * max);
l = (void *)__get_free_pages(flags, order);
--
2.17.1