
ARCH
文章平均质量分 83
hx_op
这个作者很懒,什么都没留下…
展开
-
iommu & intel-iommu实现
iommu & intel-iommu本篇文章主要针对iommu和intel-iommu讲述linux代码具体实现。同时由于这里整体实现代码较多,文章主要从iommu、domain、group、device这几个数据结构出发,阐述这几个数据结构如何建立关联,并讲解如果建立的iommu映射。先不考虑vfio的情况,只考虑物理机开启iommu的情况。第二部分会针对vfio做讨论。iommu...原创 2020-03-19 15:02:02 · 3904 阅读 · 0 评论 -
Posted-Interrupt
文章目录1 virtual APIC2 Posted-Interrupt原理3 Posted-Interrupt实现问题记录1 virtual APIC这里只讨论利用硬件实现virtual APIC的情况,在硬件实现过程中,会分配一个物理页虚拟APIC。对与APIC的一些寄存器访问可以配置是否产生vm exit,详见《64-ia-32-architectures-software-develo...原创 2020-01-18 14:12:44 · 3059 阅读 · 0 评论 -
VFIO PassThrough
VFIO PassThrough对于VFIO的概述可以参考文章vfio 概述。这里以PCI设备为例讲述VFIO PassThrough具体实现(VFIO不仅仅支持PCI设备)。对于一个透传给虚机的PCI设备,主要处理config空间透传、BAR空间透传和中断三方面,下面分别讲述如何实现这两方面的透传。1.config空间透传实现对于config空间,或者是模拟,或者是透传,具体行为由qemu...原创 2020-01-18 14:07:13 · 2821 阅读 · 0 评论 -
PCI入门
PCI入门1. PCI基础基于PCI总线的处理器系统结构图如下:1.1 Host主桥PCI总线树主要由Host主桥(存在与SouthBridge)、PCI总线、PCI设备构成,Host主桥主要功能包括:隔离处理器系统的存储器域和PCI总线域,每个Host主桥都对应一个PCI总线域管理PCI总线域完成处理起与PCI设备间的数据交换1.2 PCI总线PCI总线由Host主桥或P...原创 2020-01-18 13:28:35 · 5373 阅读 · 0 评论 -
内存虚拟化-shadow实现
内存虚拟化1. 虚拟化目的提供给虚机从 零地址开始的连续物理内存空间视图虚机之间隔离及共享内存资源2. 概念阐述地址空间和物理内存空间:地址空间可以理解为地址域,比如32bit CPU,能访问的地址空间是2 ^ 32 = 4G,这是地址空间,但是我可以只插1G内存。即使插4G内存,有一部分地址空间还要划分给mmio使用,物理内存占用整个地址空间的一部分,它俩并不是一个慨念。在虚拟化...原创 2020-01-17 23:54:05 · 2392 阅读 · 2 评论 -
SylixOS针对cortex-m平台的实现
SylixOS cortex-m支持对于cortex-m平台,根据任务切换的手段不同,SylixOS有两个不同版本,一个版本是利用svc进行任务切换等操作,另一个版本是利用pendsv进行任务切换,下面会对两个版本的实现方式进行阐述。cortex-m简介在介绍具体实现前,先简单介绍一下cortex-m平台关于任务切换、中断响应、中断嵌套的工作原理。主动保存上下文这都好办,但是当中断来临时如何...原创 2019-04-20 00:58:52 · 500 阅读 · 0 评论 -
浅谈ldrex
LDREX简介在Armv6开始支持多核,通过ldrex与strex指令来保证数据操作的原子性,比如自旋锁的上锁操作、原子变量操作等。在Armv6之前,都是单核,为保证数据的原子性,需要进行关中断操作。对于多核平台,关中断操作只能关闭本核中断,要想对数据进行原子操作,必须借助ldrex指令与strex。对于ldrex指令与strex指令原理这里不在介绍,网上资料很多,下面简单介绍SylixOS的队...原创 2019-04-16 20:40:23 · 2815 阅读 · 0 评论 -
cache组织方式(VIVT、VIPT、PIPT)
cache组织方式本文主要讲述如何根据虚拟地址或物理地址来寻找cache,及各种方案的优劣比较。在阅读前,需要对cache基本工作原理及MMU工作原理有一定了解,比如cache的映射方式(直接映射,组相联,全相联),虚拟地址到物理地址的转换过程及TLB等。VIVT(Virtual Index Virtual Tag)使用虚拟地址做索引,虚拟地址做Tag。早期的ARM处理器一般采用这种方式,在...原创 2019-04-12 16:33:56 · 19400 阅读 · 5 评论 -
多核处理器cache一致性
多核处理器cache一致性实现对于多核处理器,每个核都有独立cache,通过一致性协议来维护一个有限状态机,根据存储器读写指令或总线上的传输,进行状态迁移和相应的cache操作来保证cache一致性。cache一致性协议主要有两大类别,一类是监听协议(Snooping Protocol),每个cache都要被监听或者其它cache的总线活动;另外一类是目录协议(Directory Protoco...原创 2019-04-12 14:05:40 · 6333 阅读 · 0 评论 -
SylixOS backtrace实现
SylixOS backtrace实现backtrace用于输出当前调用栈信息,根据这些信息可以知道程序运行流程,有助于分析bug实现原理下面分别以ARM平台(ARMV7-A)和x86平台(32位)为例,讲述backtrace实现原理。ARM平台实现这里先简单介绍下ARM平台下,c语言函数的调用过程,应用程序代码如下:#include <stdio.h>void fun...原创 2019-04-02 19:14:26 · 503 阅读 · 0 评论 -
SylixOS ArmV7m 支持
SylixOS ArmV7m 支持问题分析Cortex-M系列与Cortex-A系列不同,在中断处理函数中,会产生如下情况: 问题一 Cortex-A系列进入中断后,会切换到IRQ模式,同时硬件上自动关闭IRQ,而Cortex-M系列进入中断后,硬件不会自动关闭中断。即使中断处理中,第一条指令执行CPSID I关闭中断,如果有高优先级中断产生,仍然有可能还没有来的及关中断,就被高优...原创 2019-04-25 13:17:26 · 975 阅读 · 0 评论