Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S940993AbcLVOXv (ORCPT ); Thu, 22 Dec 2016 09:23:51 -0500 Received: from Galois.linutronix.de ([146.0.238.70]:33328 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759957AbcLVOXu (ORCPT ); Thu, 22 Dec 2016 09:23:50 -0500 Date: Thu, 22 Dec 2016 15:20:54 +0100 (CET) From: Thomas Gleixner To: "Andrejczuk, Grzegorz" cc: "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "linux-kernel@vger.kernel.org" , "Luc, Piotr" , "dave.hansen@linux.intel.com" Subject: RE: [Patch v11 4/5] x86/cpufeature: enable RING3MWAIT for Knights Landing In-Reply-To: Message-ID: References: <1482241726-27310-5-git-send-email-grzegorz.andrejczuk@intel.com> <1482258687-4582-1-git-send-email-grzegorz.andrejczuk@intel.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1424 Lines: 37 On Thu, 22 Dec 2016, Andrejczuk, Grzegorz wrote: > >It also warns on the 64bit build. > > It is, I missed it. I changed the type of elf_hwcap2 to long unsigned int. Changing types to match is the proper solution to all problems? You cannot just change types to make the compiler happy. You have to check what type is expected for it in the places which consume it, including compat mode. > >> I used set_bit because I wanted to be sure that this operation to be > >> done atomically. There might be data race when multiple values of > >> ELF_HWCAP2 will be set by multiple threads. > > > > Touching ELF_HWCAP2 from anything else than the boot cpu is pointless > > anyway. This should be done once. > > MSR (0x140) is thread specific it has to be set for all physical > threads. Also the kernel parameters are handled after boot cpu is > initialized and this make disabling harder. What has the MSR to do with ELF_HWCAP2? ELF_HWCAP2 is a system global variable. The MSR is of course per hardware thread. > > Aside of that CPU bringup and therefor the call to init_intel() is > > serialized by the cpu hotplug code and if we lift that, then ELF_HWCAP2 > > will be the least of our worries. CPU bringup is serialized, i.e. init_intel() cannot run concurrently on different CPUs. If we would remove that serialization then we would have more serious problems than the concurrent access to ELF_HWCAP2. Thanks, tglx