android_kernel_xiaomi_sdm845/arch/powerpc/kernel
Gautham R Shenoy 6776426320 powerpc/pseries: Reduce the polling interval in __cpu_up()
Time time taken for a single cpu online operation on a pseries machine
is as follows:
Dedicated LPAR (POWER6): ~220ms.
Shared LPAR (POWER5)   : ~240ms.

Of this time, approximately 200ms is taken up by __cpu_up(). This is because
we poll every 200ms to check if the new cpu has notified it's presence
through the cpu_callin_map. We repeat this operation until the new cpu sets
the value in cpu_callin_map or 5 seconds elapse, whichever comes earlier.

However, using completion_structs instead of polling loops,
the time taken by the new processor to indicate it's presence has
found to be less than 1ms on pseries. This method however may not
work on all powerpc platforms due to the time-base synchronization code.

Keeping this in mind, we could reduce msleep polling interval from
200ms to 1ms while retaining the 5 second timeout.

With this, the time taken for a cpu online operation changes as follows:
Dedicated LPAR (POWER6): 20-25ms.
Shared LPAR (POWER5)   : 60-80ms.

In both these cases, it was found that the code polls through the loop
only once indicating that 1ms is a reasonable value, atleast on pseries.

The code needs testing on other powerpc platforms.

Signed-off-by: Gautham R Shenoy <ego@in.ibm.com>
Acked-by: Joel Schopp <jschopp@austin.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2009-08-27 13:12:54 +10:00
..
vdso32 powerpc: Enable GCOV 2009-08-20 10:29:28 +10:00
vdso64 powerpc: Enable GCOV 2009-08-20 10:29:28 +10:00
.gitignore powerpc: Ignore generated vmlinux.lds in git 2008-10-07 14:26:18 +11:00
align.c powerpc: Keep track of emulated instructions 2009-05-21 15:44:26 +10:00
asm-offsets.c Merge commit 'paulus-perf/master' into next 2009-08-20 11:07:56 +10:00
audit.c
btext.c powerpc: Use the common ascii hex helpers 2008-08-20 16:34:57 +10:00
cacheinfo.c powerpc/cacheinfo: Rename cache_dir per-cpu variable 2009-01-13 14:48:02 +11:00
cacheinfo.h powerpc: Rewrite sysfs processor cache info code 2009-01-08 16:25:10 +11:00
clock.c [POWERPC] clk.h interface for platforms 2007-10-03 09:11:56 +10:00
compat_audit.c
cpu_setup_6xx.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
cpu_setup_44x.S AMCC PPC 460SX redwood SoC platform initial framework 2009-02-14 14:41:29 -05:00
cpu_setup_fsl_booke.S powerpc/fsl-booke: Enable L1 cache on e500v1/e500v2/e500mc CPUs 2009-06-15 21:45:30 -05:00
cpu_setup_pa6t.S
cpu_setup_ppc970.S powerpc: Use LOAD_REG_IMMEDIATE only for constants on 64-bit 2008-09-15 11:08:35 -07:00
cputable.c powerpc: Add AMCC 460EX/460GT Rev. B support to cputable.c 2009-08-20 10:25:18 +10:00
crash_dump.c powerpc: Unify opcode definitions and support 2009-02-23 10:48:56 +11:00
crash.c powerpc: Increase CRASH_HANDLER_MAX 2008-06-30 22:31:00 +10:00
dbell.c powerpc: Add support for using doorbells for SMP IPI 2009-02-23 15:53:03 +11:00
dma-iommu.c powerpc: Change u64/s64 to a long long integer type 2009-01-13 14:47:59 +11:00
dma-swiotlb.c powerpc: Add support for swiotlb on 32-bit 2009-06-09 16:49:18 +10:00
dma.c powerpc/dma: pci_set_dma_mask() shouldn't fail if mask fits in RAM 2009-08-10 16:36:38 +10:00
entry_32.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
entry_64.S powerpc: Remaining 64-bit Book3E support 2009-08-20 10:25:11 +10:00
exceptions-64e.S powerpc: Remaining 64-bit Book3E support 2009-08-20 10:25:11 +10:00
exceptions-64s.S Merge commit 'paulus-perf/master' into next 2009-08-20 11:07:56 +10:00
firmware.c
fpu.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
ftrace.c Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-20 10:56:46 -07:00
head_8xx.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
head_32.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
head_40x.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
head_44x.S powerpc/mm: Cleanup handling of execute permission 2009-08-27 13:12:51 +10:00
head_64.S powerpc: Remaining 64-bit Book3E support 2009-08-20 10:25:11 +10:00
head_booke.h powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
head_fsl_booke.S powerpc/mm: Cleanup handling of execute permission 2009-08-27 13:12:51 +10:00
ibmebus.c powerpc: struct device - replace bus_id with dev_name(), dev_set_name() 2008-12-16 15:53:38 +11:00
idle_6xx.S powerpc: Fix for getting CPU number in power_save_ppc32_restore() 2008-09-03 20:53:47 +10:00
idle_e500.S powerpc: Fix for getting CPU number in power_save_ppc32_restore() 2008-09-03 20:53:47 +10:00
idle_power4.S
idle.c powerpc: ftrace, do not latency trace idle 2008-11-20 10:51:15 -08:00
init_task.c mm: consolidate init_mm definition 2009-06-16 19:47:28 -07:00
io.c ftrace: support for PowerPC 2008-05-23 22:43:11 +02:00
iomap.c [POWERPC] Add 64-bit resources support to pci_iomap 2007-09-20 07:36:52 -05:00
iommu.c powerpc: Change u64/s64 to a long long integer type 2009-01-13 14:47:59 +11:00
irq.c Merge commit 'origin/master' into next 2009-06-12 16:53:38 +10:00
isa-bridge.c [POWERPC] Remove leftover printk in isa-bridge.c 2008-05-09 20:22:59 +10:00
kgdb.c kgdb, x86, arm, mips, powerpc: ignore user space single stepping 2008-09-26 10:36:41 -05:00
kprobes.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-01-07 11:31:52 -08:00
l2cr_6xx.S Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
legacy_serial.c powerpc/powermac: Fixup default serial port device for pmac_zilog 2008-07-28 16:30:53 +10:00
lparcfg.c powerpc: Display processor virtualization resource allocs in lparcfg 2009-06-02 10:36:10 +10:00
machine_kexec_32.c kexec jump: rename KEXEC_CONTROL_CODE_SIZE to KEXEC_CONTROL_PAGE_SIZE 2008-08-15 08:35:42 -07:00
machine_kexec_64.c powerpc/32: Setup OF properties for kdump 2008-12-23 15:13:29 +11:00
machine_kexec.c powerpc: Allow mem=x cmdline to work with 4G+ 2009-05-15 16:43:41 +10:00
Makefile Merge commit 'paulus-perf/master' into next 2009-08-20 11:07:56 +10:00
misc_32.S powerpc: Fix __flush_icache_range on 44x 2009-08-27 13:12:52 +10:00
misc_64.S powerpc: Move VMX and VSX asm code to vector.S 2009-06-09 16:46:25 +10:00
misc.S powerpc: Use LOAD_REG_IMMEDIATE only for constants on 64-bit 2008-09-15 11:08:35 -07:00
module_32.c powerpc/ppc32: ftrace, dynamic ftrace to handle modules 2008-11-20 10:52:53 -08:00
module_64.c powerpc: Unify opcode definitions and support 2009-02-23 10:48:56 +11:00
module.c module: cleanup FIXME comments about trimming exception table entries. 2009-06-12 21:47:05 +09:30
mpc7450-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
msi.c powerpc/PCI: include pci.h in powerpc MSI implementation 2009-03-25 08:54:29 -07:00
nvram_64.c [POWERPC] pseries: Eliminate global error_log_cnt variable 2007-08-17 11:01:52 +10:00
of_device.c powerpc/of: Fix usage of dev_set_name() in of_device_alloc() 2009-06-26 16:55:35 +10:00
of_platform.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
paca.c powerpc: Add PACA fields specific to 64-bit Book3E processors 2009-08-20 10:25:08 +10:00
pci_32.c powerpc/pci: Remove redundant pcnet32 fixup 2009-05-21 15:44:24 +10:00
pci_64.c powerpc: Fix warning when printing a resource_size_t 2009-06-09 16:47:41 +10:00
pci_dn.c powerpc/pci: Move pseries code into pseries platform specific area 2009-05-21 15:44:24 +10:00
pci-common.c powerpc/pci: Fix annotation of pcibios_claim_one_bus 2009-06-02 11:09:12 +10:00
perf_callchain.c perf_counter: powerpc: Add callchain support 2009-08-18 14:48:47 +10:00
perf_counter.c perf_counter/powerpc: Fix oops on cpus without perf_counter hardware support 2009-08-09 12:54:37 +02:00
pmc.c [POWERPC] Made FSL Book-E PMC support more generic 2008-02-05 23:34:14 -06:00
power4-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power5-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power5+-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power6-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power7-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
ppc32.h powerpc: Add VSX context save/restore, ptrace and signal support 2008-07-01 11:28:50 +10:00
ppc970-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
ppc_ksyms.c powerpc: Export cacheable_memzero as its now used in a driver 2009-01-08 16:25:17 +11:00
ppc_save_regs.S powerpc: Prepare xmon_save_regs for use with kdump 2008-12-23 15:13:28 +11:00
proc_ppc64.c powerpc: use non-racy method for proc entries creation 2008-04-29 08:06:22 -07:00
process.c powerpc: Clean ifdef usage in copy_thread() 2009-08-20 10:12:43 +10:00
prom_init_check.sh powerpc: Print linux_banner in prom_init 2009-03-11 17:11:33 +11:00
prom_init.c powerpc/prom_init: Evaluate mem kernel parameter for early allocation 2009-08-20 10:29:25 +10:00
prom_parse.c powerpc: Fix of_node_put() exit path in of_irq_map_one() 2009-04-20 12:18:43 -06:00
prom.c powerpc: Shield code specific to 64-bit server processors 2009-06-09 16:47:38 +10:00
ptrace32.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
ptrace.c powerpc: Fix booke user_disable_single_step() 2009-07-15 17:41:45 +10:00
reloc_64.S powerpc: Make the 64-bit kernel as a position-independent executable 2008-09-15 11:08:38 -07:00
rtas_flash.c proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
rtas_pci.c powerpc/pci: Clean up direct access to sysdata by RTAS 2009-05-21 15:44:23 +10:00
rtas-proc.c [POWERPC] Fix sparse warnings in arch/powerpc/kernel 2008-05-14 22:31:59 +10:00
rtas-rtc.c
rtas.c powerpc: Use one common impl. of RTAS timebase sync and use raw spinlock 2009-06-26 16:55:25 +10:00
setup_32.c powerpc: Add irqtrace support for 32-bit powerpc 2009-06-26 14:37:27 +10:00
setup_64.c powerpc: Remaining 64-bit Book3E support 2009-08-20 10:25:11 +10:00
setup-common.c powerpc: Remove duplicated #include's 2009-04-07 15:18:58 +10:00
setup.h
signal_32.c powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
signal_64.c powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
signal.c powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
signal.h powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
smp-tbsync.c powerpc: Silence software timebase sync 2008-11-05 22:08:28 +11:00
smp.c powerpc/pseries: Reduce the polling interval in __cpu_up() 2009-08-27 13:12:54 +10:00
softemu8xx.c Remove asm/a.out.h files for all architectures without a.out support. 2008-09-06 19:30:24 +01:00
stacktrace.c powerpc: Removed duplicated include in stacktrace.c 2008-07-28 16:30:47 +10:00
suspend.c PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
swsusp_32.S powerpc/mm: Introduce MMU features 2008-12-21 14:21:16 +11:00
swsusp_64.c
swsusp_asm64.S powerpc: Fix 64-bit hibernation with 64k pages 2008-10-07 14:26:20 +11:00
swsusp.c powerpc/mm: Split mmu_context handling 2008-12-21 14:21:15 +11:00
sys_ppc32.c powerpc: Add compat_sys_truncate 2009-08-20 10:12:34 +10:00
syscalls.c powerpc/mm: Add Strong Access Ordering support 2008-07-09 16:30:45 +10:00
sysfs.c powerpc: Fix bugs introduced by sysfs changes 2009-03-27 16:58:24 +11:00
systbl_chk.c [POWERPC] Fix a couple of copyright symbols 2008-01-25 22:52:50 +11:00
systbl_chk.sh [POWERPC] Fix a couple of copyright symbols 2008-01-25 22:52:50 +11:00
systbl.S [POWERPC] Align the sys_call_table 2007-10-11 14:36:47 +10:00
tau_6xx.c on_each_cpu(): kill unused 'retry' parameter 2008-06-26 11:24:38 +02:00
time.c powerpc: Use DIV_ROUND_CLOSEST in time init code 2009-08-20 10:29:26 +10:00
traps.c powerpc: Add PTRACE_SINGLEBLOCK support 2009-06-09 13:29:25 +10:00
udbg_16550.c powerpc/440: Fix warning early debug code 2009-06-26 16:55:35 +10:00
udbg.c powerpc/udbg: Fix lost byte during console handover; change LFCR to CRLF 2009-03-11 17:11:34 +11:00
vdso.c powerpc: Move 64bit VDSO to improve context switch performance 2009-08-20 10:12:24 +10:00
vecemu.c
vector.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
vio.c workqueue: add to_delayed_work() helper function 2009-04-02 19:04:50 -07:00
vmlinux.lds.S powerpc/vmlinux.lds: Move _edata down 2009-08-20 10:29:29 +10:00