[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 6/6] x86/mem-paging: consistently use gfn_t
Hi Jan, On 20/04/2020 07:03, Jan Beulich wrote: On 18.04.2020 13:14, Julien Grall wrote:On 16/04/2020 16:48, Jan Beulich wrote:--- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2151,16 +2151,17 @@ static int mod_l1_entry(l1_pgentry_t *pl paging_mode_translate(pg_dom) ) { p2m_type_t p2mt; + unsigned long gfn = l1e_get_pfn(nl1e);How about making gfn a gfn_t directly? This would avoid code churn when...p2m_query_t q = l1e_get_flags(nl1e) & _PAGE_RW ? P2M_ALLOC | P2M_UNSHARE : P2M_ALLOC; - page = get_page_from_gfn(pg_dom, l1e_get_pfn(nl1e), &p2mt, q); + page = get_page_from_gfn(pg_dom, gfn, &p2mt, q);... I am going to convert get_page_from_gfn() to use typesafe gfn. See [1].Ah, yes, I can certainly do so.@@ -89,16 +88,15 @@ void p2m_mem_paging_drop_page(struct dom * already sent to the pager. In this case the caller has to try again until the * gfn is fully paged in again. */ -void p2m_mem_paging_populate(struct domain *d, unsigned long gfn_l) +void p2m_mem_paging_populate(struct domain *d, gfn_t gfn) { struct vcpu *v = current; vm_event_request_t req = { .reason = VM_EVENT_REASON_MEM_PAGING, - .u.mem_paging.gfn = gfn_l + .u.mem_paging.gfn = gfn_x(gfn) }; p2m_type_t p2mt; p2m_access_t a; - gfn_t gfn = _gfn(gfn_l); mfn_t mfn; struct p2m_domain *p2m = p2m_get_hostp2m(d); int rc = vm_event_claim_slot(d, d->vm_event_paging); @@ -107,7 +105,7 @@ void p2m_mem_paging_populate(struct doma if ( rc == -EOPNOTSUPP ) { gdprintk(XENLOG_ERR, "Dom%d paging gfn %lx yet no ring in place\n", - d->domain_id, gfn_l); + d->domain_id, gfn_x(gfn));Please use PRI_gfn in the format string to match the argument change.I can do this, but iirc in one of my replies to one of your changes I've indicated I'm not fully convinced of such changes. I guess you are referring to [2]. The discussion was quite different, we were arguing whether PRI_mfn could be used for other value than mfn_x(mfn). But then you said you were happy with PRI_xen_pfn. Aside the return type of gfn_x(gfn) argument, if we use %PRI_gfn then we can finally have a consistent way to print a GFN and easily change it. [1] https://lore.kernel.org/xen-devel/20200322161418.31606-18-julien@xxxxxxx/Looking over this I notice (only now) that this patch is not consistent with its dropping of # in PRI_[gm]fn uses: You don't drop them in e.g. Viridian's enable_hypercall_page(), but you do in e.g. guest_wrmsr_xen(). Dropping is The Right Thing To Do (tm), so please do so uniformly. Ok. Cheers, [2] <2be87441-05a6-6b58-23e3-da467230ffe7@xxxxxxx> Jan -- Julien Grall
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |