[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CA+CK2bB18ymLKh8YAyg8O44j5-7ttAfKC-Og-XMg5KQ=O_Xhwg@mail.gmail.com>
Date: Thu, 22 Jan 2026 13:24:43 -0500
From: Pasha Tatashin <pasha.tatashin@...een.com>
To: Pratyush Yadav <pratyush@...nel.org>
Cc: Mike Rapoport <rppt@...nel.org>, Andrew Morton <akpm@...ux-foundation.org>,
Alexander Graf <graf@...zon.com>, Jason Miu <jasonmiu@...gle.com>, Jonathan Corbet <corbet@....net>,
kexec@...ts.infradead.org, linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-mm@...ck.org
Subject: Re: [PATCH 5/6] kho: Relocate vmalloc preservation structure to KHO
ABI header
On Tue, Jan 20, 2026 at 1:56 PM Pratyush Yadav <pratyush@...nel.org> wrote:
>
> On Tue, Jan 20 2026, Mike Rapoport wrote:
>
> > On Tue, Jan 20, 2026 at 04:26:51PM +0000, Pratyush Yadav wrote:
> >> On Mon, Jan 05 2026, Mike Rapoport wrote:
> >>
> >> > From: Jason Miu <jasonmiu@...gle.com>
> >> >
> >> > The `struct kho_vmalloc` defines the in-memory layout for preserving
> >> > vmalloc regions across kexec. This layout is a contract between kernels
> >> > and part of the KHO ABI.
> >> >
> >> > To reflect this relationship, the related structs and helper macros are
> >> > relocated to the ABI header, `include/linux/kho/abi/kexec_handover.h`.
> >> > This move places the structure's definition under the protection of the
> >> > KHO_FDT_COMPATIBLE version string.
> >> >
> >> > The structure and its components are now also documented within the
> >> > ABI header to describe the contract and prevent ABI breaks.
> >> >
> >> > Signed-off-by: Jason Miu <jasonmiu@...gle.com>
> >> > Co-developed-by: Mike Rapoport (Microsoft) <rppt@...nel.org>
> >> > Signed-off-by: Mike Rapoport (Microsoft) <rppt@...nel.org>
> >> [...]
> >> > +/* Helper macro to define a union for a serializable pointer. */
> >> > +#define DECLARE_KHOSER_PTR(name, type) \
> >> > + union { \
> >> > + u64 phys; \
> >> > + type ptr; \
> >> > + } name
> >> > +
> >> > +/* Stores the physical address of a serializable pointer. */
> >> > +#define KHOSER_STORE_PTR(dest, val) \
> >> > + ({ \
> >> > + typeof(val) v = val; \
> >> > + typecheck(typeof((dest).ptr), v); \
> >> > + (dest).phys = virt_to_phys(v); \
> >> > + })
> >> > +
> >> > +/* Loads the stored physical address back to a pointer. */
> >> > +#define KHOSER_LOAD_PTR(src) \
> >> > + ({ \
> >> > + typeof(src) s = src; \
> >> > + (typeof((s).ptr))((s).phys ? phys_to_virt((s).phys) : NULL); \
> >> > + })
> >>
> >> Nit: not a fan of exposing code internals to the ABI header. But without
> >> this the definition of kho_vmalloc_hdr won't make any sense to someone
> >> reading the doc without looking at the code. Dunno if we can do anything
> >> better though...
> >
> > These might be actually useful for other KHO users.
In my view, khoser definition belongs in the kernel implementation
rather than the cross-kernel ABI. The ABI describes the preserved data
format and should be independent of C types. However, this is a minor
complaint compared to the overall effort of moving the preserved
format into the ABI and making KHO stateless. For that reason, let's
merge it.
Reviewed-by: Pasha Tatashin <pasha.tatashin@...een.com>
Powered by blists - more mailing lists