自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 linux iommu-STE表,CD表,iommu_map

arm_smmu_add_device通过arm_smmu_init_l2_strtab函数申请了对应StreamID的Stream Table Entry。初始化时候通过arm_smmu_init_strtab_2lvl函数初始化了arm_smmu_device的Level 1 Stream Table Descriptor,这时候主要是申请地址。以下流程添加smmu的dev的时候会,调用arm_smmu_init_l2_strtab函数填充STE的L2表(Stream Table Entry)

2024-04-09 16:40:08 728

原创 AArch64虚拟化

本指南介绍Armv8-A AArch64中的虚拟化支持。所涵盖的主题包括stage 2 translation, virtual exceptions和trapping。本指南介绍了一些基本的虚拟化理论,并举例说明了hypervisor如何使用其所描述的功能。它没有涵盖特定hypervisor的操作,也没有试图解释如何从头开始编写自己的hypervisor。阅读本文,您将了解这两种类型的hypervisor,以及它们如何映射到Arm Exception级别。

2023-12-14 14:03:48 140

原创 linux mailbox(The Common Mailbox Framework)

Common Mailbox Framework主要用作soc和各个subsystem的通信框架。以Qcom平台为例,这些subsystem包括AOP,ADSP以及CDSP等等。客户端(mbox_client): 主要对各个dev,注册信息处理的回调函数。通道(mbox_chan): 通道用来链接客户端和控制器,以及管理message。控制器(mbox_controller): 为注册到控制器上的channels提供服务。以及实现通信的OPS。

2023-12-11 11:10:19 232

原创 Xen-hypervisor的Emulating Memory-mapped Input/Output (MMIO)实现

对于type1的hypervisor(例如xen),虚拟机是如何访问IO的?下面分成原理部分和实现部分阐述。

2023-09-19 18:01:11 191

原创 Xen-hypervisor中SPI中断虚拟化的实现-中断处理-汇编部分

entry_guest会将guest的SPSR_el1,SP_el0 ,SP_el1,ELR_el1压栈保存, exit_guest的时候在弹出,恢复guest VCPU 的寄存器。最后调用return_from_trap,将guest vcpu的寄存器x0-x29,elr_el2,spsr_el2恢复,最后调用eret跳到guest上下文空间。VCPU相关的寄存器结构如下,entry的时候会将guest VCPU 相关的寄存器压栈保存,exit的时候在弹出,恢复guest VCPU 的寄存器。

2023-08-25 15:53:10 119

原创 arm64之linux kernel的stack

研究了一下基于arm64的kernel的stack。

2023-08-17 15:33:18 563

原创 Arch64 寄存器

AArch64支持31个64位的通用寄存器即X0-X30。其中传递参数用X0-X7寄存器,X29为栈帧寄存器FP,X30为链接寄存器LR。可以是用X来表示64位数据,用W来表示低32位数据。

2023-08-14 15:47:43 473

原创 SMP负载均衡

linux smp

2023-08-12 23:17:28 192 1

原创 CFS调度器

linux 调度器 CFS

2023-08-12 22:42:24 97 1

原创 minidump

; Build ID: 855-XBL-00000000if OS.FILE(OCIMEM.BIN)(d.load.binary OCIMEM.BIN 0x14680000 /noclear)if OS.FILE(CODERAM.BIN)(d.load.binary CODERAM.BIN 0xb000000 /noclear)if OS.FILE(DATARAM.BIN)(d.load.binary DATARAM.BIN 0xb0e0000 /noclear)if OS.FIL

2023-08-07 12:55:26 58

原创 Xen-hypervisor中SPI中断虚拟化的实现-重要的寄存器

组优先级字段确定Group 0中断抢占,并且如果ICH_VMCR_EL2.VCBPR==1,还确定Group 1中断抢占。•当HCR_EL2.TGE的值为0时,如果PE使用AArch64在EL2执行,则不采用物理FIQ中断,除非它们通过SCR_EL3.FIQ位路由到EL3。0b1-读取ICV_BPR1_EL1返回ICV_BPR0_EL1加1,饱和为0b111。0b1-如果最高优先级pending中断是Group 1,则读取GICV_IAR或GICV_HPPIR返回相应中断的INTID。

