lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sat, 8 Jun 2024 00:45:02 +0000
From: Wei Yang <richard.weiyang@...il.com>
To: David Hildenbrand <david@...hat.com>
Cc: linux-kernel@...r.kernel.org, linux-mm@...ck.org,
	Andrew Morton <akpm@...ux-foundation.org>,
	Wei Yang <richard.weiyang@...il.com>
Subject: Re: [PATCH v1 0/2] mm/highmem: don't track highmem pages manually

On Fri, Jun 07, 2024 at 10:37:09AM +0200, David Hildenbrand wrote:
>Let's remove highmem special-casing from adjust_managed_page_count(),
>to result in less confusion why memblock manually adjusts
>totalram_pages, and __free_pages_core() only adjusts the zone's
>managed pages -- what about the highmem pages that
>adjust_managed_page_count() updates?
>

Thanks David

I have looked into this function and willing to get rid of it, but not found a
good way.

Your change really look nice.

>Now, we only maintain totalram_pages and a zone's managed pages
>independent of highmem support. We can derive the number of highmem pages
>simply by looking at the relevant zone's managed pages. I don't think
>there is any particular fast path that needs a maximum-efficient
>totalhigh_pages() implementation.
>
>Note that highmem memory is currently initialized using
>free_highmem_page()->free_reserved_page(), not __free_pages_core(). In the
>future we might want to also use __free_pages_core() to initialize
>highmem memory, to make that less special, and consider moving
>totalram_pages updates into __free_pages_core() [1], so we can just use
>adjust_managed_page_count() in there as well.
>
>Booting a simple kernel in QEMU reveals no highmem accounting change:
>
>Before:
>  Memory: 3095448K/3145208K available (14802K kernel code, 2073K rwdata,
>  5000K rodata, 740K init, 556K bss, 49760K reserved, 0K cma-reserved,
>  2244488K highmem)
>
>After:
>  Memory: 3095276K/3145208K available (14802K kernel code, 2073K rwdata,
>  5000K rodata, 740K init, 556K bss, 49932K reserved, 0K cma-reserved,
>  2244488K highmem)
>
>[1] https://lkml.kernel.org/r/20240601133402.2675-1-richard.weiyang@gmail.com
>
>Cc: Andrew Morton <akpm@...ux-foundation.org>
>Cc: Wei Yang <richard.weiyang@...il.com>
>
>David Hildenbrand (2):
>  mm/highmem: reimplement totalhigh_pages() by walking zones
>  mm/highmem: make nr_free_highpages() return "unsigned long"
>
> include/linux/highmem-internal.h | 17 ++++++-----------
> include/linux/highmem.h          |  2 +-
> mm/highmem.c                     | 20 +++++++++++++++-----
> mm/page_alloc.c                  |  4 ----
> 4 files changed, 22 insertions(+), 21 deletions(-)
>
>
>base-commit: 19b8422c5bd56fb5e7085995801c6543a98bda1f
>-- 
>2.45.1

-- 
Wei Yang
Help you, Help me

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