1. 硬件架构

arm64

2. 内核版本

4.19

3. 分析相关函数

get_set_conduit_method()

-> of_property_read_string(np, "method", &method))

-> set_conduit(PSCI_CONDUIT_HVC) 或set_conduit(PSCI_CONDUIT_SMC),根据设备树中的method属性来设定,

设定invoke_psci_fn回调函数(__invoke_psci_fn_smc或者__invoke_psci_fn_hvc)

__invoke_psci_fn_smc()

-> arm_smccc_smc(),这是个宏定义,如下;

#define arm_smccc_smc(...) __arm_smccc_smc(__VA_ARGS__, NULL)

->__arm_smccc_smc(),定义在arch/arm64/kernel/smccc-call.S中:

.macro SMCCC instr

.cfi_startproc

\instr #0

ldr x4, [sp]

stp x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS]

stp x2, x3, [x4, #ARM_SMCCC_RES_X2_OFFS]

ldr x4, [sp, #8]

cbz x4, 1f /* no quirk structure */

ldr x9, [x4, #ARM_SMCCC_QUIRK_ID_OFFS]

cmp x9, #ARM_SMCCC_QUIRK_QCOM_A6

b.ne 1f

str x6, [x4, ARM_SMCCC_QUIRK_STATE_OFFS]

1: ret

.cfi_endproc

.endm

/*

* void arm_smccc_smc(unsigned long a0, unsigned long a1, unsigned long a2,

* unsigned long a3, unsigned long a4, unsigned long a5,

* unsigned long a6, unsigned long a7, struct arm_smccc_res *res,

* struct arm_smccc_quirk *quirk)

*/

ENTRY(__arm_smccc_smc)

SMCCC smc

ENDPROC(__arm_smccc_smc)

linux 内核 sleep,linux内核是如何支持深度睡眠(deep sleep)方式的?相关推荐

  1. linux内核5.3支持cpu,Linux 5.3版内核重磅发布:支持中国兆芯x86 CPU

    经过两个月的开发和八个RC候选版本之后,Linus Torvalds今天终于正式发布了Linux Kernel 5.3版内核.虽然因为旅游耽误了一个星期,但是这个版本带来了诸多重磅更新,值得等待和升级 ...

  2. linux加大ram 内核需要,Linux 5.1内核发布:io_uring接口+支持持久性内存用作RAM

    拼 命 加 载 中 ... Linus Torvalds今天发布了Linux Kernel 5.1内核,这是一个功能强大的内核分支,它带来了许多重要的新功能,包括但不限于:改进了对Intel Fast ...

  3. linux 4.4内核特性,Linux Kernel 4.4.19 LTS长期支持版发布

    原标题:Linux Kernel 4.4.19 LTS长期支持版发布 摘要:近日,内核开发者Greg Kroah-Hartman公布了长期支持的Linux 4.4 Kernel系列第19个维护版本的细 ...

  4. 极客日报:2021年年终奖人均水平为2.3万元;消息人士回应华为自研浏览器内核传闻;Linux取消对a.out格式的支持

    一分钟速览新闻点! 消息人士回应华为自研浏览器内核传闻 研究生编代码有偿帮抢HPV九价疫苗,被采取刑事强制措施 2021年年终奖人均水平为2.3万元 支付宝集五福活动正式开启 微软为元宇宙下血本!68 ...

  5. linux最新内核4.19,Linux Kernel 4.19发布,初步支持Wi-Fi 6, 新EROFS文件系统

    原标题:Linux Kernel 4.19发布,初步支持Wi-Fi 6, 新EROFS文件系统 著名的内核维护者Greg Kroah-Hartman宣布了Linux 4.19内核的发布和下载,这是一次 ...

  6. linux最新内核4.19,Linux Kernel 4.19内核为长期支持版本,有诸多新功能及改进

    Linux Kernel开发者与维护总负责人Greg Kroah-Hartman宣布Linux Kernel 4.19内核将是长期支持版本,即用户使用该内核可得到长期的补丁支持,包括修复重要的漏洞.目 ...

  7. 【内核】linux内核启动流程详细分析【转】

    转自:http://www.cnblogs.com/lcw/p/3337937.html Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件 ...

  8. 【内核】linux内核启动流程详细分析

    Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用 ...

  9. linux 用户态与内核态通信方式简介

    我们平常在写代码时,一般是在用户空间,通过系统调用函数来访问内核空间,这是最常用的一种用户态和内核态通信的方式.(关于 Linux 用户态和内核态可以参考 xx) 除此之外,还有以下四种方式: pro ...

最新文章

  1. 强化学习(六) - 连续空间中的强化学习(RL in Continuous Spaces)及相关实例
  2. 2021年突破人类想象力的6大科学纪录
  3. 一网打尽深度学习之卷积神经网络的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
  4. gRPC in ASP.NET Core 3.x -- Protocol Buffer, Go语言的例子(上)
  5. 看了就彻底明白人生!!!
  6. oc73--NSArray使用
  7. pandas php,pandas分组聚合代码详解
  8. python编程常见小技巧
  9. java及java web学习笔记
  10. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)B Binary Encoding
  11. java基础50 配置文件类(Properties)
  12. 如何在macOS中得到“另存为”快捷方式
  13. 分内外网,下载个东西真不方便,一肚子火
  14. [ASP.NET MVC 小牛之路]08 - Area 使用
  15. Hibernate教程——我的笔记
  16. android 单机地图,天地图app下载
  17. gif 格式图片详解
  18. windows写注册表文件脚本的编写
  19. 单价数量和总价的公式_小学数学基础公式:单价数量总价公式(十二)
  20. 微信小程序信息授权获取(头像,昵称,等)

热门文章

  1. java数组详解_java数组详解
  2. C语言什么时候必须用到二级指针?(需要调用函数为一维空指针确定值的情况下,需要传入二维指针,也就是那个一维指针的指针)
  3. BeyondCompare如何去掉时间戳的匹配(不比较时间)(没解决)
  4. 文本文件与二进制文件及编码关系
  5. 如何比较对比两张图片差异(判断是不是同一张)== all
  6. python 文件操作 open()与with open() as的区别(打开文件)
  7. ResNet50 复现
  8. ubuntu 将 python 设定为python3, pip设定为pip3
  9. Average and Median(500)dp,二分 AtCoder Beginner Contest 236
  10. java工具配置_Java™ 教程(配置实用工具)