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

    文章

    1359

    浏览量

    40179
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10798

    浏览量

    210702
  • 驱动
    +关注

    关注

    12

    文章

    1816

    浏览量

    85100
  • SMP
    SMP
    +关注

    关注

    0

    文章

    71

    浏览量

    19608
收藏 人收藏

    评论

    相关推荐

    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

    OPS常见问题的故障定位思路

    ,应用编程接口)来开放系统,在基于OPS开发的过程,可能出现OPS功能配置不生效的现象,本文介绍了OPS常见问题的故障定位思路及基本解决方
    的头像 发表于 12-22 10:04 2657次阅读

    CPU 拓扑的SMP架构

    CPU 拓扑用来表示 CPU 在硬件层面的组合方式,本文主要讲解 CPU 拓扑的 SMP(Symmetric Multi-Processor,对称多处理器系统)
    的头像 发表于 08-29 11:02 4303次阅读

    基于ARM架构PSCI接口规范

    本文主要是在ARM架构的不同异常等级上工作的软件之间,提供一个标准的电源管理接口。这些软件,比如Linux、Hypervisor、安全Firmware和可信OS之间必须能够实现互相操作。而这些软件可能由不同厂商提供,本标准就是为这些软件的集成提供便利。
    的头像 发表于 11-07 10:48 4120次阅读

    如何在内核启动secondary cpu

    启动secondary cpu 内核在启动secondary cpu之前当然需要为其准备好执行环境,因为内核
    的头像 发表于 12-05 15:46 503次阅读
    如何在<b class='flag-5'>内核</b><b class='flag-5'>中</b>启动secondary <b class='flag-5'>cpu</b>

    SMP多核启动cpu操作函数

    cpu操作函数 cpu_ops函数由bringup_cpu调用,以触发secondary cpu启动。它是根据设备树解析出的enable-
    的头像 发表于 12-05 16:04 644次阅读
    SMP多核启动<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 487次阅读

    psci接口规范介绍

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

    内核psci驱动是什么

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

    bl31psci架构介绍

    bl31psci架构 bl31为内核提供了一系列运行时服务,psci作为其标准运行时服务的一部分,通过宏DECLARE_RT_SVC注册
    的头像 发表于 12-05 17:33 928次阅读
    bl31<b class='flag-5'>中</b>的<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 711次阅读
    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 601次阅读

    PSCI处理函数代码分析

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

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

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