linux-sgx.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Huang, Kai" <kai.huang@intel.com>
To: "tim.c.chen@linux.intel.com" <tim.c.chen@linux.intel.com>,
	"linux-sgx@vger.kernel.org" <linux-sgx@vger.kernel.org>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"x86@kernel.org" <x86@kernel.org>,
	"jarkko@kernel.org" <jarkko@kernel.org>,
	"hpa@zytor.com" <hpa@zytor.com>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"cgroups@vger.kernel.org" <cgroups@vger.kernel.org>,
	"mkoutny@suse.com" <mkoutny@suse.com>,
	"haitao.huang@linux.intel.com" <haitao.huang@linux.intel.com>,
	"Mehta, Sohil" <sohil.mehta@intel.com>,
	"tj@kernel.org" <tj@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"bp@alien8.de" <bp@alien8.de>
Cc: "mikko.ylinen@linux.intel.com" <mikko.ylinen@linux.intel.com>,
	"seanjc@google.com" <seanjc@google.com>,
	"anakrish@microsoft.com" <anakrish@microsoft.com>,
	"Zhang, Bo" <zhanb@microsoft.com>,
	"kristen@linux.intel.com" <kristen@linux.intel.com>,
	"yangjie@microsoft.com" <yangjie@microsoft.com>,
	"Li, Zhiquan1" <zhiquan1.li@intel.com>,
	"chrisyan@microsoft.com" <chrisyan@microsoft.com>
Subject: Re: [PATCH v12 09/14] x86/sgx: Implement async reclamation for cgroup
Date: Wed, 24 Apr 2024 02:13:38 +0000	[thread overview]
Message-ID: <e56216ee4d5f7ef6d97c70f56243a5ddc8dea19d.camel@intel.com> (raw)
In-Reply-To: <op.2mph51towjvjmi@hhuan26-mobl.amr.corp.intel.com>

On Tue, 2024-04-23 at 19:26 -0500, Haitao Huang wrote:
> On Tue, 23 Apr 2024 17:13:15 -0500, Huang, Kai <kai.huang@intel.com> wrote:
> 
> > On Tue, 2024-04-23 at 10:30 -0500, Haitao Huang wrote:
> > > > > It's a workaround because you use the capacity==0 but it does not  
> > > really
> > > > > mean to disable the misc cgroup for specific resource IIUC.
> > > > 
> > > > Please read the comment around @misc_res_capacity again:
> > > > 
> > > >   * Miscellaneous resources capacity for the entire machine. 0  
> > > capacity
> > > >   * means resource is not initialized or not present in the host.
> > > > 
> > > 
> > > I mentioned this in earlier email. I think this means no SGX EPC. It  
> > > doesnot mean sgx epc cgroup not enabled. That's also consistent with the 
> > > behavior try_charge() fails if capacity is zero.
> > 
> > OK. To me the "capacity" is purely the concept of cgroup, so it must be
> > interpreted within the scope of "cgroup".  If cgroup, in our case, SGX
> > cgroup, is disabled, then whether "leaving the capacity to reflect the
> > presence of hardware resource" doesn't really matter.
> > So what you are saying is that, the kernel must initialize the capacity  
> > of
> > some MISC resource once it is added as valid type.  
> > And you must initialize the "capacity" even MISC cgroup is disabled
> > entirely by kernel commandline, in which case, IIUC, misc.capacity is not
> > even going to show in the /fs.
> > 
> > If this is your point, then your patch:
> > 
> > 	cgroup/misc: Add SGX EPC resource type
> > 
> > is already broken, because you added the new type w/o initializing the
> > capacity.
> > 
> > Please fix that up.
> > 
> > > 
> > > > > 
> > > > > There is explicit way for user to disable misc without setting  
> > > capacity> > to
> > > > > zero.
> > > > 
> > > > Which way are you talking about?
> > > 
> > > Echo "-misc" to cgroup.subtree_control at root level for example still 
> > > shows non-zero sgx_epc capacity.
> > 
> > I guess "having to disable all MISC resources just in order to disable  
> > SGX
> > EPC cgroup" is a brilliant idea.
> > 
> > You can easily disable the entire MISC cgroup by commandline for that
> > purpose if that's acceptable.
> > 
> > And I have no idea why "still showing non-zero EPC capacity" is important
> > if SGX cgroup cannot be supported at all.
> > 
> 
> Okay, all I'm trying to say is we should care about consistency in code  
> and don't want SGX do something different. Mixing "disable" with  
> "capacity==0" causes inconsistencies AFAICS:
> 
> 1) The try_charge() API currently returns error when capacity is zero. So  
> it appears not to mean that the cgroup is disabled otherwise it should  
> return success.

