[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC v2 2/4] x86/mem_access: mem_access and mem_event changes to support PV domains
>> +static int mem_access_set_default(struct domain *d, uint64_t >*start_page, >> + xenmem_access_t access) { >> + struct p2m_domain *p2m = p2m_get_hostp2m(d); >> + struct page_info *page; >> + struct page_list_head head; >> + p2m_access_t a; >> + int rc = 0, ctr = 0; >> + >> + if ( !is_pv_domain(d) ) >> + return -ENOSYS; >> + >> + ASSERT(shadow_mode_enabled(d)); >> + >> + rc = p2m_convert_xenmem_access(p2m, access, &a); >> + if ( rc != 0 ) >> + return rc; >> + >> + /* >> + * For PV domains we only support r, rw, rx, rx2rw and rwx access >> + * permissions >> + */ >> + switch ( a ) >> + { >> + case p2m_access_n: >> + case p2m_access_w: >> + case p2m_access_x: >> + case p2m_access_wx: >> + case p2m_access_n2rwx: >> + return -EINVAL; >> + default: >> + break; >> + } >> + >> + paging_lock_recursive(d); >> + >> + if ( *start_page ) >> + { >> + head.next = (struct page_info *)*start_page; > >What guarantees that the continuation page is still on d->page_list, or that >now other page got inserted ahead of it? And anyway you're iterating the list >without holding d->page_alloc_lock. Good point. Should I grab the lock and release it only when the hypercall completes? Thanks, Aravindh _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |