linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Luck, Tony" <tony.luck@intel.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: "Hansen, Dave" <dave.hansen@intel.com>,
	Sean Christopherson <seanjc@google.com>,
	Jarkko Sakkinen <jarkko@kernel.org>,
	"x86@kernel.org" <x86@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Liam R. Howlett" <Liam.Howlett@oracle.com>
Subject: Re: [PATCH v3 2/7] x86/sgx: Add infrastructure to identify SGX EPC pages
Date: Tue, 3 Aug 2021 23:49:35 +0000	[thread overview]
Message-ID: <5B1DB882-124D-4218-9522-760AB69F6A3F@intel.com> (raw)
In-Reply-To: <YQm2ZM9+cWmBFJH7@casper.infradead.org>



Sent from my iPhone

> On Aug 3, 2021, at 14:47, Matthew Wilcox
> 
> Liam and I are working on a new replacement data structure called the
> Maple Tree, but it's not yet ready to replace the radix tree back end.
> It looks like it would be perfect for your case; there would be five
> entries in it, stored in one 256-byte node:
> 
>    NULL
> 0x8000bfffff
>    p1
> 0x807f7fffff
>    NULL
> 0x10000c00000
>    p2
> 0x1007fffffff
>    NULL
> 0xffff'ffff'ffff'ffff
> 
> It would actually turn into a linear scan, because that's just the
> fastest way to find something in a list of five elements.  A third
> range would take us to a list of seven elements, which still fits
> in a single node.  Once we get to more than that, you'd have a
> two-level tree, which would work until you have more than ~20 ranges.
> 
> We could do better for your case by storing 10x (start, end, p) in each
> leaf node, but we're (currently) optimising for VMAs which tend to be
> tightly packed, meaning that an implicit 'start' element is a better
> choice as it gives us 15x (end, p) pairs.

That’s good to know. While current xarray
implementation might be a bit wasteful[1],
things will get better.

I’m still going with xarray to keep the source
simple.

-Tony

