- 博客(10)
- 收藏
- 关注
原创 PCIe ATS Service & Virtualization Software
Group的操作是通过打开/dev/vifo/<group_id>文件, 对其执行ioctl操作, 主要的commands有VFIO_GROUP_GET_DEVICE_FD,VFIO_GROUP_GET_STATUS,VFIO_GROUP_SET_CONTAINER,VFIO_GROUP_UNSET_CONTAINER;Tx/Rx buffer的guest_phy_address是虚拟机软件写入到Bar_Space的DMA Tx/Rx Registers里的;
2025-04-19 14:51:33
248
原创 PCIe ATS Service/Virtualization Software
(3)因此ATS启动, 向主机IOMMU发起Address-Translation Request TLP, 该TLP是MemRd类型, 但target-address是untranslated_address(guest_phy_address), IOMMU回复Completion TLP给EP, 包含主机内存的phy-memory-address;(5)guest_phy_address/phy_address的mapping建立在EP的ATC Table里;
2025-04-19 14:48:18
213
原创 PCIe DPC Feature
Power-down/power-up DSP/EP Link, 在DSP端口Ingress direction, capture TLP(ERR_COR) Message, msgCode是0x30;在DPC Capability里, 使能”DPC Trigger” bit, 使能”DPC ERR_COR” bit;
2025-04-19 14:47:10
405
原创 PCIe LTR Message TLP
在Device Control 2 Register里, enable LTR_Mechanism, LTR message 将从EP发往RC;在EP LTR Capability Register里, 修改Max No-Snoop/Snoop Latency;在TLP Instrument-device上Capture LTR Message, msgCode是0x10;
2025-04-19 14:45:48
129
原创 PCIe Power Management Feature功能
在EP Power Capability Register里,设置PM_State bits为D3hot, EP发送PM_Enter_L1 DLLP给DSP, DSP回PM_Request_ACK DLLP给EP;EP 发送PM_Active_State_Request_L1给DSP, 若DSP就绪进入L1 State, 则回PM_Request_ACK给EP, Link进入L1 State;使用power-down/power-up DSP/EP Link来恢复L0 State;
2025-04-19 14:44:37
223
原创 PCI Express Capability Interrupts(PME, AER, DPC, Hotplug)
Hotplug模块在调用request_irq()时使用handling_flag(IRQF_SHARED);软件需Enable “PME Interrupt Enable” bit, 并且Enable PME_En” bit, 然后软件从PCI Express Capabilities Register读取“Interrupt Message Number”作为PM_PME的Event Interrupt number;软件需Enable “Hot-Plug Interrupt” bit;
2025-04-19 14:41:18
695
原创 Linux NTB(non-transparent-bridge) device driver of PCIe Switch
PCIe NTB(Non-Transparent-Bridge)用于2 PCIe Partitions之间的communication;PCIe Switch有多个PCIe Partitions, 每个Partition有1个USP接主机RC, 有多个DSP扩展PCIe端口连接PCIe EPs, USP/DSP都是PCIe Bridge类型;
2025-04-19 14:37:48
1722
原创 Linux Ethernet Device driver 数据结构和软件流程
调用e1000_tx_map()将上层skb->data映射到phy-mem-address, 放到tx_ring的buffer_info[].dma里调用e1000_tx_queue()将buffer_info.dma放到tx_desc.buffer_addr里, tx_ring.tx_desc[0]的phy-mem-address是配置在DMA Tx TDBAH/TDBAL Registers里, 启动DMA从tx_desc[].buffer_addr里取data, 发送到HW Fifo里;
2025-04-19 14:21:54
1540
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人