Re: what is srmmu_inherit_prom_mappings for?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux