Kernel Panic实例分析三:Unable to handle kernel paging request

QC armv7平台kernel 4.x出现的死机问题,一开始很随机以为是DDR硬件问题,直到后面死机越來越多,还出现过pc一样的现场,让人不得不怀疑是SW issue,同步提给QC看,看QC的答复就是用tracer32来定位的,下来温习了下armv7,完全可以用red hat的crash工具结合反汇编和源码分析定位,对小厂算是节约license成本了? 我...

阅读全文

How to get kaslr offset on ARM64

Red Hat的crash工具有个option是--kaslr,一般解析ramdump会用,工具定义: –kaslr offset | auto If x86, x86_64 or s390x kernel was configured with CONFIG_RANDOMIZE_BASE, the offset value is equal t...

阅读全文

Kernel Panic实例分析二:Null pointer

QCOM安卓armv7 smp平台, kernel 4.x。死机时dmesg: [ 4.790798] Unable to handle kernel NULL pointer dereference at virtual address 000001e0[ 4.790803] pgd = edfd65c2[ 4.790807] [0000...

阅读全文

How to build Red Hat Crash for ARM under x86_64 Ubuntu

Now, our building environments for Android are almost x86_64 Ubuntu, but we still have low-end products based on armv7 kernel. For analyze ramdump under armv7, let’s build it on Ub...

阅读全文

了解Android 10 DSU

DSU(Dynamic System Updates)是Android 10引入的一个feature。先了解下GSI。 GSIGSI(Generic System Image)看字面就是通用的系统镜像了,就是Google官方Android,没有设备制造商(如某米)的自定义修改。 Android 9开始就能用了,是for app开发。官方给的说明是: The...

阅读全文

UFS FFU 实践

前文提到ufs-utils这个工具可以做UFS FFU,我们先看这个工具的使用。 ufs-utilAndroid自带的aarch64貌似编译有问题,换个工具编译ok,ffu怎么用了? ./ufs-utils ffu --help FFU command usage: ufs-utils ffu [-t] <ffu cmd idn> ...

阅读全文

SCSI generic(sg) overview

UFS固件升级来袭,QCOM/UEFI平台都懂的,发现西数提供一个工具叫ufs-utils,里面提到了FFU: The following options may work with the SCSI BSG deviceusing sg v4 structure (e.g. /dev/0:0:0:0)or via a SCSI Generic i...

阅读全文

Linux Kernel WARN()&amp;BUG(), Oops&amp;Panic, Tainted分析

稳定性范畴, 参考5.x kernel。 kernel OopsOops指的就是内核的不正确行为,比如对驱动来说: static int i82092aa_pci_probe(struct pci_dev *dev, const struct pci_device_id *id){ ...

阅读全文

如何快速验证sepolicy TE文件修改

Android平台经常遇到sepolicy权限问题,log类似如下: [ 170.390794] type=1400 audit(1594061213.935:90): avc: denied { write } for comm="kworker/4:1" path="/dev/block/sda3&qu...

阅读全文

安卓QCOM平台子系统复位原因记录分析

参考LA msm-4.14 kernel,先看下在drivers/soc/qcom/subsys-pil-tz.c里记录失败原因的接口: static void log_failure_reason(const struct pil_tz_data *d){ size_t size; char *smem_reason...

阅读全文