Q&A 게시판

리눅스 커널에 대한 Q&A 게시판 입니다. (비밀글 체크는 꼭 필요한 경우에만)

Cache Disable 문의드립니다.

작성자
송대영
작성일
2019-04-15 19:15
조회
394
질문을 자세하고 친절하게 답변해주셔서 너무나 감사드립니다.
해당 페이지를 참고하여 "http://jake.dothome.co.kr/__enable_mmu/" 캐시를 disable 시도하려고 합니다.

#ifdef CONFIG_CPU_DCACHE_DISABLE
#ifdef CONFIG_CPU_ICACHE_DISABLE

두 개의 #ifdef문을 참고하여 Instcution 캐시와 Data 캐시를 disable을 시도하였습니다.
Instruction 캐시(ICACHE)는 정상적으로 disable 된 것을 확인하였지만 Data 캐시(DCACHE)를 disable 하는 경우 커널이 실행되지 않습니다.

make menuconfig에서 확인한 결과 DCACHE는 disable 하는 옵션이 제공되지 않았습니다.
리눅스에서는 DCACHE disable을 왜 지원하지 않는지 문의드립니다.
전체 2
  • 2019-04-16 09:13
    안녕하세요? 문영일입니다.

    CONFIG_CPU_DCACHE_DISABLE과 CONFIG_CPU_ICACHE_DISABLE 커널 옵션은
    arm10에서 사용하던 아주 오래된 커널 옵션들입니다.
    armv6 이상의 최근 cpu에서는 위의 옵션들이 일부 동작하지 않습니다.

    실제 코드를 고치지 않고 커널 파라미터만 변경하여 부팅 시 캐시 옵션을 조정하는 방법이 있습니다.
    "cachepolicy="uncached|buffered|writethrough|writeback|writealloc" 와 같은 옵션들을 제공합니다.
    그런데 이러한 커널 파라미터를 왜 armv5 이하에서만 동작시키도록 하였는지 의문입니다.

    arch/arm/compressed/head.S, arch/arm/kernel/head.S, arch/arm/mm/mmu.c 에서
    캐시와 관련된 부분들을 수정하면 아마 캐시를 disable하여 잘 동작시킬 수 있으리라 판단합니다.

    참고로 위의 캐시 disable 관련 옵션들은 arm64 에서는 동작하지 않습니다.

    수고하세요.

  • 2019-04-17 11:28
    친절한 답변 감사합니다.