mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 12:35:52 +02:00
This patch adds support for kexec on RISC-V. On SMP systems it depends on HOTPLUG_CPU in order to be able to bring up all harts after kexec. It also needs a recent OpenSBI version that supports the HSM extension. I tested it on riscv64 QEMU on both an smp and a non-smp system. Signed-off-by: Nick Kossifidis <mick@ics.forth.gr> Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
50 lines
1.1 KiB
C
50 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2019 FORTH-ICS/CARV
|
|
* Nick Kossifidis <mick@ics.forth.gr>
|
|
*/
|
|
|
|
#ifndef _RISCV_KEXEC_H
|
|
#define _RISCV_KEXEC_H
|
|
|
|
#include <asm/page.h> /* For PAGE_SIZE */
|
|
|
|
/* Maximum physical address we can use pages from */
|
|
#define KEXEC_SOURCE_MEMORY_LIMIT (-1UL)
|
|
|
|
/* Maximum address we can reach in physical address mode */
|
|
#define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL)
|
|
|
|
/* Maximum address we can use for the control code buffer */
|
|
#define KEXEC_CONTROL_MEMORY_LIMIT (-1UL)
|
|
|
|
/* Reserve a page for the control code buffer */
|
|
#define KEXEC_CONTROL_PAGE_SIZE PAGE_SIZE
|
|
|
|
#define KEXEC_ARCH KEXEC_ARCH_RISCV
|
|
|
|
static inline void
|
|
crash_setup_regs(struct pt_regs *newregs,
|
|
struct pt_regs *oldregs)
|
|
{
|
|
/* Dummy implementation for now */
|
|
}
|
|
|
|
|
|
#define ARCH_HAS_KIMAGE_ARCH
|
|
|
|
struct kimage_arch {
|
|
unsigned long fdt_addr;
|
|
};
|
|
|
|
const extern unsigned char riscv_kexec_relocate[];
|
|
const extern unsigned int riscv_kexec_relocate_size;
|
|
|
|
typedef void (*riscv_kexec_do_relocate)(unsigned long first_ind_entry,
|
|
unsigned long jump_addr,
|
|
unsigned long fdt_addr,
|
|
unsigned long hartid,
|
|
unsigned long va_pa_off);
|
|
|
|
#endif
|