02全志r58平台Android4.4.4下关闭内核中的CPU的开启关闭提示

 

02全志r58平台Android4.4.4下关闭内核中的CPU的开启关闭提示

2017/8/18 13:53

版本:V1.0

 

开发板:SC5806(全志R58平台)

SDK:android4.4.4

 

 

1、系统编译:(略)

原始编译的系统,在串口中会有很多打印:(并且还是不停的显示打印!)

[ 3277.071614] CPU1: shutdown

[ 3277.534023] CPU2: shutdown

[ 3277.080857] CPU1: Booted secondary processor

[ 3277.540563] CPU2: Booted secondary processor

[ 3275.490031] CPU3: Booted secondary processor

[ 3279.121504] CPU2: shutdown

[ 3279.552958] CPU3: shutdown

[ 3279.577345] CPU1: shutdown

[ 3279.580034] CPU1: Booted secondary processor

[ 3279.130678] CPU2: Booted secondary processor

[ 3279.561647] CPU3: Booted secondary processor

[ 3282.023760] CPU2: shutdown

[ 3282.032309] CPU2: Booted secondary processor

[ 3283.102187] CPU3: shutdown

[ 3283.382554] CPU1: shutdown

 

 

 

 

2、

W:\vxiaoyu_s5k5eya\lichee\linux-3.4\arch\arm\kernel\smp.c

/*

 * called on the thread which is asking for a CPU to be shutdown -

 * waits until shutdown has completed, or it is timed out.

 */

void __cpuinit __cpu_die(unsigned int cpu)

{

if (!wait_for_completion_timeout(&cpu_died, msecs_to_jiffies(5000))) {

pr_err("CPU%u: cpu didn't die\n", cpu);

return;

}

//printk(KERN_NOTICE "CPU%u: shutdown\n", cpu);

 

if (!platform_cpu_kill(cpu))

printk("CPU%u: unable to kill\n", cpu);

}

 

 

/*

 * This is the secondary CPU boot entry.  We're using this CPUs

 * idle thread stack, but a set of temporary page tables.

 */

asmlinkage void __cpuinit secondary_start_kernel(void)

{

struct mm_struct *mm = &init_mm;

unsigned int cpu;

 

/*

 * The identity mapping is uncached (strongly ordered), so

 * switch away from it before attempting any exclusive accesses.

 */

cpu_switch_mm(mm->pgd, mm);

enter_lazy_tlb(mm, current);

local_flush_tlb_all();

 

/*

 * All kernel threads share the same mm context; grab a

 * reference and switch to it.

 */

cpu = smp_processor_id();

atomic_inc(&mm->mm_count);

current->active_mm = mm;

cpumask_set_cpu(cpu, mm_cpumask(mm));

 

//printk("CPU%u: Booted secondary processor\n", cpu);

 

cpu_init();

preempt_disable();

trace_hardirqs_off();

 

/*

 * Give the platform a chance to do its own initialisation.

 */

platform_secondary_init(cpu);

 

notify_cpu_starting(cpu);

 

calibrate_delay();

 

smp_store_cpu_info(cpu);

 

/*

 * OK, now it's safe to let the boot CPU continue.  Wait for

 * the CPU migration code to notice that the CPU is online

 * before we continue - which happens after __cpu_up returns.

 */

set_cpu_online(cpu, true);

complete(&cpu_running);

 

local_irq_enable();

local_fiq_enable();

 

/*

 * OK, it's off to the idle thread for us

 */

cpu_idle();

}

 

 

 

 

3、重新编译boot/内核打包即可!

 

转载于:https://www.cnblogs.com/wb4916/p/9923005.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值