xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Hongyan Xia <hx242@xen.org>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org, jgrall@amazon.com,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"Wei Liu" <wl@xen.org>, "Roger Pau Monné" <roger.pau@citrix.com>,
	"George Dunlap" <george.dunlap@citrix.com>,
	"Ian Jackson" <ian.jackson@eu.citrix.com>,
	"Julien Grall" <julien@xen.org>,
	"Stefano Stabellini" <sstabellini@kernel.org>
Subject: Re: [PATCH v8 03/15] x86/mm: rewrite virt_to_xen_l*e
Date: Thu, 13 Aug 2020 17:08:11 +0100	[thread overview]
Message-ID: <a4f02c292a369cfd771790b1d164f139fec6bead.camel@xen.org> (raw)
In-Reply-To: <41d9d8d4-d5cb-8350-c118-c9e1fe73b6d0@suse.com>

On Fri, 2020-08-07 at 16:05 +0200, Jan Beulich wrote:
> On 27.07.2020 16:21, Hongyan Xia wrote:
> > From: Wei Liu <wei.liu2@citrix.com>
> > 
> > Rewrite those functions to use the new APIs. Modify its callers to
> > unmap
> > the pointer returned. Since alloc_xen_pagetable_new() is almost
> > never
> > useful unless accompanied by page clearing and a mapping, introduce
> > a
> > helper alloc_map_clear_xen_pt() for this sequence.
> > 
> > Note that the change of virt_to_xen_l1e() also requires
> > vmap_to_mfn() to
> > unmap the page, which requires domain_page.h header in vmap.
> > 
> > Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> > Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
> > Reviewed-by: Jan Beulich <jbeulich@suse.com>
> > 
> > ---
> > Changed in v8:
> > - s/virtual address/linear address/.
> > - BUG_ON() on NULL return in vmap_to_mfn().
> 
> The justification for this should be recorded in the description. In

Will do.

> reply to v7 I did even suggest how to easily address the issue you
> did notice with large pages, as well as alternative behavior for
> vmap_to_mfn().

One thing about adding SMALL_PAGES is that vmap is common code and I am
not sure if the Arm side is happy with it.

> 
> > --- a/xen/include/asm-x86/page.h
> > +++ b/xen/include/asm-x86/page.h
> > @@ -291,7 +291,15 @@ void copy_page_sse2(void *, const void *);
> >  #define pfn_to_paddr(pfn)   __pfn_to_paddr(pfn)
> >  #define paddr_to_pfn(pa)    __paddr_to_pfn(pa)
> >  #define paddr_to_pdx(pa)    pfn_to_pdx(paddr_to_pfn(pa))
> > -#define
> > vmap_to_mfn(va)     _mfn(l1e_get_pfn(*virt_to_xen_l1e((unsigned
> > long)(va))))
> > +
> > +#define vmap_to_mfn(va)
> > ({                                                  \
> > +        const l1_pgentry_t *pl1e_ = virt_to_xen_l1e((unsigned
> > long)(va));   \
> > +        mfn_t
> > mfn_;                                                         \
> > +        BUG_ON(!pl1e_);                                           
> >           \
> > +        mfn_ =
> > l1e_get_mfn(*pl1e_);                                         \
> > +        unmap_domain_page(pl1e_);                                 
> >           \
> > +        mfn_; })
> 
> Additionally - no idea why I only notice this now, this wants some
> further formatting adjustment: Either
> 
> #define vmap_to_mfn(va)
> ({                                                \
>         const l1_pgentry_t *pl1e_ = virt_to_xen_l1e((unsigned
> long)(va)); \
>         mfn_t
> mfn_;                                                       \
>         BUG_ON(!pl1e_);                                              
>      \
>         mfn_ =
> l1e_get_mfn(*pl1e_);                                       \
>         unmap_domain_page(pl1e_);                                    
>      \
>         mfn_;                                                        
>      \
>     })
> 
> or (preferably imo)
> 
> #define vmap_to_mfn(va)
> ({                                            \
>     const l1_pgentry_t *pl1e_ = virt_to_xen_l1e((unsigned long)(va));
> \
>     mfn_t
> mfn_;                                                       \
>     BUG_ON(!pl1e_);                                                  
>  \
>     mfn_ =
> l1e_get_mfn(*pl1e_);                                       \
>     unmap_domain_page(pl1e_);                                        
>  \
>     mfn_;                                                            
>  \
> })

