GIC/ITS代码分析(9)中断应用实例之IPI中断

news2024/11/30 6:47:45

        PPI中断为外设私有中断,在ARM64上arch_timer为PPI中断。这里以arch_timer为例(代码位置drivers/clocksource/arm_arch_timer.c),作应用实例讲解。

        先对ARM64通用定时器作简要介绍。通用定时器为Arm core提供标准定时器。通用定时器包括一个系统counter和一组每core定时器。

        其中system counter处于always on的电源域,它提供固定频率的系统计数。它对系统上所有core都是广播的。每个core都有一组timer,它们与system counter进行比较,软件可配置每个timer在将来某个点产生中断或event。如上图,当中断产生时会通过GIC中GICR传递给GICC,最终由本core来完成中断的处理。

        在ARM64中如下中断ID(INTID)用于由SBSA定义的每个定时器,如下:

Timer

SBSA推荐的INTID

EL1 physical timer

30

EL1 virtual timer

27

Non-secure EL2 physical timer

26

Non-secure EL2 virtual timer

28

EL3 physical timer

29

Secure EL2 physical timer

20

Secure EL2 virtual timer

19

        当支持Timer虚拟化时,Non-secure EL2 physical timer用于hypervisor上arch_timer,EL1 virtual timer用于guest上arch_timer。

这里以这种情况进行介绍。

        在ACPI情况下,TIMER是在GTDT表中定义的。

[GTDT表介绍可自行查看协议]

   ARM系统的timer定义为TIMER_ACPI_DECLARE(arch_timer, ACPI_SIG_GTDT, arch_timer_acpi_init)。这里分析在hypervisor上的情况。

  1. 通过函数acpi_gtdt_init()获取GTDT表中定义的定时器数目;
  2. 从GTDT表中获取HYP中断号,并通过函数acpi_register_gsi()注册中断;
  3. 从GTDT表中获取非安全EL1 physical中断号,并通过函数acpi_register_gsi()注册中断;
  4. 从GTDT表中获取EL1 virtual中断号,并通过函数acpi_register_gsi()注册中断;
  5. 将EL1 physical中断号和EL1 virtual中断号传递给KVM用;
  6. 读取系统计数器频率;
  7. 在Host上选择HYP中断为arch_timer,注意在guest上会选择EL1 virtual中断为arch_timer;
  8. 检查定时器是否处于always on电源域;
  9. 在host上注册HYP中断对应的中断处理函数arch_timer_handler_phys,在guest上注册virtual中断对应的中断处理函数arch_timer_handler_virt;
  10. 调用arch_timer_common_init()将arch_timer注册到clocksource和sched_clock中。

        无论是arch_timer_handler_phys()还是arch_timer_handler_virt(),最终会调用用户注册的定时器中断处理函数。

        对于arch_timer_common_init(),调用如下:

  1. 若在guest上为VIRT timer情况,获取计数接口为arch_counter_get_cntvct(),通过vtimer对应的寄存器获取计数;
  2. 若在host上为ptimer情况,获取计数接口为arch_counter_get_cntpct(),通过ptimer对应的寄存器获取计数;
  3. 以当前时钟频率注册clocksource;
  4. 采用上述步骤(1)中的计数接口来注册sched clock。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VSCode下载安装与使用教程

目录1. 打开官网进行下载安装2. 下载3. 安装4. 使用4.1 python extensions4.2 建立 python 工作区4.3 运行python代码的 3 种方法方法一:点击按钮方法二:右键菜单方法三:交互式解释器5. debug参考资料VSCode是一款免费开源的现代化轻量级代码…

【C++修炼之路】8. string类详解

每一个不曾起舞的日子都是对生命的辜负 C之string类本节目标1. string类概览1.1 string的由来1.2 string函数列表2.string常用接口1. 初始化2. string::npos3. c_str()4. 获取长度(length、size)5. 容量(size、capacity)6. 插入(insert)7. 替…

牛客网-《刷C语言百题》第三期

✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!! 📃个人主页:rivencode的个人主页 🔥系列专栏:《C语言入门必刷百题》 &#x…

【HTML5期末大作业】制作一个简单HTML我的班级网页(HTML+CSS+JS)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

微信小程序 |从零实现酷炫纸质翻页效果

📌个人主页:个人主页 ​🧀 推荐专栏:小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏!从个人到商业的全套开发教程,实打实的干货分享,确定不来看看? …

保姆级透明背景动画导出 —— json格式(Mac系统)

日常能想到的小动画基本就是使用ps导出GIF动画/AE通过插件直接导出GIF,方便快捷;但最近工作中遇到了关于透明背景导出GIF动画的问题:导出的GIF动画有白边,有锯齿感。 网上找了一大堆教程,主要原因出在GIF格式本身的问…

黑马程序员Java实战项目--- ATM系统

项目介绍与功能演示 黑马银行ATM系统技术选型分析: 学习本项目,你将至少得到如下收获: 1、优秀的面向对象编程能力。 2、 清晰、缜密的业务、数据分析能力。 3、熟练使用程序流程技术来控制计算机完成自己的想法。 4、形成良好的编码习惯…

【面试题】移除数组删除重复项合并数组

