From patchwork Fri Aug 25 04:30:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 805737 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="KovnkTIE"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xdpBc4mpqz9t62 for ; Fri, 25 Aug 2017 14:31:04 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751860AbdHYEbD (ORCPT ); Fri, 25 Aug 2017 00:31:03 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:35485 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751829AbdHYEbD (ORCPT ); Fri, 25 Aug 2017 00:31:03 -0400 Received: by mail-pg0-f65.google.com with SMTP id r133so2195954pgr.2 for ; Thu, 24 Aug 2017 21:31:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=D8dTNKZAmLLFF3+dPoooVG21nkSR9wjHGpts7l0HGTw=; b=KovnkTIE9W6ssWnWT2KxIg1r00HwAnpsyMh+S3zGrwF7cAaMBA+EHiCBFvdTNSPmLN W8hUDwAbbwafSy5dxU/Y6ZDs0hu6ZRdrv7wvi6pOmUISBEbgOu/+4YSzGAPlJlrb0xnF 0YTjoKSEXyvofavYM2jlDygMsbWFJEESS4KR1IVRI3Gav1fpVGhQbEkoE3IqnBPzAqgi hwWqRLTS0hckYFEBpX7DU6b9ZCo/AJBLo67KiZEH3KLeOvmtaYswbLGXhGd/M74HKDdl D1Yklyq6sdU8wqI9skeXrPPXL6LRlZIyMhgq4cZtDDDpJx4g8+yJJTXEj8pSaPm4kATP aHiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=D8dTNKZAmLLFF3+dPoooVG21nkSR9wjHGpts7l0HGTw=; b=s2omznXPVpvHTJ+TkJdsdc+Ktjnu1BNqe11Nb/a9e131MBgfVg1XjAa8hva9vStJNL 2e5/isW//lqT59tUCsebh+03PBLKUAAOafQwDT6YNKkT2/qkE9GDTgOX6cGt+suSoO5H 7hm4q43w/woBJoExnChOVBiVdgqVxieHH0q/FFH3E0Y65e9gYar/K9Bz2Wy+PoaA8J6T Z+/DcLA1BgGsgdV5CDRAaPmo3vsOL6/4khPJm2tuke2Y2jSb/l0Prt28eksL3FlBnr0j B1R+ogK2esEbrilmk6p4nqF1k4bbV/wZ3DOnplxZxijt64goVTpGOczYqzQwl7fnu9Zk w/xw== X-Gm-Message-State: AHYfb5irx3taEw1xjQLIMg5THzGWpbSd5GGB2Qd9ol9WAOCd7CkI+PRd 0huRlJVpsxdYHevp X-Received: by 10.99.149.6 with SMTP id p6mr8407649pgd.412.1503635462755; Thu, 24 Aug 2017 21:31:02 -0700 (PDT) Received: from roar.au.ibm.com (203-219-56-202.tpgi.com.au. [203.219.56.202]) by smtp.gmail.com with ESMTPSA id u195sm9010365pgb.82.2017.08.24.21.30.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Aug 2017 21:31:01 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Cc: Nicholas Piggin , kvm-ppc@vger.kernel.org, Paul Mackerras Subject: [PATCH v3 3/4] powerpc/64s: idle POWER9 can execute stop in virtual mode Date: Fri, 25 Aug 2017 14:30:35 +1000 Message-Id: <20170825043036.18236-4-npiggin@gmail.com> X-Mailer: git-send-email 2.13.3 In-Reply-To: <20170825043036.18236-1-npiggin@gmail.com> References: <20170825043036.18236-1-npiggin@gmail.com> Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org The hardware can execute stop in any context, and KVM does not require real mode because siblings do not share MMU state. This saves a switch to real-mode when going idle. Acked-by: Gautham R. Shenoy Signed-off-by: Nicholas Piggin Reviewed-by: Paul Mackerras --- arch/powerpc/kernel/idle_book3s.S | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/powerpc/kernel/idle_book3s.S b/arch/powerpc/kernel/idle_book3s.S index 14e97f442167..32d65ee323a0 100644 --- a/arch/powerpc/kernel/idle_book3s.S +++ b/arch/powerpc/kernel/idle_book3s.S @@ -195,7 +195,16 @@ pnv_powersave_common: std r5,_CCR(r1) std r1,PACAR1(r13) +BEGIN_FTR_SECTION + /* + * POWER9 does not require real mode to stop, and presently does not + * set hwthread_state for KVM (threads don't share MMU context), so + * we can remain in virtual mode for this. + */ + bctr +END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300) /* + * POWER8 * Go to real mode to do the nap, as required by the architecture. * Also, we need to be in real mode before setting hwthread_state, * because as soon as we do that, another thread can switch