public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH stable 6.3 0/2] s390/mm: fix direct map accounting
@ 2023-05-09 14:31 Vasily Gorbik
  2023-05-09 14:31 ` [PATCH stable 6.3 1/2] s390/mm: rename POPULATE_ONE2ONE to POPULATE_DIRECT Vasily Gorbik
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Vasily Gorbik @ 2023-05-09 14:31 UTC (permalink / raw)
  To: stable; +Cc: Heiko Carstens, Alexander Gordeev, Sasha Levin

As an alternative to backporting part of a large s390 patch series to the
6.3-stable tree as dependencies, here are just couple of rebased changes.

Avoids the need for:
Patch "s390/boot: rework decompressor reserved tracking" has been added to the 6.3-stable tree
Patch "s390/boot: rename mem_detect to physmem_info" has been added to the 6.3-stable tree
Patch "s390/boot: remove non-functioning image bootable check" has been added to the 6.3-stable tree

Thank you

Heiko Carstens (2):
  s390/mm: rename POPULATE_ONE2ONE to POPULATE_DIRECT
  s390/mm: fix direct map accounting

 arch/s390/boot/vmem.c           | 27 ++++++++++++++++++++-------
 arch/s390/include/asm/pgtable.h |  2 +-
 arch/s390/mm/pageattr.c         |  2 +-
 3 files changed, 22 insertions(+), 9 deletions(-)

-- 
2.38.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH stable 6.3 1/2] s390/mm: rename POPULATE_ONE2ONE to POPULATE_DIRECT
  2023-05-09 14:31 [PATCH stable 6.3 0/2] s390/mm: fix direct map accounting Vasily Gorbik
@ 2023-05-09 14:31 ` Vasily Gorbik
  2023-05-09 14:31 ` [PATCH stable 6.3 2/2] s390/mm: fix direct map accounting Vasily Gorbik
  2023-05-15 12:43 ` [PATCH stable 6.3 0/2] " Greg KH
  2 siblings, 0 replies; 4+ messages in thread
From: Vasily Gorbik @ 2023-05-09 14:31 UTC (permalink / raw)
  To: stable; +Cc: Heiko Carstens, Alexander Gordeev, Sasha Levin

From: Heiko Carstens <hca@linux.ibm.com>

[ Upstream commit 07fdd6627f7f9c72ed68d531653b56df81da9996 ]

Architectures generally use the "direct map" wording for mapping the whole
physical memory. Use that wording as well in arch/s390/boot/vmem.c, instead
of "one to one" in order to avoid confusion.

This also matches what is already done in arch/s390/mm/vmem.c.

Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
---
 arch/s390/boot/vmem.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/s390/boot/vmem.c b/arch/s390/boot/vmem.c
index 4d1d0d8e99cb..db8d7cfbc8a4 100644
--- a/arch/s390/boot/vmem.c
+++ b/arch/s390/boot/vmem.c
@@ -29,7 +29,7 @@ unsigned long __bootdata(pgalloc_low);
 
 enum populate_mode {
 	POPULATE_NONE,
-	POPULATE_ONE2ONE,
+	POPULATE_DIRECT,
 	POPULATE_ABS_LOWCORE,
 };
 