[1] A few KBytes extra doesn’t even sound
too terrible to manage tens of MBytes (or
more) of SGX EPC memory on a system
with a half TByte total memory.



  reply	other threads:[~2021-08-03 23:49 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-08 18:14 [PATCH 0/4] Basic recovery for machine checks inside SGX Tony Luck
2021-07-08 18:14 ` [PATCH 1/4] x86/sgx: Track phase and type of SGX EPC pages Tony Luck
2021-07-09 18:08   ` Jarkko Sakkinen
2021-07-09 18:09     ` Jarkko Sakkinen
2021-07-14 20:42   ` Reinette Chatre
2021-07-14 20:59     ` Luck, Tony
2021-07-14 21:21       ` Reinette Chatre
2021-07-14 23:08         ` Sean Christopherson
2021-07-14 23:39           ` Luck, Tony
2021-07-15 15:33             ` Sean Christopherson
2021-07-08 18:14 ` [PATCH 2/4] x86/sgx: Add basic infrastructure to recover from errors in SGX memory Tony Luck
2021-07-08 18:14 ` [PATCH 3/4] x86/sgx: Hook sgx_memory_failure() into mainline code Tony Luck
2021-07-08 18:14 ` [PATCH 4/4] x86/sgx: Add hook to error injection address validation Tony Luck
2021-07-19 18:20 ` [PATCH v2 0/6] Basic recovery for machine checks inside SGX Tony Luck
2021-07-19 18:20   ` [PATCH v2 1/6] x86/sgx: Provide indication of life-cycle of EPC pages Tony Luck
2021-07-19 18:28     ` Dave Hansen
2021-07-27  2:04     ` Sakkinen, Jarkko
2021-07-19 18:20   ` [PATCH v2 2/6] x86/sgx: Add infrastructure to identify SGX " Tony Luck
2021-07-19 18:20   ` [PATCH v2 3/6] x86/sgx: Initial poison handling for dirty and free pages Tony Luck
2021-07-27  2:08     ` Sakkinen, Jarkko
2021-07-19 18:20   ` [PATCH v2 4/6] x86/sgx: Add SGX infrastructure to recover from poison Tony Luck
2021-07-19 18:20   ` [PATCH v2 5/6] x86/sgx: Hook sgx_memory_failure() into mainline code Tony Luck
2021-07-19 18:20   ` [PATCH v2 6/6] x86/sgx: Add hook to error injection address validation Tony Luck
2021-07-27  1:54   ` [PATCH v2 0/6] Basic recovery for machine checks inside SGX Sakkinen, Jarkko
2021-07-28 20:46   ` [PATCH v3 0/7] " Tony Luck
2021-07-28 20:46     ` [PATCH v3 1/7] x86/sgx: Provide indication of life-cycle of EPC pages Tony Luck
2021-07-28 22:12       ` Dave Hansen
2021-07-28 22:57         ` Luck, Tony
2021-07-28 23:12           ` Dave Hansen
2021-07-28 23:32             ` Sean Christopherson
2021-07-28 23:48               ` Luck, Tony
2021-07-29  0:07                 ` Sean Christopherson
2021-07-29  0:42                   ` Luck, Tony
2021-07-30  0:34           ` Jarkko Sakkinen
2021-07-30  0:33         ` Jarkko Sakkinen
2021-07-28 20:46     ` [PATCH v3 2/7] x86/sgx: Add infrastructure to identify SGX " Tony Luck
2021-07-28 22:19       ` Dave Hansen
2021-07-30  0:38         ` Jarkko Sakkinen
2021-07-30 16:46           ` Sean Christopherson
2021-07-30 16:50             ` Dave Hansen
2021-07-30 18:44               ` Luck, Tony
2021-07-30 20:35                 ` Dave Hansen
2021-07-30 23:35                   ` Luck, Tony
2021-08-03 21:34                     ` Matthew Wilcox
2021-08-03 23:49                       ` Luck, Tony [this message]
2021-08-02  8:52                 ` Jarkko Sakkinen
2021-08-02  8:51               ` Jarkko Sakkinen
2021-08-02  8:48             ` Jarkko Sakkinen
2021-07-28 20:46     ` [PATCH v3 3/7] x86/sgx: Initial poison handling for dirty and free pages Tony Luck
2021-07-30  0:42       ` Jarkko Sakkinen
2021-07-28 20:46     ` [PATCH v3 4/7] x86/sgx: Add SGX infrastructure to recover from poison Tony Luck
2021-07-28 22:29       ` Dave Hansen
2021-07-28 23:00         ` Sean Christopherson
2021-07-28 20:46     ` [PATCH v3 5/7] x86/sgx: Hook sgx_memory_failure() into mainline code Tony Luck
2021-07-28 20:46     ` [PATCH v3 6/7] x86/sgx: Add hook to error injection address validation Tony Luck
2021-07-28 20:46     ` [PATCH v3 7/7] x86/sgx: Add documentation for SGX memory errors Tony Luck
2021-08-27 19:55     ` [PATCH v4 0/6] Basic recovery for machine checks inside SGX Tony Luck
2021-08-27 19:55       ` [PATCH v4 1/6] x86/sgx: Provide indication of life-cycle of EPC pages Tony Luck
2021-09-01  3:55         ` Jarkko Sakkinen
2021-08-27 19:55       ` [PATCH v4 2/6] x86/sgx: Add infrastructure to identify SGX " Tony Luck
2021-09-01  4:30         ` Jarkko Sakkinen
2021-08-27 19:55       ` [PATCH v4 3/6] x86/sgx: Initial poison handling for dirty and free pages Tony Luck
2021-08-27 19:55       ` [PATCH v4 4/6] x86/sgx: Add SGX infrastructure to recover from poison Tony Luck
2021-08-27 19:55       ` [PATCH v4 5/6] x86/sgx: Hook sgx_memory_failure() into mainline code Tony Luck
2021-09-03  6:12         ` Jarkko Sakkinen
2021-09-03  6:56           ` Jarkko Sakkinen
2021-09-06 18:51             ` Luck, Tony
2021-09-07 14:07               ` Jarkko Sakkinen
2021-09-07 14:13                 ` Dave Hansen
2021-09-07 15:07                   ` Luck, Tony
2021-09-07 15:03                 ` Luck, Tony
2021-09-07 15:08                   ` Jarkko Sakkinen
2021-09-07 17:46                     ` Luck, Tony
2021-09-08  0:59                       ` Luck, Tony
2021-09-08 16:49                         ` Dave Hansen
2021-09-08  2:29                       ` Jarkko Sakkinen
2021-08-27 19:55       ` [PATCH v4 6/6] x86/sgx: Add hook to error injection address validation Tony Luck
2021-08-27 20:28       ` [PATCH v4 0/6] Basic recovery for machine checks inside SGX Borislav Petkov
2021-08-27 20:43         ` Sean Christopherson
2021-09-01  2:06       ` Jarkko Sakkinen
2021-09-01 14:48         ` Luck, Tony
2021-09-17 21:38       ` [PATCH v5 0/7] " Tony Luck
2021-09-17 21:38         ` [PATCH v5 1/7] x86/sgx: Provide indication of life-cycle of EPC pages Tony Luck
2021-09-21 21:28           ` Jarkko Sakkinen
2021-09-21 21:34             ` Luck, Tony
2021-09-22  5:17               ` Jarkko Sakkinen
2021-09-21 22:15             ` Dave Hansen
2021-09-22  5:27               ` Jarkko Sakkinen
2021-09-17 21:38         ` [PATCH v5 2/7] x86/sgx: Add infrastructure to identify SGX " Tony Luck
2021-09-21 20:23           ` Dave Hansen
2021-09-21 20:50             ` Luck, Tony
2021-09-21 22:32               ` Dave Hansen
2021-09-21 23:48                 ` Luck, Tony
2021-09-21 23:50                   ` Dave Hansen
2021-09-17 21:38         ` [PATCH v5 3/7] x86/sgx: Initial poison handling for dirty and free pages Tony Luck
2021-09-17 21:38         ` [PATCH v5 4/7] x86/sgx: Add SGX infrastructure to recover from poison Tony Luck
2021-09-17 21:38         ` [PATCH v5 5/7] x86/sgx: Hook arch_memory_failure() into mainline code Tony Luck
2021-09-17 21:38         ` [PATCH v5 6/7] x86/sgx: Add hook to error injection address validation Tony Luck
2021-09-17 21:38         ` [PATCH v5 7/7] x86/sgx: Add check for SGX pages to ghes_do_memory_failure() Tony Luck

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=5B1DB882-124D-4218-9522-760AB69F6A3F@intel.com \
    --to=tony.luck@intel.com \
    --cc=Liam.Howlett@oracle.com \
    --cc=dave.hansen@intel.com \
    --cc=jarkko@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=seanjc@google.com \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    /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).