[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5] x86/p2m: use large pages for MMIO mappings
On 27/01/16 14:40, Jan Beulich wrote: > >>>>> int set_mmio_p2m_entry(struct domain *d, unsigned long gfn, mfn_t mfn, >>>>> - p2m_access_t access) >>>>> + unsigned int order, p2m_access_t access) >>>>> { >>>>> - return set_typed_p2m_entry(d, gfn, mfn, p2m_mmio_direct, access); >>>>> + if ( order && >>>>> + rangeset_overlaps_range(mmio_ro_ranges, mfn_x(mfn), >>>>> + mfn_x(mfn) + (1UL << order) - 1) && >>>>> + !rangeset_contains_range(mmio_ro_ranges, mfn_x(mfn), >>>>> + mfn_x(mfn) + (1UL << order) - 1) ) >>>>> + return order; >>>> Should this not be a hard error? Even retrying with a lower order is >>>> going fail. >>> Why? The latest when order == 0, rangeset_overlaps_range() >>> will return the same as rangeset_contains_range(), and hence >>> the condition above will always be false (one of the two reasons >>> for checking order first here). >> It isn't the order check which is an issue. >> >> One way or another, if the original (mfn/order) fails the rangeset >> checks, the overall call is going to fail, but it will be re-executed >> repeatedly with an order decreasing to 0. Wouldn't it be better just to >> short-circuit this back&forth? > But this won't necessarily go down to order 0. Short-circuiting > would mean taking PAGE_ORDER_2M and PAGE_ORDER_1G into > account here, which would imo severely hamper readability. Even when this check starts passing, the subsequent set_typed_p2m_entry() will fail for writeable mappings, after having constructed small pages up to the boundary of the RO region. > >> Relatedly, is there actually anything wrong with making a superpage >> read-only mapping over some scattered read-only 4K pages? > I'm afraid I don't understand: "scattered pages" and "superpage > mapping" don't seem to fit together for me. If there is a single 4K page in the RO region, and the caller attempts to create a RO 2M superpage which includes the 4K region, these checks will force the use of 4K mappings even though the 2M mapping would be fine. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |