Re: what is srmmu_inherit_prom_mappings for?

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

 



Oh I found out what this is. It was checking if the 'start' address is in a big chunk. 
from SRMMU_REAL_PMD_SIZE (2^18) to SRMMU_PGDIR_SIZE(2^24).
The comparison result in equal only for the first page of a big chunk.
regards,
Chan



보낸 사람 : "김찬" <ckim@xxxxxxxxxx>
보낸 날짜 : 2014-04-23 22:05:48 ( +09:00 )
받는 사람 : sparclinux@xxxxxxxxxxxxxxx <sparclinux@xxxxxxxxxxxxxxx>
참조 : 
제목 : Re: what is srmmu_inherit_prom_mappings for?

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