
kernel
未央君x
这个作者很懒,什么都没留下…
展开
-
virtio设备状态
spec描述驱动初始化探测的大致过程:例如virtio_net驱动中用于初始化queue,创建网络设备并初始化一些必要的数据结构当后端模拟出virtio_net设备后,驱动扫描到virtio设备,然后调用virtio_pci_driver中virtio_pci_probe函数完成pci设备的启动。注册一条virtio_bus,同时在virtio总线进行注册设备。当virtio总线进行注册设备register_virtio_device,将调用virtio总线的probe函数:v.原创 2022-04-19 20:17:55 · 1214 阅读 · 0 评论 -
linux 根分区扩容(非LVM)
[root@test_img ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 1024M 0 romvda 253:0 0 20G 0 disk├─vda1 253:1 0 1G 0 part /boot└─vda2 253:2 0 7G 0 part / 这个是我们要扩容的根分区vdb 253:16 0 30G 0 disk[root@.原创 2022-04-14 19:35:02 · 1965 阅读 · 2 评论 -
crash and systemtap
crashdis查看函数源码及所在文件1) dis -s devmem_is_allowed2)查看反汇编指令dis devmem_is_allowed3) 反汇编并输出所在源码行号dis -l devmem_is_allowed汇编指令查询:汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等 - 云+社区 - 腾讯云xor 异或exclusive ORsystemtap想要通过crash修改虚拟地址值时..原创 2022-03-31 16:39:27 · 290 阅读 · 0 评论 -
mmio理解
EPT页表是通过EPT violation建立起来的。EPT misconfig是用来标志MMIO访问异常。entry中的保留位(reserved bit set)被设置了就会触发EPT misconfig。即为110b时会被trigger, 可写可执行不可访问,MMIO是通过设置spte的保留位来标志的.写这种内存页会触发EPT misconfig,比如virtio-pci的notify配置空间地址。对于violation,它主要就是缺页故障,当内存读写都不被允许时就会触发hardware_s原创 2022-03-25 10:02:54 · 1308 阅读 · 0 评论 -
kmemleak
开启方法kernel hacking -> Memory Debugging -> Kernel memory leak detector修改后的.config 文件如下:重新编译内核,并替换vmlnuz# cp arch/x86/boot/bzImage /boot/vmlinuz-5.4.32/sys/kernel/debug/kmemleak 存在表示开启memleak 监视内核内存泄漏成功,开启后会有一个内核线程kmemleak# echo cl.原创 2022-03-24 19:31:29 · 609 阅读 · 0 评论 -
arm SMMU
相当于x86下面的IOMMU,是不同架构的不同实现。统一在linux中的IOMMU框架内部,都由结构体 iommu_device 管理。SMMU的作用是将设备的DMA请求地址翻译成可用的物理地址,当不开启SMMU时也可以直接使用DMA来搬运内存。SMMU是为了安全考虑中间加了一道。结构体关系如下图,smmu domian和 iommu的domain的关系,以及iommu group的作用x86下通过intel_iommu=on 来开启ref:ARM SMMU的原理与IOMMU原创 2022-03-11 09:32:20 · 2052 阅读 · 0 评论 -
lspci
1) 以树的形式打印pci设备# lspci -t -v2) -n 显示vendor 和 device id , -m 向后兼容显示pci 设备的数据# lspci -v -m -n -s 00:04.03)通过hexdump 查看pci设备的配置空间# hexdump /sys/devices/pci0000\:00/0000\:00\:05.0/config4) -x显示设备内存空间(开始的128位)-xxx显示全部的配置空间# lspci -s 00:05.0.原创 2022-03-09 11:07:02 · 2015 阅读 · 0 评论 -
gro_flush_timeout and napi_defer_hard_irqs
One concrete usage can be : echo 20000 >/sys/class/net/eth1/gro_flush_timeout echo 10 >/sys/class/net/eth1/napi_defer_hard_irqs If at least one packet is retired, then we will reset napi counter to 10 (napi_defer_hard_irqs), ensurin...原创 2022-03-09 10:31:40 · 641 阅读 · 0 评论 -
strace praticle
Q1: strace: attach: ptrace(PTRACE_SEIZE, 11329): Operation not permittedA1: 遇到过一次# sudo strace -p 11329出现如上问题,11329为虚拟机主进程,原因是因为gdb在跟这个进程,所以出现该问题原创 2022-03-07 19:29:17 · 613 阅读 · 0 评论 -
/dev/mem
x86平台下只允许访问起始的1MB内存# dd if=/dev/mem of=/dev/nulldd: error reading '/dev/mem': Operation not permitted1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.187975 s, 5.6 MB/sworkaround it by follows:(1) Rebuild your kernel without the CONFIG_STRICT_DEVMEM ...原创 2022-03-04 17:15:37 · 953 阅读 · 0 评论 -
io inflight理解
inlight所在接口位置 /sys/block/sda/inflight表示io request 已经到了driver层但是还没有完成。描述的只是一个状态。如果想知道在driver层hang住的request可以考虑引入阿里的特性。https://gitee.com/anolis/cloud-kernel/commit/80d6ee240ea37f36ecd6dda5c8a6d7723cba73d3blk_mq_queue_tag_busy_iter(q, blk_mq_check_infli原创 2022-02-18 14:42:42 · 1782 阅读 · 0 评论