I agree this isn't ideal.  My view is we can fix it in MISC code if
needed.

> 
> 2) The current explicit way ("-misc") to disable misc still shows non-zero  
> entries in misc.capacity. (At least for v2 cgroup, it does when I tested).  
> Maybe this is not important but I just don't feel good about this  
> inconsistency.

This belongs to "MISC resource cgroup was initially enabled by the kernel
at boot time, but later was disabled *somewhere in hierarchy* by the
user".

In fact, if you only do "-misc" for "some subtree", it's quite reasonable
to still report the resource in max.capacity.  In the case above, the
"some subtree" happens to be the root.

So to me it's reasonable to still show max.capacity in this case.  And you
can actually argue that the kernel still supports the cgroup for the
resource.  E.g., you can at runtime do "+misc" to re-enable.

However, if the kernel isn't able to support certain MISC resource cgroup
at boot time, it's quite reasonable to just set the "capacity" to 0 so it
isn't visible to userspace.

Note:

My key point is, when userspace sees 0 "capacity", it shouldn't need to
care about whether it is because of "hardware resource is not available",
or "hardware resource is available but kernel cannot support cgroup for
it".  The resource cgroup is simply unavailable.

That means the kernel has full right to just hide that resource from the
cgroup at boot time.

But this should be just within "cgroup's scope", i.e., that resource can
still be available if kernel can provide it.  If some app wants to
additionally check whether such resource is indeed available but only
cgroup is not available, it should check resource specific interface but
not take advantage of the MISC cgroup interface.

> 
> For now I'll just do BUG_ON() unless there are more strong opinions one  
> way or the other.
> 

