All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tim Deegan <tim@xen.org>
To: Jan Beulich <JBeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: open-coded page list manipulation in shadow code
Date: Tue, 27 Jan 2015 11:50:26 +0100	[thread overview]
Message-ID: <20150127105026.GA38811@deinos.phlegethon.org> (raw)
In-Reply-To: <54C67AC802000078000598CE@mail.emea.novell.com>

At 16:35 +0000 on 26 Jan (1422286504), Jan Beulich wrote:
> Tim,
> 
> in the course of adding >16Tb support to the hypervisor, I ran into
> issues with you having added several open-coded page list accesses
> while breaking up non-order-0 allocations there. I looked at that
> code for quite a while, but wasn't really able to figure how to
> properly convert these. In particular I'm struggling with the list
> terminations (would using NULL for PAGE_LIST_NULL be correct
> when using ordinary struct list_head-s for struct page_info's list
> member?)

Yes, I think so.  The fragmentary lists would terminate in NULL in
both directions.

> and the implications of this comment
> 
>     /* Page lists don't have pointers back to the head structure, so
>      * it's safe to use a head structure on the stack to link the pages
>      * together. */

Yep; we'd have to make sure that we explicitly NULL'ed out the first
page's prev and the last page's next.  This all seems a bit
unsatisfactory though.

Maybe it would be better to piggy-back these partial lists into the
hash-table's linked list (i.e. the 'next_shadow' field) instead of
the pinned list.  That list is much more active, though.

Let me have a think about it on Thursday (assuming I don't have too
many patch series to review by then!)

> in shadow_alloc(), but then again I also didn't look very closely at
> the other places that also fail to compile.
> 
> To help myself test the new code, I invented a shadow stub which
> provides just enough functionality to build and not crash with all
> the other shadow code compiled out. I wonder whether such a
> build mode might actually be useful for other purposes, and hence
> whether it might be worthwhile extracting that from the patch into
> a standalone one.

If it's not too much work, yes please.  There are already use cases
where people don't need shadow pagetable support, and once PVH is
stable that will be more common.  Having the option to compile out
7kloc of twisty MMU code seems good. :)

Tim.

  reply	other threads:[~2015-01-27 10:50 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-26 16:35 open-coded page list manipulation in shadow code Jan Beulich
2015-01-27 10:50 ` Tim Deegan [this message]
2015-01-29 17:30   ` Tim Deegan
2015-01-30  8:36     ` Jan Beulich
2015-01-30 10:20       ` Tim Deegan
2015-01-30 10:26         ` Jan Beulich

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=20150127105026.GA38811@deinos.phlegethon.org \
    --to=tim@xen.org \
    --cc=JBeulich@suse.com \
    --cc=xen-devel@lists.xenproject.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.