From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752096AbcHLSdV (ORCPT ); Fri, 12 Aug 2016 14:33:21 -0400 Received: from mail-dm3nam03on0129.outbound.protection.outlook.com ([104.47.41.129]:19041 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751570AbcHLSdS (ORCPT ); Fri, 12 Aug 2016 14:33:18 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=waiman.long@hpe.com; Message-ID: <57AE1606.2010304@hpe.com> Date: Fri, 12 Aug 2016 14:31:34 -0400 From: Waiman Long User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130109 Thunderbird/10.0.12 MIME-Version: 1.0 To: Dave Hansen CC: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , , , Jiang Liu , Borislav Petkov , Andy Lutomirski , Prarit Bhargava , Scott J Norton , Douglas Hatch , Randy Wright , John Stultz Subject: Re: [RESEND PATCH v4] x86/hpet: Reduce HPET counter read contention References: <1470853770-37625-1-git-send-email-Waiman.Long@hpe.com> <57ACD2DE.6080306@intel.com> <57AD0898.7030506@hpe.com> <57AD18D1.1050107@intel.com> <57AE00EE.8070904@hpe.com> <57AE0469.10503@intel.com> In-Reply-To: <57AE0469.10503@intel.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [72.71.243.96] X-ClientProxiedBy: BY2PR11CA0009.namprd11.prod.outlook.com (10.163.150.19) To TU4PR84MB0317.NAMPRD84.PROD.OUTLOOK.COM (10.162.186.27) X-MS-Office365-Filtering-Correlation-Id: 3ec9657d-1a2e-41d2-a7a8-08d3c2deeaef X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0317;2:c6zo+kCdJSg24e4EgLLWMUUFVrkTNNZb2TjYP3FnTiTeVifOTh1UhKVUzTkAf4FLVthPTRpkghf52zCKxAsAmNPb/pRsR36M7v/D4Y4fajsT/jM7bRVA1vWVbAQes1ue8eYQ/f5WOjEPnZ2j9Y9fdrqCi6p0Pj3AWaGhYYYCz7/Y4Ahs7N9S8r1V2S4Sg9Ds;3:ZG9d0PTw2DCY/h2fzKanikzZhyl/eZYeoeAH8TeldHk+8lfn/kV4vpDno3lOatsE8Nk0fiINKsDpT/gzwo72ZQE0lZiRw/01h0j8Hy+IMc+LNW4AAzH7Z0KcUKMpt8tu X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:TU4PR84MB0317; X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0317;25:hYhtHeDUpxQ1KIyiNElv/8iP95kVpdvJ/veEJTJFz1Doy7GcMi1HBEYYdTlaz7Otg+n9QXSetLqjNV9S05I8f69jdyzLt5pzMv7XmX6KFXsJ+Iwj+UKG4J1dT2bmvskL1OtJtlf63gPgTJAsYVOKBDCbl9CL4YGTCa35Pghf8nVTuZJ149YPfGyCoCHf0x624aJhVtfWD6muZS/a5JCnjNU+U/Tu7FOqyppA8Z++1WmNcRZjQJAuSuVv0y3b/G3CENWvujOnRfROSXmZSZVw3/JYVQIhz/KPRBQC6AHOOfQlBIrX8CHfPsrPyd2hcTEwoTHoo5CT1RygB2wGxSytmiFS/im+3npAzAtWKV5DJqtpNt777m+nTeNp58dch4ArwaYvivNrZuqhxqf29auBuJWBMvOhykWVhmb4ur9RF/iJXKz2tXOXmSjopO3Ss0FElw5J515vVuLRWhPPblYtDzEvNkJxl6o/85Hob83rI3dWqy24ZaL3acKcjtpIm2hKH3uuXi1A3xgvXrHnBOLRMwcxHhyZCA9WXn9lJfTEcdRDCePWiubEN2THGSVFkkCqJfaEUcdh4Z8vU4ZD8ncyQOmMx8tZBxcgsdvwFIqCnIK3pU37GaENzjHnXdu2GXEMCfrb0Q30IAAJPYKL/kTQCqaoGj4dRviEA8jIroRYI/+1u6WdYyiVsfLy/Qozn7nWkAIVngCfzdqCGjS+MIuePIlKzdMU08Z92794ExZ6qHM= X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0317;31:KMjyIGgXmToVmAKhJqUvL86rIaHECnn+fBox8OIdZJg7Ck6rrAIcLaLM5VtEmGIQsbH1DoeY0J6VE+FhEPY4VpTmf8mg76m9UU1EfFkC/R4DrnSfjRExAqnsBoo2Afg8Ob19S0HxOg+mhqmfGwrGN/vzNc5gFkSGwzzvgAaAlgY85rbEolvSQHTf+9IGt0aBTltyc2DC7HzGZxrXMNqPZKSBcCMhyYOhOpoPsi08kqU=;20:LW1l4R+kvxXFwXiwEtC+zJlpVYuJ/jgEP3nVks3rKB9NEIwIxCgOii8xZh2frWnM8luBbziv88freJs2q5o+5MEjIWfjISrhuPVXWuLHuye7ANLE/Qxg9HsdFqrwW0QpY27F5DWVHBF3Kt9tUkQTfZJHPO9T/NZRZ4ki56/ax2mRZtWXNywIYy12DD/2M0Tl5erGaFAHG4GpOF9+yI9TImDMfq1g3g9vGwdTFIYjd/sDPOxXI6YC9tNqojgvh3laG/ZIdwkAwZK3dVZhiRJuELvoBCf+QhP+bEfGKzbdXNWp0gM8WLVYPxXybF7qtaA8XkyJbidpS8t+n0ce91msUzVE13kQCNDPhVgGkZFW2zArm105DqRdDqhBDWI/OrX6wgyTTXw2+OcPM+N4Soy2N17akXF1W6lMo2zskGecruWZcFlo7RZiagtUU2nrXOCnjExA1z1caHiTP+KYQ5qMuxouhA7iK5zToMbFGwWb7MhKLpFm0k8q1q0kKvhEpb3K X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026);SRVR:TU4PR84MB0317;BCL:0;PCL:0;RULEID:;SRVR:TU4PR84MB0317; X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0317;4:sBD+OOZKXaTfhPtVinXbGqpeTveTZ2SOESVJQhvQWTkuq8rEu6LWLpzidLFf57ntyGysWhWtwf9K47hiRN1Ba9SIQp4dnOWWW0kFxI/316SbgbgwJ6SAMUsNpNMPT+Jgpn3AWHAvIz3obko8wO+mEOO0J7zDhqfqBw3ULJLNPpz7lGQOmoVIhj+Mjs+EbpWH1pbUL1tWcKDOyJUU2V4HSTcMFjl2zVEnVp4/SoSv6DufPFXSPwM8Pk5XowDBy53t9zJEI4ILF+QbcelJpNbGrxxVzq5NYsdEbQBlPlJvLQ0ErJhaaj0SL7bBp42PlbR+FR4B9dZFsiaKn0VdvoqDMn/Km6BtJrdJwVsEpsIXVkwWUZHt0kWzGiVB/uKZEZiCvqLaohe6JesShfmUQB3sgg== X-Forefront-PRVS: 003245E729 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(189002)(57704003)(377454003)(51444003)(24454002)(199003)(51914003)(586003)(4001350100001)(76176999)(50986999)(54356999)(87266999)(64126003)(65816999)(97736004)(80316001)(106356001)(7846002)(50466002)(83506001)(86362001)(23746002)(68736007)(305945005)(105586002)(101416001)(7736002)(65956001)(66066001)(2950100001)(65806001)(117156001)(47776003)(230700001)(3846002)(2906002)(6116002)(81156014)(8676002)(81166006)(4326007)(93886004)(36756003)(110136002)(7416002)(77096005)(92566002)(33656002)(42186005)(189998001)(59896002)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:TU4PR84MB0317;H:[192.168.142.185];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;TU4PR84MB0317;23:L5WfWmFJOV9SUYVpY06+RTlMl2TW+4NQjFdjO?= =?Windows-1252?Q?fUTMQY2q8VN6m6z9Zy2D3moNjdXVKv5808xTfxv4fvmtdL1vj/VDBC+E?= =?Windows-1252?Q?nJ/UZ5V+f4dabY3GFuKJJoe+VvAb7NM7Pzidmtq9Ds9TYSEKKhsbAPre?= =?Windows-1252?Q?+Vim/6Nlzpql0mN03nG5AecdG66fNNpqy3J+zjaz2wKgoQ+XuHIHfLV9?= =?Windows-1252?Q?pcG3v9ffG/UIv4ePmtA8oExV5xQw9Ls30WpXGGsH7bS+QcAehHii2RJJ?= =?Windows-1252?Q?z22sSGF2HwKuq1fBhqC399+jHAX3rRCCL71yMrvxjmZhirVjXVJ+WwtM?= =?Windows-1252?Q?WhHBbpZje9kCLr8CuXSY5LZkx3HTiQQpeZPZn4522/VMxCZFL4uzkwFw?= =?Windows-1252?Q?ezAQhCdQ3KkNzGWj2tvjT1klU1HDzk/T2+4G49+ZRSEcwK2yvxLwyq0C?= =?Windows-1252?Q?8f8nFmKMSM0Bszpgj3QPJQTFZ1vh8WfK3RE7MZmXNFg62QYHuIj/Fjgq?= =?Windows-1252?Q?4xF9Xv0zumMEV0iBHgfVzlJCwt+oVgKpJ2WGrTqJ5hhPvcEn/ZFOk4hq?= =?Windows-1252?Q?VXbYsIdwakZcgcwmv0uwZyaM+qUykEdHo9899j6H+GFdp1VbYcb45Ldg?= =?Windows-1252?Q?VpLOVrELXzZr+/Qc7wP31KwgU7l9AUDzZDpS8nVEx0Fqe1CHmvu5byVI?= =?Windows-1252?Q?XSchLo1pvZ4n/hqT/d5zhrjNczm1us4WyIRkYfH1hvwCu4/QmaJ/zLMQ?= =?Windows-1252?Q?tk7RVoBxQKidv35047dn/hVWl24fkJho84oE3ZMitVKgsVb9ZOMl+UY4?= =?Windows-1252?Q?ChpNuXuYdBvO4C4Ta+AQGsT0Rgusk/XV8Tu4ud/pRgiNHs84/GYznqRe?= =?Windows-1252?Q?VP1Z6OGeVpTEfB4F6+EBBRSeBCjAXfBHyzpNBi71eOAKdLGVkr2j8hp5?= =?Windows-1252?Q?QcYJ7e108ZPixM0I0D3gKLwyNuuHQOD2GCYcY8e2vIX8hAmA3SbDEfle?= =?Windows-1252?Q?fV+SH95/KOzrRm735KzFhFpv6HKOydDWvvruGimQ3eNzWcm57Oh+QSy1?= =?Windows-1252?Q?DU5/g0dLDa8qLGPVo2KHX02Asm4eHN3fKoHraP2Wo/gyz6wkCMqfqWFB?= =?Windows-1252?Q?i/tLxLrRFf/2tOWdWGkv0tHs9ypKHcW0fZCnM2tKeelyJ+CiyGZ86sQ1?= =?Windows-1252?Q?YVoY6eHZViYDahwG0C48eJnwDOUfpqTVpJi2o6q+XF1f3uQ/zYxAkoks?= =?Windows-1252?Q?z6yv16KaFhPtlljUNwmeNdHf8yyEity1oJ4TnKdjx2zMeOY9w4Bjt0nb?= =?Windows-1252?Q?t3VpjY5cuZc1arA/uTMijRA60W1HnV5llj2GIASmm3BuEZLG//x0MrJk?= =?Windows-1252?Q?Wefr7Hk52zsyeEXkCVNDtJkHUNUW2xALbgG1R+GLK82J4Xcpz4mhIFQS?= =?Windows-1252?Q?yeag1+uMlJhLxyBmaPJYbplqeqQLS67twElmHYbLTyEbgT0aedSPj6bH?= =?Windows-1252?Q?Gy6b2Q=3D?= X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0317;6:eEvSx/JcNlJkc9iS6uGvXzBEpHULofKNyUBI1kbdoecHe+CeifJFgD/QQCY3qsuo1SobVpf9j4OuTzACiJn6s5UpeyJVKXti2TbH2EeB+58Q6spo7CJI+olR6B1ltoRTMD2lFnMLs6Jz/TRi0hqHwesJpIK+rrpR8P4HJvctOhquga5Fr7g9hXFRJnTFOEQxBeTi8jfj6T2YrHS2MLclnFRl75qqQaNXG69wLtFDYZANDBt/w9JK5TlZRwlRBOtMCMqA1bBhryLzvIEiAqicByy+6tOTLBWPOwZ5USwY98QeqgBMukytKYsvmsRmkWCgsUEWa+3+D1WeW8GYhO6X0A==;5:TymiY8TNzudF4565+aWMiDResBrQkMaPyS9wDX+JjLQ9WtOTXoWSllcgYDvLP2MaRoO0aQ3wU8EdBWkUcpiBx0/btC+zGDyZikupDwYYPLKWcoEz0lAMuVHWqLepWko0e6UA+zvNop5jcu30vd5fiw==;24:L4/IHL9Ah7BSCQgWeHUF2j/qLBJTKYbqU+iq3S9R1j7ERqs+2V3iD5B43r4BUoua0GNY7YW4+ST5MmnQUje2gPJK/v17YPtdbo4ZVykyPzQ=;7:DLgWIsHy9ZCF8OGVRxW7iu4cP1bOq+Mg0omDd/Qa1lYjDWg5lox/WwhdpjpUr7kX8rJoOkNpA7p7thRIojCnFijIy7SSWtraB35PzntB+XicwE6X2/zA3fFPC6pwjcL4qX4armuF5sKChniYeZfGYQy6rBoGEQenbQGrE44UP0owgmj8UiBYJ9DC4ymEa5iQbn1/11qJ+nRU17UyAydMMRzRGoPxdDFxGRwl4eXkpDkvU4LsMMkj8yDGWWOIoRYi SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Aug 2016 18:31:42.2893 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: TU4PR84MB0317 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/12/2016 01:16 PM, Dave Hansen wrote: > On 08/12/2016 10:01 AM, Waiman Long wrote: >> The reason for using a special lock is that I want both sequence number >> update and locking to be done together atomically. They can be made >> separate as is in the seqlock. However, that will make the code more >> complex to make sure that all the threads see a consistent set of lock >> state and sequence number. > Why do we need a sequence number? The "cached" HPET itself could be used. > > I'm thinking something like below could use a spinlock instead of the > doing a custom cmpxchg sequence. The spin_is_locked() should allow the > contended "readers" to avoid using atomics. > > spinlock_t hpet_lock; > u32 hpet_value; > ... > { > u32 old_hpet = READ_ONCE(hpet_value); > u32 new_hpet; > > // need to ensure that the spin_is_locked() is ordered after > // the READ_ONCE(). > smp_rmb(); > // spin_is_locked() doesn't do atomics > if (!spin_is_locked(&hpet_lock)&& spin_trylock(&hpet_lock)) { > WRITE_ONCE(hpet_value, real_read_hpet()); > spin_unlock(&hpet_lock); > return hpet_value; > } > // Contended case. We spin here waiting for the guy who holds > // the lock to write a new value to 'hpet_value'. > // > // We know that our old_hpet is older than our check for the > // spinlock being locked. So, someone must either have already > // updated it or be updating it. > do { > cpu_relax(); > // We do not do a rmb() here. We don't need a guarantee > // that this read is up-to-date, just that it will > // _eventually_ see an up-to-date value. > new_hpet = READ_ONCE(hpet_value); > } while (old_hpet == new_hpet); > return new_hpet; > } Yes, I think that work too. I will update my patch accordingly. Thanks for the input. Cheers, Longman