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;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    4

    文章

    1436

    浏览量

    42481
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11216

    浏览量

    222859
  • 驱动
    +关注

    关注

    12

    文章

    1927

    浏览量

    88184
  • SMP
    SMP
    +关注

    关注

    0

    文章

    80

    浏览量

    20686
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    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

    Linux内核架构--基本概念

    首先,Linux整体的架构如图: 再来看Linux内核架构内核由五个主要子系统组成: Process Scheduler : 进程调度(SCHED)负责控制对
    发表于 05-20 09:28 1058次阅读

    CPU 拓扑的SMP架构

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

    基于ARM架构PSCI接口规范

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

    如何在内核启动secondary cpu

    启动secondary cpu 内核在启动secondary cpu之前当然需要为其准备好执行环境,因为内核
    的头像 发表于 12-05 15:46 1163次阅读
    如何在<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 1614次阅读
    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 1123次阅读

    psci接口规范介绍

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

    内核psci驱动是什么

    内核psci架构 内核psci软件架构包含
    的头像 发表于 12-05 16:58 1319次阅读
    <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 1937次阅读
    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 1563次阅读
    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 1290次阅读

    PSCI处理函数代码分析

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

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

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