From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933215AbcJQSTV (ORCPT ); Mon, 17 Oct 2016 14:19:21 -0400 Received: from mga06.intel.com ([134.134.136.31]:64416 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932998AbcJQSTL (ORCPT ); Mon, 17 Oct 2016 14:19:11 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,358,1473145200"; d="scan'208";a="20570639" Date: Mon, 17 Oct 2016 14:22:08 -0700 From: Fenghua Yu To: Thomas Gleixner Cc: Fenghua Yu , "H. Peter Anvin" , Ingo Molnar , Tony Luck , Peter Zijlstra , Stephane Eranian , Borislav Petkov , Dave Hansen , Nilay Vaish , Shaohua Li , David Carrillo-Cisneros , Ravi V Shankar , Sai Prakhya , Vikas Shivappa , linux-kernel , x86 Subject: Re: [PATCH v4 08/18] x86/intel_rdt: Pick up L3/L2 RDT parameters from CPUID Message-ID: <20161017212207.GC8999@linux.intel.com> References: <1476497548-11169-1-git-send-email-fenghua.yu@intel.com> <1476497548-11169-9-git-send-email-fenghua.yu@intel.com> <20161017180655.GB8999@linux.intel.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) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Oct 17, 2016 at 07:02:19PM +0200, Thomas Gleixner wrote: > On Mon, 17 Oct 2016, Fenghua Yu wrote: > > On Mon, Oct 17, 2016 at 03:45:32PM +0200, Thomas Gleixner wrote: > > > I wonder whether this is the proper abstraction level. We might as well do > > > the following: > > > > > > rdtresources[] = { > > > { > > > .name = "L3", > > > }, > > > { > > > .name = "L3Data", > > > }, > > > { > > > .name = "L3Code", > > > }, > > > > > > and enable either L3 or L3Data+L3Code. Not sure if that makes things > > > simpler, but it's definitely worth a thought or two. > > > > This way will be better than having cdp_enabled/capable for L3 and not > > for L2. > > So you need to change the struct to have capable and enabled > > > > static void rdt_get_config(int idx, struct rdt_resource *r) > > > { > > > union cpuid_0x10_1_eax eax; > > > union cpuid_0x10_1_edx edx; > > > u32 ebx, ecx; > > > > > > cpuid_count(0x00000010, idx, &eax.full, &ebx, &ecx, &edx.full); > > > r->max_closid = edx.split.cos_max + 1; > > > r->num_closid = r->max_closid; > > > r->cbm_len = eax.split.cbm_len + 1; > > > r->max_cbm = BIT_MASK(eax.split.cbm_len + 1) - 1; > > > r->enabled = true; > > And set > > r->capable = true; > > here instead of r->enabled and set r->enabled at mount time for the > resources depending on the mount flags. Neat code change! Thanks, -Fenghua