Files
linux/include/linux
Pasha Tatashin 4c205677af kho: introduce high-level memory allocation API
Currently, clients of KHO must manually allocate memory (e.g., via
alloc_pages), calculate the page order, and explicitly call
kho_preserve_folio().  Similarly, cleanup requires separate calls to
unpreserve and free the memory.

Introduce a high-level API to streamline this common pattern:

- kho_alloc_preserve(size): Allocates physically contiguous, zeroed
  memory and immediately marks it for preservation.
- kho_unpreserve_free(ptr): Unpreserves and frees the memory
  in the current kernel.
- kho_restore_free(ptr): Restores the struct page state of
  preserved memory in the new kernel and immediately frees it to the
  page allocator.

[pasha.tatashin@soleen.com: build fixes]
  Link: https://lkml.kernel.org/r/CA+CK2bBgXDhrHwTVgxrw7YTQ-0=LgW0t66CwPCgG=C85ftz4zw@mail.gmail.com
Link: https://lkml.kernel.org/r/20251114190002.3311679-4-pasha.tatashin@soleen.com
Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Reviewed-by: Pratyush Yadav <pratyush@kernel.org>
Cc: Alexander Graf <graf@amazon.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Baoquan He <bhe@redhat.com>
Cc: Coiby Xu <coxu@redhat.com>
Cc: Dave Vasilevsky <dave@vasilevsky.ca>
Cc: Eric Biggers <ebiggers@google.com>
Cc: Kees Cook <kees@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2025-11-27 14:24:34 -08:00
..
2025-09-24 17:09:47 +02:00
2025-06-15 21:19:08 +05:30
2025-09-05 15:06:03 +02:00
2025-07-21 18:18:51 +01:00
2025-04-21 10:27:59 +02:00
2025-04-29 15:58:38 -04:00
2025-07-31 11:28:03 -04:00
2025-09-24 02:48:05 -07:00
2025-11-12 10:00:14 -08:00
2025-05-21 13:39:45 +02:00
2025-08-14 10:37:33 -07:00
2025-04-11 18:58:10 -07:00
2025-09-23 11:13:22 +02:00
2025-04-17 10:56:11 +02:00
2025-04-10 10:39:14 +01:00
2025-08-21 13:58:07 +02:00
2025-07-16 14:28:21 +02:00
2025-05-22 11:07:05 +02:00
2025-09-13 17:32:44 -07:00
2025-08-29 13:39:53 -07:00
2025-08-02 12:06:10 -07:00
2025-09-18 10:17:09 +02:00
2025-09-23 11:13:22 +02:00
2025-06-11 11:57:14 -07:00
2025-07-02 17:18:01 +01:00
2025-07-17 06:01:16 -06:00
2025-09-13 16:54:50 -07:00
2025-07-09 22:41:56 -07:00
2025-09-17 15:58:29 -04:00
2025-06-17 18:18:46 -07:00
2025-07-14 15:20:02 -07:00
2025-09-23 13:28:20 -04:00
2025-07-08 19:11:57 -04:00
2025-09-19 14:26:16 +02:00
2025-09-25 09:23:47 +02:00
2025-08-18 14:23:09 +02:00
2025-08-18 14:23:09 +02:00
2025-10-01 07:55:42 -05:00
2025-10-03 12:13:12 -05:00
2025-05-21 16:46:37 +02:00
2025-09-13 16:55:07 -07:00
2025-10-03 10:24:14 -07:00
2025-06-19 14:28:24 +02:00
2025-06-19 14:28:24 +02:00
2025-07-22 18:07:11 +02:00
2025-08-24 11:41:11 -06:00
2025-07-01 12:29:29 +02:00
2025-11-27 14:24:30 -08:00
2025-05-03 12:02:04 +02:00
2025-05-11 17:54:09 -07:00
2025-05-06 11:11:45 -06:00
2025-08-28 13:14:50 +02:00
2025-04-10 18:34:05 -07:00
2025-09-19 17:19:45 -07:00
2025-07-23 11:56:02 +02:00
2025-08-17 12:46:25 +02:00
2025-09-09 10:27:01 -06:00
2025-10-01 07:24:55 -04:00
2025-07-17 11:26:56 +02:00