码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • GIC/ITS代码分析(7)中断应用实例之LPI中断


             本节以hisi_sas驱动(drivers/scsi/hisi_sas/hisi_sas_v3_hw.c)的PCIE MSI中断为例,讲叙LPI中断的中断应用实例。

            在开始之前再次对LPI中断的产生作介绍。当外设写GITS_TRANSLATER时,ITS将根据device id和event id将中断路由到特定的GICR上,最后发送到对应的GICC上。

    1 中断的分配

            hisi_sas驱动采用函数pci_alloc_irq_vectors()分配中断,这里分成两种情况:MSI中断和MSIX中断。这里我们只关注MSI中断。

    对于MSI情况,具体执行情况如下:

    步骤如下:

    1. 通过函数pci_msi_vec_count()从PCI_MSI_FLAGS读取MSI中断数目;
    2. 对于设置亲和性的情况,通过irq_calc_affinity_vectors()计算中断的亲和性;
    3. 通过函数pci_msi_enable(dev, 0)禁用MSI中断;
    4. 通过函数irq_create_affinity_mask()创建亲和性mask;
    5. 分配msi_desc,并根据eventid插入;
    6. 调用ops->msi_prepare()接口,对于ITS来说,分配its_device,建立device table表项(即执行MAPD命令);
    7. 调用函数__irq_domain_alloc_irqs()分配分配nr_vector个虚中断virq,这是中断分配的通用流程(实际上分配并映射虚拟中断,调用ops->alloc()设置irq_chip和中断处理函数);
    8. 对每个中断,调用ops->activate()接口对中断进行激活,对于ITS来说,激活中断,在ITT中建立deviceid/eventid与ite的映射(即执行MAPTI命令)。

    2 中断请求及处理

            hisi_sas驱动调用函数requeste_threaded_irq()申请中断并设置回调函数。该过程在GIC/ITS代码分析(4)中断的分配/映射及注册 已作详细介绍。

            LPI中断的处理由中断异常发起,最终由函数handle_fasteoi_irq()进行处理,执行驱动注册的回调函数。详细过程见GIC/ITS代码分析(6)中断处理 。

     

     

     

  • 相关阅读:
    自动导入时,Element-plus Message Box组件样式丢失
    微信小程序:图片秒加水印制作生成
    virtio device type : Block Device
    Spring框架(十):Spring注解开发配置MyBatis框架等第三方框架
    OKHttp请求上传文件
    C语言笔记之指针
    基于Java的长整数加减法算法设计
    软件测试面试题 —— 整理与解析(3)
    SOLIDWORKS Visualize 界面介绍
    ElasticSearch ( 三 ) 基本操作
  • 原文地址:https://blog.csdn.net/flyingnosky/article/details/127624296
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号