[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YEu74hkEPEyvxC85@google.com>
Date: Fri, 12 Mar 2021 11:07:14 -0800
From: Vipin Sharma <vipinsh@...gle.com>
To: Michal Koutný <mkoutny@...e.com>
Cc: tj@...nel.org, rdunlap@...radead.org, thomas.lendacky@....com,
brijesh.singh@....com, jon.grimm@....com, eric.vantassell@....com,
pbonzini@...hat.com, hannes@...xchg.org, frankja@...ux.ibm.com,
borntraeger@...ibm.com, corbet@....net, seanjc@...gle.com,
vkuznets@...hat.com, wanpengli@...cent.com, jmattson@...gle.com,
joro@...tes.org, tglx@...utronix.de, mingo@...hat.com,
bp@...en8.de, hpa@...or.com, gingell@...gle.com,
rientjes@...gle.com, dionnaglaze@...gle.com, kvm@...r.kernel.org,
x86@...nel.org, cgroups@...r.kernel.org, linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [Patch v3 1/2] cgroup: sev: Add misc cgroup controller
On Thu, Mar 11, 2021 at 07:59:03PM +0100, Michal Koutný wrote:
> Given different two-fold nature (SEV caller vs misc controller) of some
> remarks below, I think it makes sense to split this into two patches:
> a) generic controller implementation,
> b) hooking the controller into SEV ASIDs management.
Sounds good. I will split it.
> > + if (misc_res_capacity[type])
> > + cg->res[type].max = max;
> In theory, parallel writers can clash here, so having the limit atomic
> type to prevent this would resolve it. See also commit a713af394cf3
> ("cgroup: pids: use atomic64_t for pids->limit").
We should be fine without atomic64_t because we are using unsigned
long and not 64 bit explicitly. This will work on both 32 and 64 bit
machines.
But I will add READ_ONCE and WRITE_ONCE because of potential chances of
load tearing and store tearing.
Do you agree?
> > +static int misc_cg_capacity_show(struct seq_file *sf, void *v)
> > +{
> > + int i;
> > + unsigned long cap;
> > +
> > + for (i = 0; i < MISC_CG_RES_TYPES; i++) {
> > + cap = READ_ONCE(misc_res_capacity[i]);
> Why is READ_ONCE only here and not in other places that (actually) check
> against the set capacity value? Also, there should be a paired
> WRITE_ONCCE in misc_cg_set_capacity().
This was only here to avoid multiple reads of capacity and making sure
if condition and seq_print will see the same value. Also, I was not
aware of load and store tearing of properly aligned and machine word
size variables. I will add READ_ONCE and WRITE_ONCE at
other places.
Thanks
Vipin
Powered by blists - more mailing lists