Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755007AbcDEFK0 (ORCPT ); Tue, 5 Apr 2016 01:10:26 -0400 Received: from mx2.suse.de ([195.135.220.15]:35159 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753425AbcDEFKX (ORCPT ); Tue, 5 Apr 2016 01:10:23 -0400 From: Juergen Gross To: linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org Cc: boris.ostrovsky@oracle.com, david.vrabel@citrix.com, mingo@redhat.com, peterz@infradead.org, Douglas_Warzecha@dell.com, pali.rohar@gmail.com, jdelvare@suse.com, linux@roeck-us.net, tglx@linutronix.de, hpa@zytor.com, jeremy@goop.org, chrisw@sous-sol.org, akataria@vmware.com, rusty@rustcorp.com.au, virtualization@lists.linux-foundation.org, x86@kernel.org, Juergen Gross Subject: [PATCH v4 0/6] Support calling functions on dedicated physical cpu Date: Tue, 5 Apr 2016 07:10:01 +0200 Message-Id: <1459833007-11618-1-git-send-email-jgross@suse.com> X-Mailer: git-send-email 2.6.2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2286 Lines: 56 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 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 | 2 + include/xen/interface/sched.h | 100 +++++++++++++++++++++++++++++++------- kernel/smp.c | 51 +++++++++++++++++++ kernel/up.c | 18 +++++++ 11 files changed, 272 insertions(+), 58 deletions(-) create mode 100644 include/linux/hypervisor.h -- 2.6.2