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

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

3天内不再提示

内核中的psci驱动是什么

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

内核中的psci架构

内核psci软件架构包含psci驱动和每个cpu的cpu_ops回调函数实现两部分。

其中psci驱动实现了驱动初始化和psci相关接口实现功能,而cpu_ops回调函数最终也会调用psci驱动的接口。

psci驱动

首先我们看一下devicetree中的配置:

psci {
		compatible = "arm,psci-0.2";  (1method = "smc";               (2)
     }

(1)用于指定psci版本

(2)根据该psci由bl31处理还是hypervisor处理,可以指定其对应的陷入方式。若由bl31处理为smc,若由hypervisor处理则为hvc

驱动流程主要是与bl31通信,以确认其是否支持给定的psci版本,以及相关psci操作函数的实现,其流程如下:图片其主要工作即为psci设置相关的回调函数,该函数定义如下:

static void __init psci_0_2_set_functions(void)
{
	…
	psci_ops = (struct psci_operations){
		.get_version = psci_0_2_get_version,
		.cpu_suspend = psci_0_2_cpu_suspend,
		.cpu_off = psci_0_2_cpu_off,
		.cpu_on = psci_0_2_cpu_on,
		.migrate = psci_0_2_migrate,
		.affinity_info = psci_affinity_info,
		.migrate_info_type = psci_migrate_info_type,
	};                                                   (1)

	register_restart_handler(&psci_sys_reset_nb);        (2)
	pm_power_off = psci_sys_poweroff;                    (3)
}

(1)为psci_ops设置相应的回调函数

(2)为psci模块设置系统重启时的通知函数

(3)将系统的power_off函数指向相应的psci接口

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

    关注

    3

    文章

    1384

    浏览量

    40458
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10922

    浏览量

    213277
  • 驱动
    +关注

    关注

    12

    文章

    1855

    浏览量

    85740
  • SMP
    SMP
    +关注

    关注

    0

    文章

    76

    浏览量

    19766
收藏 人收藏

    评论

    相关推荐

    Linux内核container_of原理详解

    Linux内核中经常可见container_of的身影,它在实际驱动的编写也是广泛应用。
    发表于 07-14 15:19 365次阅读
    Linux<b class='flag-5'>内核</b><b class='flag-5'>中</b>container_of原理详解

    在Linux内核添加wifi驱动

    在Linux内核添加wifi驱动Linux WIFI驱动实验rtl8723 Wifi联网测试
    发表于 02-05 07:59

    ARM电源管理PSCI是什么意思呢

    今天来看一个电源功耗相关的东西,PSCI(Power State Coordination Interface),翻译一下就是“电源状态协作接口”。从名字就能直观看出来,PSCI是一套电源管理
    发表于 04-02 09:45

    如何配置WindowsCE内核及加载自己的驱动

    如何配置WindowsCE内核及加载自己的驱动
    发表于 04-10 10:10 10次下载

    内核驱动架构图及程序

    内核驱动是软件与硬件交互的桥梁,通过文件系统接口访问OpenHarmony内核的硬件资源,是用户与内核之间、进程与进程之间通信的一种方式。每类驱动
    发表于 04-13 11:18 2次下载
    <b class='flag-5'>内核</b><b class='flag-5'>驱动</b>架构图及程序

    Linux内核代码60%都是驱动

    为什么Linux内核代码60%都是驱动? 如果每支持新的设备就加入驱动内核会不会变得越来越臃肿?
    的头像 发表于 07-11 11:48 1075次阅读
    Linux<b class='flag-5'>内核</b>代码60%都是<b class='flag-5'>驱动</b>?

    linux内核的driver_register介绍

    向linux内核注册驱动由driver_register()完成。它将驱动程序的信息添加到内核驱动程序列表
    的头像 发表于 07-14 09:17 2984次阅读
    linux<b class='flag-5'>内核</b><b class='flag-5'>中</b>的driver_register介绍

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

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

    psci接口规范介绍

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

    内核psci架构cpu_ops接口

    cpu_ops接口 驱动初始化完成后,cpu的cpu_ops就可以调用这些回调实现psci功能的调用。如下所示,当devicetreecpu的enable-method设置为psci
    的头像 发表于 12-05 17:25 801次阅读

    bl31psci架构介绍

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

    SMP多核启动PSCI代码示例

    1、std_svc_setup (主要关注设置psci操作集)--有服务 std_svc_setup //services/std_svc/std_svc_setup.c - >psci
    的头像 发表于 12-05 17:45 781次阅读

    PSCI处理函数代码分析

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

    linux驱动程序如何加载进内核

    在Linux系统驱动程序是内核与硬件设备之间的桥梁。它们允许内核与硬件设备进行通信,从而实现对硬件设备的控制和管理。 驱动程序的编写
    的头像 发表于 08-30 15:02 626次阅读

    linux内核通用HID触摸驱动

    在linux内核,为HID触摸面板实现了一个通用的驱动程序,位于/drivers/hid/hid-multitouch.c文件。hid触摸驱动
    的头像 发表于 10-29 10:55 1066次阅读
    linux<b class='flag-5'>内核</b><b class='flag-5'>中</b>通用HID触摸<b class='flag-5'>驱动</b>