[PATCH v1 00/12] powerpc/pseries: CMM: Implement balloon compaction and remove isolate notifier

David Hildenbrand david at redhat.com
Fri Nov 1 01:29:21 AEDT 2019


This is the follow-up of:
	https://lkml.org/lkml/2019/9/10/711

We can get rid of the memory isolate notifier by switching to balloon
compaction in powerpc's CMM (Collaborative Memory Management). The memory
isolate notifier was only necessary to allow to offline memory blocks that
contain inflated/"loaned" pages - which also possible when the inflated
pages are movable (via balloon compaction). Having movable pages implies
that memory will also no longer get fragmented when CMM is active.

While I do have access to a LPAR, it does not have CMM active and I have np
clue how to enable it. Instead, I implemented a simple simulation mode. I
did some tests and the whole infrastructure, including page migration,
seems to work fine (e.g., I can still offline memory blocks that contain
inflated pages). Of course, I cannot tell if HW will like the changes,
especially:

1. I now use page_to_phys() to come up with the addresses to report to
   the hypervisor. Hope that's correct.
2. When migrating a page, I first inflate/"loan" the new page and then
   deflate the old page. I have no idea if HW accepts to set pages loaned
   if it didn't request a loan. I assume it does.
3. We might now inflate/deflate pages in parallel (of course, not the
   same page). I have no idea if HW likes that.

It would be good if somebody could either point me at the spec of the
hypervisor interface or verify directly. Also, it would be good if somebody
could test with actual HW that has this feature.

Cc: Alexander Duyck <alexander.h.duyck at linux.intel.com>
Cc: Alexander Potapenko <glider at google.com>
Cc: Alexey Kardashevskiy <aik at ozlabs.ru>
Cc: Allison Randal <allison at lohutok.net>
Cc: Andrew Morton <akpm at linux-foundation.org>
Cc: Anshuman Khandual <anshuman.khandual at arm.com>
Cc: Anshuman Khandual <khandual at linux.vnet.ibm.com>
Cc: Arun KS <arunks at codeaurora.org>
Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
Cc: Christian Brauner <christian at brauner.io>
Cc: Dan Williams <dan.j.williams at intel.com>
Cc: David Hildenbrand <david at redhat.com>
Cc: David Howells <dhowells at redhat.com>
Cc: "Enrico Weigelt, metux IT consult" <info at metux.net>
Cc: Gao Xiang <xiang at kernel.org>
Cc: Geert Uytterhoeven <geert at linux-m68k.org>
Cc: Greg Hackmann <ghackmann at google.com>
Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
Cc: Konstantin Khlebnikov <khlebnikov at yandex-team.ru>
Cc: Mel Gorman <mgorman at techsingularity.net>
Cc: Michael Ellerman <mpe at ellerman.id.au>
Cc: Michal Hocko <mhocko at suse.com>
Cc: Mike Rapoport <rppt at linux.vnet.ibm.com>
Cc: "Oliver O'Halloran" <oohall at gmail.com>
Cc: Oscar Salvador <osalvador at suse.de>
Cc: Paul Mackerras <paulus at samba.org>
Cc: Pavel Tatashin <pasha.tatashin at soleen.com>
Cc: Pingfan Liu <kernelfans at gmail.com>
Cc: Qian Cai <cai at lca.pw>
Cc: "Rafael J. Wysocki" <rafael at kernel.org>
Cc: Richard Fontana <rfontana at redhat.com>
Cc: Stephen Rothwell <sfr at canb.auug.org.au>
Cc: Thiago Jung Bauermann <bauerman at linux.ibm.com>
Cc: Thomas Gleixner <tglx at linutronix.de>
Cc: Todd Kjos <tkjos at google.com>
Cc: Vlastimil Babka <vbabka at suse.cz>
Cc: Wei Yang <richardw.yang at linux.intel.com>

David Hildenbrand (12):
  powerpc/pseries: CMM: Implement release() function for sysfs device
  powerpc/pseries: CMM: Report errors when registering notifiers fails
  powerpc/pseries: CMM: Cleanup rc handling in cmm_init()
  powerpc/pseries: CMM: Drop page array
  powerpc/pseries: CMM: Use adjust_managed_page_count() insted of
    totalram_pages_*
  powerpc/pseries: CMM: Rip out memory isolate notifier
  powerpc/pseries: CMM: Convert loaned_pages to an atomic_long_t
  powerpc/pseries: CMM: Implement balloon compaction
  powerpc/pseries: CMM: Switch to balloon_page_alloc()
  powerpc/pseries: CMM: Simulation mode
  mm: remove the memory isolate notifier
  mm: remove "count" parameter from has_unmovable_pages()

 arch/powerpc/platforms/pseries/Kconfig |   1 +
 arch/powerpc/platforms/pseries/cmm.c   | 430 +++++++++++--------------
 drivers/base/memory.c                  |  19 --
 include/linux/memory.h                 |  27 --
 include/linux/page-isolation.h         |   4 +-
 include/uapi/linux/magic.h             |   1 +
 mm/memory_hotplug.c                    |   2 +-
 mm/page_alloc.c                        |  21 +-
 mm/page_isolation.c                    |  27 +-
 9 files changed, 204 insertions(+), 328 deletions(-)

-- 
2.21.0



More information about the Linuxppc-dev mailing list