[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [V3 PATCH 3/9] PVH dom0: move some pv specific code to static functions
>>> On 27.11.13 at 03:27, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote: > In this preparatory patch also, some pv specific code is > carved out into static functions. No functionality change. > > Signed-off-by: Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> albeit with a few minor comments: > +/* Pages that are part of page tables must be read only. */ This and the other function's comment seem to be a better fit if they remained at the call sites. > +static __init void mark_pv_pt_pages_rdonly(struct domain *d, > + l4_pgentry_t *l4start, > + unsigned long vpt_start, > + unsigned long nr_pt_pages) > +{ > + unsigned long count; > + struct page_info *page; > + l4_pgentry_t *pl4e; > + l3_pgentry_t *pl3e; > + l2_pgentry_t *pl2e; > + l1_pgentry_t *pl1e; > + > + pl4e = l4start + l4_table_offset(vpt_start); > + pl3e = l4e_to_l3e(*pl4e); > + pl3e += l3_table_offset(vpt_start); > + pl2e = l3e_to_l2e(*pl3e); > + pl2e += l2_table_offset(vpt_start); > + pl1e = l2e_to_l1e(*pl2e); > + pl1e += l1_table_offset(vpt_start); > + for ( count = 0; count < nr_pt_pages; count++ ) > + { > + l1e_remove_flags(*pl1e, _PAGE_RW); > + page = mfn_to_page(l1e_get_pfn(*pl1e)); > + > + /* Read-only mapping + PGC_allocated + page-table page. */ > + page->count_info = PGC_allocated | 3; > + page->u.inuse.type_info |= PGT_validated | 1; > + > + /* Top-level p.t. is pinned. */ > + if ( (page->u.inuse.type_info & PGT_type_mask) == > + (!is_pv_32on64_domain(d) ? > + PGT_l4_page_table : PGT_l3_page_table) ) > + { > + page->count_info += 1; > + page->u.inuse.type_info += 1 | PGT_pinned; > + } > + > + /* Iterate. */ > + if ( !((unsigned long)++pl1e & (PAGE_SIZE - 1)) ) > + { > + if ( !((unsigned long)++pl2e & (PAGE_SIZE - 1)) ) > + { > + if ( !((unsigned long)++pl3e & (PAGE_SIZE - 1)) ) > + pl3e = l4e_to_l3e(*++pl4e); > + pl2e = l3e_to_l2e(*pl3e); > + } > + pl1e = l2e_to_l1e(*pl2e); > + } > + } > +} > + > +/* Set up the phys->machine table if not part of the initial mapping. */ Even more so here, since the second half of the comment is actually referring to code that you left at the call site. > +static __init void setup_pv_physmap(struct domain *d, unsigned long > pgtbl_pfn, > + unsigned long v_start, unsigned long > v_end, > + unsigned long vphysmap_start, > + unsigned long vphysmap_end, > + unsigned long nr_pages) > +{ > + struct page_info *page = NULL; > + l4_pgentry_t *pl4e = NULL, *l4start; Pointless initializer. > + l3_pgentry_t *pl3e = NULL; > + l2_pgentry_t *pl2e = NULL; > + l1_pgentry_t *pl1e = NULL; > + > + l4start = map_domain_page(pgtbl_pfn); Instead, this one could become the initializer of l4start. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |