[Crash-utility] [PATCH] PPC BookE/non-BookE support

David Anderson anderson at redhat.com
Fri Mar 2 13:53:37 UTC 2007


Dmitry Antipov wrote:

> Hello,
>
> this patch introduces a kind of detection of PPC32 CPU type in attempt to
> determine the valid kvtop()/uvtop() addresses translation method. It also
> assumes that you have a quite recent 2.6 kernel, btw.
>
> Dmitry
>
Just to clarify -- does that imply that this somehow breaks backwards
compatibility, or that the CPU_BOOKE detection only works with later
2.6 kernels?  (I'm presuming the latter...)

Dave

>
>------------------------------------------------------------------------
>
>diff -ur .orig-crash-4.0-3.20/defs.h crash-4.0-3.20/defs.h
>--- .orig-crash-4.0-3.20/defs.h	2007-02-21 23:52:01.000000000 +0300
>+++ crash-4.0-3.20/defs.h	2007-02-22 16:16:41.000000000 +0300
>@@ -3747,6 +3747,8 @@
> #define display_idt_table() \
>         error(FATAL, "-d option is not applicable to PowerPC architecture\n")
> #define KSYMS_START (0x1)
>+/* This should match PPC_FEATURE_BOOKE from include/asm-powerpc/cputable.h */
>+#define CPU_BOOKE (0x00008000)
> #endif
> 
> /*
>diff -ur .orig-crash-4.0-3.20/ppc.c crash-4.0-3.20/ppc.c
>--- .orig-crash-4.0-3.20/ppc.c	2007-02-21 23:52:01.000000000 +0300
>+++ crash-4.0-3.20/ppc.c	2007-02-22 16:21:32.000000000 +0300
>@@ -51,6 +51,9 @@
> void
> ppc_init(int when)
> {
>+	target_uint cpu_features;
>+	target_ptr cur_cpu_spec;
>+
> 	switch (when)
> 	{
> 	case PRE_SYMTAB:
>@@ -140,6 +143,13 @@
> 			if (THIS_KERNEL_VERSION >= LINUX(2,6,0))
> 				machdep->hz = 1000;
> 		}
>+		if (symbol_exists("cur_cpu_spec")) {
>+			get_symbol_ptr("cur_cpu_spec", &cur_cpu_spec);
>+			readmem_uint(cur_cpu_spec + MEMBER_OFFSET("cpu_spec", "cpu_user_features"), 
>+				     KVADDR, &cpu_features, "cpu user features", FAULT_ON_ERROR);
>+			if (cpu_features & CPU_BOOKE)
>+				machdep->flags |= CPU_BOOKE;
>+		}
> 		machdep->section_size_bits = _SECTION_SIZE_BITS;
> 		machdep->max_physmem_bits = _MAX_PHYSMEM_BITS;
> 		break;
>@@ -285,7 +295,11 @@
> 
> 	page_middle = (ulong *)pgd_pte;
> 
>-	page_table = page_middle + (BTOP(vaddr) & (PTRS_PER_PTE - 1));
>+	if (machdep->flags & CPU_BOOKE)
>+		page_table = page_middle + (BTOP(vaddr) & (PTRS_PER_PTE - 1));
>+	else
>+		page_table = ((page_middle & machdep->pagemask) + machdep->kvbase) +
>+			(BTOP(vaddr) & (PTRS_PER_PTE-1));
> 
> 	if (verbose)
> 		fprintf(fp, "  PMD: %lx => %lx\n",(ulong)page_middle, 
>@@ -369,7 +383,11 @@
> 
> 	page_middle = (ulong *)pgd_pte;
> 
>-	page_table = page_middle + (BTOP(kvaddr) & (PTRS_PER_PTE-1));
>+	if (machdep->flags & CPU_BOOKE)
>+		page_table = page_middle + (BTOP(kvaddr) & (PTRS_PER_PTE - 1));
>+	else
>+		page_table = ((page_middle & machdep->pagemask) + machdep->kvbase) +
>+			(BTOP(kvaddr) & (PTRS_PER_PTE-1));
> 
> 	if (verbose)
> 		fprintf(fp, "  PMD: %lx => %lx\n", (ulong)page_middle, 
>
>
>------------------------------------------------------------------------
>
>--
>Crash-utility mailing list
>Crash-utility at redhat.com
>https://www.redhat.com/mailman/listinfo/crash-utility
>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20070302/f0d6a593/attachment.htm>


More information about the Crash-utility mailing list