- 博客(127)
- 收藏
- 关注
原创 AMD IOMMU与Linux (4) -- Domain, Group, Device
1.domain的本质是一个页表,1对1的关系,2.IOMMU_DOMAIN_UNMANAGED vs.IOMMU_DOMAIN_DMA a. IOMMU_DOMAIN_UNMANAGED - DMA mappings managed by IOMMU-API user, usedfor VMs b. IOMMU_DOMAIN_DMA - Internally used for DMA-API implementations. This flag a...
2022-01-10 10:13:51
3463
1
原创 AMD IOMMU与Linux (3) -- DMA
两处会设置struct iommu_ops amd_iommu_ops;一处在struct iommu_device的iommu ops;另一处在struct bus_type的iommu ops;amd_iommu_init ->iommu_go_to_state ->state_next ->amd_iommu_init_pci ->...
2021-12-28 14:14:52
2214
原创 AMD IOMMU与Linux (2) -- IVRS及AMD IOMMU硬件初始化
1. I/O Virtualization ACPI table [1]IVRS (I/O Virtualization Reporting Struct) -> 48-byte header -> IVDB:IVHD (I/O Virtualizaiton Hardware Definition) -- info about IOMMU and devices Types 10h, 11h, 40h ...
2021-12-27 10:54:38
2934
原创 AMD IOMMU与Linux (1) -- 初始化
具体原理就不写了,IOMMU主要做DMA与Interrupt remapping硬件功能上理解起来并不复杂,但结合Linux,复杂度就明显提高参考了一些内容,但大多数是写IOMMU硬件功能的,有提到Linux的大多数也一笔带过Reference [2]是以Intel IOMMU为介绍对象Reference [1]更加有参考价值先从pci_iommu_alloc()函数开始:在执行pci_iommu_alloc()之前,内核已经通过汇编指令,将IOMMU相关的启动函数,加载到IOM
2021-12-24 18:31:57
3228
原创 USB xHCI, NVMe, RDMA, IO_URING, AF_XDP, SDXI
USB xHCI, NVMe, RDMA, IO_URING, AF_XDP都使用生产消费模型Spec Ring/Queue/... Element Producer Consumer Doorbell xHCI Transfer Ring Command Ring TRB (transfer request block) Host/CPU xHC .
2021-12-24 12:07:24
941
原创 2021, Dec日志-关于PCIe的AER
PCIe定义了很多的Cap.但大多数人只用到了其中一些最常用的,比如MSI/MSIX, PMC, ARI, PCI express, PASID等等还有很多Cap, 没有深入了解的实践机会, 比如LTR, OBFF, TPH, 等等,等等,非常之多。另外一些Cap,比如AER, DPE/eDPC, ACS, ATS, SRIOV有一点点了解。ATS, PASID可以看成TA(translation agent), ATPT(address trans and protection t..
2021-12-11 11:31:53
2990
原创 2021,Dec日志-GPU,DPU,IO虚拟化
上一次写还是2020.6写点东西,权当记录1. GPU: Graphic driver最近了解了一下Linux Graphic的驱动, DRM/GEM/TTM等与一个同事聊天时,他说Linux驱动程序就分两类,一类为Graphic,一类为非graphic非graphic简单,Graphic复杂(特别是GEM/TTM, VRAM/GTT内存管理)其实,个人认为Windows下也WDDM是类似的情况而且Graphic驱动,也就那几家公司(NV, INTEL, AMD)有团队在做.
2021-12-10 15:10:11
1178
原创 USB/PCIE/ROOT COMPLEX & Windows/Linux Driver
好久没有写了总结一下工作多年所涉及的内容:1. USB Device: USB1.1, USB2.0, USB3.0, USB3.12. USB Host: xHCI3. PCIe: EP, Switch, Root Complex4. IOMMU5. APIC: IO-APIC, Local APIC软件(驱动)层面:1. Windows AVStream/BDA driver -- USB/PCI PCTV case (WHQL passed)2. Window.
2020-06-06 09:55:34
1301
原创 驱动人生
2018-2019两年时间参与了以下项目PCIe Switch Management SW:Windows KMDF driver Linux kernel driver (包括 NTB kernel driver) Application tool其中,Windows KMDF driver 部分,取得了微软认证 Linux kernel driver (包括 NT...
2019-07-14 14:05:20
826
4
原创 ARMv8-A系列学习笔记(9)--GIC
在学习MINDSHARE ARMv8-A的时候,碰到几个要点:第一:Synchronous v Asynchronous所谓的Sync exception的特点是:1. 是在执行一条具体的指令的时候产生的 (如执行 LOAD/STORE指令的时候,对应的虚拟地址无效,则产生异常)2. 异常处理结束,返回地址,就为产生该异常的指令地址3. 该异常是精确的(precise)
2017-10-27 14:01:40
1906
原创 Windows internals 7 -- 3 -- 概念与工具
好多书都是看了一半就一直没再看了,每次重新翻起来的时候,又是从第一章开始,这次也不能免俗,从第一章开始先从查看版本号开始吧:在CMD LINE中可以通过WINVER来查看当前系统的版本号前面提到过WINDOWS系统的合并以前,我们公司的驱动代码,最终合成后,叫“ALL IN ONE”这个比较土的名字微软也同样,取了一个挺土的名字, ONE COREONE C
2017-09-21 13:41:56
960
原创 Windows internals 7 -- 2 -- 本书历史
以前看书,从不看所谓的各版本之间的差别现在,感觉,了解一下其中的历史,还是有一定的趣味的,到底什么趣味,见人见智至少可以感受时代的进步,科技的发展,应用的更新,或许直到有一天,所有人的工作都被AI替代了,哈哈第一版本, INSIDE WINDOWS NT,主要包含了WINDOWS NT技术的架构与设计思路, 作者,HELEN CUSTER第二版本,INSIDE WINDOW
2017-09-21 11:24:27
3031
原创 Windows internals 7 -- 1 -- 瞎扯扯
最近工作上任务比较不紧张,本着不学习技能不升反降的想法所以,就找了本Windows internals 7,结果,还只找了上半部,没有找到下半部先凑合着学习学习一下吧工作这么多年干windows driver, USB device IP, xHCI host IP, firmware, reference design, uboot code, linux code都整过
2017-09-21 10:53:29
4573
2
原创 PCIe学习笔记(35)--- TL (1)
chapter 5: tlp elements (details of tlp)chapter 6: flow control___________________________________digest (end to end CRC, ECRC)HDR + DATA + DIGEST = TLPseq num + TLP + CRC : DLLS
2017-08-07 17:15:03
1488
原创 PCIe学习笔记(34)--- DLL (1)
fixed size of 8 bytes (SDP/END + 6 bytes / SDP*2 + 6 bytes: DLLP type 1B + 3B + 2B CRC)no target or routing informationDLLPs not subject to flow controlDLLPs no acknowledgement (time-out mec
2017-08-02 15:11:25
673
原创 PCIe学习笔记(33)--- PL - Link register
Link capability register:Max link speed (supported link speeds vector field bit x)max link width (x1 ... x32)link capability 2 register:supportd link speeds vecotrlink status registe
2017-08-01 16:59:40
4864
原创 PCIe学习笔记(32)--- PL - Link initialization and training (1)
chapter 14: link initialization and trainingPCIe将LTSSM归到了PHYSICAL LAYERSS/SSP USB将LTSSM归到了LINK LAYERLTSSM: LINK TRAINING STATUS SMGEN 3使用EIEOS来做SYMBOL LOCK (*)LANE REVERS
2017-08-01 16:21:17
5971
原创 PCIe学习笔记(31)--- PL-Logical (Gen 1 and Gen 2) --- (3)
Rx clock: data bit transitionsLocal clockdifferent between, compensation neededLink training: TS1/2, bit locklow power state, such as L0s, or L1, lose synchronization.transmitter sends a
2017-08-01 15:04:57
1858
原创 PCIe学习笔记(30)--- PL - Electrical -- (5)
Rx equalizationCTLE = Continuous -time linear equalizationDFE = Decision feedback equalization
2017-07-28 17:22:09
1325
原创 PCIe学习笔记(29)--- PL - Electrical -- (4)
Jitteredge arrives before or after its ideal timejitter分类un-correlated-jitter 与被传输的数据不相关Rj - Random jitter 不可被预测的,无限的,服从高斯分布,一般由电气或者热噪声引入系统Dj - Deterministic jitter 可被预测的,有限的,一般由EMI, CRO
2017-07-28 17:02:42
930
原创 PCIe学习笔记(28)--- PL - Electrical -- (3)
Rx SpecsTransmission Loss:TX Vdiff p-p min = 800RX Vdiff p-p = 17513.2dB___________________________________Signal compensation:TX equalization: de-emphasis (two-tap T
2017-07-28 14:30:40
2450
原创 PCIe学习笔记(27)--- PL - Electrical -- (2)
Tx specsMeasuring Tx Signals:"breakout channel" (?)SMA (SubMiniature version A) microwave-type coaxial connectors (?)low-jitter clock source to the device under test (?)"replica chan
2017-07-28 10:44:38
2163
原创 PCIe学习笔记(26)--- PL - Electrical -- (1)
对应章节Chapter 13 physical layer electricallink training是以2.5G开始的一个设备如果支持8G,必须支持2.5G,但非必须支持5GL0 full-on state差分电路中,保持DC common mode voltage如果进了electrical idle则会低于一个threshold value
2017-07-27 17:18:54
2444
原创 PCIe学习笔记(25)--- PL-Logical (Gen 1 and Gen 2) --- (2)
TX:DLL往PL送DATA CHARACTER,伴随着其它的几个工作单元:1. K SYMBOLTLP, DLLP需要一个START, 一个ENDSTP, END(EDB)SDP, END其它的K SYMBOL包括: COM, PAD, SKP, STP, SDP, END, EBD, FTS, IDL, EIE2. OSTS1/2SKIP O
2017-07-27 15:33:27
1813
原创 PCIe学习笔记(24)--- PL-Logical (Gen 1 and Gen 2) --- (1)
对应Chapter 11: Physical layer- logical (Gen 1 and Gen2)TX: D-DATA/K-CONTROL: Gen1/2是区分D/K symbol的,所以有D/K# bitGen3没有K symbol, 128 bit (16 bytes) data block中, 有2 bit的SYNC HEADER, 其中包含的信息,让REC
2017-07-27 11:51:25
2204
原创 PCIe Summary
到目前为止,一共作了23个PCIe的学习笔记学习的书本是:MindShare_PCIe30_eBook_v1.0.pdf已经学习,并作了笔记的章节是:Part One: The big pictureChapter 1: BackgroundChapter 2: PCIe architecture overviewChapter 3: Con
2017-07-27 10:40:05
867
1
原创 PCIe学习笔记(23)--- 中断(4)--- 同步问题
存在这样一种现象:设备往系统MEMORY中写数据,“认为”该笔数据写完之后,触发中断中断函数处理该笔数据,但事实上,系统MEMORY中的数据,可能是STALE的导致该问题的原因,第一,写数据是POST的第二,写的过程可能会被DELAY第三,一旦有DELAY,就可能导致中断先于数据写先到方法一:dummy read在ISR中加一个device re
2017-07-17 10:45:35
1431
原创 PCIe学习笔记(22)--- 中断(3)---MSI-X
MSI-XMSI最多支持32MSI-X最多支持2048Message control: bit 15: MSI-X Enable (是否用MSI-X中断,或者用MSI, INTx来替代)bit 14: Function Mask (是否可以发中断)10:0: Table size in N-1cap structure:MSI-X Table
2017-07-14 14:35:43
4110
原创 PCIe学习笔记(21)--- 中断(2)---MSI
MSIMSI cap registers(config space area, 256B):Target mem addrdata value to write to targetnumber of unique messagesMSI寄存器刚刚才了解的一点Target message address register一般是address of Lo
2017-07-14 14:17:07
1474
原创 PCIe学习笔记(20)--- 中断(1)--- Legacy
MSI 与 INTx Message是不同的东西Command: Interrupt Acknowledge for INTR(PIC output) (INTx# inputs)PIC returns a 8-bit value called the Interrupt Vector获得VECTORSMP, from PIC to IO APICAPIC bu
2017-07-11 19:02:40
6243
原创 玩转树莓派3 -- 内核编译
整理了一下RASPBERRY PI 3, LINUX内核的编译如下:KERNEL=kernel7make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfigmak
2017-07-09 13:44:38
2203
1
原创 玩转树莓派3 -- 串口问题的解决
买到树莓派3,想通过串口控制台来玩一下结果发现,串口是不能用的这就意味着,开机过程当中,看不到那些字符串打印,之后,也使用不了串口控制台查了一下网上的相关文章主要原因是,树莓派3带有蓝牙功能,而该蓝牙模块是通过硬件串口UART0/ttyAMA0连接的另外还有一个软件串口 mini-UART (ttyS0),但不能产生稳定的频率,因为,该软件串口的频率是与CPU频率相关的
2017-07-08 19:04:24
5542
2
原创 PCIe学习笔记(19)--- Power Management (4)--software init link pwr mng
1.一旦软件将EP放入D1,2,3HOT 中的任何一个状态,EP需要进入L1EP在需要响应CONFIG读写的时候,回到L02. EP收到CONFI写, PMCSR -- POWER STATE, EP就发送PM_Enter_L1 DLLP,让LINK进入L1 (PM_Request_ACK response)3.what is flow control ty
2017-04-28 17:55:22
3385
原创 ARMv8-A系列学习笔记(8)--Chapter 10 AArch64 Exception Handling
Chapter 10AArch64 Exception Handling EXCEPTION的分类:1. INTERRUPTSIRQ and FIQassociated with input pins on the coreasynchronous2. ABORTSINSTRUCTION ABORTS or DATA ABORTSerror
2017-04-07 17:24:54
801
原创 ARMv8-A系列学习笔记(7)--Chapter 13 Memory Ordering
Chapter 13Memory Ordering 两种NORMAL与DEVICE (ARMV7 还有一种STRONGLY ORDERED,V8没有了)NORMAL:all code, most data regionsRAM, Flash, or ROMweakly ordered, fewer restrictions p
2017-04-07 13:29:49
3628
原创 ARMv8-A系列学习笔记(6)--Caches
ARM Cortex-A Series Programmer’s Guide for ARMv8-AChapter 11 Caches
2017-04-06 16:08:00
2660
原创 ARMv8-A系列学习笔记(5)--Chapter 15 Power Management
ARM Cortex-A Series Programmer’s Guide for ARMv8-AChapter 15 Power Management两类功耗:静态:即漏电流,与SILICON面积成正比,制成、工艺(fabrication geometries)越小,静态功耗占比越高动态:由于晶体管开关,与时钟速率正相关,与晶体管数量正相关软件根据计算量
2017-04-05 13:26:07
1045
原创 PCIe学习笔记(18)--- Power Management (3)
一,ASPM--ACTIVE STATE POWER MANAGEMENTASPM是硬件自主的,软件无法控制且也无视其状态的变化,软件只能通过配置寄存器来使能或禁止ASMPASPM是LINK相关的电源管理机制ASPM只在D0状态存在ASPM包括两种LINK状态: L0s(transmitter in EI electrical idle), L1 ASPM(both trans
2017-04-03 22:37:01
10136
原创 PCIe学习笔记(17)--- Power Management (2)
PCI-PM spec定义了一组POWER MANAGEMENT CAPABILITY CONFIGURATION REGISTERS该组寄存器位于PCI-COMPATIBLE CONFIGURATION SPACE (256 BYTE)CAPABILITY ID = 01hD0-3之间的切换,是由软件对PM CAPABILITY REGISTERS中的PMCSR 的POWER
2017-04-02 22:44:26
11131
原创 PCIe学习笔记(16)--- Power Management (1)
参与电源管理的组件:OS: 全局系统电源管理ACPI DRIVER: 针对EMBEDDED SYSTEM DEVICES(非INDUSTRY-STANDARD)例如:CHIPSET-SPECIFIC REGISTERS, SYSTEM BOARD-SPECIFIC REGISTERSPCI PM定义了一组寄存器,由PCIE BUS DRIVER 而非ACPI DRIVER来控制
2017-04-01 17:30:01
6187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人