ARM架构
文章平均质量分 57
jongwu3
这个作者很懒,什么都没留下…
展开
-
vCPU hotplug on Arm
vcpu hotplug在Arm上的支持原创 2022-11-07 12:35:06 · 352 阅读 · 0 评论 -
linux内核随机数初探
根据测试在系统时钟是200M的机器上samples_per_bit的值是1,也就是每次都会调用credit_init_bits.在系统时钟频率是25M的机器上samples_per_bit是2,也即每两次entropy_timer调用,调用一次credit_init_bits.系统时钟频率越高此值越大。根据测试,采样的用数量大约在250次左右,不同机器差异不大,如此,影响随机数初始化时间的因素包括硬件:系统时钟的频率;本机上大部分的调用都是entropy_timer, 即大部分的熵的来源是时钟中断。原创 2022-09-28 09:10:29 · 2335 阅读 · 0 评论 -
qemu+gdb调试linux kernel的注意事项
调试内核的注意事项原创 2022-07-18 11:41:48 · 367 阅读 · 0 评论 -
在arm64上基于qemu的vhost user blk设备hotplug
在kata中,vhost user blk设备是hotplug进去的。本文记录一下如果在qemu中hotplug一个vhost user blk设备。首先准备一个设备,以spdk设备为例。build spdkgit clone https://github.com/spdk/spdk.gitcd spdk; ./configure; make -j `nproc`制作vhost user blkmkdir -p block/socketsbuild/bin/spdk_tgt -原创 2022-03-19 15:52:26 · 1817 阅读 · 0 评论 -
GIC ITS在snapshot之后的恢复顺序
snapshot是VMM的一个特性。原理是将处于某个节点运行的VM stop并保存所有内存和寄存器的状态,然后在恢复运行时再将所有上下文restore到相应的寄存器中。本文基于kernel文档记录一下GIC ITS的恢复顺序。在kernel文档virt/kvm/devices/arm-vgic-its.rst的记录中,对gic its的恢复顺序如下:1、恢复所有客户机内存并创建vcpu;2、恢复所有gicr_*寄存器;3、提供ITS的基地址;4、恢复ITS: a、恢复...原创 2021-06-27 22:33:02 · 137 阅读 · 0 评论 -
linux内存初始化笔记
内存是计算机的重要的硬件资源。如果没有软件的管理,再多再快的内存也只是摆设。在管理内存之初是对内存的初始化。本文基于内核源码和一些参考资料谈谈我的理解。硬件内存:原创 2021-06-14 20:55:02 · 651 阅读 · 0 评论 -
Armv8架构虚拟化介绍
https://calinyara.github.io/technology/2019/11/03/armv8-virtualization.htmlNOVEMBER-3-20191 综述本文描述了Armv8-A AArch64的虚拟化支持。包括stage 2页表转换,虚拟异常,以及陷阱。本文介绍了一些基础的硬件辅助虚拟化理论以及一些Hypervisor如何利用这些虚拟化特性的例子。文本不会讲述某一具体的Hypervisor软件是如何工作的以及如何开发一款Hypervisor软件。通过阅读本文转载 2021-01-05 22:02:19 · 1149 阅读 · 1 评论 -
编译qemu/arm64的uefi
在arm64上启动qemu虚拟机有两种方式,一种是通过-kernel 的方式直接direct kernel boot,另一种是先启动uefi在bootkernel。本文记录一下怎么编译qemu/arm64 的uefi。uefi可以大概理解为bios的升级版。它是一个开放的标准,并没有官方的实现。目前用的比较多的实现是intel开源的https://github.com/tianocore/edk2。这个edk2是一个可以跨平台编译uefi的项目,arm64也是用的这个代码。编译主要是参照arm的开发原创 2021-01-05 15:31:54 · 4012 阅读 · 0 评论 -
如何在arm64 host上创建arm32 kvm虚拟机
大约在今年五六月份(kernel 5.7),arm kernel社区的maintainer Marc Zyngier移除了对arm32 kvm的支持,也就是在kernel 5.7以后不能在arm32的host上创建kvm虚拟机。但是在arm64的host上还是可以创建arm32 kvm虚拟机的,本文就介绍一下如何在arm64的host上创建arm32虚机。arm64的host最容易获得的是树莓派,最好在树莓派4上安装64位的ubuntu。本文以树莓派4-ubuntui系统为例。创建虚机需要的原料原创 2020-09-14 13:45:48 · 1130 阅读 · 0 评论 -
armv8虚拟内存架构简述
粗略看了一下armv8的虚拟内存的文档。记录一下,细节留待以后用到时再去细究。程序在运行的时候使用的内存一般是虚拟内存,需要经过转换才能接触到物理内存。其中的底层支持就是硬件架构,现代架构都是支持硬件虚拟内存转换的,一般就是说提供MMU。armv8架构作为现代架构也不例外,但是不太一样的是armv8架构支持两级转换:stage 1 和stage 2.上图包含了安全世界和非安全世界的东西...原创 2020-03-01 17:00:25 · 2237 阅读 · 0 评论 -
armv8虚拟化架构简述
x86的虚拟化资料很多,与之相对的arm的虚拟化的讲解较少,这几天通过查找arm的官方文档稍微对arm的虚拟化架构有些了解,记下来留给以后查看。由于arm的虚拟化主要体现在armv8-a架构上,我们就只讲这个架构上的东西。下面就简称arm架构。虚拟化技术包括cpu、memory和device的虚拟化,了解了这三个就基本涵盖了虚拟化各方面。在讲arm虚拟化方案之前我们先讲一下armv8的ex...原创 2020-02-16 23:07:49 · 1848 阅读 · 0 评论 -
armv8平台下sleep函数的实现
sleep函数是比较常用的api,那么在arm平台下它是怎么实现的呢?要实现sleep函数必须要有三个方面的支持,中断系统,timer和wfi指令。这是无需多言的,sleep需要有时间参数,能够准确定位时间的就只有timer了,要让timer工作中断又是必不可少的。那么wfi是什么呢?其实wfi是arm的一条指令,全称是wait for interrupt。这个指令的作用是一旦执行就进入睡眠低...原创 2018-11-30 18:59:22 · 1065 阅读 · 0 评论 -
armv8 system timer的控制
armv8的系统定时器时钟源是在SOC上,且每个pe上有一个timer。pe可以通过访问寄存器的方式来读和控制timer。timer有关的寄存器主要有三类:控制寄存器,倒计时寄存器和比较寄存器。我们只关心virtual timer。最下面的是控制寄存器,中间是倒计时寄存器,最上面是比较寄存器。使用timer时先设置倒计时寄存器或比较寄存器,然后将控制寄存器bit0置1.这样等到条件满足,时...原创 2018-11-29 19:13:29 · 2752 阅读 · 0 评论 -
armv8 memory order
ARMv8之Observability作者:linuxer 发布于:2016-5-25 18:22 分类:ARMv8A Arch一、前言在ARMv8关于memory order描述章节中,大量使用了observer、observed、completion等术语,本文主要是澄清这些术语,为后续描述memory order和memory barrier相关指令打下基础。另外,在几个星期前,和codin...转载 2018-07-04 09:03:01 · 546 阅读 · 3 评论 -
gic 代码分析
转载自http://www.wowotech.net/linux_kenrel/gic_driver.html一、前言GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1~V4(V2最多支持8个ARM core,V3/V4支持更多的ARM core,主要用于ARM64服务...转载 2018-06-27 17:58:51 · 447 阅读 · 0 评论