当前位置: 首页 > news >正文

用vs与dw做网站北京网站优化托管

用vs与dw做网站,北京网站优化托管,百色做网站,做go kegg的在线网站PCIe 的 MSI 中断 前言 什么是 MSI 中断 (Message Signaled Interrupts) 概念与内容介绍待补充 正文 对 EP 的初始化 需要对 EP 的配置空间 MSI 相关功能的寄存器进行初始化,主要有两个寄存器 Message Address 和 Message Data。它们分别的含义是 EP 产生 MSI …

PCIe 的 MSI 中断

前言

  1. 什么是 MSI 中断 (Message Signaled Interrupts)
    概念与内容介绍待补充

正文

  1. 对 EP 的初始化
  • 需要对 EP 的配置空间 MSI 相关功能的寄存器进行初始化,主要有两个寄存器 Message Address 和 Message Data。它们分别的含义是 EP 产生 MSI 中断的操作是往 Message Address 寄存器的地址写入 Message Data 指定的数据,从而来产生 MSI 中断。
  • Message Address 在不同的 CPU 有不同的配置,例如 rk3568 写入的地址为 GICD 中断控制器的某个地址,其他有些 CPU 配置任意地址都可。
  • 还需要对 EP MSI 中断能力进行使能。即下图中的 Message Control Configuration MSI Control Status Register Field Descriptions 寄存器进行配置。
    MSI配置空间
    截图来自 F-Tile Avalon® Streaming Intel® FPGA IP for PCI Express* User Guide
  1. 对 RC 的寄存器初始化
    本文以 designware IP 核的某型 CPU 为例。其他的 CPU 会存在写 GICD 的地址,和下面的配置会有区别
  • 写入 PCIE_MSI_ADDR_LO , 即需要和 EP 配置的 Message Address 相匹配。RC 会捕获 EP 写入这个地址的操作,并触发中断。
  • 写入 PCIE_MSI_INTR0_ENABLE,即使能所有的 MSI 中断
#define PCIE_MSI_ADDR_LO		0x820
#define PCIE_MSI_ADDR_HI		0x824
void dw_pcie_msi_init(struct pcie_port *pp)
{struct dw_pcie *pci = to_dw_pcie_from_pp(pp);u64 msi_target = (u64)pp->msi_data;if (!IS_ENABLED(CONFIG_PCI_MSI))return;/* Program the msi_data */dw_pcie_writel_dbi(pci, PCIE_MSI_ADDR_LO, lower_32_bits(msi_target));dw_pcie_writel_dbi(pci, PCIE_MSI_ADDR_HI, upper_32_bits(msi_target));
}
EXPORT_SYMBOL_GPL(dw_pcie_msi_init);
#define PCIE_MSI_INTR0_ENABLE		0x828
#define PCIE_MSI_INTR0_MASK		0x82C
#define PCIE_MSI_INTR0_STATUS		0x830
void dw_pcie_setup_rc(struct pcie_port *pp)
{u32 val, ctrl, num_ctrls;struct dw_pcie *pci = to_dw_pcie_from_pp(pp);/** Enable DBI read-only registers for writing/updating configuration.* Write permission gets disabled towards the end of this function.*/dw_pcie_dbi_ro_wr_en(pci);dw_pcie_setup(pci);if (pci_msi_enabled() && !pp->ops->msi_host_init) {num_ctrls = pp->num_vectors / MAX_MSI_IRQS_PER_CTRL;/* Initialize IRQ Status array */for (ctrl = 0; ctrl < num_ctrls; ctrl++) {pp->irq_mask[ctrl] = ~0;dw_pcie_writel_dbi(pci, PCIE_MSI_INTR0_MASK +(ctrl * MSI_REG_CTRL_BLOCK_SIZE),pp->irq_mask[ctrl]);dw_pcie_writel_dbi(pci, PCIE_MSI_INTR0_ENABLE +(ctrl * MSI_REG_CTRL_BLOCK_SIZE),~0);}}// 省略了其他操作
}
  1. 中断执行
    在中断服务函数中,需要读 PCIE_MSI_INTR0_STATUS 寄存器来判断是几号MSI中断,这个是由配置的 Message Data 来决定的。

  2. 中断状态清除
    需要写 PCIE_MSI_INTR0_STATUS 寄存器来清除对应的中断,否则中断会持续触发。同时也需要写 GIC 本身的寄存器来清除 PCIe 的中断。

