From: "Jan Beulich" <JBeulich@suse.com> To: Julien Grall <julien.grall@arm.com>, George Dunlap <George.Dunlap@eu.citrix.com> Cc: Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wei.liu2@citrix.com>, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>, Andrew Cooper <andrew.cooper3@citrix.com>, Ian Jackson <Ian.Jackson@eu.citrix.com>, Tim Deegan <tim@xen.org>, Tamas K Lengyel <tamas@tklengyel.com>, xen-devel <xen-devel@lists.xenproject.org>, Roger Pau Monne <roger.pau@citrix.com> Subject: Re: [PATCH 13/14] xen/mm: Convert {s, g}et_gpfn_from_mfn() to use typesafe MFN Date: Fri, 10 May 2019 07:21:48 -0600 [thread overview] Message-ID: <5CD57AEC020000780022D885@prv1-mh.provo.novell.com> (raw) In-Reply-To: <20190507151458.29350-14-julien.grall@arm.com> >>> On 07.05.19 at 17:14, <julien.grall@arm.com> wrote: > --- a/xen/arch/x86/mm/mem_sharing.c > +++ b/xen/arch/x86/mm/mem_sharing.c > @@ -391,11 +391,12 @@ static inline void mem_sharing_gfn_destroy(struct page_info *page, > xfree(gfn_info); > } > > -static struct page_info* mem_sharing_lookup(unsigned long mfn) > +static struct page_info* mem_sharing_lookup(mfn_t mfn) Could you fix the style issue (swapped * and blank) here at the same time? > @@ -1030,19 +1031,19 @@ long p2m_pt_audit_p2m(struct p2m_domain *p2m) > /* check for 1GB super page */ > if ( l3e_get_flags(l3e[i3]) & _PAGE_PSE ) > { > - mfn = l3e_get_pfn(l3e[i3]); > - ASSERT(mfn_valid(_mfn(mfn))); > + mfn = l3e_get_mfn(l3e[i3]); > + ASSERT(mfn_valid(mfn)); > /* we have to cover 512x512 4K pages */ > for ( i2 = 0; > i2 < (L2_PAGETABLE_ENTRIES * L1_PAGETABLE_ENTRIES); > i2++) > { > - m2pfn = get_gpfn_from_mfn(mfn+i2); > + m2pfn = get_pfn_from_mfn(mfn_add(mfn, i2)); > if ( m2pfn != (gfn + i2) ) > { > pmbad++; > - P2M_PRINTK("mismatch: gfn %#lx -> mfn %#lx" > - " -> gfn %#lx\n", gfn+i2, mfn+i2, > + P2M_PRINTK("mismatch: gfn %#lx -> mfn %"PRI_mfn" gfn %#lx\n", > + gfn + i2, mfn_x(mfn_add(mfn, i2)), I think the shorter mfn_x(mfn) + i2 would be preferable here (and similarly below). > @@ -1099,19 +1100,19 @@ long p2m_pt_audit_p2m(struct p2m_domain *p2m) > entry_count++; > continue; > } > - mfn = l1e_get_pfn(l1e[i1]); > - ASSERT(mfn_valid(_mfn(mfn))); > - m2pfn = get_gpfn_from_mfn(mfn); > + mfn = l1e_get_mfn(l1e[i1]); > + ASSERT(mfn_valid(mfn)); > + m2pfn = get_pfn_from_mfn(mfn); > if ( m2pfn != gfn && > type != p2m_mmio_direct && > !p2m_is_grant(type) && > !p2m_is_shared(type) ) > { > pmbad++; > - printk("mismatch: gfn %#lx -> mfn %#lx" > - " -> gfn %#lx\n", gfn, mfn, m2pfn); > - P2M_PRINTK("mismatch: gfn %#lx -> mfn %#lx" > - " -> gfn %#lx\n", gfn, mfn, m2pfn); > + printk("mismatch: gfn %#lx -> mfn %"PRI_mfn" -> gfn %#lx\n", > + gfn, mfn_x(mfn), m2pfn); > + P2M_PRINTK("mismatch: gfn %#lx -> mfn %"PRI_mfn" -> gfn %#lx\n", > + gfn, mfn_x(mfn), m2pfn); George, do we really mean to have printk() and P2M_PRINTK() here? > @@ -2795,54 +2795,54 @@ void audit_p2m(struct domain *d, > spin_lock(&d->page_alloc_lock); > page_list_for_each ( page, &d->page_list ) > { > - mfn = mfn_x(page_to_mfn(page)); > + mfn = page_to_mfn(page); > > - P2M_PRINTK("auditing guest page, mfn=%#lx\n", mfn); > + P2M_PRINTK("auditing guest page, mfn=%"PRI_mfn"\n", mfn_x(mfn)); > > od = page_get_owner(page); > > if ( od != d ) > { > - P2M_PRINTK("wrong owner %#lx -> %p(%u) != %p(%u)\n", > - mfn, od, (od?od->domain_id:-1), d, d->domain_id); > + P2M_PRINTK("wrong owner %"PRI_mfn" -> %p(%u) != %p(%u)\n", > + mfn_x(mfn), od, (od?od->domain_id:-1), d, d->domain_id); Please be careful not to drop 0x prefixes from the resulting output (which are an effect of the # flag that you delete), at least when log messages contain a mix of hex and dec numbers. (I am, btw, not convinced that switching to PRI_mfn here is helpful.) Also would you mind fixing the formatting (missing blanks) here? > --- a/xen/arch/x86/x86_64/traps.c > +++ b/xen/arch/x86/x86_64/traps.c > @@ -184,7 +184,8 @@ void vcpu_show_registers(const struct vcpu *v) > > void show_page_walk(unsigned long addr) > { > - unsigned long pfn, mfn = read_cr3() >> PAGE_SHIFT; > + unsigned long pfn; > + mfn_t mfn = maddr_to_mfn(read_cr3()); I realize you simply take what has been there and transform it, but maddr_to_mfn() (other than shifting by PAGE_SHIFT) is not truly applicable here: What the CR3 register holds is not a physical address, both the low twelve bits as well as the high twelve ones have different meaning. The shift is correct currently because the high ones are (right now) zero on reads. Please consider AND-ing with X86_CR3_ADDR_MASK (or keeping the shift). > --- a/xen/common/page_alloc.c > +++ b/xen/common/page_alloc.c > @@ -1424,7 +1424,7 @@ static void free_heap_pages( > > /* This page is not a guest frame any more. */ > page_set_owner(&pg[i], NULL); /* set_gpfn_from_mfn snoops pg owner */ > - set_gpfn_from_mfn(mfn_x(mfn) + i, INVALID_M2P_ENTRY); > + set_pfn_from_mfn(mfn_add(mfn, + i), INVALID_M2P_ENTRY); Stray leftover + ? > --- a/xen/include/asm-x86/mm.h > +++ b/xen/include/asm-x86/mm.h > @@ -492,22 +492,26 @@ extern struct domain *dom_xen, *dom_io, *dom_cow; /* for vmcoreinfo */ > */ > extern bool machine_to_phys_mapping_valid; > > -static inline void set_gpfn_from_mfn(unsigned long mfn, unsigned long pfn) > +static inline void set_pfn_from_mfn(mfn_t mfn, unsigned long pfn) > { > - struct domain *d = page_get_owner(mfn_to_page(_mfn(mfn))); > + const unsigned long mfn_ = mfn_x(mfn); I'm not overly happy to see a trailing underscore used outside a macro definition, but other than perhaps "frame" this may indeed be the best thing to do here. Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
WARNING: multiple messages have this Message-ID (diff)
From: "Jan Beulich" <JBeulich@suse.com> To: "Julien Grall" <julien.grall@arm.com>, "George Dunlap" <George.Dunlap@eu.citrix.com> Cc: Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wei.liu2@citrix.com>, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>, Andrew Cooper <andrew.cooper3@citrix.com>, Ian Jackson <Ian.Jackson@eu.citrix.com>, Tim Deegan <tim@xen.org>, Tamas K Lengyel <tamas@tklengyel.com>, xen-devel <xen-devel@lists.xenproject.org>, Roger Pau Monne <roger.pau@citrix.com> Subject: Re: [Xen-devel] [PATCH 13/14] xen/mm: Convert {s, g}et_gpfn_from_mfn() to use typesafe MFN Date: Fri, 10 May 2019 07:21:48 -0600 [thread overview] Message-ID: <5CD57AEC020000780022D885@prv1-mh.provo.novell.com> (raw) Message-ID: <20190510132148.zMupdAyDGTP-_B78Is1fUnKfRyZHRCHE2o5HilUC674@z> (raw) In-Reply-To: <20190507151458.29350-14-julien.grall@arm.com> >>> On 07.05.19 at 17:14, <julien.grall@arm.com> wrote: > --- a/xen/arch/x86/mm/mem_sharing.c > +++ b/xen/arch/x86/mm/mem_sharing.c > @@ -391,11 +391,12 @@ static inline void mem_sharing_gfn_destroy(struct page_info *page, > xfree(gfn_info); > } > > -static struct page_info* mem_sharing_lookup(unsigned long mfn) > +static struct page_info* mem_sharing_lookup(mfn_t mfn) Could you fix the style issue (swapped * and blank) here at the same time? > @@ -1030,19 +1031,19 @@ long p2m_pt_audit_p2m(struct p2m_domain *p2m) > /* check for 1GB super page */ > if ( l3e_get_flags(l3e[i3]) & _PAGE_PSE ) > { > - mfn = l3e_get_pfn(l3e[i3]); > - ASSERT(mfn_valid(_mfn(mfn))); > + mfn = l3e_get_mfn(l3e[i3]); > + ASSERT(mfn_valid(mfn)); > /* we have to cover 512x512 4K pages */ > for ( i2 = 0; > i2 < (L2_PAGETABLE_ENTRIES * L1_PAGETABLE_ENTRIES); > i2++) > { > - m2pfn = get_gpfn_from_mfn(mfn+i2); > + m2pfn = get_pfn_from_mfn(mfn_add(mfn, i2)); > if ( m2pfn != (gfn + i2) ) > { > pmbad++; > - P2M_PRINTK("mismatch: gfn %#lx -> mfn %#lx" > - " -> gfn %#lx\n", gfn+i2, mfn+i2, > + P2M_PRINTK("mismatch: gfn %#lx -> mfn %"PRI_mfn" gfn %#lx\n", > + gfn + i2, mfn_x(mfn_add(mfn, i2)), I think the shorter mfn_x(mfn) + i2 would be preferable here (and similarly below). > @@ -1099,19 +1100,19 @@ long p2m_pt_audit_p2m(struct p2m_domain *p2m) > entry_count++; > continue; > } > - mfn = l1e_get_pfn(l1e[i1]); > - ASSERT(mfn_valid(_mfn(mfn))); > - m2pfn = get_gpfn_from_mfn(mfn); > + mfn = l1e_get_mfn(l1e[i1]); > + ASSERT(mfn_valid(mfn)); > + m2pfn = get_pfn_from_mfn(mfn); > if ( m2pfn != gfn && > type != p2m_mmio_direct && > !p2m_is_grant(type) && > !p2m_is_shared(type) ) > { > pmbad++; > - printk("mismatch: gfn %#lx -> mfn %#lx" > - " -> gfn %#lx\n", gfn, mfn, m2pfn); > - P2M_PRINTK("mismatch: gfn %#lx -> mfn %#lx" > - " -> gfn %#lx\n", gfn, mfn, m2pfn); > + printk("mismatch: gfn %#lx -> mfn %"PRI_mfn" -> gfn %#lx\n", > + gfn, mfn_x(mfn), m2pfn); > + P2M_PRINTK("mismatch: gfn %#lx -> mfn %"PRI_mfn" -> gfn %#lx\n", > + gfn, mfn_x(mfn), m2pfn); George, do we really mean to have printk() and P2M_PRINTK() here? > @@ -2795,54 +2795,54 @@ void audit_p2m(struct domain *d, > spin_lock(&d->page_alloc_lock); > page_list_for_each ( page, &d->page_list ) > { > - mfn = mfn_x(page_to_mfn(page)); > + mfn = page_to_mfn(page); > > - P2M_PRINTK("auditing guest page, mfn=%#lx\n", mfn); > + P2M_PRINTK("auditing guest page, mfn=%"PRI_mfn"\n", mfn_x(mfn)); > > od = page_get_owner(page); > > if ( od != d ) > { > - P2M_PRINTK("wrong owner %#lx -> %p(%u) != %p(%u)\n", > - mfn, od, (od?od->domain_id:-1), d, d->domain_id); > + P2M_PRINTK("wrong owner %"PRI_mfn" -> %p(%u) != %p(%u)\n", > + mfn_x(mfn), od, (od?od->domain_id:-1), d, d->domain_id); Please be careful not to drop 0x prefixes from the resulting output (which are an effect of the # flag that you delete), at least when log messages contain a mix of hex and dec numbers. (I am, btw, not convinced that switching to PRI_mfn here is helpful.) Also would you mind fixing the formatting (missing blanks) here? > --- a/xen/arch/x86/x86_64/traps.c > +++ b/xen/arch/x86/x86_64/traps.c > @@ -184,7 +184,8 @@ void vcpu_show_registers(const struct vcpu *v) > > void show_page_walk(unsigned long addr) > { > - unsigned long pfn, mfn = read_cr3() >> PAGE_SHIFT; > + unsigned long pfn; > + mfn_t mfn = maddr_to_mfn(read_cr3()); I realize you simply take what has been there and transform it, but maddr_to_mfn() (other than shifting by PAGE_SHIFT) is not truly applicable here: What the CR3 register holds is not a physical address, both the low twelve bits as well as the high twelve ones have different meaning. The shift is correct currently because the high ones are (right now) zero on reads. Please consider AND-ing with X86_CR3_ADDR_MASK (or keeping the shift). > --- a/xen/common/page_alloc.c > +++ b/xen/common/page_alloc.c > @@ -1424,7 +1424,7 @@ static void free_heap_pages( > > /* This page is not a guest frame any more. */ > page_set_owner(&pg[i], NULL); /* set_gpfn_from_mfn snoops pg owner */ > - set_gpfn_from_mfn(mfn_x(mfn) + i, INVALID_M2P_ENTRY); > + set_pfn_from_mfn(mfn_add(mfn, + i), INVALID_M2P_ENTRY); Stray leftover + ? > --- a/xen/include/asm-x86/mm.h > +++ b/xen/include/asm-x86/mm.h > @@ -492,22 +492,26 @@ extern struct domain *dom_xen, *dom_io, *dom_cow; /* for vmcoreinfo */ > */ > extern bool machine_to_phys_mapping_valid; > > -static inline void set_gpfn_from_mfn(unsigned long mfn, unsigned long pfn) > +static inline void set_pfn_from_mfn(mfn_t mfn, unsigned long pfn) > { > - struct domain *d = page_get_owner(mfn_to_page(_mfn(mfn))); > + const unsigned long mfn_ = mfn_x(mfn); I'm not overly happy to see a trailing underscore used outside a macro definition, but other than perhaps "frame" this may indeed be the best thing to do here. Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
next prev parent reply other threads:[~2019-05-10 13:21 UTC|newest] Thread overview: 154+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-05-07 15:14 [PATCH 00/14] xen/arm: Properly disable M2P on Arm Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-07 15:14 ` [PATCH 01/14] xen/arm: Use mfn_to_pdx instead of pfn_to_pdx when possible Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-09 17:50 ` Stefano Stabellini 2019-05-09 17:50 ` [Xen-devel] " Stefano Stabellini 2019-05-07 15:14 ` [PATCH 02/14] xen/x86: Constify the parameter "d" in mfn_to_gfn Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-07 15:14 ` [PATCH 03/14] xen/x86: Make mfn_to_gfn typesafe Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-10 11:35 ` Jan Beulich 2019-05-10 11:35 ` [Xen-devel] " Jan Beulich 2019-05-10 13:02 ` Julien Grall 2019-05-10 13:02 ` [Xen-devel] " Julien Grall 2019-05-10 13:24 ` Jan Beulich 2019-05-10 13:24 ` [Xen-devel] " Jan Beulich 2019-05-10 13:25 ` Julien Grall 2019-05-10 13:25 ` [Xen-devel] " Julien Grall 2019-05-20 15:13 ` Julien Grall 2019-05-20 15:13 ` [Xen-devel] " Julien Grall 2019-05-28 17:29 ` George Dunlap 2019-05-28 17:29 ` [Xen-devel] " George Dunlap 2019-05-29 11:39 ` Julien Grall 2019-05-29 11:39 ` [Xen-devel] " Julien Grall 2019-05-07 15:14 ` [PATCH 04/14] xen/x86: Use mfn_to_gfn rather than mfn_to_gmfn Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-10 12:15 ` Jan Beulich 2019-05-10 12:15 ` [Xen-devel] " Jan Beulich 2019-05-10 13:07 ` Julien Grall 2019-05-10 13:07 ` [Xen-devel] " Julien Grall 2019-05-07 15:14 ` [PATCH 05/14] xen/grant-table: Make arch specific macros typesafe Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-09 17:54 ` Stefano Stabellini 2019-05-09 17:54 ` [Xen-devel] " Stefano Stabellini 2019-05-07 15:14 ` [PATCH 06/14] xen: Convert hotplug page function to use typesafe MFN Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-09 18:01 ` Stefano Stabellini 2019-05-09 18:01 ` [Xen-devel] " Stefano Stabellini 2019-05-09 18:10 ` Julien Grall 2019-05-09 18:10 ` [Xen-devel] " Julien Grall 2019-05-07 15:14 ` [PATCH 07/14] xen: Convert is_xen_fixed_mfn " Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-24 15:16 ` George Dunlap 2019-05-24 15:16 ` [Xen-devel] " George Dunlap 2019-05-07 15:14 ` [PATCH 08/14] xen: Convert is_xen_heap_mfn " Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-24 15:15 ` George Dunlap 2019-05-24 15:15 ` [Xen-devel] " George Dunlap 2019-05-07 15:14 ` [PATCH 09/14] xen: Introduce HAS_M2P config and use to protect mfn_to_gmfn call Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-09 18:06 ` Stefano Stabellini 2019-05-09 18:06 ` [Xen-devel] " Stefano Stabellini 2019-05-09 18:12 ` Julien Grall 2019-05-09 18:12 ` [Xen-devel] " Julien Grall 2019-05-09 18:16 ` Stefano Stabellini 2019-05-09 18:16 ` [Xen-devel] " Stefano Stabellini 2019-05-09 18:29 ` Julien Grall 2019-05-09 18:29 ` [Xen-devel] " Julien Grall 2019-05-09 19:49 ` Stefano Stabellini 2019-05-09 19:49 ` [Xen-devel] " Stefano Stabellini 2019-05-10 12:31 ` Jan Beulich 2019-05-10 12:31 ` [Xen-devel] " Jan Beulich 2019-05-10 13:22 ` Julien Grall 2019-05-10 13:22 ` [Xen-devel] " Julien Grall 2019-05-10 13:32 ` Jan Beulich 2019-05-10 13:32 ` [Xen-devel] " Jan Beulich 2019-05-10 13:41 ` Julien Grall 2019-05-10 13:41 ` [Xen-devel] " Julien Grall 2019-05-10 13:45 ` Jan Beulich 2019-05-10 13:45 ` [Xen-devel] " Jan Beulich 2019-05-10 14:04 ` Julien Grall 2019-05-10 14:04 ` [Xen-devel] " Julien Grall 2019-05-10 14:19 ` Jan Beulich 2019-05-10 14:19 ` [Xen-devel] " Jan Beulich 2019-05-10 14:34 ` Julien Grall 2019-05-10 14:34 ` [Xen-devel] " Julien Grall 2019-05-22 16:03 ` Julien Grall 2019-05-22 16:03 ` [Xen-devel] " Julien Grall 2019-05-07 15:14 ` [PATCH 10/14] xen: Remove mfn_to_gmfn macro Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-07 15:14 ` [PATCH 11/14] xen/x86: mm: Re-implement set_gpfn_from_mfn() as a static inline function Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-10 12:43 ` Jan Beulich 2019-05-10 12:43 ` [Xen-devel] " Jan Beulich 2019-05-10 13:27 ` Julien Grall 2019-05-10 13:27 ` [Xen-devel] " Julien Grall 2019-05-10 13:35 ` Jan Beulich 2019-05-10 13:35 ` [Xen-devel] " Jan Beulich 2019-05-10 13:41 ` Julien Grall 2019-05-10 13:41 ` [Xen-devel] " Julien Grall 2019-05-10 13:48 ` Jan Beulich 2019-05-10 13:48 ` [Xen-devel] " Jan Beulich 2019-05-10 14:05 ` Julien Grall 2019-05-10 14:05 ` [Xen-devel] " Julien Grall 2019-05-10 14:21 ` Jan Beulich 2019-05-10 14:21 ` [Xen-devel] " Jan Beulich 2019-05-10 14:48 ` Julien Grall 2019-05-10 14:48 ` [Xen-devel] " Julien Grall 2019-05-07 15:14 ` [PATCH 12/14] xen/x86: pv: Convert update_intpte() to use typesafe MFN Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-10 12:54 ` Jan Beulich 2019-05-10 12:54 ` [Xen-devel] " Jan Beulich 2019-05-10 13:28 ` Julien Grall 2019-05-10 13:28 ` [Xen-devel] " Julien Grall 2019-05-07 15:14 ` [PATCH 13/14] xen/mm: Convert {s, g}et_gpfn_from_mfn() " Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-07 20:27 ` Tamas K Lengyel 2019-05-07 20:27 ` [Xen-devel] " Tamas K Lengyel 2019-05-09 18:19 ` Stefano Stabellini 2019-05-09 18:19 ` [Xen-devel] " Stefano Stabellini 2019-05-10 13:21 ` Jan Beulich [this message] 2019-05-10 13:21 ` Jan Beulich 2019-05-10 13:27 ` Andrew Cooper 2019-05-10 13:27 ` [Xen-devel] " Andrew Cooper 2019-05-10 13:34 ` Julien Grall 2019-05-10 13:34 ` [Xen-devel] " Julien Grall 2019-05-10 13:41 ` Jan Beulich 2019-05-10 13:41 ` [Xen-devel] " Jan Beulich 2019-05-10 13:46 ` Julien Grall 2019-05-10 13:46 ` [Xen-devel] " Julien Grall 2019-05-10 14:02 ` Jan Beulich 2019-05-10 14:02 ` [Xen-devel] " Jan Beulich 2019-05-10 14:05 ` Andrew Cooper 2019-05-10 14:05 ` [Xen-devel] " Andrew Cooper 2019-05-10 14:08 ` Julien Grall 2019-05-10 14:08 ` [Xen-devel] " Julien Grall 2019-05-10 14:09 ` Andrew Cooper 2019-05-10 14:09 ` [Xen-devel] " Andrew Cooper 2019-05-10 14:14 ` Jan Beulich 2019-05-10 14:14 ` [Xen-devel] " Jan Beulich 2019-05-10 14:27 ` Andrew Cooper 2019-05-10 14:27 ` [Xen-devel] " Andrew Cooper 2019-05-24 16:24 ` George Dunlap 2019-05-24 16:24 ` [Xen-devel] " George Dunlap 2019-05-29 16:27 ` Julien Grall 2019-05-29 16:27 ` [Xen-devel] " Julien Grall 2019-05-29 16:29 ` George Dunlap 2019-05-29 16:29 ` [Xen-devel] " George Dunlap 2019-05-24 16:35 ` George Dunlap 2019-05-24 16:35 ` [Xen-devel] " George Dunlap 2019-05-07 15:14 ` [PATCH 14/14] xen/mm: Provide dummy M2P-related helpers when !CONFIG_HAVE_M2P Julien Grall 2019-05-07 15:14 ` [Xen-devel] " Julien Grall 2019-05-09 18:20 ` Stefano Stabellini 2019-05-09 18:20 ` [Xen-devel] " Stefano Stabellini 2019-05-10 13:28 ` Jan Beulich 2019-05-10 13:28 ` [Xen-devel] " Jan Beulich 2019-05-10 13:29 ` Julien Grall 2019-05-10 13:29 ` [Xen-devel] " Julien Grall 2019-05-10 13:37 ` Jan Beulich 2019-05-10 13:37 ` [Xen-devel] " Jan Beulich 2019-05-10 13:38 ` Julien Grall 2019-05-10 13:38 ` [Xen-devel] " Julien Grall 2019-05-24 16:51 ` George Dunlap 2019-05-24 16:51 ` [Xen-devel] " George Dunlap
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=5CD57AEC020000780022D885@prv1-mh.provo.novell.com \ --to=jbeulich@suse.com \ --cc=George.Dunlap@eu.citrix.com \ --cc=Ian.Jackson@eu.citrix.com \ --cc=andrew.cooper3@citrix.com \ --cc=julien.grall@arm.com \ --cc=konrad.wilk@oracle.com \ --cc=roger.pau@citrix.com \ --cc=sstabellini@kernel.org \ --cc=tamas@tklengyel.com \ --cc=tim@xen.org \ --cc=wei.liu2@citrix.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: linkBe 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.