platsmp.c (967B)
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Keystone SOC SMP platform code 4 * 5 * Copyright 2013 Texas Instruments, Inc. 6 * Cyril Chemparathy <cyril@ti.com> 7 * Santosh Shilimkar <santosh.shillimkar@ti.com> 8 * 9 * Based on platsmp.c, Copyright (C) 2002 ARM Ltd. 10 */ 11 12#include <linux/init.h> 13#include <linux/smp.h> 14#include <linux/io.h> 15#include <linux/pgtable.h> 16 17#include <asm/smp_plat.h> 18#include <asm/prom.h> 19#include <asm/tlbflush.h> 20 21#include "keystone.h" 22 23static int keystone_smp_boot_secondary(unsigned int cpu, 24 struct task_struct *idle) 25{ 26 unsigned long start = virt_to_idmap(&secondary_startup); 27 int error; 28 29 pr_debug("keystone-smp: booting cpu %d, vector %08lx\n", 30 cpu, start); 31 32 error = keystone_cpu_smc(KEYSTONE_MON_CPU_UP_IDX, cpu, start); 33 if (error) 34 pr_err("CPU %d bringup failed with %d\n", cpu, error); 35 36 return error; 37} 38 39const struct smp_operations keystone_smp_ops __initconst = { 40 .smp_boot_secondary = keystone_smp_boot_secondary, 41};