cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cpu_ops.h (1404B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright (c) 2020 Western Digital Corporation or its affiliates.
      4 * Based on arch/arm64/include/asm/cpu_ops.h
      5 */
      6#ifndef __ASM_CPU_OPS_H
      7#define __ASM_CPU_OPS_H
      8
      9#include <linux/init.h>
     10#include <linux/sched.h>
     11#include <linux/threads.h>
     12
     13/**
     14 * struct cpu_operations - Callback operations for hotplugging CPUs.
     15 *
     16 * @name:		Name of the boot protocol.
     17 * @cpu_prepare:	Early one-time preparation step for a cpu. If there
     18 *			is a mechanism for doing so, tests whether it is
     19 *			possible to boot the given HART.
     20 * @cpu_start:		Boots a cpu into the kernel.
     21 * @cpu_disable:	Prepares a cpu to die. May fail for some
     22 *			mechanism-specific reason, which will cause the hot
     23 *			unplug to be aborted. Called from the cpu to be killed.
     24 * @cpu_stop:		Makes a cpu leave the kernel. Must not fail. Called from
     25 *			the cpu being stopped.
     26 * @cpu_is_stopped:	Ensures a cpu has left the kernel. Called from another
     27 *			cpu.
     28 */
     29struct cpu_operations {
     30	const char	*name;
     31	int		(*cpu_prepare)(unsigned int cpu);
     32	int		(*cpu_start)(unsigned int cpu,
     33				     struct task_struct *tidle);
     34#ifdef CONFIG_HOTPLUG_CPU
     35	int		(*cpu_disable)(unsigned int cpu);
     36	void		(*cpu_stop)(void);
     37	int		(*cpu_is_stopped)(unsigned int cpu);
     38#endif
     39};
     40
     41extern const struct cpu_operations *cpu_ops[NR_CPUS];
     42void __init cpu_set_ops(int cpu);
     43
     44#endif /* ifndef __ASM_CPU_OPS_H */