On Mon, Oct 08, 2018 at 02:06:20PM +0800, Peter Xu wrote: > > > -static int vtd_sync_shadow_page_table(VTDAddressSpace *vtd_as) > > > -{ > > > - return vtd_sync_shadow_page_table_range(vtd_as, NULL, 0, UINT64_MAX); > > > + return vtd_sync_shadow_page_table_range(vtd_as, &ce, 0, UINT64_MAX); > > > } > > > > As has been discussed, this will left addr UINT64_MAX, it's better to have > > [start, end] instead of (start, range). > > Hmm, this size is inclusive, so we should be fine. Though I'll take > your advise to use start/end pair to be clearer.
Sorry it's not... Actually vtd_page_walk() itself is not inclusive, so we will need to touch that up if we want to let the whole stack use the [start, end] inclusive way. However I would try not to bother with it since after all page sync operation is per-small-page granularity, so imho missing the last addr UINT64_MAX is ok (as long as we're covering the last page, which is UINT64_MAX - PAGE_SIZE + 1). I'm not sure whether it'll worth it then to change the whole stack into inclusive way... so I'll temporarily keep it as is. Regards, -- Peter Xu