Do Linux BSP mặc định không kích hoạt bộ nhớ đệm và phát sóng bảo trì TLB (bit0 của ACTLR thanh ghi còn lại '0') ở chế độ SMP, có thể thấy một vấn đề liên kết bộ nhớ đệm.
Để biết mô tả về bit này, vui lòng tham khảo Mục 1.7.3 Hoạt động bảo trì phát sóng trong Arm A9 MPCore Technical Reference Manual[2]:
Tất cả các bộ xử lý hoạt động ở chế độ SMP trên cùng một tên miền chặt chẽ có thể gửi và nhận các hoạt động bảo trì TLB và bộ nhớ đệm. Tài liệu tham khảo kiến trúc ARM cung cấp thông tin chi tiết về các hoạt động phát sóng. Một bộ xử lý Cortex-A9 trong cụm A9-MP phát sóng hoạt động bảo trì phát sóng được khi nó hoạt động ở chế độ SMP (ACTLR. SMP=1) và khi bật phát sóng hoạt động bảo trì (ACTLR. FW=1). Bộ xử lý Cortex-A9 có thể nhận và thực hiện các hoạt động bảo trì phát sóng khi nó hoạt động ở chế độ SMP, ACTLR. SMP=1.
Bạn nên đặt cả ACTLR. FW và ACTLR. SMP đến 1. Chúng tôi có thể thiết lập bit bằng cách sửa đổi mã Linux trong proc-v7. Các tập tin S như dưới đây:
#ifdef CONFIG_SMP
ALT_SMP(mrc p15, 0, r0, c1, c0, 1)
ALT_UP(mov r0, #(1 << 6)) @ giả mạo nó cho UP
bật chế độ tst r0, #(1 << 6) @ SMP/nAMP?
orreq r0, r0, #(1 << 6) @ Bật chế độ SMP/nAMP
orreq r0, r0, r10 @ Kích hoạt bit SMP dành riêng cho CPU
orr r0, r0, #(1) @Add đường này cho phép ACTLR[0]
mcreq p15, 0, r0, c1, c0, 1
#endif