Re: [PATCH v5 0/6] Support calling functions on dedicated physical cpu

From: Juergen Gross
Date: Wed Apr 13 2016 - 04:49:16 EST


On 06/04/16 16:17, Juergen Gross wrote:
> Some hardware (e.g. Dell Studio laptops) require special functions to
> be called on physical cpu 0 in order to avoid occasional hangs. When
> running as dom0 under Xen this could be achieved only via special boot
> parameters (vcpu pinning) limiting the hypervisor in it's scheduling
> decisions.
>
> This patch series is adding a generic function to be able to temporarily
> pin a (virtual) cpu to a dedicated physical cpu for executing above
> mentioned functions on that specific cpu. The drivers (dcdbas and i8k)
> requiring this functionality are modified accordingly.
>
> Changes in V5:
> - patch 3: rename and reshuffle parameters of smp_call_on_cpu() as requested
> by Peter Zijlstra
> - patch 3: test target cpu to be online as requested by Peter Zijlstra
> - patch 4: less wordy messages as requested by David Vrabel
>
> Changes in V4:
> - move patches 5 and 6 further up in the series
> - patch 2 (was 5): WARN_ONCE in case platform doesn't support pinning
> as requested by Peter Zijlstra
> - patch 3 (was 2): change return value in case of illegal cpu as
> requested by Peter Zijlstra
> - patch 3 (was 2): make pinning of vcpu an option as suggested by
> Peter Zijlstra
> - patches 5 and 6 (were 3 and 4): add call to get_online_cpus()
>
> Changes in V3:
> - use get_cpu()/put_cpu() as suggested by David Vrabel
>
> Changes in V2:
> - instead of manipulating the allowed set of cpus use cpu specific
> workqueue as requested by Peter Zijlstra
> - add include/linux/hypervisor.h to hide architecture specific stuff
> from generic kernel code
>
> Juergen Gross (6):
> xen: sync xen header
> virt, sched: add generic vcpu pinning support
> smp: add function to execute a function synchronously on a cpu
> xen: add xen_pin_vcpu() to support calling functions on a dedicated
> pcpu
> dcdbas: make use of smp_call_on_cpu()
> hwmon: use smp_call_on_cpu() for dell-smm i8k
>
> MAINTAINERS | 1 +
> arch/x86/include/asm/hypervisor.h | 4 ++
> arch/x86/kernel/cpu/hypervisor.c | 11 +++++
> arch/x86/xen/enlighten.c | 40 +++++++++++++++
> drivers/firmware/dcdbas.c | 51 +++++++++----------
> drivers/hwmon/dell-smm-hwmon.c | 35 +++++++------
> include/linux/hypervisor.h | 17 +++++++
> include/linux/smp.h | 3 ++
> include/xen/interface/sched.h | 100 +++++++++++++++++++++++++++++++-------
> kernel/smp.c | 51 +++++++++++++++++++
> kernel/up.c | 18 +++++++
> 11 files changed, 273 insertions(+), 58 deletions(-)
> create mode 100644 include/linux/hypervisor.h
>

So patches 1, 3 and 4 are acked. Any comments regarding patches 2, 5
and 6?


Juergen