1️⃣ 原地移除数组中所有的元素val 【OJ链接】 2️⃣ 删除排序数组中的重复项 【OJ链接】 3️⃣ 合并两个有序数组 【OJ链接】 1️⃣ 原地移除数组中所有的元素val 题目要求是要在数组中,把指定的数字全部去除,题目中也是强调了空间复杂度要求为O(1)&am…

项目经理要“谋定而后动,知止而有得,万事皆有法,不可乱也”

出自《大学》,“谋定而后动,知止而有得”的含义为谋划准确周到而后行动,知道目的地(合适的时机收手)才能够有所收获。 谋定而后动是告诉我们做任何事一定要进行谋划部署,做好准备,我们才能开始行…

数据结构作业:时间复杂度和二叉树

计算时间复杂度&#xff1a; int x0,i,j; 1 for(i1;i<n;i) n { for(j1;j<2*i;j) 2(n-1) { x; 2(n-1)*n } } 2(n-1)*n2n^2-2n 修改后的运行次数函数中&#xff0c;只保留最高阶项。 所以时间复杂度为 &#xff1a;…

老生常谈的商城系统(Asp.Net+uniapp)

真正的大师,永远都怀着一颗学徒的心&#xff01; 最近几天合肥是真热 这时候就应该宅在家里 吃着西瓜 啃着鸭脖 喝着啤酒 刷着剧 想想也太美好了吧 哈哈 我得醒醒 写完这篇推荐 吃吃喝喝去了 一、项目简介 今天推荐一款商城系统&#xff0c;虽然比较老生常谈了&#xff0…

【项目】若依框架如何实现批量导入,并解析出表中内容返回给前端? - poi依赖

文章目录实现效果&#xff1a;具体实现步骤&#xff1a;扩展实例内容&#xff1a;poi工具包ExcelHandlerAdapter接口ExcelUtil.java代码controllerserviceserviceImplmapper.javamapper.xmlTnProductProperty.java实现效果&#xff1a; 点击“导入excl”按钮 --> 弹出“文件…

MSDC 4.3 接口规范(27)

MSDC 4.3 接口规范&#xff08;27&#xff09;7.4.4 代码7.4.5 更新组呼业务7.4.5.1 接口函数7.4.5.2 先决条件7.4.5.3 说明7.4.5.4 调用流程7.4.6 其他信息通知7.4.6.1 组呼服务停止7.4.6.1.1 接口函数7.4.6.1.2 先决条件7.4.6.1.3 说明7.4.6.1.4 调用流程7.4.6.2 SAI 列表更新…

Nginx禁止文件下载防止服务器被恶意扫描

比如将网站数据库导出到站点根目录进行备份&#xff0c;很有可能也会被别人下载&#xff0c;从而导致数据丢失的风险。以下规则可以防止一些常规的文件被下载&#xff0c;可根据实际情况增减。我们可以通过以下俩种方法来防止服务器被恶意扫描&#xff0c;其中以彼之道&#xf…

ffmpeg解复用FLV文件

该博文是基于&#xff1a; ffmpeg&#xff1a;V 5.1.2 FLV格式是H2.64视频和aac音频复用得到的格式&#xff0c;我们所说的FLV解复用就是将FLV格式的数据的H2.64视频帧和aac音频帧分离。 分离完成后&#xff0c;音频是纯数据无法播放&#xff0c;需要添加ADTS头&#xff0c;视频…

浅谈基于以太网的煤矿电力监控系统的设计与应用

王兰 安科瑞电气股份有限公司 上海嘉定 201801 摘 要&#xff1a;针对传统煤矿电力监控系统通讯网络性能较差、无法实现准确故障定位及报警、不具备数据交互功能等问题&#xff0c;结合分布式网络及GPS授时技术设计了一套基于工业以太网及RS485总线架构的煤矿电力监控系…

第二十三课.扩散模型

目录概述前向过程逆向过程DDPM概述 近几年扩散模型不断涌现&#xff0c;但都来源于一个基础模型&#xff1a;DDPM&#xff08;Denoising Diffusion Probabilistic Model&#xff09;。扩散模型本质是生成模型&#xff0c;过去我们常用的生成模型包括GAN和VAE&#xff0c;利用随…

【Linux】冯诺依曼体系结构

目录&#x1f308;前言&#x1f337;1、冯诺依曼体系结构&#x1f338;2、操作系统(Operator System)&#x1f339;2.1、概念&#x1f340;2.2、如何理解管理&#x1f341;3、进程&#x1f342;3.1、概念&#x1f308;前言 本篇文章进行操作系统中进程的学习&#xff01;&…

全新一代智慧园区数字孪生解决方案,为园区运营商和集成商赋能!

对于园区运营方而言&#xff0c;园区既要满足使用者的需求&#xff0c;还要面对后期运营过程中大量、繁琐的维护管理工作&#xff0c;同时还要兼顾园区运维效率和管理成本。 随着5G、物联网、云计算、人工智能、大数据等技术的快速发展和应用&#xff0c;园区运维智能化升级已…

自动控制原理 - 2 控制系统的数学模型 节2.7-2.10

2 控制系统的数学模型2.7 结构图的等效变换准则2.8 结构图等效变换的应用2.9 信号流图2.10 梅逊公式 2 控制系统的数学模型 2.7 结构图的等效变换准则 结构图没有直接给出系统输入与输出之间的定量关系。如何得到系统输入输出之间的传递函数&#xff0c;从而便于进一步分析系…