27주차 스터디 중 이해되지 않는 부분에 대해 질문드립니다.

 

질문)

arch/arm64/include/asm/pgtable.h 내의

set_pud(), set_pmd() 함수 내에서

 

static inline void set_pud(pud_t *pudp, pud_t pud)
{
#ifdef __PAGETABLE_PUD_FOLDED
    if (in_swapper_pgdir(pudp)) {
        set_swapper_pgd((pgd_t *)pudp, __pgd(pud_val(pud)));
        return;
    }
#endif /* __PAGETABLE_PUD_FOLDED */

    WRITE_ONCE(*pudp, pud);
    if (pud_valid(pud))
        dsb(ishst);
}

 

static inline void set_pmd(pmd_t *pmdp, pmd_t pmd)
{
#ifdef __PAGETABLE_PMD_FOLDED
    if (in_swapper_pgdir(pmdp)) {
        set_swapper_pgd((pgd_t *)pmdp, __pgd(pmd_val(pmd)));
        return;
    }
#endif /* __PAGETABLE_PMD_FOLDED */
    
    WRITE_ONCE(*pmdp, pmd);
    
    if (pmd_valid(pmd))
        dsb(ishst);
}

 

__PAGETABLE_PUD_FOLDED 와 __PAGETABLE_PMD_FOLDED 의 정확한 의미가 궁금합니다.

 

스터디 중에서는 

http://jake.dothome.co.kr/pt/ 에서 설명해주신 것을 토대로

 

- 예를 들어 VA_BITS = 48, PAGE_SIZE = 4K 인 시스템에서

리눅스 상에서는 논리적으로 4단계의 테이블을 가지지만

하드웨어 아키텍처에서 지원하는 테이블이 4단계 보다 적어서 각각의 테이블(pgd, pud, pmd, pte)을 만들지 않고

다른 테이블을 공유하여(예를 들면, pud 테이블을 만들지 않고, pgd 테이블에 pud 테이블 엔트리도 추가)

단계를 줄이는 것이 아닌가?

 

하는 의견을 주고 받았습니다.

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22170
498 ___reserved_mem_reserve_reg 관련 질문 [4] DEWH 2020.03.09 12812
497 16기 리눅스 커널 스터디 33주차 질문입니다. [5] rnsscman 2020.02.08 355
496 setup_machine_fdt() -> fixmap_remap_fdt() 질문입니다. [2] daeroro 2019.12.24 316
495 early_fixmap_init 질문 [3] file 에러 2019.12.17 288
» 16기 리눅스 커널 스터디 27주차 질문입니다. [1] daeroro 2019.12.18 791
493 16기 리눅스 커널 스터디 25주차 질문입니다. [3] rnsscman 2019.12.03 365
492 16기 리눅스 커널 스터디 C조 23주차 질문입니다. [2] 이파란 2019.11.16 388
491 16기 리눅스 커널 스터디 C조 19주차 질문입니다. (두 번째) [2] rnsscman 2019.10.29 234
490 16기 리눅스 커널 스터디 C조 19주차 질문입니다. [2] 이파란 2019.10.19 399
489 asid 관련해서 질문드립니다. [3] suesueng 2019.10.21 712
488 unflatten_dt_nodes 질문 [3] file 에러 2019.10.12 213
487 16기 리눅스 커널 스터디 C조 cpu_bit_bitmap 질문 [2] sjahn 2019.10.05 244
486 16기 리눅스 커널 스터디 C조 cgroup_init_early 부분 질문 [2] 이파란 2019.09.21 260
485 16기 리눅스 커널 스터디 C조 16주차 질문입니다. [2] cien 2019.09.28 1138
484 early_fixmap_init 함수 질문 [2] 에러가왜안뜨지 2019.09.12 345
483 cgroup의 구조 및 학습 방법에대해 질문드립니다. file dfx 2019.08.25 256
482 head.S의 compute_indices 관련 문의 드립니다 [3] cien 2019.07.30 292
481 system register 접근 관련 질문드립니다. [2] cien 2019.07.23 454
480 task를 죽이는 do_exit 함수의 동작 중 이해가 안되는 것이 있어 질문드립니다. [2] 코딩의노예 2019.07.10 533
479 __inval_dcache_area의 동작에 대해 질문드립니다. [2] dfx 2019.07.08 228
XE Login