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

微网站费用百度优化服务

微网站费用,百度优化服务,wordpress地址无法更改,恩施北京网站建设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.zhongyajixie.com/news/30032.html

相关文章:

  • 营销型网站建设微博漯河网站seo
  • .net做网站教程成品短视频网站源码搭建
  • 网站怎么做png阴影深圳高端seo公司助力企业
  • 武汉手机网站建设如何已备案域名交易平台
  • 万里学院 网站建设万网官网
  • 做ppt的网站有哪些360优化大师下载安装
  • 有域名没有服务器怎么做网站合理使用说明
  • 制作网页类型一般分为什么seo搜索引擎优化5
  • 如何做网站个人关键词提取工具
  • 常德市政府网广州seo网络推广员
  • 网络品牌营销策略国内专业的seo机构
  • 做创意网站推广联盟
  • 四川省人民政府政务网北京seo关键词
  • 北京市政府网站官网苹果aso优化
  • 宠物网站设计与制作西安疫情最新数据消息中高风险地区
  • 阜阳网站建设价格低郴州网站建设网络推广平台
  • 微博网站建设看广告收益的正规平台
  • 运城网站推广企业seo顾问服务
  • 襄阳做网站排行榜百度seo排名优化公司
  • 青岛网站建设全包怎么建立自己的企业网站
  • 商城网站seo百度一键优化
  • 营销创意网站市场营销在线课程
  • 北京手机网站开发价格seo是哪个国家
  • 政务公开网站项目建设书哪里做网络推广好
  • 自己做网站租服务器运营推广怎么做
  • 做网站 设计师很网络公司网络推广
  • 做问卷网站google play store
  • 做交友网站需要什么山东疫情最新消息
  • 如何做淘客网站企业网络推广方案策划书
  • 开源模板网站网络广告投放方案