[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 4/6] xen/arm: implement get/put_page_type
On Fri, 2012-07-20 at 16:05 +0100, Stefano Stabellini wrote: > Add a basic get_page_type and put_page_type implementation: the > implementation is similar to the x86 one, without all the code to handle > shadow pagetables and other unneeded features. > > Also remove PGT_shared_page, that is unused. I suppose it'll come back some day? Is the existing page sharing stuff completely contained within the x86 arch code and not in generic code at all? > +int get_page_type(struct page_info *page, unsigned long type) > +{ > + unsigned long nx, x, y = page->u.inuse.type_info; > + > + for ( ; ; ) > + { > + x = y; > + nx = x + 1; > + if ( unlikely((nx & PGT_count_mask) == 0) ) > + { > + printk("Type count overflow on pfn %lx", page_to_mfn(page)); > + return -EINVAL; > + } > + else if ( (x & PGT_count_mask) == 0 ) > + { > + struct domain *d = page_get_owner(page); > + > + if ( (x & PGT_type_mask) != type ) > + { > + /* > + * On type change we check to flush stale TLB entries. This > + * may be unnecessary (e.g., page was GDT/LDT) but those > + * circumstances should be very rare. > + */ > + cpumask_t mask; > + > + cpumask_copy(&mask, d->domain_dirty_cpumask); > + > + /* Don't flush if the timestamp is old enough */ > + tlbflush_filter(mask, page->tlbflush_timestamp); > + > + if ( unlikely(!cpumask_empty(&mask)) ) > + { > + perfc_incr(need_flush_tlb_flush); > + flush_tlb_mask(&mask); > + } > + > + /* We lose existing type and validity. */ > + nx &= ~(PGT_type_mask | PGT_validated); > + nx |= type; > + > + /* No special validation needed for writable pages. */ > + /* Page tables and GDT/LDT need to be scanned for validity. > */ There is no GDT/LDT on ARM. And do we really need PGT_validated when there is no direct paging support? (Hrm, maybe I'm confused about what PGT_validated means). In fact, do the types make any sense at all for ARM? Is PGT_writable is really only meaningful when you have direct paging? Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |