acrn
文章平均质量分 78
燕无鸻
这个作者很懒,什么都没留下…
展开
-
Intel RDT 详解
1.RDT前言我们知道在一个虚拟化环境中,宿主机的资源(包括CPU cache和内存带宽)都是共享的。但是如果有一个消耗cache的应用快速消耗了L3缓存,或者一个应用消耗了系统大量内存带宽,那么如何保证其他虚拟机应用呢?如何限制这些“可恶”的邻居呢?针对上诉问题,以前都是通过控制虚拟机逻辑资源来实现,但是调整的粒度实在太粗,针对处理器缓存这样敏感而稀缺的资源,几乎是无能为力的。为此英特尔推出了RDT技术,希望可以解决这个问题。2.RDT技术组成RDT技术有其实有5个功能模块,分别是Cache M转载 2022-05-19 09:18:50 · 2765 阅读 · 0 评论 -
cpu scheduler
一、调度策略调度算法CPU 调度是线程为单位的,一个进程可以包含1个或者多个线程,如果是多个线程,会被分配到不同的cpu运行队列中,如果是1个线程,同一时间只会在一个cpu上允许运行 不同时间则可以被调度到不同的CPU上...原创 2022-02-24 16:44:28 · 451 阅读 · 0 评论 -
In-depth dive into the security features of the Intel/Windows platform secure boot process
Introduction and System ArchitectureWe must first begin with a brief introduction to the hardware platform. Skip this if you have read the awsome material available on the web about the Intel architecture, I’ll try to briefly summarize it here.The Intel转载 2022-01-27 10:22:29 · 1009 阅读 · 0 评论 -
Security of the Intel Graphics Stack
General ArchitectureProcessor graphics - The graphics unit that is part of the processoritself. Has had many codenames over the years, HD Graphics, UHDGraphics, Iris, Gen9, Gen11, Intel Xe and so on. Even the ‘Gen’ namehas double meaning - both genera转载 2022-01-27 09:42:15 · 346 阅读 · 0 评论 -
中断架构-8529A
中断相关概念♦中断源:引起中断的时间 或 发出中断的外设♦分类①外部中断▷可屏蔽中断(INTR引脚,一般是指interrupt的缩写,也就是中断)、 ✔外设 ✔受IF控制,N=8~255 (IF标志位)▷不可屏蔽中断(NMI引脚) (你妈超凶,你必须听) ✔电源,内存错误等 ✔不受IF控制,N=2 ②内部中断 ▷CPU内部 ▷软件中断(指令错误) ▷异常(指令执行时发生错误)●内部中断(异常,E...原创 2022-01-24 15:49:29 · 1594 阅读 · 0 评论 -
Linux设备驱动——PCI总线的初始化
初始化分析下载kernel代码编译后存在system.map:~/codebase/kernel$ cat System.map | grep pci | grep initcallffffffff89f984f0 t __initcall_pci_realloc_setup_params0ffffffff89f985e4 t __initcall_pcibus_class_init2ffffffff89f985e8 t __initcall_pci_driver_init2ffffffff89转载 2021-12-27 14:22:40 · 1871 阅读 · 0 评论 -
bootflow for hypervisor
#define SWITCH_TO(rsp, to) { asm volatile (“movq %0, %%rsp\n” “pushq %1\n” .原创 2021-12-10 11:18:32 · 250 阅读 · 0 评论 -
vt-d 基本操作流程
原创 2021-12-02 17:36:15 · 3853 阅读 · 0 评论 -
cache 一致性与访问原理
访问原理转载 2021-11-17 14:41:37 · 2661 阅读 · 0 评论 -
PCI BAR设置解析
PCI设备有很好的可配置型和易操作性,这很大方面要归功于其地址空间的可动态分配的特性。而动态分配地址空间就是依赖于BAR(base address register)实现的。BAR是PCI配置空间中从0x10 到 0x24的6个register,用来定义PCI需要的配置空间大小以及配置PCI设备占用的地址空间。每个PCI设备在BAR中描述自己需要占用多少地址空间,bios通过所有设备的这些信息构建一张address map,描述系统中资源的分配情况,然后在合理的将地址空间配置给每个PCI设备。这里主要分转载 2020-11-10 18:03:07 · 2860 阅读 · 0 评论 -
module_pci_driver的理解
module_pci_driver(uio_pci_driver);#define module_pci_driver(__pci_driver) \ module_driver(__pci_driver, pci_register_driver, pci_unregister_driver)#define module_pci_driver(__pci_driver) \ module_driver(__pci_driver, pci_register_driver, pci_unregiste原创 2020-11-06 14:40:14 · 1998 阅读 · 0 评论 -
流程图
原创 2020-10-15 16:48:46 · 122 阅读 · 0 评论 -
pci_register_driver
在bus总线对应的数据结构bus_type中,有两份重要的结构体,struct kset drivers和struct kset devices。在写驱动程序的时候,要想驱动程序能工作,首先就要把驱动程序对应的driver程序放进struct kset driver结构体中,然后把设备的信息放入struct kset device中。而pci_register_driver()就是把某个设备下的driver程序放入struct kset drivers结构体中,而这个过程又分成如下子过程:1,首先会调转载 2020-08-12 09:23:50 · 4480 阅读 · 0 评论 -
PCI match过程简单分析
PCI驱动框架分析在内核中与PCI相关的结构体大概有pci_driver 、pci_bus_type 、pci_dev 、pci_bus ,我们前边所说的所有的PCI总线都是指的 pci_bus 。1.1 pci_busstruct pci_bus { struct list_head node; /* node in list of buses */ struct pci_bus *parent; /* parent bus this bridge is o转载 2020-08-11 16:46:09 · 1026 阅读 · 0 评论 -
Linux驱动之bus_register分析
转载:https://blog.csdn.net/u010550992/article/details/50710567http://www.techbulo.com/1903.html上图说明了总线通过两个数据结构:devices_ket和driver_kset来管理注册在此总线上的所有的设备和驱动,为了方便遍历,linux增加了klist_devices和klist_drivers用来实现设备和驱动的遍历struct bus_type mini_bus_type ={ .name = "min转载 2020-08-11 16:15:58 · 1569 阅读 · 1 评论 -
pcie 配置空间 基地址寄存器(BAR)详解
基地址寄存器(BAR)在配置空间(Configuration Space)中的位置如下图所示:其中Type0 Header最多有6个BAR,而Type1 Header最多有两个BAR。这就意味着,对于Endpoint来说,最多可以拥有6个不同的地址空间。但是实际应用中基本上不会用到6个,通常1~3个BAR比较常见。主要注意的是,如果某个设备的BAR没有被全部使用,则对应的BAR应被硬件全被设置为0,并且告知软件这些BAR是不可以操作的。对于被使用的BAR来说,其部分低比特位是不可以被软件操作的,只有其转载 2020-08-11 14:11:28 · 10387 阅读 · 2 评论 -
00:05: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
early_param(“earlycon”, param_setup_earlycon);#define early_param(str, fn) \ __setup_param(str, fn, fn, 1)#define __setup_param(str, unique_id, fn, early) \ static const char __setup_str_##unique_id[] __initconst \ __aligned(1) = str; .原创 2020-07-30 17:40:23 · 2106 阅读 · 0 评论 -
pci device init on hypervisor
1: address translation#define PCI_CONFIG_ADDR 0xCF8U#define PCI_CONFIG_DATA 0xCFCUstatic uint32_t pci_pio_read_cfg(union pci_bdf bdf, uint32_t offset, uint32_t bytes){ uint32_t addr; uint32_t val; addr = pio_off_to_address(bdf, offset)原创 2020-07-03 09:22:02 · 205 阅读 · 0 评论 -
PCI设备初始化
访问PCI设备我们知道CPU和网卡是通过PCI总线相连的,CPU可以直接访问系统内存(虚拟地址),也可以通过映射间接访问总线地址,那CPU怎么访问网卡的存储空间呢?每个网卡都有自己的存储空间,这些空间的卡上地址(在网卡上的地址)本质上是局部的,所以都从0开始,它们不与总线直接相连,在把网卡插上总线并加电之初,从总线上还访问不到这些空间系统初始化时扫描PCI总线上的各个PCI设备(包括网卡),...转载 2020-01-07 13:32:21 · 870 阅读 · 0 评论 -
PCIe总线体系结构入门
连载目录篇:http://blog.chinaaet.com/justlxy/p/5100053251和很多的串行传输协议一样,一个完整的PCIe体系结构包括应用层、事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer)。其中,应用层并不是PCIe Spec所规定的内容,完全由用户根据自己的需求进行设计,另外三层都是PC...转载 2020-01-03 15:37:11 · 429 阅读 · 0 评论 -
PCI总线配置周期产生和配置寄存器
连载目录篇:http://blog.chinaaet.com/justlxy/p/5100053251上一篇文章中也是说到了,I/O Address Space的空间很有限(64KB),所以一般在I/O Space中都有两个寄存器,第一个指向要操作的内部地址,第二个存放读或者写的数据。因此,对于PCI的配置周期来说,包含了两个步骤:Step1:CPU先对IO Address中的0xCF8~0x...转载 2020-01-03 15:30:08 · 440 阅读 · 0 评论 -
PCI总线的地址空间分配
连载目录篇:http://blog.chinaaet.com/justlxy/p/5100053251PCI总线具有32位数据/地址复用总线,所以其存储地址空间为2的32次方=4GB。也就是PCI上的所有设备共同映射到这4GB上,每个PCI设备占用唯一的一段PCI地址,以便于PCI总线统一寻址。每个PCI设备通过PCI寄存器中的基地址寄存器来指定映射的首地址。如下图所示:注:需要注意的是PC...转载 2020-01-03 15:23:53 · 952 阅读 · 0 评论 -
virtio分析
https://blog.51cto.com/12814931/2336611转载 2019-12-31 15:04:26 · 246 阅读 · 0 评论 -
VirtIO实现原理——vring数据结构
Quest数据结构的介绍,我们参照的virtio spec的定义(参考Virtual I/O Device Version 1.0 spec 第二章virtqueues介绍),围绕下面的示意图进行介绍,介绍层次从下到上,从最接近数据buffer到最接近内核块设备进行。有些数据结构初次看可能不是很理解,可以先记住一些概念,后面会通过VirtIO数据传输的流程演示和代码分析,详细解释这些数据结构怎么...转载 2019-12-31 09:37:18 · 5852 阅读 · 2 评论 -
VirtIO实现原理——数据传输演示
初始化示意图假设Host配置的virtqueue队列深度是10,初始化时Descriptor Table有10个条目,用于存放10个buffer指针,如下图所示,Descriptor Table的每一个条目初始化时都指向数组的下一个元素,所有10个entry组成一个descriptorchain。virtqueue的关键成员初始值如下:1. num_free:10,表示有10个空闲buf...转载 2019-12-30 16:38:56 · 2212 阅读 · 1 评论 -
访问PCI设备配置空间的两类方法
https://wenku.baidu.com/view/4561e2a10029bd64783e2cb3.html转载 2019-12-25 22:11:03 · 405 阅读 · 0 评论 -
VM-Entry & VM-Exit
https://blog.csdn.net/wanthelping/article/details/47068795转载 2019-12-13 10:03:46 · 1193 阅读 · 0 评论 -
PCI设备编号
1.PCI设备编号每一个PCI device都有其unique PFA(PCI Fcntion Address)PFA由 bus number、device number、function number组成一条PCI总线支持256个PFA,即支持256个PCI device每个PCI芯片都有自己的device number(取决于IDSEL管脚),每个PCI芯片占用8个PFA。每个PCI...转载 2019-12-10 17:32:39 · 7516 阅读 · 0 评论 -
虚拟化平台主流hypervisor工作原理分析
https://blog.csdn.net/zoosenpin/article/details/88854904#commentBox转载 2019-12-06 13:15:35 · 1010 阅读 · 0 评论