Commit Graph

266071 Commits

Author SHA1 Message Date
黄涛
dbc0fca461 sched: Cleanup cpu_active madness
commit 5fbd036b55 upstream.

Stepan found:

CPU0		CPUn

_cpu_up()
  __cpu_up()

		boostrap()
		  notify_cpu_starting()
		  set_cpu_online()
		  while (!cpu_active())
		    cpu_relax()

<PREEMPT-out>

smp_call_function(.wait=1)
  /* we find cpu_online() is true */
  arch_send_call_function_ipi_mask()

  /* wait-forever-more */

<PREEMPT-in>
		  local_irq_enable()

  cpu_notify(CPU_ONLINE)
    sched_cpu_active()
      set_cpu_active()

Now the purpose of cpu_active is mostly with bringing down a cpu, where
we mark it !active to avoid the load-balancer from moving tasks to it
while we tear down the cpu. This is required because we only update the
sched_domain tree after we brought the cpu-down. And this is needed so
that some tasks can still run while we bring it down, we just don't want
new tasks to appear.

On cpu-up however the sched_domain tree doesn't yet include the new cpu,
so its invisible to the load-balancer, regardless of the active state.
So instead of setting the active state after we boot the new cpu (and
consequently having to wait for it before enabling interrupts) set the
cpu active before we set it online and avoid the whole mess.
2012-07-12 09:49:51 +08:00
黄涛
8215d8fbbf rk30: cpufreq: prevent deadlock by disable call get_online_cpus
The deadlock happens when:
rk30_cpufreq_temp_limit_work_func:
 cpufreq_driver_target
  lock_policy_rwsem_write
  mutex_lock(&cpufreq_mutex)

cpufreq_interactive_up_task:
 mutex_lock(&cpufreq_mutex)
 mutex_lock(&cpu_hotplug.lock)

_cpu_down:
 mutex_lock(&cpu_hotplug.lock)
 lock_policy_rwsem_write
