cpu_ops接口
驱动初始化完成后,cpu的cpu_ops就可以调用这些回调实现psci功能的调用。如下所示,当devicetree中cpu的enable-method设置为psci时,该cpu的cpu_ops将指向cpu_psci_ops。
cpu0: cpu@0 {
...
enable-method = "psci";
…
}
其中cpu_psci_ops的定义如下:
const struct cpu_operations cpu_psci_ops = {
.name = "psci",
.cpu_init = cpu_psci_cpu_init,
.cpu_prepare = cpu_psci_cpu_prepare,
.cpu_boot = cpu_psci_cpu_boot,
#ifdef CONFIG_HOTPLUG_CPU
.cpu_can_disable = cpu_psci_cpu_can_disable,
.cpu_disable = cpu_psci_cpu_disable,
.cpu_die = cpu_psci_cpu_die,
.cpu_kill = cpu_psci_cpu_kill,
#endif
}
如启动cpu的接口为cpu_psci_cpu_boot,它会通过以下流程最终调用psci驱动中的psci_ops函数:
static int cpu_psci_cpu_boot(unsigned int cpu)
{
phys_addr_t pa_secondary_entry = __pa_symbol(function_nocfi(secondary_entry));
int err = psci_ops.cpu_on(cpu_logical_map(cpu), pa_secondary_entry);
if (err)
pr_err("failed to boot CPU%d (%d)n", cpu, err);
return err;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
内核
+关注
关注
3文章
1309浏览量
39850 -
cpu
+关注
关注
68文章
10446浏览量
206576 -
驱动
+关注
关注
11文章
1718浏览量
84352 -
SMP
+关注
关注
0文章
68浏览量
19450
发布评论请先 登录
相关推荐
ARM电源管理中的PSCI是什么意思呢
今天来看一个电源功耗相关的东西,PSCI(Power State Coordination Interface),翻译一下就是“电源状态协作接口”。从名字就能直观看出来,PSCI是一套电源管理
发表于 04-02 09:45
请教大神qemu模拟cortex-A53运行rt-thread出错怎么解决呢?
出现了No cpu_ops was probed for CPU 1,请问是什么原因,我该怎么配置?感谢各位大佬
发表于 02-15 10:51
CPU有哪些接口
LGA2011,又称SocketR,是英特尔(Intel)SandyBridge-EX微架构CPU所使用的CPU接口。LGA2011接口将取
发表于 07-13 17:42
•8035次阅读
基于ARM架构的PSCI接口规范
本文主要是在ARM架构的不同异常等级上工作的软件之间,提供一个标准的电源管理接口。这些软件,比如Linux、Hypervisor、安全Firmware和可信OS之间必须能够实现互相操作。而这些软件可能由不同厂商提供,本标准就是为这些软件的集成提供便利。
SMP多核启动cpu操作函数
cpu操作函数 cpu_ops函数由bringup_cpu调用,以触发secondary cpu启动。它是根据设备树中解析出的enable-method属性确定的。 int __ in
secondary cpu执行流程介绍
secondary cpu执行流程 aarch64架构secondary cpu的内核入口函数为secondary_entry(arch/arm64/kernel/head.S),以下
psci电源管理接口可以用于什么场景
psci是arm提供的一套电源管理接口,当前一共包含0.1、0.2和1.0三个版本。它可被用于以下场景:(1)cpu的idle管理 (2)cpu hotplug以及secondary
psci接口规范介绍
由于psci是由linux内核调用bl31中的安全服务,实现cpu电源管理功能的。因此其软件架构包含三个部分: (1)内核与bl31之间的调
bl31中的psci架构介绍
bl31中的psci架构 bl31为内核提供了一系列运行时服务,psci作为其标准运行时服务的一部分,通过宏DECLARE_RT_SVC注册到系统中。其相应的定义如下: DECLARE
SMP多核secondary cpu启动流程
secondary cpu启动 由于psci方式启动secondary cpu的流程,除了其所执行的cpu_ops不同之外,其它流程与spin-table方式是相同的,因此我们这里只给
SMP多核启动PSCI代码示例
:qemu平台 - >*psci_ops = 208 static const plat_psci_ops_t plat_qemu_psci_pm_ops = { 209 .cpu
PSCI处理函数代码分析
处理函数根据funid来决定服务,可以看到PSCI_CPU_ON_AARCH64为0xc4000003,这正是设备树中填写的cpu_on属性的id,会委托psci_cpu_on来执行核上电任务。下面
开核返回:EL1启动从处理器
许使用psci情况 - > rest_init - > kernel_init - > kernel_init_freeable - > smp_prepare_cpus //准备cpu 对于每个可能的cpu 1.
评论