From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750847AbbFLEPL (ORCPT ); Fri, 12 Jun 2015 00:15:11 -0400 Received: from mail-bn1bn0102.outbound.protection.outlook.com ([157.56.110.102]:21856 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750757AbbFLEPI (ORCPT ); Fri, 12 Jun 2015 00:15:08 -0400 Authentication-Results: spf=none (sender IP is 165.204.84.222) smtp.mailfrom=amd.com; amacapital.net; dkim=none (message not signed) header.d=none; X-WSS-ID: 0NPTD50-08-O91-02 X-M-MSG: Date: Fri, 12 Jun 2015 12:03:22 +0800 From: Huang Rui To: Andy Lutomirski CC: Borislav Petkov , Thomas Gleixner , "Peter Zijlstra" , "Rafael J. Wysocki" , Len Brown , John Stultz , =?iso-8859-1?Q?Fr=E9d=E9ric?= Weisbecker , "linux-kernel@vger.kernel.org" , X86 ML , Fengguang Wu , Aaron Lu , Suravee Suthikulanit , Tony Li , Ken Xue Subject: Re: [PATCH v3 2/2] x86, mwaitt: introduce mwaix delay with a configurable timer Message-ID: <20150612040322.GB21621@hr-slim.amd.com> References: <1434032051-1953-1-git-send-email-ray.huang@amd.com> <1434032051-1953-3-git-send-email-ray.huang@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD015;1:ytbuhxVkvg3cSfNR6W/BgN1V8cfSWUNHN7aJXP0sbNg3o/QYsYJlfTNBcFDaI9YxLmubf+I8ERW8Oq7/MoZHjfgXH14m///THMhSCpczROq3tRFR055r2pQPpufmZZ0FUW99rzFjiV/7UfhGKVreu5RE0Ib+5Qnwnqstz6BqqIvov7GwjNSDXS1A2vVsMhY+1UE1qt9F2I1CPqQt7W8p8u4xd4GmXS4ghsfMCglQ5GC9iWXxSMkg8QgKgJMsdYj5xIR3VI9W/GWE8Ss2MtNUcKA7OV4Z33DKktw20HPtaNyfHPr3T1pAU9v+QoohPXQ2 X-Forefront-Antispam-Report: CIP:165.204.84.222;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(428002)(24454002)(51704005)(199003)(189002)(377454003)(164054003)(19580405001)(110136002)(4001350100001)(189998001)(83506001)(19580395003)(87936001)(46102003)(50466002)(5003600100002)(50986999)(77156002)(86362001)(62966003)(46406003)(2950100001)(76176999)(54356999)(77096005)(53416004)(106466001)(92566002)(33656002)(23726002)(101416001)(97756001)(105586002);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR02MB066;H:atltwp02.amd.com;FPR:;SPF:None;MLV:sfv;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BLUPR02MB066;2:aK2sRVdJ+gR1RoTFXVbchYZ5A/KWwWiDxhPozxGk5TDHxeqkI9sspXvzTdA5aVDj;2:WyD3eTcU2H48mSGfmR/L00fT2PSrsx46Jft4N3Ft+fEiDH1HVZj8GBSPRiUQjEzaiGqIUS/gPaKNNdeA+UYxX+IVUIb2jDIKrBxxDer0O5Na0R/rdMOK+qDwceqQCfdBB8bCvYPzJiUXxY6uJUQGGPn/NaFRJ/xUbE1QL64xVqMpEsQQ0UERE4EwepH/soBY3GkMchRj8Id1/sxjI9b/LX1A5l4BN0fLAck2myYIhmhcoxxuf6jAdR/tsgRkWizC;6:1W4YcLrjedOgtspkaHdYUMCpuFeKLoF/wpSb1p+CfWk/ecudTzgWsgBIfTRQOX9m6w9GpjaAnyK/9NSGqpbiLkBJAZxySy1yZMEBi8gy5KuUZdc7v+Hm/ZPLb0QC7ZonMxQxZ+3hOjwC/as7zXevt1c1vPcNzq4Yu4VxvZ8jtrEsSkFNXdZle8QXVPC8W1yhSup+unDyNhIgckFtlbxXBa8i60OgMKXoWIqlixA0KlMtFfb2BldacHNzN0f8TJfs0B7sMGfO1s4Jcu76FsS5tbwwG4oluOQmuVn7X2bGutq/wIXi9R3VUBXFUKDIswqaIx8PzPL3QCFACiGcbp4oueniIAVTyazLFCdvrN6pdsRyakQBcJZir0y4B1GEw1cq7wGbUNTFefpraQXUgq+itCt0lJOtALsEm4Z1fZTUruGari3kgXqZcgWYEb0/0e8L1x50xcU6seU8T5UEvTGDMdS9XHdS+2SV1uBixecjjVIEZ+FIlyakjjPM+eYjrQXO X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR02MB066;UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR02MB193; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(520003)(3002001);SRVR:BLUPR02MB066;BCL:0;PCL:0;RULEID:;SRVR:BLUPR02MB066; X-Microsoft-Exchange-Diagnostics: 1;BLUPR02MB066;3:4AItmJxrteZY6we3UTI67H4v2E1iQo0B9H4PHDj3lxmCwLOlK63m5xuYurwkYZukNsnJ4RlCik9PJY1fEVlhOlqqiV52+2olYdH1YQFxTRYlOBr0DT/txNQDAM2I18g6AYMjnezqxldrodwhzTzo8bUWgcfahrwyPUFqhfbywk83pUXWW9nvx/HN4uzzdiwl5glX6Ic2rTUp558jBgNJFq7YRfrbKTHhp7h6v9H3BFsTakUx69NQ3LzRQBx8UchKYjLjjDuiRbPISTDHC7ofW8HX2oiQqZ59wYYwNEVyiWLbCI+fN8RAIAKSVD83JlDK X-Forefront-PRVS: 060503E79B X-Microsoft-Exchange-Diagnostics: 1;BLUPR02MB066;9:efvWCXDPfHXLp9GpsDH1F0wjhoMxeS9hgBctPHNqZXjRMW3BcXeAuOsfACVgYQLm9z/Ru+DfvVPXP2Efe1hE3wmZIpTxWWQ5FqaJQsRsE4Wz95s7aEaTQhvj1oqeybM0f7yjUAmIWbHxenYimlLGkM8oXDmNekTa7Sd3pFhyV1E55u0nudbQawf9Oc8JS1WOv1rVdONBcaPrJi9NxyaCO1ud5B7mfU5r5jBRD/qT9qh0EwC9t20hLFrItbGYtkCklbQ7FeDgeyiRGjo/TrdIdaguFbVzpxfj9luiH4cw2ysiVx4RqIromQK7vnsyEe2aJ4384vPFMRKxW4ECJmkRKBGepll67Hwvi6O7KI24tWjkJGpzhJrvaDVeLekdwN2J+o387kJzeh7Y+bu7sb516llZrAxuBms/1HEJRPz0XC/FNEJneZECmqVayKs3+ng0u/DlxZRSSj07DSLbO2nZSEH9mPwABLBcNtdzzoMPcEmrjBa5l4UHpcVWWEs/PjkDc4MEQOJmoPXnJq/inFB95LVwMMy5va0f4PT9Gdw92QXatMdkyhDknWMhRv6AJcML7P57Ns1ObxBpPUmPfKUb3nyHmLLHMlQN8w60aqG5pKG24waOMaSu2yhEsw40EjKiZw73Frat+CvV/WY/dDiYytAlF8OfORceMUr+d5vFc7o2vlR5TjIxZQmqi4IMRv2YdxLgJ+ZkdGN/DYUrULZH6YgsKPSpaNFvWW8ZrBHzJJaFOfAS50JPiR35Vd4UHA4acp6B0xH2RlEqHPfzzl4K3+lvoTnQR93YfMVOoUGRBnHK+0QC5efZDP6o6clzBwZ7S7xfJwHiZ1jnIiJGaZ9IMKxYcvzCojwGwRSfzLy0nEefU9f9zrNQYxF/eATXl8AJbvp7TGSMiwLrlMq8ke9MXh4no3kDKS/ZyFQ31vYcCmo= X-Microsoft-Exchange-Diagnostics: 1;BLUPR02MB066;3:wlqI6IeWi9GCbyxLVxopDoShuOUgCzV2qUJr0Kb7kvKkFyLpX62Qcg2x8nl4LfVXlXoKw3mLyDApyAJECHCQM5up3p3RRBGvlwdd8Eum0Dnj1Gwi7Aq1Vg1+eNEbkZ2sKK9tiBM36IZG7JmeRO1cug==;10:mDFFr5T8wVYVo3c9di/hHRo20U1wq5wYAysiyR9JQsmqzvr4o9hQjJW62p0V1eoX7wedQiflxW2rLn2BE/jExCBeZ9qXabC2YFkAfFjL9Xs=;6:Z7Z1qYxte3av2Yl7sra+HPm+DpbkxlU6Yy6XYQ27J7rZ3vP4Ztn9n2sHZJTvytJ7 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2015 04:15:03.8155 (UTC) X-MS-Exchange-CrossTenant-Id: fde4dada-be84-483f-92cc-e026cbee8e96 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fde4dada-be84-483f-92cc-e026cbee8e96;Ip=[165.204.84.222];Helo=[atltwp02.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR02MB066 X-OriginatorOrg: amd.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 11, 2015 at 10:34:15AM -0700, Andy Lutomirski wrote: > On Thu, Jun 11, 2015 at 7:14 AM, Huang Rui wrote: > > MWAITX can enable a timer and a corresponding timer value specified in SW > > P0 clocks. The SW P0 frequency is the same with TSC. The timer provides an > > upper bound on how long the instruction waits before exiting. > > > > The implementation of delay function in kernel can lerverage the timer of > > MWAITX. This patch provides a new method (delay_mwaitx) to measure delay > > time. > > > > Suggested-by: Andy Lutomirski > > Suggested-by: Borislav Petkov > > Suggested-by: Peter Zijlstra > > Signed-off-by: Huang Rui > > --- > > arch/x86/include/asm/mwait.h | 11 +++++++++++ > > arch/x86/lib/delay.c | 41 ++++++++++++++++++++++++++++++++++++++++- > > 2 files changed, 51 insertions(+), 1 deletion(-) > > > > diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h > > index ece8048..9b41580 100644 > > --- a/arch/x86/include/asm/mwait.h > > +++ b/arch/x86/include/asm/mwait.h > > @@ -14,6 +14,8 @@ > > #define CPUID5_ECX_INTERRUPT_BREAK 0x2 > > > > #define MWAIT_ECX_INTERRUPT_BREAK 0x1 > > +#define MWAITX_ECX_TIMER_ENABLE BIT(1) > > +#define MWAITX_MAX_LOOPS ((u32)-1) > > > > static inline void __monitor(const void *eax, unsigned long ecx, > > unsigned long edx) > > @@ -80,4 +82,13 @@ static inline void mwait_idle_with_hints(unsigned long eax, unsigned long ecx) > > current_clr_polling(); > > } > > > > +static inline void mwaitx(unsigned long eax, unsigned long loops, > > + bool enable) > > +{ > > + if (enable) > > + __mwaitx(eax, loops, MWAITX_ECX_TIMER_ENABLE); > > + else > > + __mwaitx(eax, 0, 0); > > +} > > What's the purpose of the "enable" parameter? > Enable mwaitx timer. Should I add comments to explain the usage? Thanks, Rui