原创 分析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