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

    文章

    1309

    浏览量

    39850
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206575
  • 驱动
    +关注

    关注

    11

    文章

    1718

    浏览量

    84352
  • SMP
    SMP
    +关注

    关注

    0

    文章

    68

    浏览量

    19450
收藏 人收藏

    评论

    相关推荐

    如何以模块的方式编译内核驱动

    内核驱动不仅可以将驱动编译到内核,还可以动态的编译内核驱动
    发表于 12-28 07:50

    如何以模块的方式编译内核驱动

    [td]内核驱动不仅可以将驱动编译到内核,还可以动态的编译内核
    发表于 12-29 06:17

    以module的方式编译内核驱动

    [td]内核驱动不仅可以将驱动编译到内核,还可以动态的编译内核
    发表于 12-29 06:41

    在Linux内核添加wifi驱动

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

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

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

    关于Linux内核的设备驱动和设备管理

    关于设备驱动和设备管理,四种内核成分设备类型:在所有unix系统为了统一普通设备的操作所采用的分类模块:Linux内核中用于按需加载和卸载目标代码的机制
    发表于 11-04 14:59

    为什么无法使用内核5.15.32驱动LVDS面板?

    使用 iMX8QM,我能够使用附件的设备树配置驱动我的 LVDS 面板,而无需内核 5.4.70 的 LVDS 到 HDMI 桥。我想使用具有相同设备树文件的
    发表于 03-21 08:40

    Android的Linux内核驱动程序开发教程

    Android内核是基于Linux 2.6内核的,它是一个增强内核版本,除了修改部分Bug外,它提供了用于支持Android平台的设备驱动,这里介绍了Android
    发表于 09-05 14:24 335次下载
    Android的Linux<b class='flag-5'>内核</b>与<b class='flag-5'>驱动</b>程序开发教程

    Linux内核代码60%都是驱动

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

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

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

    psci接口规范介绍

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

    内核中的psci架构cpu_ops接口

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

    bl31中的psci架构介绍

    bl31中的psci架构 bl31为内核提供了一系列运行时服务,psci作为其标准运行时服务的一部分,通过宏DECLARE_RT_SVC注册到系统中。其相应的定义如下: DECLARE _RT_
    的头像 发表于 12-05 17:33 371次阅读
    bl31中的<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 274次阅读

    PSCI处理函数代码分析

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