@@ -102,7 +102,7 @@ static unsigned long _pa(unsigned long addr, enum populate_mode mode)
 	switch (mode) {
 	case POPULATE_NONE:
 		return -1;
-	case POPULATE_ONE2ONE:
+	case POPULATE_DIRECT:
 		return addr;
 	case POPULATE_ABS_LOWCORE:
 		return __abs_lowcore_pa(addr);
@@ -251,9 +251,9 @@ void setup_vmem(unsigned long asce_limit)
 	 * the lowcore and create the identity mapping only afterwards.
 	 */
 	pgtable_populate_init();
-	pgtable_populate(0, sizeof(struct lowcore), POPULATE_ONE2ONE);
+	pgtable_populate(0, sizeof(struct lowcore), POPULATE_DIRECT);
 	for_each_mem_detect_usable_block(i, &start, &end)
-		pgtable_populate(start, end, POPULATE_ONE2ONE);
+		pgtable_populate(start, end, POPULATE_DIRECT);
 	pgtable_populate(__abs_lowcore, __abs_lowcore + sizeof(struct lowcore),
 			 POPULATE_ABS_LOWCORE);
 	pgtable_populate(__memcpy_real_area, __memcpy_real_area + PAGE_SIZE,
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH stable 6.3 2/2] s390/mm: fix direct map accounting
  2023-05-09 14:31 [PATCH stable 6.3 0/2] s390/mm: fix direct map accounting Vasily Gorbik
  2023-05-09 14:31 ` [PATCH stable 6.3 1/2] s390/mm: rename POPULATE_ONE2ONE to POPULATE_DIRECT Vasily Gorbik
@ 2023-05-09 14:31 ` Vasily Gorbik
  2023-05-15 12:43 ` [PATCH stable 6.3 0/2] " Greg KH
  2 siblings, 0 replies; 4+ messages in thread
From: Vasily Gorbik @ 2023-05-09 14:31 UTC (permalink / raw)
  To: stable; +Cc: Heiko Carstens, Alexander Gordeev, Sasha Levin

From: Heiko Carstens <hca@linux.ibm.com>

[ Upstream commit 81e8479649853ffafc714aca4a9c0262efd3160a ]

Commit bb1520d581a3 ("s390/mm: start kernel with DAT enabled") did not
implement direct map accounting in the early page table setup code. In
result the reported values are bogus now:

$cat /proc/meminfo
...
DirectMap4k:        5120 kB
DirectMap1M:    18446744073709546496 kB
DirectMap2G:           0 kB

Fix this by adding the missing accounting. The result looks sane again:

$cat /proc/meminfo
...
DirectMap4k:        6156 kB
DirectMap1M:     2091008 kB
DirectMap2G:     6291456 kB

Fixes: bb1520d581a3 ("s390/mm: start kernel with DAT enabled")
Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
---
 arch/s390/boot/vmem.c           | 19 ++++++++++++++++---
 arch/s390/include/asm/pgtable.h |  2 +-
 arch/s390/mm/pageattr.c         |  2 +-
 3 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/arch/s390/boot/vmem.c b/arch/s390/boot/vmem.c
index db8d7cfbc8a4..a354d8bc1f0f 100644
--- a/arch/s390/boot/vmem.c
+++ b/arch/s390/boot/vmem.c
@@ -10,6 +10,10 @@
 #include "decompressor.h"
 #include "boot.h"
 
+#ifdef CONFIG_PROC_FS
+atomic_long_t __bootdata_preserved(direct_pages_count[PG_DIRECT_MAP_MAX]);
+#endif
+
 #define init_mm			(*(struct mm_struct *)vmlinux.init_mm_off)
 #define swapper_pg_dir		vmlinux.swapper_pg_dir_off
 #define invalid_pg_dir		vmlinux.invalid_pg_dir_off
@@ -126,7 +130,7 @@ static bool can_large_pmd(pmd_t *pm_dir, unsigned long addr, unsigned long end)
 static void pgtable_pte_populate(pmd_t *pmd, unsigned long addr, unsigned long end,
 				 enum populate_mode mode)
 {
-	unsigned long next;
+	unsigned long pages = 0;
 	pte_t *pte, entry;
 
 	pte = pte_offset_kernel(pmd, addr);
@@ -135,14 +139,17 @@ static void pgtable_pte_populate(pmd_t *pmd, unsigned long addr, unsigned long e
 			entry = __pte(_pa(addr, mode));
 			entry = set_pte_bit(entry, PAGE_KERNEL_EXEC);
 			set_pte(pte, entry);
+			pages++;
 		}
 	}
+	if (mode == POPULATE_DIRECT)
+		update_page_count(PG_DIRECT_MAP_4K, pages);
 }
 
 static void pgtable_pmd_populate(pud_t *pud, unsigned long addr, unsigned long end,
 				 enum populate_mode mode)
 {
-	unsigned long next;
+	unsigned long next, pages = 0;
 	pmd_t *pmd, entry;
 	pte_t *pte;
 
@@ -154,6 +161,7 @@ static void pgtable_pmd_populate(pud_t *pud, unsigned long addr, unsigned long e
 				entry = __pmd(_pa(addr, mode));
 				entry = set_pmd_bit(entry, SEGMENT_KERNEL_EXEC);
 				set_pmd(pmd, entry);
+				pages++;
 				continue;
 			}
 			pte = boot_pte_alloc();
@@ -163,12 +171,14 @@ static void pgtable_pmd_populate(pud_t *pud, unsigned long addr, unsigned long e
 		}
 		pgtable_pte_populate(pmd, addr, next, mode);
 	}
+	if (mode == POPULATE_DIRECT)
+		update_page_count(PG_DIRECT_MAP_1M, pages);
 }
 
 static void pgtable_pud_populate(p4d_t *p4d, unsigned long addr, unsigned long end,
 				 enum populate_mode mode)
 {
-	unsigned long next;
+	unsigned long next, pages = 0;
 	pud_t *pud, entry;
 	pmd_t *pmd;
 
@@ -180,6 +190,7 @@ static void pgtable_pud_populate(p4d_t *p4d, unsigned long addr, unsigned long e
 				entry = __pud(_pa(addr, mode));
 				entry = set_pud_bit(entry, REGION3_KERNEL_EXEC);
 				set_pud(pud, entry);
+				pages++;
 				continue;
 			}
 			pmd = boot_crst_alloc(_SEGMENT_ENTRY_EMPTY);
@@ -189,6 +200,8 @@ static void pgtable_pud_populate(p4d_t *p4d, unsigned long addr, unsigned long e
 		}
 		pgtable_pmd_populate(pud, addr, next, mode);
 	}
+	if (mode == POPULATE_DIRECT)
+		update_page_count(PG_DIRECT_MAP_2G, pages);
 }
 
 static void pgtable_p4d_populate(pgd_t *pgd, unsigned long addr, unsigned long end,
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index 2c70b4d1263d..acbe1ac2d571 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -34,7 +34,7 @@ enum {
 	PG_DIRECT_MAP_MAX
 };
 
-extern atomic_long_t direct_pages_count[PG_DIRECT_MAP_MAX];
+extern atomic_long_t __bootdata_preserved(direct_pages_count[PG_DIRECT_MAP_MAX]);
 
 static inline void update_page_count(int level, long count)
 {
diff --git a/arch/s390/mm/pageattr.c b/arch/s390/mm/pageattr.c
index 85195c18b2e8..7be699b4974a 100644
--- a/arch/s390/mm/pageattr.c
+++ b/arch/s390/mm/pageattr.c
@@ -41,7 +41,7 @@ void __storage_key_init_range(unsigned long start, unsigned long end)
 }
 
 #ifdef CONFIG_PROC_FS
-atomic_long_t direct_pages_count[PG_DIRECT_MAP_MAX];
+atomic_long_t __bootdata_preserved(direct_pages_count[PG_DIRECT_MAP_MAX]);
 
 void arch_report_meminfo(struct seq_file *m)
 {
-- 
2.38.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH stable 6.3 0/2] s390/mm: fix direct map accounting
  2023-05-09 14:31 [PATCH stable 6.3 0/2] s390/mm: fix direct map accounting Vasily Gorbik
  2023-05-09 14:31 ` [PATCH stable 6.3 1/2] s390/mm: rename POPULATE_ONE2ONE to POPULATE_DIRECT Vasily Gorbik
  2023-05-09 14:31 ` [PATCH stable 6.3 2/2] s390/mm: fix direct map accounting Vasily Gorbik
@ 2023-05-15 12:43 ` Greg KH
  2 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2023-05-15 12:43 UTC (permalink / raw)
  To: Vasily Gorbik; +Cc: stable, Heiko Carstens, Alexander Gordeev, Sasha Levin

On Tue, May 09, 2023 at 04:31:11PM +0200, Vasily Gorbik wrote:
> As an alternative to backporting part of a large s390 patch series to the
> 6.3-stable tree as dependencies, here are just couple of rebased changes.
> 
> Avoids the need for:
> Patch "s390/boot: rework decompressor reserved tracking" has been added to the 6.3-stable tree
> Patch "s390/boot: rename mem_detect to physmem_info" has been added to the 6.3-stable tree
> Patch "s390/boot: remove non-functioning image bootable check" has been added to the 6.3-stable tree

All now queued up, thanks.

greg k-h

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-05-15 12:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-09 14:31 [PATCH stable 6.3 0/2] s390/mm: fix direct map accounting Vasily Gorbik
2023-05-09 14:31 ` [PATCH stable 6.3 1/2] s390/mm: rename POPULATE_ONE2ONE to POPULATE_DIRECT Vasily Gorbik
2023-05-09 14:31 ` [PATCH stable 6.3 2/2] s390/mm: fix direct map accounting Vasily Gorbik
2023-05-15 12:43 ` [PATCH stable 6.3 0/2] " Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox