Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp2230825imm; Wed, 3 Oct 2018 00:05:20 -0700 (PDT) X-Google-Smtp-Source: ACcGV61xQNw+pW4yPg3r08j099cvYok7bOuHqCtb7pUElrXreD4NRBRmZRngvo7myh6KKfY+St7R X-Received: by 2002:a17:902:8d95:: with SMTP id v21-v6mr131424plo.21.1538550320671; Wed, 03 Oct 2018 00:05:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538550320; cv=none; d=google.com; s=arc-20160816; b=ZjsrKBGwPrsODqrCcCK7KR6KIv7ewZm//DPH5V4kjAsxn8Mikx9hbMTmMOOvdoL44a xKIU6bjiJdAx63zyM4HXZ3V8misKc43ldZPIqUlFZFbS8jXljWoNzZ2GVNearX4q8cZB 7/8PDIDmVu6Tp1rdWQjsUicJTRRxx6/DTmy8OxGQtaMjLS14LxJFjpJUnC20ellIHGGb rOaTbeCFFXd416ct/++AGGjwd39ru86oOmhnEYhMJcmMXVAal1zNt5viMcMsJZRaqwcJ bWMC/S2ixQC/v3asC08NU1B4rOHdbSQSiSF+cD5jO49HoBSpbhCRu9QfT1d5mKxDTZ28 FfdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :message-id:in-reply-to:subject:cc:to:from:date; bh=RiCvMl5gjhf/NqiP3jJh+YX9G7orBh6jyyKQf8RjLN8=; b=y1il2Bgy7d/9ssVjdH4q9FnpQ1oC0eY9a2Pkkkn2c2+o4FQlDmcU0D05/dA5CPUmxE 5mZXonYGZoyv1FCWuUIB8oXMBRfVb+NmwUi9n7mHzmI+rq/l+rW0IoSwcEXATCeuTeF6 ee2LvYNoDh2sHcjNkGcrFEN+6AGm3wjSQ6RgpYkfGWCjfPoPb2D9XiRZhxE64JZkuf1g C6rbrqb9Ux/5YhTIpRs0dL0a30QD3aUoV1KM7xtuxqWT7hojCB+UG86ShNbr9WqT1YaG 1JjNIYhWxiSHqdIfpJWm8FqHLhAwqQyYZIFHQ7Ykr9iFtxOoYzG/a9W0x3GtRkkVoOkp Ix/A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j124-v6si702885pfb.191.2018.10.03.00.05.02; Wed, 03 Oct 2018 00:05:20 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727268AbeJCNtr (ORCPT + 99 others); Wed, 3 Oct 2018 09:49:47 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:33149 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726596AbeJCNtr (ORCPT ); Wed, 3 Oct 2018 09:49:47 -0400 Received: from p5492e4c1.dip0.t-ipconnect.de ([84.146.228.193] helo=nanos) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1g7bAy-00080a-FZ; Wed, 03 Oct 2018 09:02:28 +0200 Date: Wed, 3 Oct 2018 09:02:27 +0200 (CEST) From: Thomas Gleixner To: Reinette Chatre cc: fenghua.yu@intel.com, tony.luck@intel.com, jithu.joseph@intel.com, gavin.hindman@intel.com, dave.hansen@intel.com, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/3] x86/intel_rdt: CBM overlap should also check for overlap with CDP peer In-Reply-To: <262e12b66c238517c4766190dd493d937825f563.1537987801.git.reinette.chatre@intel.com> Message-ID: References: <262e12b66c238517c4766190dd493d937825f563.1537987801.git.reinette.chatre@intel.com> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 26 Sep 2018, Reinette Chatre wrote: > /** > - * rdtgroup_cbm_overlaps - Does CBM for intended closid overlap with other > + * _rdtgroup_cbm_overlaps - Does CBM for intended closid overlap with other > * @r: Resource to which domain instance @d belongs. > * @d: The domain instance for which @closid is being tested. > * @cbm: Capacity bitmask being tested. > @@ -1049,8 +1048,8 @@ static int __attribute__((unused)) rdt_cdp_peer_get(struct rdt_resource *r, > * > * Return: false if CBM does not overlap, true if it does. > */ > -bool rdtgroup_cbm_overlaps(struct rdt_resource *r, struct rdt_domain *d, > - u32 _cbm, int closid, bool exclusive) > +static bool _rdtgroup_cbm_overlaps(struct rdt_resource *r, struct rdt_domain *d, > + u32 _cbm, int closid, bool exclusive) Existing issue. The documentation uses @cbm, but the argument is _cbm. Also please make this __rdtgroup_cbm_overlaps(). Double underscores are standing more out. > { > unsigned long *cbm = (unsigned long *)&_cbm; > unsigned long *ctrl_b; > @@ -1087,6 +1086,44 @@ bool rdtgroup_cbm_overlaps(struct rdt_resource *r, struct rdt_domain *d, > return false; > } > > +/** > + * rdtgroup_cbm_overlaps - Does CBM overlap with other use of hardware > + * @r: Resource to which domain instance @d belongs. > + * @d: The domain instance for which @closid is being tested. > + * @cbm: Capacity bitmask being tested. > + * @closid: Intended closid for @cbm. > + * @exclusive: Only check if overlaps with exclusive resource groups > + * > + * Resources that can be allocated using a CBM can use the CBM to control > + * the overlap of these allocations. rdtgroup_cmb_overlaps() is the test > + * for overlap. Overlap test is not limited to the specific resource for > + * which the CBM is intended though - when dealing with CDP resources that > + * share the underlying hardware the overlap check should be performed on > + * the CDP resource sharing the hardware also. > + * > + * Refer to description of _rdtgroup_cbm_overlaps() for the details of the > + * overlap test. > + * > + * Return: true if CBM overlap detected, false if there is no overlap > + */ > +bool rdtgroup_cbm_overlaps(struct rdt_resource *r, struct rdt_domain *d, > + u32 _cbm, int closid, bool exclusive) Ditto. And here is no reason for using _cbm. > +{ > + struct rdt_resource *r_cdp; > + struct rdt_domain *d_cdp; > + bool ret; > + > + ret = _rdtgroup_cbm_overlaps(r, d, _cbm, closid, exclusive); > + if (ret) > + return ret; if (__rdtgroup_cbm_overlaps(r, d, _cbm, closid, exclusive)) return true; > + > + if (rdt_cdp_peer_get(r, d, &r_cdp, &d_cdp) == 0) > + return _rdtgroup_cbm_overlaps(r_cdp, d_cdp, _cbm, > + closid, exclusive); if (rdt_cdp_peer_get(r, d, &r_cdp, &d_cdp) < 0) return false; return __rdtgroup_cbm_overlaps(r_cpd, d_cdp, _cbm, closid, exclusive); Makes the whole thing more obvious. Thanks, tglx