From 63ce5947ef45071d825d4712d6c5ece13f1ce2f6 Mon Sep 17 00:00:00 2001 From: Kuan-Ying Lee Date: Wed, 19 Jun 2024 15:49:06 +0800 Subject: scripts/gdb: redefine MAX_ORDER sanely Patch series "Fix GDB command error". This patchset fixes some GDB command errors. 1. Since memory layout of AARCH64 has been changed, we need to modify the layout in GDB scripts as well. 2. Fix pool_index naming of stackdepot. This patch (of 6): Change the definition of MAX_ORDER to be inclusive. Link: https://lkml.kernel.org/r/20240619074911.100434-1-kuan-ying.lee@canonical.com Link: https://lkml.kernel.org/r/20240619074911.100434-2-kuan-ying.lee@canonical.com Fixes: 23baf831a32c ("mm, treewide: redefine MAX_ORDER sanely") Signed-off-by: Kuan-Ying Lee Cc: Jan Kiszka Cc: Kieran Bingham Cc: Kirill A. Shutemov Cc: Michael Ellerman Signed-off-by: Andrew Morton --- scripts/gdb/linux/mm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts/gdb/linux/mm.py') diff --git a/scripts/gdb/linux/mm.py b/scripts/gdb/linux/mm.py index 515730fd4c9d..30738f174fe2 100644 --- a/scripts/gdb/linux/mm.py +++ b/scripts/gdb/linux/mm.py @@ -59,9 +59,9 @@ class aarch64_page_ops(): if str(constants.LX_CONFIG_ARCH_FORCE_MAX_ORDER).isdigit(): self.MAX_ORDER = constants.LX_CONFIG_ARCH_FORCE_MAX_ORDER else: - self.MAX_ORDER = 11 + self.MAX_ORDER = 10 - self.MAX_ORDER_NR_PAGES = 1 << (self.MAX_ORDER - 1) + self.MAX_ORDER_NR_PAGES = 1 << (self.MAX_ORDER) self.PFN_SECTION_SHIFT = self.SECTION_SIZE_BITS - self.PAGE_SHIFT self.NR_MEM_SECTIONS = 1 << self.SECTIONS_SHIFT self.PAGES_PER_SECTION = 1 << self.PFN_SECTION_SHIFT -- cgit v1.2.3 From f2eaed1565acc2bdeb5c433f5f6c7bd7a0d62db1 Mon Sep 17 00:00:00 2001 From: Kuan-Ying Lee Date: Wed, 19 Jun 2024 15:49:07 +0800 Subject: scripts/gdb: rework module VA range After we enlarge the module VA range, we also change the module VA range in gdb scripts. Link: https://lkml.kernel.org/r/20240619074911.100434-3-kuan-ying.lee@canonical.com Fixes: 3e35d303ab7d ("arm64: module: rework module VA range selection") Signed-off-by: Kuan-Ying Lee Cc: Jan Kiszka Cc: Kieran Bingham Cc: Kirill A. Shutemov Cc: Michael Ellerman Signed-off-by: Andrew Morton --- scripts/gdb/linux/mm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts/gdb/linux/mm.py') diff --git a/scripts/gdb/linux/mm.py b/scripts/gdb/linux/mm.py index 30738f174fe2..e0461248abe2 100644 --- a/scripts/gdb/linux/mm.py +++ b/scripts/gdb/linux/mm.py @@ -33,7 +33,7 @@ class aarch64_page_ops(): def __init__(self): self.SUBSECTION_SHIFT = 21 self.SEBSECTION_SIZE = 1 << self.SUBSECTION_SHIFT - self.MODULES_VSIZE = 128 * 1024 * 1024 + self.MODULES_VSIZE = 2 * 1024 * 1024 * 1024 if constants.LX_CONFIG_ARM64_64K_PAGES: self.SECTION_SIZE_BITS = 29 -- cgit v1.2.3 From 3c0e9a200434e8bb4a2bffbaaeb381bdff5a5938 Mon Sep 17 00:00:00 2001 From: Kuan-Ying Lee Date: Wed, 19 Jun 2024 15:49:08 +0800 Subject: scripts/gdb: change the layout of vmemmap We need to change the layout of vmemmap in gdb scripts after commit 32697ff38287 ("arm64: vmemmap: Avoid base2 order of struct page size to dimension region") changed it. Link: https://lkml.kernel.org/r/20240619074911.100434-4-kuan-ying.lee@canonical.com Fixes: 32697ff38287 ("arm64: vmemmap: Avoid base2 order of struct page size to dimension region") Signed-off-by: Kuan-Ying Lee Cc: Jan Kiszka Cc: Kieran Bingham Cc: Kirill A. Shutemov Cc: Michael Ellerman Signed-off-by: Andrew Morton --- scripts/gdb/linux/mm.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'scripts/gdb/linux/mm.py') diff --git a/scripts/gdb/linux/mm.py b/scripts/gdb/linux/mm.py index e0461248abe2..f8b9be3f43e8 100644 --- a/scripts/gdb/linux/mm.py +++ b/scripts/gdb/linux/mm.py @@ -89,10 +89,10 @@ class aarch64_page_ops(): self.MODULES_VADDR = self._PAGE_END(self.VA_BITS_MIN) self.MODULES_END = self.MODULES_VADDR + self.MODULES_VSIZE - self.VMEMMAP_SHIFT = (self.PAGE_SHIFT - self.STRUCT_PAGE_MAX_SHIFT) - self.VMEMMAP_SIZE = ((self._PAGE_END(self.VA_BITS_MIN) - self.PAGE_OFFSET) >> self.VMEMMAP_SHIFT) - self.VMEMMAP_START = (-(1 << (self.VA_BITS - self.VMEMMAP_SHIFT))) & 0xffffffffffffffff - self.VMEMMAP_END = self.VMEMMAP_START + self.VMEMMAP_SIZE + self.VMEMMAP_RANGE = self._PAGE_END(self.VA_BITS_MIN) - self.PAGE_OFFSET + self.VMEMMAP_SIZE = (self.VMEMMAP_RANGE >> self.PAGE_SHIFT) * self.struct_page_size + self.VMEMMAP_END = (-(1 * 1024 * 1024 * 1024)) & 0xffffffffffffffff + self.VMEMMAP_START = self.VMEMMAP_END - self.VMEMMAP_SIZE self.VMALLOC_START = self.MODULES_END self.VMALLOC_END = self.VMEMMAP_START - 256 * 1024 * 1024 -- cgit v1.2.3 From 04a40baec04fa0634d71ebfa0c91469160a9976e Mon Sep 17 00:00:00 2001 From: Kuan-Ying Lee Date: Wed, 19 Jun 2024 15:49:09 +0800 Subject: scripts/gdb: set vabits_actual based on TCR_EL1 We encounter the following issue after commit 9cce9c6c2c3b ("arm64: mm: Handle LVA support as a CPU feature"). (gdb) lx-slabinfo Python Exception : No symbol "vabits_actual" in current context. Error occurred in Python: No symbol "vabits_actual" in current context. We set vabits_actual based on TCR_EL1 value when VA_BITS is bigger than 48. Link: https://lkml.kernel.org/r/20240619074911.100434-5-kuan-ying.lee@canonical.com Fixes: 9cce9c6c2c3b ("arm64: mm: Handle LVA support as a CPU feature") Signed-off-by: Kuan-Ying Lee Cc: Jan Kiszka Cc: Kieran Bingham Cc: Kirill A. Shutemov Cc: Michael Ellerman Signed-off-by: Andrew Morton --- scripts/gdb/linux/mm.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'scripts/gdb/linux/mm.py') diff --git a/scripts/gdb/linux/mm.py b/scripts/gdb/linux/mm.py index f8b9be3f43e8..200def0e4b9a 100644 --- a/scripts/gdb/linux/mm.py +++ b/scripts/gdb/linux/mm.py @@ -48,7 +48,9 @@ class aarch64_page_ops(): self.VA_BITS = constants.LX_CONFIG_ARM64_VA_BITS if self.VA_BITS > 48: self.VA_BITS_MIN = 48 - self.vabits_actual = gdb.parse_and_eval('vabits_actual') + tcr_el1 = gdb.execute("info registers $TCR_EL1", to_string=True) + tcr_el1 = int(tcr_el1.split()[1], 16) + self.vabits_actual = 64 - ((tcr_el1 >> 16) & 63) else: self.VA_BITS_MIN = self.VA_BITS self.vabits_actual = self.VA_BITS -- cgit v1.2.3 From 7d8742bf853cc1d4faf08840cc64414ad5f34061 Mon Sep 17 00:00:00 2001 From: Kuan-Ying Lee Date: Wed, 19 Jun 2024 15:49:10 +0800 Subject: scripts/gdb: change VA_BITS_MIN when we use 16K page Change VA_BITS_MIN when we use 16K page. Link: https://lkml.kernel.org/r/20240619074911.100434-6-kuan-ying.lee@canonical.com Fixes: 9684ec186f8f ("arm64: Enable LPA2 at boot if supported by the system") Signed-off-by: Kuan-Ying Lee Cc: Jan Kiszka Cc: Kieran Bingham Cc: Kirill A. Shutemov Cc: Michael Ellerman Signed-off-by: Andrew Morton --- scripts/gdb/linux/mm.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'scripts/gdb/linux/mm.py') diff --git a/scripts/gdb/linux/mm.py b/scripts/gdb/linux/mm.py index 200def0e4b9a..7571aebbe650 100644 --- a/scripts/gdb/linux/mm.py +++ b/scripts/gdb/linux/mm.py @@ -47,7 +47,10 @@ class aarch64_page_ops(): self.VA_BITS = constants.LX_CONFIG_ARM64_VA_BITS if self.VA_BITS > 48: - self.VA_BITS_MIN = 48 + if constants.LX_CONFIG_ARM64_16K_PAGES: + self.VA_BITS_MIN = 47 + else: + self.VA_BITS_MIN = 48 tcr_el1 = gdb.execute("info registers $TCR_EL1", to_string=True) tcr_el1 = int(tcr_el1.split()[1], 16) self.vabits_actual = 64 - ((tcr_el1 >> 16) & 63) -- cgit v1.2.3