2023-07-31 11:16:05 275 3

原创 Xen-hypervisor中SPI中断虚拟化的实现-gic的初始化

xen支持arm64的type 1的Hypervisor,gicv3

2023-07-26 19:15:38 257 1

原创 Locality-Specific Peripheral Interrupts

是一种在GICv3/v4中引入的中断类型。中断是向处理器发出的一个信号,表示发生了需要处理的事件。中断通常由外围设备产生。LPI通常用于产生消息信号中断(MSIs)的外围设备。LPI的配置和管理与其他中断类型不同,因为它们的状态保存在内存中,而不是寄存器中。LPI是消息信号中断(MSIs),其翻译由(ITS)提供。

2023-06-19 20:54:58 263

原创 Arm Generic Interrupt Controller v3 and v4 - Virtualization

本指南介绍了GICv3和GICv4体系结构中对虚拟化的支持。它涵盖了hypervisor可用于生成和管理虚拟中断的控件。本指南适用于需要了解中断控制器功能或需要编写软件来管理虚拟中断。本指南介绍了GICv3.x和GICv4.1中的功能。它不包括GICv4.0,只是作为一个介绍。

2023-05-24 21:23:11 572

原创 Arm Generic Interrupt Controller v3 and v4

armv8 gic

2023-04-28 18:22:42 415

原创 AArch64 virtualization之exceptions

中断被系统中的硬件用来向软件发送事件信号。例如,GPU可能会发送一个中断,以发出它已经完成渲染帧的信号。使用虚拟化的系统更为复杂。有些中断可能由hypervisor本身处理。其他中断可能来自分配给虚拟机(VM)的设备,并且需要由该VM内的软件处理。此外,被中断作为目标的VM在接收到中断时可能没有运行。这意味着您需要一些机制来支持hypervisor对EL2中某些中断的处理。您还需要将其他中断转发到特定VM或VM中的特定虚拟CPU(vCPU)的机制。

2023-04-16 21:22:54 152

原创 Virtual Interrupt Handling and Prioritization

在EL2处执行的hypervisor的控制下在EL1处执行的操作系统有时被称为。虚拟机可以支持多处理,这意味着由hypervisor调度的多个**虚拟PE(vPE)**正在一个或多个物理PE上执行。当vPE在PE上执行时,虚拟机的vPE被称为在物理PE上调度。在Armv8和Armv9中,当EL2被实现和启用时,CPU interface提供了将中断路由到VM的hypervisor开销最小化的机制。在GICv4中,对于直接注入的虚拟LPI,调度的vPE由GICR_VPENDBASE确定。

2023-04-16 19:34:03 293

原创 Physical Interrupt Handling and Prioritization

GIC中断处理基于GIC中断生命周期。中断生命周期为描述中断处理过程的详细步骤提供了基础。GIC还维护一个状态机,用于控制生命周期期间的中断状态转换。下图显示了物理中断的GIC中断生命周期。

2023-03-30 14:49:56 407

原创 exfat文件系统-基于fuse

exfat文件系统

2023-03-16 20:20:48 1717 1

原创 GIC Partitioning

arm 中断 gic

2023-01-05 20:28:50 133

原创 Distribution and Routing of Interrupts

arm 中断 gic

2023-01-05 20:28:44 179

原创 CICv3 介绍

arm 中断 gic

2023-01-05 20:26:09 507

原创 Linux timer

Linux timer

2022-08-13 21:53:27 920

原创 ARM64 kernel exception vectors

ARM64 exception vectors

2022-08-07 21:54:38 548 1

原创 ARM-translation table walk

目录ARM-translation table walkqcom sm8350平台的相关配置qcom sm8350 page levels and translation gurad sizeVMSAv8-64 translation table format descriptorstrace32解析的qcom 8350的一个 translation table walkARM-translation table walk本文主要讨论1.是指MMU查询页表的过程。2.页表的解析。3.页表属性等等

2021-12-28 11:37:53 2371

原创 linux fixmap

内存管理-armv8

2021-08-08 13:36:42 1090

空空如也

空空如也

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

TA关注的人

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