Skip to content

Commit

Permalink
arm64: kernel: make the pen of the secondary a 64-bit unsigned value
Browse files Browse the repository at this point in the history
Change the prototype of write_pen_release() accordingly and clarify
that's holding the hardware id of the secondary that's going to boot.
This is in preparation of getting HWIDs parsed from the DT.

Signed-off-by: Javi Merino <javi.merino@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
  • Loading branch information
Javi Merino authored and Catalin Marinas committed Mar 20, 2013
1 parent de79a64 commit 3e98fda
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
2 changes: 2 additions & 0 deletions arch/arm64/include/asm/cputype.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
#define ID_AA64ISAR0_EL1 "id_aa64isar0_el1"
#define ID_AA64MMFR0_EL1 "id_aa64mmfr0_el1"

#define INVALID_HWID ULONG_MAX

#define read_cpuid(reg) ({ \
u64 __val; \
asm("mrs %0, " reg : "=r" (__val)); \
Expand Down
10 changes: 5 additions & 5 deletions arch/arm64/kernel/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
* where to place its SVC stack
*/
struct secondary_data secondary_data;
volatile unsigned long secondary_holding_pen_release = -1;
volatile unsigned long secondary_holding_pen_release = INVALID_HWID;

enum ipi_msg_type {
IPI_RESCHEDULE,
Expand All @@ -70,7 +70,7 @@ static DEFINE_RAW_SPINLOCK(boot_lock);
* in coherency or not. This is necessary for the hotplug code to work
* reliably.
*/
static void __cpuinit write_pen_release(int val)
static void __cpuinit write_pen_release(u64 val)
{
void *start = (void *)&secondary_holding_pen_release;
unsigned long size = sizeof(secondary_holding_pen_release);
Expand Down Expand Up @@ -105,7 +105,7 @@ static int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)

timeout = jiffies + (1 * HZ);
while (time_before(jiffies, timeout)) {
if (secondary_holding_pen_release == -1UL)
if (secondary_holding_pen_release == INVALID_HWID)
break;
udelay(10);
}
Expand All @@ -116,7 +116,7 @@ static int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
*/
raw_spin_unlock(&boot_lock);

return secondary_holding_pen_release != -1 ? -ENOSYS : 0;
return secondary_holding_pen_release != INVALID_HWID ? -ENOSYS : 0;
}

static DECLARE_COMPLETION(cpu_running);
Expand Down Expand Up @@ -190,7 +190,7 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
* Let the primary processor know we're out of the
* pen, then head off into the C entry point
*/
write_pen_release(-1);
write_pen_release(INVALID_HWID);

/*
* Synchronise with the boot thread.
Expand Down

0 comments on commit 3e98fda

Please sign in to comment.