|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [v7][RFC][PATCH 06/13] hvmloader/ram: check if guest memory is out of reserved device memory maps
>>> On 11.11.14 at 07:32, <tiejun.chen@xxxxxxxxx> wrote:
> On 2014/11/7 19:08, Jan Beulich wrote:
>>>>> On 07.11.14 at 11:27, <tiejun.chen@xxxxxxxxx> wrote:
>>> --- a/xen/drivers/passthrough/pci.c
>>> +++ b/xen/drivers/passthrough/pci.c
>>> @@ -1540,6 +1540,34 @@ int iommu_do_pci_domctl(
>>> }
>>> break;
>>>
>>> + case XEN_DOMCTL_set_rdm:
>>> + {
>>> + struct xen_domctl_set_rdm *xdsr = &domctl->u.set_rdm;
>>> + struct xen_guest_pcidev_info *pcidevs;
>>> + int i;
>>> +
>>> + pcidevs = xmalloc_array(xen_guest_pcidev_info_t,
>>> + domctl->u.set_rdm.num_pcidevs);
>>> + if ( pcidevs == NULL )
>>> + {
>>> + return -ENOMEM;
>>> + }
>>> +
>>> + for ( i = 0; i < xdsr->num_pcidevs; ++i )
>>> + {
>>> + if ( __copy_from_guest_offset(pcidevs, xdsr->pcidevs, i, 1) )
>>> + {
>>> + xfree(pcidevs);
>>> + return -EFAULT;
>>> + }
>>> + }
>>
>> I don't see the need for a loop here. And you definitely can't use the
>> double-underscore-prefixed variant the way you do.
>
> Do you mean this line?
>
> copy_from_guest_offset(pcidevs, xdsr->pcidevs, 0,
> xdsr->num_pcidevs*sizeof(xen_guest_pcidev_info_t))
Almost:
copy_from_guest(pcidevs, xdsr->pcidevs, xdsr->num_pcidevs *
sizeof(*pcidevs))
>>> --- a/xen/include/asm-x86/hvm/domain.h
>>> +++ b/xen/include/asm-x86/hvm/domain.h
>>> @@ -90,6 +90,10 @@ struct hvm_domain {
>>> /* Cached CF8 for guest PCI config cycles */
>>> uint32_t pci_cf8;
>>>
>>> + uint32_t pci_rdmforce;
>>
>> I still don't see why this is a uint32_t.
>
> How about bool_t?
Exactly.
> In Xen side we have 'bool_t', but we have 'bool' in tools side. So how
> to define this in xen/include/public/domctl.h?
Have a structure field named e.g. "flags" and a #define consuming
exactly one bit of it. Just like it's being done everywhere else.
>>> @@ -1118,7 +1137,8 @@ struct xen_domctl {
>>> struct xen_domctl_gdbsx_domstatus gdbsx_domstatus;
>>> struct xen_domctl_vnuma vnuma;
>>> struct xen_domctl_psr_cmt_op psr_cmt_op;
>>> - uint8_t pad[128];
>>> + struct xen_domctl_set_rdm set_rdm;
>>> + uint8_t pad[112];
>>
>> Why are you altering the padding size here?
>
> As I understand we should shrink this pad when we introduce new filed,
> shouldn't we?
You realize that this is inside a union?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |