From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755496AbcJLQau (ORCPT ); Wed, 12 Oct 2016 12:30:50 -0400 Received: from mga03.intel.com ([134.134.136.65]:16432 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753843AbcJLQao (ORCPT ); Wed, 12 Oct 2016 12:30:44 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,336,1473145200"; d="scan'208";a="18950269" Subject: Re: [PATCH v2 2/4] Add enabling of the R3 MWAIT during boot for KNL To: Thomas Gleixner , Grzegorz Andrejczuk References: <1476274585-21679-1-git-send-email-grzegorz.andrejczuk@intel.com> <1476274585-21679-3-git-send-email-grzegorz.andrejczuk@intel.com> Cc: mingo@redhat.com, hpa@zytor.com, x86@kernel.org, bp@suse.de, linux-kernel@vger.kernel.org, lukasz.daniluk@intel.com, james.h.cownie@intel.com From: Dave Hansen Message-ID: <57FE64CA.6080902@linux.intel.com> Date: Wed, 12 Oct 2016 09:28:58 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/12/2016 06:34 AM, Thomas Gleixner wrote: >> > + if (c->x86 == 6 && >> > + c->x86_model == INTEL_FAM6_XEON_PHI_KNL && >> > + phir3mwait) { >> > + u64 prev; >> > + >> > + rdmsrl(MSR_PHI_MISC_THD_FEATURE, prev); >> > + if ((prev & MSR_PHI_MISC_THD_FEATURE_R3MWAIT) == 0) >> > + wrmsrl(MSR_PHI_MISC_THD_FEATURE, >> > + prev | MSR_PHI_MISC_THD_FEATURE_R3MWAIT); > The codingstyle here is just convoluted crap. What's wrong with writing it > proper? > > if (c->x86_model == INTEL_FAM6_XEON_PHI_KNL && phir3mwait) { > u64 msr; > > rdmsrl(MSR_PHI_MISC_THD_FEATURE, msr); > msr |= MSR_PHI_MISC_THD_FEATURE_R3MWAIT; > wrmsrl(MSR_PHI_MISC_THD_FEATURE, msr); > > } > > No horrible to read line breaks, no redundant check for x->x86 == 6 because > model cannot be INTEL_FAM6_XEON_PHI_KNL if x->x86 != 6. Also the > conditional is pointless as the feature is default disabled. And even if it > is enabled the extra msr write is not a problem at all. This is early init > code and not some hot path. Hi Thomas, We really do need to check for family=6 (c->x86==6). INTEL_FAM6_XEON_PHI_KNL is just for the model and doesn't check family. It implies that you've already checked for family 6. Looking at the name, though, it's pretty clear that the naming can easily trip folks up. I do think we've probably screwed up the way we use our 'struct x86_cpu_id' mechanism. Maybe we should be providing the vendor/family/model sets from a common place to the drivers, instead of making them all repeat it individually. Like have a big header full of: DECLARE_CPU(INTEL_XEON_PHI_KNL, INTEL..., 6, MODEL_XYZ...); Once we have that, everybody can just do: if(cpu_is(c, INTEL_XEON_PHI_KNL)) ... and get all the checking they need.