From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Chen, Tiejun" Subject: Re: [RFC][v2][PATCH 07/14] xen/passthrough: extend hypercall to support rdm reservation policy Date: Mon, 25 May 2015 18:50:48 +0800 Message-ID: <5562FE88.9050107@intel.com> References: <1432287314-4388-1-git-send-email-tiejun.chen@intel.com> <1432287314-4388-8-git-send-email-tiejun.chen@intel.com> <555F0615.8030809@citrix.com> <5562846D.1060604@intel.com> <5562F337.7070709@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <5562F337.7070709@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Julien Grall , JBeulich@suse.com, tim@xen.org, konrad.wilk@oracle.com, andrew.cooper3@citrix.com, kevin.tian@intel.com, yang.z.zhang@intel.com, ian.campbell@citrix.com, wei.liu2@citrix.com, Ian.Jackson@eu.citrix.com, stefano.stabellini@citrix.com Cc: xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 2015/5/25 18:02, Julien Grall wrote: > > > On 25/05/2015 04:09, Chen, Tiejun wrote: >> On 2015/5/22 18:33, Julien Grall wrote: >>> Hi, >>> >>> On 22/05/2015 10:35, Tiejun Chen wrote: >>>> diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h >>>> index 0c0ea4a..203c80e 100644 >>>> --- a/xen/include/public/domctl.h >>>> +++ b/xen/include/public/domctl.h >>>> @@ -499,6 +499,11 @@ struct xen_domctl_assign_device { >>>> XEN_GUEST_HANDLE_64(char) path; /* path to the device >>>> tree node */ >>>> } dt; >>>> } u; >>>> + /* IN */ >>>> +#define XEN_DOMCTL_DEV_NO_RDM 0 >>>> +#define XEN_DOMCTL_DEV_RDM_RELAXED 1 >>>> +#define XEN_DOMCTL_DEV_RDM_STRICT 2 >>>> + uint32_t flag; /* flag of assigned device */ >>> >>> You don't plumb this value for DT neither in the toolstack (see >>> xc_assign_dt_device) and Xen. Please add a comment saying it's only used >> >> I think we should do this, >> >> @@ -1801,6 +1801,8 @@ int xc_assign_dt_device( >> >> domctl.u.assign_device.dev = XEN_DOMCTL_DEV_DT; >> domctl.u.assign_device.u.dt.size = size; >> + /* DT doesn't own any RDM. */ >> + domctl.u.assign_device.flag = XEN_DOMCTL_DEV_NO_RDM; >> set_xen_guest_handle(domctl.u.assign_device.u.dt.path, path); >> >> rc = do_domctl(xch, &domctl); > > I would be fine with plumbing in drivers/passthrough/device_tree.c and a > check that the value is not different. > Are you saying something like this? @@ -149,6 +149,14 @@ int iommu_do_dt_domctl(struct xen_domctl *domctl, struct domain *d, if ( domctl->u.assign_device.dev != XEN_DOMCTL_DEV_DT ) break; + if ( domctl->u.assign_device.dev == XEN_DOMCTL_DEV_NO_RDM ) + { + printk(XENLOG_G_ERR "XEN_DOMCTL_assign_device: assign \"%s\"" + " to dom%u failed (%d) since we don't support RDM.\n", + dt_node_full_name(dev), d->domain_id, ret); + break; + } + if ( unlikely(d->is_dying) ) { ret = -EINVAL; Thanks Tiejun