原创 分析arm Internal error: synchronous external abort: 96000010 [#1] PREEMPT SMP

內核觸發panic,出現Internal error: synchronous external abort: 96000010 [#1] PREEMPT SMP 96000010 實際上是esr寄存器得值 在armv8 中不同得el層

原创 通過ramdump 分析匿名頁導致的TASK_UNINTERRUPTIBLE

再回收內存時出現 kernel callsite when blocked:: "page_lock_anon_vma_read+0xdc/0x138"   處於 TASK_UNINTERRUPTIBLE狀態,初步分析和讀寫鎖有關,通過r

原创 以高通camera 申請ion內存看dma-buf

1 fd 與ion buffer, file綁定     簡單總結就是申請一個buffer,再創建一個dmabuf 結構體然後將,然後將dmabuf中得指針指向buffer,dmabuf 再傳遞給一個匿名的inode,獲取到一個file,

原创 sylixos pci

1.pci基地址獲取 pci的基地址在x86平臺是通過acpi獲得的,acpi全稱是(Advanced Configuration and Power Management Interface)高級配置和電源管理接口,在ACPI規範文檔3

原创 匿名頁反向映射得建立

參考鏈接: https://www.cnblogs.com/tolimit/p/5398552.html http://www.wowotech.net/memory_management/reverse_mapping.html鏈接 1

原创 qcom camera smmu學習(1)

  camera 有很多isp 中包含了ife ipe bps 等需要使用smmu    1.分配內存並映射到smmu  (1)分配內存     分配內存在內核中使用的函數是 cam_mem_mgr_alloc_and_map,主要是通過

原创 qcom camera smmu 學習(3)

  iommu_dma_alloc_iova 已經成功獲取到了虛擬地址,iommu_map_sg 將把虛擬地址和物理散列表中的物理地址進行映射。 iommu_map_sg 在4.19 以後的內核這個接口已經刪除了        size

原创 android native c++ 打印調用棧

編譯文件中加入: LOCAL_SHARED_LIBRARIES += libutilscallstack 源代碼中加入: #include <utils/CallStack.h> android::CallStack cs("test")

原创 qcom camera smmu 學習(2)

上一篇中提到了cam_smmu_alloc_iova 通過從已經構建好的內存池中獲取虛擬地址然後調用iommu_map_sg 去建立映射關係。 dma_buf_map_attachment 建立映射關係時也需要獲取虛擬地址。 虛擬地址的其

原创 linux 讀寫信號量學習

文章從《奔跑吧linux內核》中參考加上自己的理解 linux 讀寫信號量, 奔跑吧linux 內核的作者使用 十進制來解釋 count 數值的變化,發現這樣非常好理解。 rw_semaphore 我之前一直沒有從代碼理解如何實現的。只知

原创 arm smmu 學習(1)

文章linux 4.14 代碼分析smmu 流程 linux 在驅動找到對應的設備後會執行driver_probe_device 函數,具體dev和drv 匹配參考文章鏈接 driver_probe_device->really_prob

原创 android bionic memcpy 彙編源碼解析

代碼位置 bionic/memcpy_base.S 宏定義: #define dstin x0 #define src x1 #define count x2 #define dst x3 #define srcend x4 #defi

原创 android 看門狗引起crash分析

文章參考:https://blog.csdn.net/juS3Ve/article/details/79428049 在進入橙屏ramdump 後在高通平臺高通有專門的腳本配合crash 工具去解析dump 出來的bin 文件。 在解析b