0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

内核中的psci架构cpu_ops接口

麦辣鸡腿堡 来源:TrustZone 作者:Hcoco 2023-12-05 17:25 次阅读

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
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206576
  • 驱动
    +关注

    关注

    11

    文章

    1718

    浏览量

    84352
  • SMP
    SMP
    +关注

    关注

    0

    文章

    68

    浏览量

    19450
收藏 人收藏

    评论

    相关推荐

    arm内核架构

    s5pv210是三星公司推出的32位RISC微处理器,其CPU采用的是ARM Cortex-A8内核,基于ARMv7架构,这里的内核架构
    发表于 03-25 12:09

    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之间必须能够实现互相操作。而这些软件可能由不同厂商提供,本标准就是为这些软件的集成提供便利。
    的头像 发表于 11-07 10:48 3229次阅读

    SMP多核启动cpu操作函数

    cpu操作函数 cpu_ops函数由bringup_cpu调用,以触发secondary cpu启动。它是根据设备树中解析出的enable-method属性确定的。 int __ in
    的头像 发表于 12-05 16:04 289次阅读
    SMP多核启动<b class='flag-5'>cpu</b>操作函数

    secondary cpu执行流程介绍

    secondary cpu执行流程 aarch64架构secondary cpu内核入口函数为secondary_entry(arch/arm64/kernel/head.S),以下
    的头像 发表于 12-05 16:12 337次阅读
    secondary <b class='flag-5'>cpu</b>执行流程介绍

    psci电源管理接口可以用于什么场景

    psci是arm提供的一套电源管理接口,当前一共包含0.1、0.2和1.0三个版本。它可被用于以下场景:(1)cpu的idle管理 (2)cpu hotplug以及secondary
    的头像 发表于 12-05 16:28 194次阅读

    psci接口规范介绍

    由于psci是由linux内核调用bl31中的安全服务,实现cpu电源管理功能的。因此其软件架构包含三个部分: (1)内核与bl31之间的调
    的头像 发表于 12-05 16:53 361次阅读

    内核中的psci驱动是什么

    内核中的psci架构 内核psci软件架构包含psci
    的头像 发表于 12-05 16:58 233次阅读
    <b class='flag-5'>内核</b>中的<b class='flag-5'>psci</b>驱动是什么

    bl31中的psci架构介绍

    bl31中的psci架构 bl31为内核提供了一系列运行时服务,psci作为其标准运行时服务的一部分,通过宏DECLARE_RT_SVC注册到系统中。其相应的定义如下: DECLARE
    的头像 发表于 12-05 17:33 371次阅读
    bl31中的<b class='flag-5'>psci</b><b class='flag-5'>架构</b>介绍

    SMP多核secondary cpu启动流程

    secondary cpu启动 由于psci方式启动secondary cpu的流程,除了其所执行的cpu_ops不同之外,其它流程与spin-table方式是相同的,因此我们这里只给
    的头像 发表于 12-05 17:41 279次阅读
    SMP多核secondary <b class='flag-5'>cpu</b>启动流程

    SMP多核启动PSCI代码示例

    :qemu平台 - >*psci_ops = 208 static const plat_psci_ops_t plat_qemu_psci_pm_ops = { 209 .cpu
    的头像 发表于 12-05 17:45 274次阅读

    PSCI处理函数代码分析

    处理函数根据funid来决定服务,可以看到PSCI_CPU_ON_AARCH64为0xc4000003,这正是设备树中填写的cpu_on属性的id,会委托psci_cpu_on来执行核上电任务。下面
    的头像 发表于 12-05 18:08 307次阅读

    开核返回:EL1启动从处理器

    许使用psci情况 - > rest_init - > kernel_init - > kernel_init_freeable - > smp_prepare_cpus //准备cpu 对于每个可能的cpu 1.
    的头像 发表于 12-05 18:11 235次阅读