Vietnamese (machine translation)

Lưu ý

Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.

Bản gốc:

MMUv3 initialization sequence

Người dịch:

Google Translate (machine translation)

Phiên bản gốc:

8541d8f725c6

Cảnh báo

Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.

Trình tự khởi tạo MMUv3

Mã trong macro khởi tạo_mmu thiết lập ánh xạ bộ nhớ MMUv3 giống hệt với ánh xạ bộ nhớ cố định MMUv2. Tùy thuộc vào Ký hiệu CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX mã này là nằm ở các địa chỉ mà nó được liên kết (ký hiệu không xác định) hoặc không (ký hiệu được xác định), vì vậy nó cần độc lập với vị trí.

Mã này có các giả định sau:

  • Đoạn mã này chỉ chạy trên MMU v3. - TLB đang ở trạng thái reset. - ITLBCFG và DTLBCFG bằng 0 (trạng thái đặt lại). - RASID là 0x04030201 (trạng thái đặt lại). - PS.RING bằng 0 (trạng thái đặt lại). - LITBASE bằng 0 (trạng thái đặt lại, chữ tương đối với PC); bắt buộc phải là PIC.

Quá trình thiết lập TLB tiến hành theo các bước sau.

Huyền thoại:

  • VA = địa chỉ ảo (hai phần trên của nó);
    • PA = địa chỉ vật lý (hai phần trên của nó);

    • pc = phạm vi vật lý chứa mã này;

Sau bước 2, chúng ta chuyển đến địa chỉ ảo trong phạm vi 0x40000000..0x5fffffff hoặc 0x00000000..0x1fffffff, tùy thuộc vào việc kernel đã được tải bên dưới hay chưa 0x40000000 trở lên. Địa chỉ đó tương ứng với lệnh tiếp theo để thực thi trong mã này. Sau bước 4, chúng tôi chuyển đến địa chỉ dự định (được liên kết) của mã này. Lược đồ bên dưới giả định rằng kernel được tải dưới 0x40000000.

Bố cục tương thích MMUv2 mặc định:

Ký hiệu VADDR Kích thước

ZZ0000ZZ 0x00000000 TASK_SIZE +-------------------+ 0x40000000 +-------------------+ ZZ0001ZZ XCHAL_PAGE_TABLE_VADDR 0x80000000 XCHAL_PAGE_TABLE_SIZE +-------------------+ ZZ0002ZZ KASAN_SHADOW_START 0x80400000 KASAN_SHADOW_SIZE +-------------------+ 0x8e400000 +-------------------+ ZZ0003ZZ VMALLOC_START 0xc0000000 128MB - 64KB +-------------------+ VMALLOC_END +-------------------+ ZZ0004ZZ TLBTEMP_BASE_1 0xc8000000 DCACHE_WAY_SIZE ZZ0005ZZ +-------------------+ ZZ0006ZZ TLBTEMP_BASE_2 DCACHE_WAY_SIZE ZZ0007ZZ +-------------------+ +-------------------+ ZZ0008ZZ PKMAP_BASE PTRS_PER_PTE * ZZ0009ZZ DCACHE_N_COLORS * ZZ0010ZZ PAGE_SIZE ZZ0011ZZ (4MB * DCACHE_N_COLORS) +-------------------+ ZZ0012ZZ FIXADDR_START KM_TYPE_NR * ZZ0013ZZ NR_CPUS * ZZ0014ZZ DCACHE_N_COLORS * ZZ0015ZZ PAGE_SIZE +-------------------+ FIXADDR_TOP 0xcffff000 +-------------------+ ZZ0016ZZ XCHAL_KSEG_CACHED_VADDR 0xd0000000 128MB +-------------------+ ZZ0017ZZ XCHAL_KSEG_BYPASS_VADDR 0xd8000000 128MB +-------------------+ ZZ0018ZZ XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB +-------------------+ ZZ0019ZZ XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB +-------------------+

