Message ID | 1478077718-37424-5-git-send-email-xinhui.pan@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show
Return-Path: <xen-devel-bounces@lists.xen.org> Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 85BDF60722 for <patchwork-xen-devel@patchwork.kernel.org>; Wed, 2 Nov 2016 05:15:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 77DF029E07 for <patchwork-xen-devel@patchwork.kernel.org>; Wed, 2 Nov 2016 05:15:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6C87029E08; Wed, 2 Nov 2016 05:15:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.2 required=2.0 tests=BAYES_00, DATE_IN_FUTURE_03_06, RCVD_IN_DNSWL_MED autolearn=no version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 6B7BE29E07 for <patchwork-xen-devel@patchwork.kernel.org>; Wed, 2 Nov 2016 05:15:51 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from <xen-devel-bounces@lists.xen.org>) id 1c1ns1-00020d-Vg; Wed, 02 Nov 2016 05:13:53 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from <xinhui.pan@linux.vnet.ibm.com>) id 1c1ns0-000207-DQ for xen-devel@lists.xenproject.org; Wed, 02 Nov 2016 05:13:52 +0000 Received: from [85.158.137.68] by server-3.bemta-3.messagelabs.com id 4A/78-24885-F0679185; Wed, 02 Nov 2016 05:13:51 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA1WSbUhTcRTGd3Y3vTNX16l4XIUwEDGazESyLxU Z6ZfCPkQikd7pbS/sjXvn3D6pVCSa4rQ3Y5AiiKnVsFBTUzC0fAGXWlSzEIPAoWS0tCiz3V01 +vac8/uf5zxw/iShqJQqScZpZ1gLbVJFRElutHpAvceRmK+ZnSey1p80io9D7vPVOUkeFEgNF q3VWSTVu/tugW18l3OzI68C/siqIYpUUDOAbQPrUqG4IkbPlEdSDbJQsQzY0JUtgElAv/dapF B4Aa93BraKfsCqD00gjDwEfFCXIwA/4N2gP+wVQWnwra9bwoM4qkaMAW9XeIKgpgmcDmp4HUv l4r1HK5G8llDJ6OsZIqqBJJFKws/+cr4to87g4tc2Qlh2Gtt862EbpOLQvfElQtDJ+MrTtDV6 EOvcJqGdhe0Vr6WCPoS/WwNiXstDNku+TxKhb8ThZ/5wTKQ2AYOTLZH1gM0g6oAUjmEdDKvOT NOyBp3ebqYNJnW6JiPNzHAcrWNMtJZLK7aauyF0jnKRCPpg9vuJEUgkxap4ubo0MV+xW2stce lpTl/IlpoYbgT2kaQK5cizGJbRMc5LBlPoptsYyWhVnFzHYzlno82cQSegCVCTy/1LC2KFxGK 1MMoE+U976BHFP9KXWnYstn/GDOxXxspBJBIpom0MazbY/+cBSCBBFStf5V2iDRb7zqZAKIQ4 FOKwFvkQdvofUlZA8WJr8P3LzubxX2+4JfPTAcZc7q1/kSMrcr5zTSQNqdY6jVOVsFHl9A62F N456yr5SDjaR7NTzpfdLHStQW1vvE26wc4dOTZaNjhuzFloOLc3M3Ws5XLtyYKMYafj2xgZMz /alTz4Y+X+Uboh1ehvdPeeslx43ANXb2dcrMlTSTg9nX6AYDn6L2FU9xQUAwAA X-Env-Sender: xinhui.pan@linux.vnet.ibm.com X-Msg-Ref: server-11.tower-31.messagelabs.com!1478063629!37741543!1 X-Originating-IP: [148.163.156.1] X-SpamReason: No, hits=2.1 required=7.0 tests=DATE_IN_FUTURE_03_06, UNPARSEABLE_RELAY X-StarScan-Received: X-StarScan-Version: 9.0.13; banners=-,-,- X-VirusChecked: Checked Received: (qmail 40517 invoked from network); 2 Nov 2016 05:13:50 -0000 Received: from mx0a-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.156.1) by server-11.tower-31.messagelabs.com with AES256-SHA encrypted SMTP; 2 Nov 2016 05:13:50 -0000 Received: from pps.filterd (m0098396.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.17/8.16.0.17) with SMTP id uA25DTlv055971 for <xen-devel@lists.xenproject.org>; Wed, 2 Nov 2016 01:13:49 -0400 Received: from e23smtp01.au.ibm.com (e23smtp01.au.ibm.com [202.81.31.143]) by mx0a-001b2d01.pphosted.com with ESMTP id 26f8xujbhx-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for <xen-devel@lists.xenproject.org>; Wed, 02 Nov 2016 01:13:48 -0400 Received: from localhost by e23smtp01.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for <xen-devel@lists.xenproject.org> from <xinhui.pan@linux.vnet.ibm.com>; Wed, 2 Nov 2016 15:13:46 +1000 Received: from d23dlp01.au.ibm.com (202.81.31.203) by e23smtp01.au.ibm.com (202.81.31.207) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 2 Nov 2016 15:13:43 +1000 Received: from d23relay09.au.ibm.com (d23relay09.au.ibm.com [9.185.63.181]) by d23dlp01.au.ibm.com (Postfix) with ESMTP id 705862CE8054; Wed, 2 Nov 2016 16:13:43 +1100 (EST) Received: from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.235.138]) by d23relay09.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id uA25DhsN63635574; Wed, 2 Nov 2016 16:13:43 +1100 Received: from d23av02.au.ibm.com (localhost [127.0.0.1]) by d23av02.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id uA25DfXQ007709; Wed, 2 Nov 2016 16:13:43 +1100 Received: from ltcalpine2-lp13.aus.stglabs.ibm.com (ltcalpine2-lp13.aus.stglabs.ibm.com [9.40.195.196]) by d23av02.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id uA25CnXi006036; Wed, 2 Nov 2016 16:13:36 +1100 From: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> To: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, virtualization@lists.linux-foundation.org, linux-s390@vger.kernel.org, xen-devel-request@lists.xenproject.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, x86@kernel.org Date: Wed, 2 Nov 2016 05:08:31 -0400 X-Mailer: git-send-email 2.4.11 In-Reply-To: <1478077718-37424-1-git-send-email-xinhui.pan@linux.vnet.ibm.com> References: <1478077718-37424-1-git-send-email-xinhui.pan@linux.vnet.ibm.com> X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16110205-1617-0000-0000-00000172B640 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16110205-1618-0000-0000-0000470A96FE Message-Id: <1478077718-37424-5-git-send-email-xinhui.pan@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-11-02_02:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609300000 definitions=main-1611020096 Cc: kernellwp@gmail.com, jgross@suse.com, dave@stgolabs.net, David.Laight@ACULAB.COM, rkrcmar@redhat.com, peterz@infradead.org, benh@kernel.crashing.org, bsingharora@gmail.com, will.deacon@arm.com, Pan Xinhui <xinhui.pan@linux.vnet.ibm.com>, borntraeger@de.ibm.com, mingo@redhat.com, paulus@samba.org, mpe@ellerman.id.au, pbonzini@redhat.com, paulmck@linux.vnet.ibm.com, boqun.feng@gmail.com Subject: [Xen-devel] [PATCH v7 04/11] powerpc/spinlock: support vcpu preempted check X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion <xen-devel.lists.xen.org> List-Unsubscribe: <https://lists.xen.org/cgi-bin/mailman/options/xen-devel>, <mailto:xen-devel-request@lists.xen.org?subject=unsubscribe> List-Post: <mailto:xen-devel@lists.xen.org> List-Help: <mailto:xen-devel-request@lists.xen.org?subject=help> List-Subscribe: <https://lists.xen.org/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xen.org?subject=subscribe> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" <xen-devel-bounces@lists.xen.org> X-Virus-Scanned: ClamAV using ClamSMTP |
diff --git a/arch/powerpc/include/asm/spinlock.h b/arch/powerpc/include/asm/spinlock.h index fa37fe9..8c1b913 100644 --- a/arch/powerpc/include/asm/spinlock.h +++ b/arch/powerpc/include/asm/spinlock.h @@ -52,6 +52,14 @@ #define SYNC_IO #endif +#ifdef CONFIG_PPC_PSERIES +#define vcpu_is_preempted vcpu_is_preempted +static inline bool vcpu_is_preempted(int cpu) +{ + return !!(be32_to_cpu(lppaca_of(cpu).yield_count) & 1); +} +#endif + static __always_inline int arch_spin_value_unlocked(arch_spinlock_t lock) { return lock.slock == 0;
This is to fix some lock holder preemption issues. Some other locks implementation do a spin loop before acquiring the lock itself. Currently kernel has an interface of bool vcpu_is_preempted(int cpu). It takes the cpu as parameter and return true if the cpu is preempted. Then kernel can break the spin loops upon the retval of vcpu_is_preempted. As kernel has used this interface, So lets support it. Only pSeries need support it. And the fact is PowerNV is built into same kernel image with pSeries. So we need return false if we are runnig as PowerNV. The another fact is that lppaca->yiled_count keeps zero on PowerNV. So we can just skip the machine type check. Suggested-by: Boqun Feng <boqun.feng@gmail.com> Suggested-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> --- arch/powerpc/include/asm/spinlock.h | 8 ++++++++ 1 file changed, 8 insertions(+)