Will do so in the next rev.

Hongyan



  reply	other threads:[~2020-08-13 16:08 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-27 14:21 [PATCH v8 00/15] switch to domheap for Xen page tables Hongyan Xia
2020-07-27 14:21 ` [PATCH v8 01/15] x86/mm: map_pages_to_xen would better have one exit path Hongyan Xia
2020-07-27 14:21 ` [PATCH v8 02/15] x86/mm: make sure there is one exit path for modify_xen_mappings Hongyan Xia
2020-07-27 14:21 ` [PATCH v8 03/15] x86/mm: rewrite virt_to_xen_l*e Hongyan Xia
2020-08-07 14:05   ` Jan Beulich
2020-08-13 16:08     ` Hongyan Xia [this message]
2020-08-13 17:22       ` Julien Grall
2020-08-18  8:49         ` Jan Beulich
2020-08-18 10:13           ` Julien Grall
2020-08-18 11:30             ` Jan Beulich
2020-08-18 13:08               ` Julien Grall
2020-08-18 16:16                 ` Jan Beulich
2020-11-30 12:13                   ` Hongyan Xia
2020-11-30 12:50                     ` Jan Beulich
2020-11-30 14:13                       ` Hongyan Xia
2020-11-30 14:47                         ` Jan Beulich
2020-12-07 15:28   ` Hongyan Xia
2020-07-27 14:21 ` [PATCH v8 04/15] x86/mm: switch to new APIs in map_pages_to_xen Hongyan Xia
2020-07-27 14:21 ` [PATCH v8 05/15] x86/mm: switch to new APIs in modify_xen_mappings Hongyan Xia
2020-07-27 14:21 ` [PATCH v8 06/15] x86_64/mm: introduce pl2e in paging_init Hongyan Xia
2020-07-27 14:21 ` [PATCH v8 07/15] x86_64/mm: switch to new APIs " Hongyan Xia
2020-08-07 14:09   ` Jan Beulich
2020-07-27 14:21 ` [PATCH v8 08/15] x86_64/mm: switch to new APIs in setup_m2p_table Hongyan Xia
2020-07-27 14:21 ` [PATCH v8 09/15] efi: use new page table APIs in copy_mapping Hongyan Xia
2020-08-07 14:13   ` Jan Beulich
2020-07-27 14:22 ` [PATCH v8 10/15] efi: switch to new APIs in EFI code Hongyan Xia
2020-07-27 14:22 ` [PATCH v8 11/15] x86/smpboot: add exit path for clone_mapping() Hongyan Xia
2020-07-27 14:22 ` [PATCH v8 12/15] x86/smpboot: switch clone_mapping() to new APIs Hongyan Xia
2020-07-27 14:22 ` [PATCH v8 13/15] x86/mm: drop old page table APIs Hongyan Xia
2020-07-27 14:22 ` [PATCH v8 14/15] x86: switch to use domheap page for page tables Hongyan Xia
2020-07-27 14:22 ` [PATCH v8 15/15] x86/mm: drop _new suffix for page table APIs Hongyan Xia

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=a4f02c292a369cfd771790b1d164f139fec6bead.camel@xen.org \
    --to=hx242@xen.org \
    --cc=andrew.cooper3@citrix.com \
    --cc=george.dunlap@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=jgrall@amazon.com \
    --cc=julien@xen.org \
    --cc=roger.pau@citrix.com \
    --cc=sstabellini@kernel.org \
    --cc=wl@xen.org \
    --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 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).