Skip to content

Commit

Permalink
ARM: pm: arrange for cpu_proc_init() to be called on resume
Browse files Browse the repository at this point in the history
cpu_proc_init() does processor specific initialization, which we do
at boot time.  We have been omitting to do this on resume, which
causes some of this initialization to be skipped.  We've also been
skipping this on SMP initialization too.

Ensure that cpu_proc_init() is always called appropriately by
moving it into cpu_init(), and move cpu_init() to a more appropriate
point in the boot initialization.

Tested-by: Kevin Hilman <khilman@ti.com>
Acked-by: Jean Pihet <j-pihet@ti.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Russell King committed Jun 24, 2011
1 parent 111b20d commit b69874e
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 52 deletions.
99 changes: 50 additions & 49 deletions arch/arm/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -342,54 +342,6 @@ static void __init feat_v6_fixup(void)
elf_hwcap &= ~HWCAP_TLS;
}

static void __init setup_processor(void)
{
struct proc_info_list *list;

/*
* locate processor in the list of supported processor
* types. The linker builds this table for us from the
* entries in arch/arm/mm/proc-*.S
*/
list = lookup_processor_type(read_cpuid_id());
if (!list) {
printk("CPU configuration botched (ID %08x), unable "
"to continue.\n", read_cpuid_id());
while (1);
}

cpu_name = list->cpu_name;

#ifdef MULTI_CPU
processor = *list->proc;
#endif
#ifdef MULTI_TLB
cpu_tlb = *list->tlb;
#endif
#ifdef MULTI_USER
cpu_user = *list->user;
#endif
#ifdef MULTI_CACHE
cpu_cache = *list->cache;
#endif

printk("CPU: %s [%08x] revision %d (ARMv%s), cr=%08lx\n",
cpu_name, read_cpuid_id(), read_cpuid_id() & 15,
proc_arch[cpu_architecture()], cr_alignment);

sprintf(init_utsname()->machine, "%s%c", list->arch_name, ENDIANNESS);
sprintf(elf_platform, "%s%c", list->elf_name, ENDIANNESS);
elf_hwcap = list->elf_hwcap;
#ifndef CONFIG_ARM_THUMB
elf_hwcap &= ~HWCAP_THUMB;
#endif

feat_v6_fixup();

cacheid_init();
cpu_proc_init();
}

/*
* cpu_init - initialise one CPU.
*
Expand All @@ -405,6 +357,8 @@ void cpu_init(void)
BUG();
}

cpu_proc_init();

/*
* Define the placement constraint for the inline asm directive below.
* In Thumb-2, msr with an immediate value is not allowed.
Expand Down Expand Up @@ -441,6 +395,54 @@ void cpu_init(void)
: "r14");
}

static void __init setup_processor(void)
{
struct proc_info_list *list;

/*
* locate processor in the list of supported processor
* types. The linker builds this table for us from the
* entries in arch/arm/mm/proc-*.S
*/
list = lookup_processor_type(read_cpuid_id());
if (!list) {
printk("CPU configuration botched (ID %08x), unable "
"to continue.\n", read_cpuid_id());
while (1);
}

cpu_name = list->cpu_name;

#ifdef MULTI_CPU
processor = *list->proc;
#endif
#ifdef MULTI_TLB
cpu_tlb = *list->tlb;
#endif
#ifdef MULTI_USER
cpu_user = *list->user;
#endif
#ifdef MULTI_CACHE
cpu_cache = *list->cache;
#endif

printk("CPU: %s [%08x] revision %d (ARMv%s), cr=%08lx\n",
cpu_name, read_cpuid_id(), read_cpuid_id() & 15,
proc_arch[cpu_architecture()], cr_alignment);

sprintf(init_utsname()->machine, "%s%c", list->arch_name, ENDIANNESS);
sprintf(elf_platform, "%s%c", list->elf_name, ENDIANNESS);
elf_hwcap = list->elf_hwcap;
#ifndef CONFIG_ARM_THUMB
elf_hwcap &= ~HWCAP_THUMB;
#endif

feat_v6_fixup();

cacheid_init();
cpu_init();
}

void __init dump_machine_table(void)
{
struct machine_desc *p;
Expand Down Expand Up @@ -913,7 +915,6 @@ void __init setup_arch(char **cmdline_p)
#endif
reserve_crashkernel();

cpu_init();
tcm_init();

#ifdef CONFIG_MULTI_IRQ_HANDLER
Expand Down
4 changes: 1 addition & 3 deletions arch/arm/mm/proc-sa1100.S
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
*/
#define DCACHELINESIZE 32

__INIT
.section .text

/*
* cpu_sa1100_proc_init()
Expand All @@ -45,8 +45,6 @@ ENTRY(cpu_sa1100_proc_init)
mcr p15, 0, r0, c9, c0, 5 @ Allow read-buffer operations from userland
mov pc, lr

.section .text

/*
* cpu_sa1100_proc_fin()
*
Expand Down

0 comments on commit b69874e

Please sign in to comment.