Hi,
please find the patch below.
--- arm.c 2012-06-29
20:29:18.000000000 +0530
+++ arm_section.c 2012-10-04
19:49:01.166889000 +0530
@@ -932,6 +932,13 @@
*/
page_dir = pgd +
PGD_OFFSET(vaddr) * 2;
+ /* The unity-mapped region
is mapped using 1MB pages,
+ * hence 1-level
translation if bit 20 is set,
+ * we are 1MB apart
physically,
+ * hence we move the
page_dir in case bit 20 is set.
+ */
+ if (((vaddr)
> (20)) & 1)
+
page_dir = page_dir + 1;
FILL_PGD(PAGEBASE(pgd), KVADDR, PGDIR_SIZE());
pgd_pte =
ULONG(machdep->pgd + PGDIR_OFFSET(page_dir));
Regards,
Oza.
________________________________
From: Dave Anderson <anderson(a)redhat.com>
To: paawan oza <paawan1982(a)yahoo.com>; "Discussion list for crash utility
usage, maintenance and development" <crash-utility(a)redhat.com>
Cc: Thomas Fänge <thomas.fange(a)sonymobile.com>; Rabin Vincent <rabin(a)rab.in>;
Mika Westerberg <mika.westerberg(a)iki.fi>; jan karlsson
<jan.karlsson(a)sonymobile.com>
Sent: Thursday, 4 October 2012 6:30 PM
Subject: Re: [Crash-utility] using crash for ARM
----- Original Message -----
> Paawan, your fix looks sane to me but can you add a small
comment describing
> why this is done?
>
ok,
Let us wait for Dave and others to comment on it, and try to see how
this could be pushed.
Regards,
Oza.
Oza,
Can you please append your actual patch as Rabin has done? The only
thing that I have from you is this pseudo-code description:
then I have to do workaround for section level physical addresses as
follows.
page_dir = pgd + PGD_OFFSET(vaddr) * 2;
if (bit(vaddr,20)) //if bit is set then move to the next pgd */
page_dir = page_dir + 1;
FILL_PGD(PAGEBASE(pgd), KVADDR, PGDIR_SIZE());
pgd_pte = ULONG(machdep->pgd + PGDIR_OFFSET(page_dir));
Then Mika can decide on how to proceed with the two patches.
Dave