2012-07-12 09:49:51 +08:00
黄涛
9100f92c1f rk: fiq_debugger: better support cpu cmd, never switch when target cpu is offline 2012-07-12 09:49:51 +08:00
黄涛
da66e13f0c rk: add RK_CLOCK_PROC config, disable /proc/clocks by default 2012-07-11 14:54:48 +08:00
陈辉
83e84ca2ed add arm-eabi-4.4.3 toolchain 2012-07-11 00:35:20 +08:00
kfx
fdf7df16f3 i2c: 'move rk30_i2c_platform_data from mach-rk30 to plat-rk' and 'disable i2c4 select on rk2928' 2012-07-10 14:55:11 +08:00
黄涛
0b821e09a8 rk: add RK_PL330_DMA config 2012-07-10 13:07:59 +08:00
赵子初
9f1e202b42 add mt6229 for rk30 2012-07-10 11:23:13 +08:00
许盛飞
a823ab919a rk30☎️ the bug of charge_display 2012-07-09 20:01:42 +08:00
赵子初
edd704202a add mw100 for rk30 2012-07-09 15:50:25 +08:00
赵子初
c4370f4587 add mu509 for rk30 2012-07-09 15:15:54 +08:00
zwp
9c0c1755b7 add twl60xx low battery detection function at rk30_phone_defconfig. 2012-07-09 10:55:20 +08:00
yangkai
b61b9880f0 hcd nonper channel problem & suspend when no device connect 2012-07-09 10:41:30 +08:00
zwp
9d19ca3097 add charge display function at rk30_phone_defconfig. 2012-07-09 10:06:32 +08:00
许盛飞
a6fd7f7fb5 rk30:sdk:change load order order 2012-07-09 10:01:02 +08:00
hhb
56b9a8b3cd camera:modify ov5640_for_td8801.c 2012-07-09 09:55:52 +08:00
张晴
30d38160f8 rk30:phone:support pmic tps80032 vbat low detection,support pmic tps80032 early suspend 2012-07-09 09:49:32 +08:00
许盛飞
9e94d2b544 rk30:sdk: update power calculation method 2012-07-06 18:02:17 +08:00
zsq
a0a99a29ca del rga dump for bug fix 2012-07-06 17:51:20 +08:00
chenxing
54f6c42e54 Revert "rk30:sdk: store clock request frequency and auto scale frequency when limit clock frequency"
This reverts commit f0a1404739.
2012-07-06 15:18:14 +08:00
chenxing
f0a1404739 rk30:sdk: store clock request frequency and auto scale frequency when limit clock frequency 2012-07-06 15:09:02 +08:00
许盛飞
33212cdac1 rk30: not gating the gpios clock 2012-07-05 19:51:52 +08:00
chenxing
ab054a330f rk30:sdk: protect variable and function 2012-07-05 19:24:10 +08:00
chenxing
3c9e537ef5 rk30:sdk: get avs value under logic 1.1V 2012-07-05 19:02:42 +08:00
chenxing
4d2ccc2bdc rk30:sdk add interface of avs function and interface to see dvfs tree(/sys/dvfs/dvfs_tree) 2012-07-05 18:28:18 +08:00
huangdesheng
79e6d3223a revise rga code err 2012-07-05 18:17:17 +08:00
黄涛
5fd4c12616 rk: plat: entry-macro.S use GIC_CPU_BASE macro 2012-07-05 18:11:37 +08:00
huangdesheng
6c68734667 add rga version 2012-07-05 17:47:06 +08:00
黄涛
f8dbfea945 rk: move fiq.c from mach-rk30 to plat-rk
add GIC_DIST_BASE, GIC_CPU_BASE, IRQ_DEBUG_UART macro
rename rk30_fiq_init to rk_fiq_init
2012-07-05 17:20:02 +08:00
许盛飞
5114a79469 rk30:sdk: add lowpower check 2012-07-05 16:45:17 +08:00
许盛飞
f40781fe3e rk30:sdk: add wakelock when charging 2012-07-04 17:46:35 +08:00
chenxing
a44982e459 rk30:sdk: add GPU frequency limit between 133MHz to 400MHz 2012-07-04 17:23:30 +08:00
黄涛
4e5be952a4 rk: plat: add io.h 2012-07-03 10:40:52 +08:00
hhb
2713d0757c DMA: rk29-pl330.c add new argument 'id' to pl330_request_channel() where it is invoked 2012-07-03 10:21:36 +08:00
黄涛
333872c371 rk: plat: add memory.h 2012-07-03 10:20:28 +08:00
hhb
a93d6edd37 DMA: dma-pl330.c add new argument 'id' to pl330_request_channel() where it is invoked 2012-07-03 10:13:57 +08:00
kfx
e81b40dae0 adc drivers: add comments 2012-07-03 10:03:23 +08:00
hhb
8eff7dd2a6 DMA :pl330.c add new argument 'id' to pl330_request_channel() 2012-07-03 09:54:00 +08:00
黄涛
9fe17ed4a2 rk: plat: add gpio.h 2012-07-02 20:41:37 +08:00
黄涛
b13e4b9414 rk: move fiq.h from mach-rk30 to plat-rk 2012-07-02 20:18:56 +08:00
黄涛
bbfd2efb43 rk: move system.h from mach-rk30 to plat-rk 2012-07-02 19:57:53 +08:00
黄涛
00077a7819 rk: move clkdev.h debug-macro.S entry-macro.S timex.h uncompress.h from mach-rk30 to plat-rk 2012-07-02 19:48:45 +08:00
黄涛
99c22a6fd5 rk30: cpufreq: support build with non-SMP config 2012-07-02 17:07:06 +08:00
hhb
39c2c12ab8 camera: modify ov5640 driver for phone 2012-06-30 16:10:26 +08:00
蓝斌元
301833b9f6 Revert "fix spi driver's bug while dma recieving"
This reverts commit b01b358f83.
2012-06-29 11:10:30 +08:00
gwl
86cb5e4e16 add broadcom OOB function resource,current is not used 2012-06-28 11:31:18 +08:00
黄涛
9a0dc7c04e rk30: timer: try fix asynchronous read timer, return value may undefined 2012-06-28 11:20:41 +08:00
hhb
4bd540fa8b rk30 : DMA: add move DMA microcode from DDR to SRAM 2012-06-27 19:08:37 +08:00
chenxing
31abdc88ce rk30: add retry after dvfs set voltage error, and check voltage value to make sure if it realy failed 2012-06-27 16:35:40 +08:00
chenxing
c187c76560 rk30: record arm voltage value before dvfs start 2012-06-27 16:23:31 +08:00