From e7104141165fec187f2bea45367839553667afad Mon Sep 17 00:00:00 2001 From: Carsten Grohmann Date: Mon, 27 Mar 2023 20:19:46 +0200 Subject: [PATCH] Add GFP flags for kernel 6.0 --- OOMAnalyser.html | 1 + OOMAnalyser.py | 93 ++++++++++++++++++++++++++++++++++++++++++++++++ test.py | 2 +- 3 files changed, 95 insertions(+), 1 deletion(-) diff --git a/OOMAnalyser.html b/OOMAnalyser.html index d20ba61..4ba1c66 100644 --- a/OOMAnalyser.html +++ b/OOMAnalyser.html @@ -1091,6 +1091,7 @@ window.onerror = function (msg, url, lineNo, columnNo, errorObj) {
  • Add check for heavy memory fragmentation
  • Summary of the analysis revised
  • Show memory watermarks together will all details
  • +
  • Add GFP flags for kernel 6.0
  • ...
  • diff --git a/OOMAnalyser.py b/OOMAnalyser.py index 56842b4..ee9d128 100644 --- a/OOMAnalyser.py +++ b/OOMAnalyser.py @@ -2446,7 +2446,100 @@ class KernelConfig_5_18(KernelConfig_5_14): } +class KernelConfig_6_0(KernelConfig_5_18): + # Supported changes: + # * update GFP flags + + name = "Configuration for Linux kernel 6.0 or later" + release = (6, 0, "") + + # NOTE: These flags are automatically extracted from a gfp.h file. + # Please do not change them manually! + GFP_FLAGS = { + # + # + # Useful GFP flag combinations: + "GFP_ATOMIC": {"value": "__GFP_HIGH | __GFP_ATOMIC | __GFP_KSWAPD_RECLAIM"}, + "GFP_HIGHUSER": {"value": "GFP_USER | __GFP_HIGHMEM"}, + "GFP_HIGHUSER_MOVABLE": { + "value": "GFP_HIGHUSER | __GFP_MOVABLE | __GFP_SKIP_KASAN_POISON | __GFP_SKIP_KASAN_UNPOISON" + }, + "GFP_KERNEL": {"value": "__GFP_RECLAIM | __GFP_IO | __GFP_FS"}, + "GFP_KERNEL_ACCOUNT": {"value": "GFP_KERNEL | __GFP_ACCOUNT"}, + "GFP_NOFS": {"value": "__GFP_RECLAIM | __GFP_IO"}, + "GFP_NOIO": {"value": "__GFP_RECLAIM"}, + "GFP_NOWAIT": {"value": "__GFP_KSWAPD_RECLAIM"}, + "GFP_TRANSHUGE": {"value": "GFP_TRANSHUGE_LIGHT | __GFP_DIRECT_RECLAIM"}, + "GFP_TRANSHUGE_LIGHT": { + "value": "GFP_HIGHUSER_MOVABLE | __GFP_COMP | __GFP_NOMEMALLOC | __GFP_NOWARN & ~__GFP_RECLAIM" + }, + "GFP_USER": {"value": "__GFP_RECLAIM | __GFP_IO | __GFP_FS | __GFP_HARDWALL"}, + # + # + # Modifier, mobility and placement hints: + "__GFP_ACCOUNT": {"value": "___GFP_ACCOUNT"}, + "__GFP_ATOMIC": {"value": "___GFP_ATOMIC"}, + "__GFP_COMP": {"value": "___GFP_COMP"}, + "__GFP_DIRECT_RECLAIM": {"value": "___GFP_DIRECT_RECLAIM"}, + "__GFP_DMA": {"value": "___GFP_DMA"}, + "__GFP_DMA32": {"value": "___GFP_DMA32"}, + "__GFP_FS": {"value": "___GFP_FS"}, + "__GFP_HARDWALL": {"value": "___GFP_HARDWALL"}, + "__GFP_HIGH": {"value": "___GFP_HIGH"}, + "__GFP_HIGHMEM": {"value": "___GFP_HIGHMEM"}, + "__GFP_IO": {"value": "___GFP_IO"}, + "__GFP_KSWAPD_RECLAIM": {"value": "___GFP_KSWAPD_RECLAIM"}, + "__GFP_MEMALLOC": {"value": "___GFP_MEMALLOC"}, + "__GFP_MOVABLE": {"value": "___GFP_MOVABLE"}, + "__GFP_NOFAIL": {"value": "___GFP_NOFAIL"}, + "__GFP_NOLOCKDEP": {"value": "___GFP_NOLOCKDEP"}, + "__GFP_NOMEMALLOC": {"value": "___GFP_NOMEMALLOC"}, + "__GFP_NORETRY": {"value": "___GFP_NORETRY"}, + "__GFP_NOWARN": {"value": "___GFP_NOWARN"}, + "__GFP_RECLAIM": {"value": "___GFP_DIRECT_RECLAIM | ___GFP_KSWAPD_RECLAIM"}, + "__GFP_RECLAIMABLE": {"value": "___GFP_RECLAIMABLE"}, + "__GFP_RETRY_MAYFAIL": {"value": "___GFP_RETRY_MAYFAIL"}, + "__GFP_SKIP_KASAN_POISON": {"value": "___GFP_SKIP_KASAN_POISON"}, + "__GFP_SKIP_KASAN_UNPOISON": {"value": "___GFP_SKIP_KASAN_UNPOISON"}, + "__GFP_SKIP_ZERO": {"value": "___GFP_SKIP_ZERO"}, + "__GFP_WRITE": {"value": "___GFP_WRITE"}, + "__GFP_ZERO": {"value": "___GFP_ZERO"}, + "__GFP_ZEROTAGS": {"value": "___GFP_ZEROTAGS"}, + # + # + # Plain integer GFP bitmasks (for internal use only): + "___GFP_DMA": {"value": 0x01}, + "___GFP_HIGHMEM": {"value": 0x02}, + "___GFP_DMA32": {"value": 0x04}, + "___GFP_MOVABLE": {"value": 0x08}, + "___GFP_RECLAIMABLE": {"value": 0x10}, + "___GFP_HIGH": {"value": 0x20}, + "___GFP_IO": {"value": 0x40}, + "___GFP_FS": {"value": 0x80}, + "___GFP_ZERO": {"value": 0x100}, + "___GFP_ATOMIC": {"value": 0x200}, + "___GFP_DIRECT_RECLAIM": {"value": 0x400}, + "___GFP_KSWAPD_RECLAIM": {"value": 0x800}, + "___GFP_WRITE": {"value": 0x1000}, + "___GFP_NOWARN": {"value": 0x2000}, + "___GFP_RETRY_MAYFAIL": {"value": 0x4000}, + "___GFP_NOFAIL": {"value": 0x8000}, + "___GFP_NORETRY": {"value": 0x10000}, + "___GFP_MEMALLOC": {"value": 0x20000}, + "___GFP_COMP": {"value": 0x40000}, + "___GFP_NOMEMALLOC": {"value": 0x80000}, + "___GFP_HARDWALL": {"value": 0x100000}, + "___GFP_ACCOUNT": {"value": 0x400000}, + "___GFP_ZEROTAGS": {"value": 0x800000}, + "___GFP_SKIP_ZERO": {"value": 0x1000000}, + "___GFP_SKIP_KASAN_UNPOISON": {"value": 0x2000000}, + "___GFP_SKIP_KASAN_POISON": {"value": 0x4000000}, + "___GFP_NOLOCKDEP": {"value": 0x8000000}, + } + + AllKernelConfigs = [ + KernelConfig_6_0(), KernelConfig_5_18(), KernelConfig_5_14(), KernelConfig_5_8(), diff --git a/test.py b/test.py index d589577..c25a70c 100755 --- a/test.py +++ b/test.py @@ -776,7 +776,7 @@ Hardware name: HP ProLiant DL385 G7, BIOS A18 12/08/2012 "CPU: 4 PID: 29481 Comm: sed Not tainted 5.23.0 #1", ), ( - OOMAnalyser.KernelConfig_5_18(), + OOMAnalyser.KernelConfig_6_0(), "CPU: 4 PID: 29481 Comm: sed Not tainted 6.12.0 #1", ), (