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 22244
518 arm a53 아키텍처는 cache size를 configuration 할 수 없나요? [1] mnth 2023.12.03 274
517 리눅스 스케줄링에서 SCHED_FIFO에 대해 문의드립니다. [1] Neo2013 2023.02.09 800
516 러스트 언어나 리눅스커널+러스트 어떻게 생각하세요? 해볼만 할까요? [2] 김기오 2022.11.28 926
515 __no_granule_support에서의 wfe, wfi 중복 사용 [2] min 2022.10.03 175
514 TLBi operation 질문 [5] 컴퓨터 2022.09.18 399
513 Nested Interrupt on ARM64 [7] 아띨라 2022.07.24 677
512 ARM64 CPU Context Switch [2] 아띨라 2022.07.24 506
511 mmap후 파일 올리기 [3] 읏짜 2022.01.13 842
510 [질문-해결됨] compaction 후 기존 PTE 매핑에 뜬금 스왑 엔트리가 나와요! [12] 이파란 2021.05.17 1912
509 iamroot선배님들의 조언 부탁드립니다 [2] 이파란 2021.04.15 774
508 오드로이드에 관해 akqk13012 2021.03.26 445
507 critical section에 대한 커널 코드 검증 방법 문의 [7] file mnth 2021.01.09 1468
506 인터럽트 발생 관련해서 질문 드리고 싶습니다. [6] 코딩의노예 2020.07.07 944
505 RCU 관련해서 질문 하나 드려봅니다. [2] 코딩의노예 2020.07.03 652
504 멀티스레드 시간측정 질문 file 뇨뇸 2020.05.03 521
503 리눅스 소스 분석 관련 질문 [4] AlanWalker 2020.04.22 739
502 16기 리눅스 커널 스터디 39주차 질문입니다. [6] rnsscman 2020.03.22 720
501 ___reserved_mem_reserve_reg 관련 질문 [4] DEWH 2020.03.09 12853
500 16기 리눅스 커널 스터디 33주차 질문입니다. [5] rnsscman 2020.02.08 358
499 setup_machine_fdt() -> fixmap_remap_fdt() 질문입니다. [2] daeroro 2019.12.24 316
XE Login