#define PCIE_MSI_INTR0_STATUS		0x830/* MSI int handler */
irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
{int i, pos, irq;unsigned long val;u32 status, num_ctrls;irqreturn_t ret = IRQ_NONE;struct dw_pcie *pci = to_dw_pcie_from_pp(pp);num_ctrls = pp->num_vectors / MAX_MSI_IRQS_PER_CTRL;for (i = 0; i < num_ctrls; i++) {status = dw_pcie_readl_dbi(pci, PCIE_MSI_INTR0_STATUS +(i * MSI_REG_CTRL_BLOCK_SIZE));if (!status)continue;ret = IRQ_HANDLED;val = status;pos = 0;while ((pos = find_next_bit(&val, MAX_MSI_IRQS_PER_CTRL,pos)) != MAX_MSI_IRQS_PER_CTRL) {irq = irq_find_mapping(pp->irq_domain,(i * MAX_MSI_IRQS_PER_CTRL) +pos);generic_handle_irq(irq);pos++;}}return ret;
}
EXPORT_SYMBOL_GPL(dw_handle_msi_irq);

总结

至此,EP 可以正确触发 MSI 中断,并被 RC 捕获后往 GIC 投递 PCIe 中断。本例的 MSI 中断并不是直接写 GIC 的 ITS ((Interrupt Translation Service)在GICv3中是可选的。ITS负责接收来自外设的中断,并将它们转化为LPI INTID发送到相应的Redistributor) 产生的,而是由 RC 中转了然后投递到 GIC 的。

其他

EP 生成 MSI 中断的消息填充,图中的含义是生成一个 MSI Mwr 的 TLP 消息,其组包的数据来源,包括 Message Address 和 Message Data。
生成MSI消息

http://www.15wanjia.com/news/20426.html

相关文章:

  • sketch可以做网站交互么天津百度
  • 网站建设资源2022双11各大电商平台销售数据
  • 广州越秀网站制作谷歌广告代理
  • 产品毕业设计代做网站班级优化大师手机版下载
  • 谷德设计网景观设计搜索引擎优化的方法
  • 旅行社电商网站怎么做盐城seo培训
  • 网站优化平台有哪些群排名优化软件
  • 西安企业网站建设高新区营销型外贸网站建设
  • 做营销网站视频抖音搜索关键词排名查询
  • seo公司哪家好咨询微信搜索seo优化
  • 报名网站建设费用价格关键词挖掘网站
  • 基本网站建设技术百度推广需要多少钱
  • 外贸网站建设注意搜索引擎优化的目的是对用户友好
  • vs2015可以做网站么石家庄seo培训
  • 做网站的范本精准防恶意点击软件
  • 常用微信小程序apiseo投放是什么意思
  • 个人网站上传有啥要求舆情网站
  • wordpress程序做mip步骤北京百度seo服务
  • 商务网站构建方法新闻最新消息
  • 个人操作做网站排名代做seo关键词排名
  • 旅游网站建设的市场分析广告公司
  • 网站建设费计入什么科目比较好查域名
  • 微信网站建设报价表免费的seo优化工具
  • 老河口网站设计苏州seo关键词排名
  • 江油官方网站建设留手机号广告
  • asp.net 个人网站宁波seo排名优化
  • php网站开发书营销策划经典案例
  • 做网站 图片格式淘宝搜索热词排名
  • 公司网站建设费入账seo关键词排名报价
  • 云南省科技网站网站排名搜索