自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 查询qemu和libvirtd的版本

2020-06-11 16:01:07 174 0

原创 按邮箱过滤 git log

ccc@EstBuildSvr1:~/kernel/kernel$ git log --pretty=format:"%h - %ae : %s" | grep google.com 13cf04880235 - andreyknvl@google.com : kasan: a...

2020-05-31 15:23:06 192 0

原创 kernel 支持的hugepage size

一般我们通过在命令行中添加参数hugepagesz 来指定大页的size,这部分代码的实现如下: static __init int setup_hugepagesz(char *opt) { unsigned long ps = memparse(opt, &opt); switc...

2020-05-14 08:54:50 323 0

原创 git name-rev 显示patch合入的tag

xxxx@EstBuildSvr1:~/kernel/kernel$ git name-rev 2b6207291b7b277a5df9d1aab44b56815a292dba 2b6207291b7b277a5df9d1aab44b56815a292dba tags/drm-misc-fixes...

2020-05-13 08:52:54 273 0

原创 arm centos 7.6 进入single mode

实测可以在kernel的命令行加入rw init=/sysroot/bin/sh来进入singlemode,可以再忘记root密码时用这个修改.

2020-05-12 19:40:20 513 0

原创 qemu对cpu的初始化

Qemu中对arm 架构支持的cpu 路径如下 qemu-master\qemu-master\hw\arm\virt.c static const char *valid_cpus[] = { ARM_CPU_TYPE_NAME("cortex-a7"), A...

2020-05-12 09:16:03 313 0

原创 perf stat 中event和rxx的对应关系

perf event 的实现在linux/arch/arm64/kernel/perf_event.c中 例如 static const unsigned armv8_pmuv3_perf_map[PERF_COUNT_HW_MAX] = { PERF_MAP_ALL_UNSUPPORTED, ...

2020-05-06 18:32:48 277 0

原创 CPU Steal time

CPU Steal time 是指虚拟机vm需要执行某个命令但是没有抢到物理cpu来执行的时间. 其实现在arch/arm64/kernel/paravirt.c 这个特性对应一个kconfig CONFIG_PARAVIRT,开了这个能提高系统性能. 开了这个config后,这个特性就使能了,但...

2020-04-27 15:15:57 329 0

原创 使用supermin5 制作docker 镜像

安装supermin5-5.1.19-1.el7.aarch64 创建镜像:supermin5 -v --prepare base coreutils -o supermin.d supermin: version: 5.1.19 supermin: rpm: detected RPM vers...

2020-04-24 17:27:38 323 0

原创 指定git commit id的长度

通过abbrev来指定gitcommitid的长度,举例如下:

2020-04-11 17:55:13 419 0

原创 centos 通过命令行创建虚拟机

需要安装的软件 yum install -y qemu-kvm virt-manager libvirt AAVMF.noarch 建立磁盘 qemu-img create -f qcow2 tiantao.qcow2 30G 可能需要修改/etc/libvirt/qemu.conf # Some...

2020-04-11 15:23:01 337 0

原创 git 合并多个commit

加入现在要合并b943f045a9af 和 8380ce479010 这两个commit tiantao@EstBuildSvr1:~/kernel/rebasekernel/kernel$ git log --oneline b943f045a9af (HEAD) mm/sparse: fix...

2020-04-11 10:00:01 323 0

原创 cannot undefine domain with nvram

通过virsh删除虚拟机时报错,提示cannot undefine domain with nvram,解决方法是加上--nvram 分析如下: 报错的函数如下:原来是因为加了VIR_DOMAIN_UNDEFINE_KEEP_NVRAM qemuDomainUndefineFlags(vi...

2020-04-10 19:54:57 615 0

原创 scp pm domain

在spci_pm_domian.c中会为支持power on 和 power off的设备提供scp 的接口。 其入口函数是scpi_pm_domain_probe static int scpi_pm_domain_probe(struct platform_device *pdev) { ...

2020-04-02 20:45:57 386 0

原创 scp 处理clk_get_val 的流程

linux 中怎么使用scp呢? 首先在arm_scpi.c中export了 get_scpi_ops 这样其他驱动可以调用get_scpi_ops来使用spci static struct scpi_ops scpi_ops = { .get_version = scpi_get_versio...

2020-04-02 10:57:55 364 0

原创 scp

scp的全称是System Control and Management Interface ,其对应的源码为 https://github.com/ARM-software/SCP-firmware 其主要功能如下: Initialization of the system to enable...

2020-04-02 09:04:02 412 0

原创 根据dev_name 找到对应的驱动文件

开机的log中打印下面的log,那怎么根据这个log找到对应的驱动呢? 00:01: ttyS0 at MMIO 0x3f00002f8 (irq = 15, base_baud = 115200) is a 16550A 这段对应的源码如下: static inline void uart_re...

2020-03-30 21:05:14 476 0

原创 通过evel将字符串作为函数执行函数

def replace(func_name,args,kwargs): print("enter",func_name,args,kwargs) evel("%s(%s,%s)" % (func_name,args,kwargs)) ...

2020-03-30 09:11:18 369 0

原创 python segmentation fault

1:使用faulthandler 调试 在代码中加入 import faulthandler;faulthander.enable() 然后通过python3 -Xfaulthander xx.py 执行. 打印挂掉是的堆栈 Thread 0x0000ffffbb0d8b20 (most re...

2020-03-27 11:51:14 603 0

原创 memory-less node

开机log中提示memory-lessnode,所谓的memory-lessnode就是这个node上没有内存 对应的numactl -H如下: 可见node 0和 2上确实没有内存,这就dmesg中的log对应起来, static void __init setup_node_da...

2020-03-17 14:12:17 451 0

原创 neon intrinsics

#include <stdio.h> unsigned short int A[] = {1,2,3,4}; // array with 4 elements int main(void) { for(int i=0;i<4;++i) { A[i]...

2020-03-16 16:28:37 432 0

原创 定制centos iso

1.解压要定制的iso,并把要安装的kernelcp进来,如下图 2:更新grub.cfg文件,添加要执行的脚本文件 3:将要执行的ks-iso.cfg添加到initrd中 4:重新打包iso ...

2020-03-16 15:40:01 454 0

原创 cve patch

cvepatchlist https://nvd.nist.gov/vuln/data-feeds#JSON_FEED 下载后,在cve中找到linux相关的patch,例如下 { "url" : "https://git.kernel.org/c...

2020-02-07 11:05:36 689 0

原创 KBUILD_MODNAME

在下面这个代码中KBUILD_MODNAME是在哪里定义的呢 static struct virtio_driver virtio_iommu_drv = { .driver.name = KBUILD_MODNAME, .driver.owner = THIS_MODULE, .id_...

2020-01-06 14:30:57 1279 0

原创 freebsd的loader的代码入口

入口代码: https://github.com/freebsd/freebsd/blob/master/stand/efi/loader/arch/arm64/start.S _start: /* Save the boot params to the stack */ stp x0, x...

2019-12-05 08:34:13 857 0

原创 arm64下的freebsd的启动代码

freebsd的启动代码在https://github.com/freebsd/freebsd/blob/projects/arm64/sys/arm64/arm64/locore.S 在入口需要关闭mmu,D-Cache 一定要关闭,I-Cache 不要求关闭。 /* * We assum...

2019-12-05 08:33:26 1440 0

原创 freebsd的启动顺序

从下面的log中看freebsd启动的顺序是\EFI\BOOT\BOOTAA64.EFI -> /boot/loader.efi -> /boot/kernel. 这里的bootaa64.efi就是grub2. 需要加添加命令行的话,需要修改/boot/loader.conf Bds...

2019-11-27 09:16:35 1083 0

原创 定制debian iso

host用的debian 10的系统。 1xorriso -osirrox on -indev debian-10.1.0-arm64-DVD-1.iso -extract / work 2:将要安装的deb包cp到解压后的目录 3:解压initrd 4:生成pressed.c...

2019-11-21 14:45:11 1267 0

原创 通过qemu 来起freebsd和下载freebsd代码

我host用是ubuntu的系统,有两种方法可以起qemu,本质上都是一一样的 方法1: 1.使用qemu安装freebsd qemu-system-aarch64 -m 4096 -cpu host -enable-kvm -machine virt,gic_version=host -nog...

2019-11-20 09:51:23 885 0

原创 在linux上mount unix的分区

2019-11-06 11:55:32 814 0

原创 确定isolated 是否生效

2019-09-04 14:56:34 883 0

原创 编译centos的源码

首先到到下面这个链接下载内核源代码组件: http://vault.centos.org/6.9/os/Source/SPackages/ 然后再当前的centos机器上安装编译需要用到的依赖包 yum install rpm-build redhat-rpm-config asciidoc hm...

2019-08-31 10:43:50 993 0

原创 vmlinuz的产生

vmlinuz 其实就是Image.gz 下面这个是编译rpm包时候的mkspec文件,从最后的else可以看到vmlinuz就是KBUILD_IMAGE的拷贝 echo "%ifarch ia64" echo 'cp $KBUILD_IMAGE $RPM_BUILD...

2019-08-28 14:43:35 1231 0

原创 CONFIG_ARM64_PAN

CONFIG_ARM64_PAN 是armv8.1的一个扩展特性,其全称是Privileged Access Never,作用是kernel和userspace 不能同时访问一段内存.原文是When enabled, this feature causes a permission fault i...

2019-08-26 20:17:41 2740 0

原创 CONFIG_ILLEGAL_POINTER_VALUE

在config文件中有定义CONFIG_ILLEGAL_POINTER_VALUE为0xdead000000000000 #ifdef CONFIG_ILLEGAL_POINTER_VALUE # define POISON_POINTER_DELTA _AC(CONFIG_ILLEGAL_POI...

2019-08-22 17:35:57 898 0

原创 pcie的dpc

DPC的全称是downstream port containment,是针对root port和pcie switch检测到不可恢复的错误时,就会通知下游端口的业务,以防止数据损坏的扩散. 其代码在drivers/pci/pcie/dpc.c static struct pcie_port_ser...

2019-07-20 09:22:56 2194 0

原创 zircon内核驱动初始化

zircon中内核驱动的初始化的的入口为platform_early_init->pdev_init pdev_init的代码如下: void pdev_init(const zbi_header_t* zbi) { ASSERT(zbi); #保存driver的入口 dri...

2019-07-19 15:16:31 1033 0

原创 用旧defconfig 编译高版本kernel

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KCONFIG_ALLCONFIG=arch/arm64/configs/xxxx_defconfig alldefconfig 可以通过KCONFIG_ALLCONFIG来让就的defconfig来...

2019-07-09 20:28:41 1012 0

原创 zircon的两种调度理解

zircon 实现两种调度机制,一种就是fair 其实现在fair_scheduler.cpp中,一种是基于时间片的其实现在sched.cpp 中,调度器的入口都在sche_reschedule()这个函数中。 例如fair的实现如下: void sched_reschedule() { ...

2019-07-06 17:22:49 23951 0

原创 zircon的event机制

在zircon中线程同步的机制之一就是event机制。 event机制的主要函数是event_signal 和 event_wait_deadline,其他的一些API 都是这两者的变种 我们先来看看 zx_status_t event_wait_deadline(event_t* e, zx_t...

2019-07-03 08:39:39 918 0

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