Fine to me.


  reply	other threads:[~2024-04-24  2:13 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-16  3:19 [PATCH v12 00/14] Add Cgroup support for SGX EPC memory Haitao Huang
2024-04-16  3:19 ` [PATCH v12 01/14] x86/sgx: Replace boolean parameters with enums Haitao Huang
2024-04-16  3:19 ` [PATCH v12 02/14] cgroup/misc: Add per resource callbacks for CSS events Haitao Huang
2024-04-16  3:20 ` [PATCH v12 03/14] cgroup/misc: Export APIs for SGX driver Haitao Huang
2024-04-16  3:20 ` [PATCH v12 04/14] cgroup/misc: Add SGX EPC resource type Haitao Huang
2024-04-16  3:20 ` [PATCH v12 05/14] x86/sgx: Implement basic EPC misc cgroup functionality Haitao Huang
2024-04-16 13:22   ` Huang, Kai
2024-04-18 22:41     ` Haitao Huang
2024-04-18 23:29       ` Huang, Kai
2024-04-19 18:15         ` Haitao Huang
2024-04-19 22:21           ` Huang, Kai
2024-04-16 22:23   ` Haitao Huang
2024-04-16  3:20 ` [PATCH v12 06/14] x86/sgx: Add sgx_epc_lru_list to encapsulate LRU list Haitao Huang
2024-04-16  3:20 ` [PATCH v12 07/14] x86/sgx: Abstract tracking reclaimable pages in LRU Haitao Huang
2024-04-16 14:07   ` Huang, Kai
2024-04-16 22:48     ` Haitao Huang
2024-04-16  3:20 ` [PATCH v12 08/14] x86/sgx: Add basic EPC reclamation flow for cgroup Haitao Huang
2024-04-17 23:51   ` Huang, Kai
2024-04-23 15:53     ` Haitao Huang
2024-04-16  3:20 ` [PATCH v12 09/14] x86/sgx: Implement async reclamation " Haitao Huang
2024-04-19  1:32   ` Huang, Kai
2024-04-19 18:55     ` Haitao Huang
2024-04-19 22:44       ` Huang, Kai
2024-04-20  1:14         ` Haitao Huang
2024-04-22  0:22           ` Huang, Kai
2024-04-22 16:17             ` Haitao Huang
2024-04-22 22:16               ` Huang, Kai
2024-04-23 13:08                 ` Haitao Huang
2024-04-23 14:19                   ` Huang, Kai
2024-04-23 15:30                     ` Haitao Huang
2024-04-23 22:13                       ` Huang, Kai
2024-04-24  0:26                         ` Haitao Huang
2024-04-24  2:13                           ` Huang, Kai [this message]
2024-04-16  3:20 ` [PATCH v12 10/14] x86/sgx: Charge mem_cgroup for per-cgroup reclamation Haitao Huang
2024-04-23  7:21   ` Huang, Kai
2024-04-16  3:20 ` [PATCH v12 11/14] x86/sgx: Abstract check for global reclaimable pages Haitao Huang
2024-04-16  3:20 ` [PATCH v12 12/14] x86/sgx: Turn on per-cgroup EPC reclamation Haitao Huang
2024-04-29 10:49   ` Huang, Kai
2024-04-29 16:05     ` Haitao Huang
2024-04-29 22:18       ` Huang, Kai
2024-04-30  1:31         ` Haitao Huang
2024-04-16  3:20 ` [PATCH v12 13/14] Docs/x86/sgx: Add description for cgroup support Haitao Huang
2024-04-21  7:18   ` Bagas Sanjaya
2024-04-23  7:29   ` Huang, Kai
2024-04-16  3:20 ` [PATCH v12 14/14] selftests/sgx: Add scripts for EPC cgroup testing Haitao Huang
2024-04-16  5:16   ` Haitao Huang
2024-04-16  5:42     ` Huang, Kai
2024-04-16 14:15       ` Jarkko Sakkinen
2024-04-26 14:28         ` Dave Hansen
2024-04-28 22:03           ` Jarkko Sakkinen
2024-04-29 16:18             ` Haitao Huang
2024-04-29 16:43               ` Jarkko Sakkinen
2024-04-29 17:14                 ` Haitao Huang
2024-04-16 15:00       ` Haitao Huang
2024-04-16 14:05   ` Jarkko Sakkinen
2024-04-16 14:10     ` Jarkko Sakkinen
2024-04-16 14:54       ` Haitao Huang
2024-04-16 16:08         ` Jarkko Sakkinen
2024-04-16 22:04           ` Haitao Huang
2024-04-16 22:21             ` Haitao Huang
2024-04-17  3:05               ` Haitao Huang
2024-04-17 22:46             ` Jarkko Sakkinen
2024-04-24 19:42           ` Haitao Huang
2024-04-25  4:51             ` Jarkko Sakkinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e56216ee4d5f7ef6d97c70f56243a5ddc8dea19d.camel@intel.com \
    --to=kai.huang@intel.com \
    --cc=anakrish@microsoft.com \
    --cc=bp@alien8.de \
    --cc=cgroups@vger.kernel.org \
    --cc=chrisyan@microsoft.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=haitao.huang@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jarkko@kernel.org \
    --cc=kristen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sgx@vger.kernel.org \
    --cc=mikko.ylinen@linux.intel.com \
    --cc=mingo@redhat.com \
    --cc=mkoutny@suse.com \
    --cc=seanjc@google.com \
    --cc=sohil.mehta@intel.com \
    --cc=tglx@linutronix.de \
    --cc=tim.c.chen@linux.intel.com \
    --cc=tj@kernel.org \
    --cc=x86@kernel.org \
    --cc=yangjie@microsoft.com \
    --cc=zhanb@microsoft.com \
    --cc=zhiquan1.li@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).