自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(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 2724 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 1816

原创 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 2405

原创 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 2606

原创 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 801

原创 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 2585

原创 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 1021

原创 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 1183

原创 驱动人生

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 749 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 1730

原创 Windows internals 7 -- 3 -- 概念与工具

好多书都是看了一半就一直没再看了,每次重新翻起来的时候,又是从第一章开始,这次也不能免俗,从第一章开始先从查看版本号开始吧:在CMD LINE中可以通过WINVER来查看当前系统的版本号前面提到过WINDOWS系统的合并以前,我们公司的驱动代码,最终合成后,叫“ALL IN ONE”这个比较土的名字微软也同样,取了一个挺土的名字, ONE COREONE C

2017-09-21 13:41:56 914

原创 Windows internals 7 -- 2 -- 本书历史

以前看书,从不看所谓的各版本之间的差别现在,感觉,了解一下其中的历史,还是有一定的趣味的,到底什么趣味,见人见智至少可以感受时代的进步,科技的发展,应用的更新,或许直到有一天,所有人的工作都被AI替代了,哈哈第一版本, INSIDE WINDOWS NT,主要包含了WINDOWS NT技术的架构与设计思路, 作者,HELEN CUSTER第二版本,INSIDE WINDOW

2017-09-21 11:24:27 2898

原创 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 4474 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 1419

原创 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 621

原创 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 4545

原创 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 5657

原创 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 1653

原创 PCIe学习笔记(30)--- PL - Electrical -- (5)

Rx equalizationCTLE = Continuous -time linear equalizationDFE = Decision feedback equalization

2017-07-28 17:22:09 1231

原创 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 810

原创 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 2296

原创 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 2020

原创 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 2297

原创 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 1629

原创 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 2091

原创 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 800 1

原创 PCIe学习笔记(23)--- 中断(4)--- 同步问题

存在这样一种现象:设备往系统MEMORY中写数据,“认为”该笔数据写完之后,触发中断中断函数处理该笔数据,但事实上,系统MEMORY中的数据,可能是STALE的导致该问题的原因,第一,写数据是POST的第二,写的过程可能会被DELAY第三,一旦有DELAY,就可能导致中断先于数据写先到方法一:dummy read在ISR中加一个device re

2017-07-17 10:45:35 1292

原创 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 3998

原创 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 1385

原创 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 6010

原创 玩转树莓派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 2150 2

原创 玩转树莓派3 -- 串口问题的解决

买到树莓派3,想通过串口控制台来玩一下结果发现,串口是不能用的这就意味着,开机过程当中,看不到那些字符串打印,之后,也使用不了串口控制台查了一下网上的相关文章主要原因是,树莓派3带有蓝牙功能,而该蓝牙模块是通过硬件串口UART0/ttyAMA0连接的另外还有一个软件串口 mini-UART (ttyS0),但不能产生稳定的频率,因为,该软件串口的频率是与CPU频率相关的

2017-07-08 19:04:24 5395 4

原创 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 3029

原创 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 726

原创 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 3467

原创 ARMv8-A系列学习笔记(6)--Caches

ARM Cortex-A Series Programmer’s Guide for ARMv8-AChapter 11 Caches

2017-04-06 16:08:00 2555

原创 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 949

原创 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 9460

原创 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 10870

原创 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 5908

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除