[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] PCI passthrough for HVM with stubdomain broken by "tools/libxl: handle the iomem parameter with the memory_mapping hcall"
>>> On 23.06.16 at 11:23, <marmarek@xxxxxxxxxxxxxxxxxxxxxx> wrote: > On Thu, Jun 23, 2016 at 11:18:24AM +0200, Marek Marczykowski-Górecki wrote: >> On Thu, Jun 23, 2016 at 03:12:47AM -0600, Jan Beulich wrote: >> > >>> On 23.06.16 at 10:57, <marmarek@xxxxxxxxxxxxxxxxxxxxxx> wrote: >> > > On Thu, Jun 23, 2016 at 02:32:29AM -0600, Jan Beulich wrote: >> > >> I wonder what good the duplication of the returned domain ID does: I'm >> > >> tempted to remove the one in the command-specific structure. Does >> > >> anyone have insight into why it was done that way? >> > > >> > > Isn't XEN_DOMCTL_getdomaininfo supposed to return info about first >> > > existing domain with ID >= passed one? Reading various comments in code >> > > it looks to be used to domain enumeration. This patch changes this >> > > behaviour. >> > >> > No, it doesn't. It adjusts the behavior only for the DM case (which >> > isn't supposed to get information on other than the target domain, >> > i.e. in this one specific case the very domain ID needs to be passed >> > in). >> >> int xc_domain_getinfo(xc_interface *xch, >> uint32_t first_domid, >> unsigned int max_doms, >> xc_dominfo_t *info) >> { >> unsigned int nr_doms; >> uint32_t next_domid = first_domid; >> DECLARE_DOMCTL; >> int rc = 0; >> >> memset(info, 0, max_doms*sizeof(xc_dominfo_t)); >> >> for ( nr_doms = 0; nr_doms < max_doms; nr_doms++ ) >> { >> domctl.cmd = XEN_DOMCTL_getdomaininfo; >> domctl.domain = (domid_t)next_domid; >> if ( (rc = do_domctl(xch, &domctl)) < 0 ) >> break; >> info->domid = (uint16_t)domctl.domain; >> (...) >> next_domid = (uint16_t)domctl.domain + 1; >> >> >> Looks like heavily dependent on XEN_DOMCTL_getdomaininfo returning next > valid >> domain. > > Hmm, looks like I've misread you patch. Reading again... > > But now I see rcu_read_lock(&domlist_read_lock) is gets called only when > looping over domains, but rcu_read_unlock is called in any case. Is it > correct? How that? There is this third hunk: @@ -885,6 +892,9 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xe copyback = 1; getdomaininfo_out: + if ( dom == DOMID_INVALID ) + break; + rcu_read_unlock(&domlist_read_lock); d = NULL; break; Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |