Hi
I have tested both this patch and the patch by Rabin and they are OK for me. The patches fixes the identified problems and I have not found any unwanted consequences from the patches.
Jan
Jan Karlsson
Senior Software Engineer
MIB
Sony Mobile Communications
Tel: +46703062174
From: paawan oza [mailto:paawan1982@yahoo.com]
Sent: fredag den 5 oktober 2012 07:51
To: Dave Anderson; Discussion list for crash utility usage, maintenance and development
Cc: Fänge, Thomas; Rabin Vincent; Mika Westerberg; Karlsson, Jan
Subject: Re: [Crash-utility] using crash for ARM
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@redhat.com>
To: paawan oza <paawan1982@yahoo.com>; "Discussion list for crash utility usage, maintenance and development" <crash-utility@redhat.com>
Cc: Thomas Fänge <thomas.fange@sonymobile.com>; Rabin Vincent <rabin@rab.in>; Mika Westerberg <mika.westerberg@iki.fi>; jan karlsson <jan.karlsson@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