256 MB được lưu vào bộ nhớ đệm + 256 MB bố cục không được lưu vào bộ đệm:

Ký hiệu VADDR Kích thước

ZZ0000ZZ 0x00000000 TASK_SIZE +-------------------+ 0x40000000 +-------------------+ ZZ0001ZZ XCHAL_PAGE_TABLE_VADDR 0x80000000 XCHAL_PAGE_TABLE_SIZE +-------------------+ ZZ0002ZZ KASAN_SHADOW_START 0x80400000 KASAN_SHADOW_SIZE +-------------------+ 0x8e400000 +-------------------+ ZZ0003ZZ VMALLOC_START 0xa0000000 128MB - 64KB +-------------------+ VMALLOC_END +-------------------+ ZZ0004ZZ TLBTEMP_BASE_1 0xa8000000 DCACHE_WAY_SIZE ZZ0005ZZ +-------------------+ ZZ0006ZZ TLBTEMP_BASE_2 DCACHE_WAY_SIZE ZZ0007ZZ +-------------------+ +-------------------+ ZZ0008ZZ PKMAP_BASE PTRS_PER_PTE * ZZ0009ZZ DCACHE_N_COLORS * ZZ0010ZZ PAGE_SIZE ZZ0011ZZ (4MB * DCACHE_N_COLORS) +-------------------+ ZZ0012ZZ FIXADDR_START KM_TYPE_NR * ZZ0013ZZ NR_CPUS * ZZ0014ZZ DCACHE_N_COLORS * ZZ0015ZZ PAGE_SIZE +-------------------+ FIXADDR_TOP 0xaffff000 +-------------------+ ZZ0016ZZ XCHAL_KSEG_CACHED_VADDR 0xb0000000 256MB +-------------------+ ZZ0017ZZ XCHAL_KSEG_BYPASS_VADDR 0xc0000000 256MB +-------------------+ +-------------------+ ZZ0018ZZ XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB +-------------------+ ZZ0019ZZ XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB +-------------------+

512 MB được lưu vào bộ nhớ đệm + 512 MB bố cục không được lưu vào bộ đệm:

Ký hiệu VADDR Kích thước

ZZ0000ZZ 0x00000000 TASK_SIZE +-------------------+ 0x40000000 +-------------------+ ZZ0001ZZ XCHAL_PAGE_TABLE_VADDR 0x80000000 XCHAL_PAGE_TABLE_SIZE +-------------------+ ZZ0002ZZ KASAN_SHADOW_START 0x80400000 KASAN_SHADOW_SIZE +-------------------+ 0x8e400000 +-------------------+ ZZ0003ZZ VMALLOC_START 0x90000000 128MB - 64KB +-------------------+ VMALLOC_END +-------------------+ ZZ0004ZZ TLBTEMP_BASE_1 0x98000000 DCACHE_WAY_SIZE ZZ0005ZZ +-------------------+ ZZ0006ZZ TLBTEMP_BASE_2 DCACHE_WAY_SIZE ZZ0007ZZ +-------------------+ +-------------------+ ZZ0008ZZ PKMAP_BASE PTRS_PER_PTE * ZZ0009ZZ DCACHE_N_COLORS * ZZ0010ZZ PAGE_SIZE ZZ0011ZZ (4MB * DCACHE_N_COLORS) +-------------------+ ZZ0012ZZ FIXADDR_START KM_TYPE_NR * ZZ0013ZZ NR_CPUS * ZZ0014ZZ DCACHE_N_COLORS * ZZ0015ZZ PAGE_SIZE +-------------------+ FIXADDR_TOP 0x9ffff000 +-------------------+ ZZ0016ZZ XCHAL_KSEG_CACHED_VADDR 0xa0000000 512MB +-------------------+ ZZ0017ZZ XCHAL_KSEG_BYPASS_VADDR 0xc0000000 512MB +-------------------+ ZZ0018ZZ XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB +-------------------+ ZZ0019ZZ XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB +-------------------+