Hi, I guess my question should be a basic one for this group, so I hope someboy could clear things up for me. I could read down and understand the srmmu_swprobe code so I think I understand basic page table structure(though not thoroughly understood). But in the srmmu_inherit_prom_mappings function, inside the while loop (copying from start to end), there are some codes below that I can't understand. while (..) { ... if(!(prompte = srmmu_hwprobe(start))) { start += PAGE_SIZE; continue; } --> I can understand. read the pte and if it's empty, process next page..The read value is kept in prompte. /* A red snapper, see what it really is. */ what = 0; if(!(start & ~(SRMMU_REAL_PMD_MASK))) { if(srmmu_hwprobe((start-PAGE_SIZE) + SRMMU_REAL_PMD_SIZE) == prompte) what = 1; } --> SRMMU_REAL_PMD_MASK is all '1' except lower 18 bits. nonzero above bit 19 means the index to PMD table is nonzero. But, what is this (srmmu_hwprobe((start-PAGE_SIZE) + SRMMU_REAL_PMD_SIZE) == prompte) condition? We haven't increased the start but why do we subtract PAGE_SIZE and add whole PMD size (2^18) and read pte from there? and compare with that read from the 'start' location? if(!(start & ~(SRMMU_PGDIR_MASK))) { if(srmmu_hwprobe((start-PAGE_SIZE) + SRMMU_PGDIR_SIZE) == prompte) what = 2; } --> this is almost the same as above. same question. ... } I'll be grateful if somebody kindly explain it or give any hint to me. Thanks! Chan p.s. - I didn't receive my previous email coming from this mailing list. I have some mail server problem recently so I cannot send email with emtpy subject line for now. I'm afraid this caused the list server to keep me from receiving the email. I could see my email is in the archive. --------------------- Hi, I was following the srmmu_paging_init code. (linux 3.3) while tyring to solve the problem of not being able to handle the page fault when accessing the frame buffer on user program(busybox). I know there comes another version of page table setup after this stage. Anyway.. after bootmem_init and srmmu_nocache_calcsize and srmmu_nocache_init calls, I see srmmu_inherit_prom_mappings(0xfe400000,(LINUX_OPPROM_ENDVM-PAGE_SIZE)); I don't know what this is doing.. Could someone kindly explain it to me? Thanks, Chan Kim ÿ淸º{.nÇ+돴윯돪†+%듚ÿ깁負¥Šwÿº{.nÇ+돴Дぼ–)紵悖¶썳變}©옽Æ zÚ&j:+v돣?®w?듺2듷솳鈺Ú&¢)傘«a뛴ÿÿ鎬z요z받쀺+껠šŽ듶¢jÿŠw療f