Something went wrong. Try again.
Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122/* SPDX-License-Identifier: GPL-2.0 */#ifndef LINUX_KEXEC_HANDOVER_H#define LINUX_KEXEC_HANDOVER_H
#include <linux/err.h>#include <linux/errno.h>#include <linux/types.h>
struct kho_scratch { phys_addr_t addr; phys_addr_t size;};
struct kho_vmalloc;
struct folio;struct page;
#ifdef CONFIG_KEXEC_HANDOVERbool kho_is_enabled(void);bool is_kho_boot(void);
int kho_preserve_folio(struct folio *folio);void kho_unpreserve_folio(struct folio *folio);int kho_preserve_pages(struct page *page, unsigned long nr_pages);void kho_unpreserve_pages(struct page *page, unsigned long nr_pages);int kho_preserve_vmalloc(void *ptr, struct kho_vmalloc *preservation);void kho_unpreserve_vmalloc(struct kho_vmalloc *preservation);void *kho_alloc_preserve(size_t size);void kho_unpreserve_free(void *mem);void kho_restore_free(void *mem);struct folio *kho_restore_folio(phys_addr_t phys);struct page *kho_restore_pages(phys_addr_t phys, unsigned long nr_pages);void *kho_restore_vmalloc(const struct kho_vmalloc *preservation);int kho_add_subtree(const char *name, void *blob, size_t size);void kho_remove_subtree(void *blob);int kho_retrieve_subtree(const char *name, phys_addr_t *phys, size_t *size);
void kho_memory_init(void);
void kho_populate(phys_addr_t fdt_phys, u64 fdt_len, phys_addr_t scratch_phys, u64 scratch_len);#elsestatic inline bool kho_is_enabled(void){ return false;}
static inline bool is_kho_boot(void){ return false;}
static inline int kho_preserve_folio(struct folio *folio){ return -EOPNOTSUPP;}
static inline void kho_unpreserve_folio(struct folio *folio) { }
static inline int kho_preserve_pages(struct page *page, unsigned int nr_pages){ return -EOPNOTSUPP;}
static inline void kho_unpreserve_pages(struct page *page, unsigned int nr_pages) { }
static inline int kho_preserve_vmalloc(void *ptr, struct kho_vmalloc *preservation){ return -EOPNOTSUPP;}
static inline void kho_unpreserve_vmalloc(struct kho_vmalloc *preservation) { }
static inline void *kho_alloc_preserve(size_t size){ return ERR_PTR(-EOPNOTSUPP);}
static inline void kho_unpreserve_free(void *mem) { }static inline void kho_restore_free(void *mem) { }
static inline struct folio *kho_restore_folio(phys_addr_t phys){ return NULL;}
static inline struct page *kho_restore_pages(phys_addr_t phys, unsigned int nr_pages){ return NULL;}
static inline void *kho_restore_vmalloc(const struct kho_vmalloc *preservation){ return NULL;}
static inline int kho_add_subtree(const char *name, void *blob, size_t size){ return -EOPNOTSUPP;}
static inline void kho_remove_subtree(void *blob) { }
static inline int kho_retrieve_subtree(const char *name, phys_addr_t *phys, size_t *size){ return -EOPNOTSUPP;}
static inline void kho_memory_init(void) { }
static inline void kho_populate(phys_addr_t fdt_phys, u64 fdt_len, phys_addr_t scratch_phys, u64 scratch_len){}#endif /* CONFIG_KEXEC_HANDOVER */
#endif /* LINUX_KEXEC_HANDOVER_H */