2012/10/4 paawan oza <paawan1982(a)yahoo.com>:
Isn't the problem actually that we read the section entry wrong?
The following (and attached) is the fix I've been using for this.
Oza: it is not a problem as none of the kernel section level translations
goes through vtop.
It _is_ a problem from the verbose vtop command output, and that's the
one I see you talking about in your original email, right?
may in kernel_init part it might be called, but it is a problem only
if 20th bit set; and while section translation we mask 20th bit.
Looks like there are two problems:
(1) The section translation problem, fixed by my patch
(2) The 20-bit problem, fixed by your patch
Before (all verbose section translations wrong, 20-bit set address
wrong):
crash> vtop 0xc000005c | grep PAGE:
PAGE: 11000 (1MB)
crash> vtop 0xc010005c | grep PAGE:
PAGE: 11000 (1MB)
crash> vtop 0xc020005c | grep PAGE:
PAGE: 211000 (1MB)
With my patch (only 20-bit set address wrong):
crash> vtop 0xc000005c | grep PAGE:
PAGE: 0 (1MB)
crash> vtop 0xc010005c | grep PAGE:
PAGE: 0 (1MB)
crash> vtop 0xc020005c | grep PAGE:
PAGE: 200000 (1MB)
With my patch+your patch (even 20-bit address right):
crash> vtop 0xc000005c | grep PAGE:
PAGE: 0 (1MB)
crash> vtop 0xc010005c | grep PAGE:
PAGE: 100000 (1MB)
crash> vtop 0xc020005c | grep PAGE:
PAGE: 200000 (1MB)
Rabin