|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v13 7/8] Add IOREQ_TYPE_VMWARE_PORT
On 12/07/15 08:36, Paul Durrant wrote:
>> -----Original Message-----
> [snip]
>>>>>>
>>>>>> if ( rc )
>>>>>> - hvm_unmap_ioreq_page(s, 0);
>>>>>> + {
>>>>>> + hvm_unmap_ioreq_page(s, IOREQ_PAGE_TYPE_IOREQ);
>>>>>> + return rc;
>>>>>> + }
>>>>>> +
>>>>>> + rc = hvm_map_ioreq_page(s, IOREQ_PAGE_TYPE_VMPORT,
>>>>>> vmport_ioreq_pfn);
>>>>>
>>>>> Is every ioreq server going to have one of these? It doesn't look
>>>>> like it, so should you not have validity check on the pfn?
>>>>>
>>>>
>>>>
>>>> Currently the default is that all ioreq servers get the mapping:
>>>>
>>>
>>> That's probably a bit wasteful. It should probably be
>>> selectable in the create HVM op.
>>
>> Since the most common case is QEMU and it can use it since upstream
>> version 2.2.0, the waste is real small. If a non-QEMU ioreq server does
>> not want it, it add 0 overhead.
>
> It's not 0 overhead if an extra magic page is used for each ioreq server is
> it?
>
My understanding is that the Xen overhead is 1 entry in p2m for each
ioreq server.
>> The only case I know of (which is PVH
>> related to PVH) is if QEMU is not running and you add a non-QEMU ioreq
>> server that does not use it, you get 1 page + page table entries.
>>
>> While the following exists:
>>
>> #define HVM_IOREQSRV_BUFIOREQ_OFF 0
>> #define HVM_IOREQSRV_BUFIOREQ_LEGACY 1
>> /*
>> * Use this when read_pointer gets updated atomically and
>> * the pointer pair gets read atomically:
>> */
>> #define HVM_IOREQSRV_BUFIOREQ_ATOMIC 2
>> uint8_t handle_bufioreq; /* IN - should server handle buffered ioreqs */
>>
>> I see no tests that use these. Also adding vmport enable/disable to
>> handle_bufioreq is much more of a hack then I expect to pass a code
>> review.
>>
>> Does not look simple to add a new additional argument, but that could
>> just be my lack of understanding in the area.
>
> It doesn't look that bad. The bufioreq flag has now expanded
> from 1 bit to 2 bits, but you could rename 'handle_bufioreq' to
> 'flags' or some such and then use bit 3 to indicate whether or
> not the vmport ioreq page should be allocated.
>
Ok, I will code this up and plan to go with it. Since old QEMU need to
be supported, bit 3 will be a negative flag, when set no page will be
mapped.
>>
>>> I don't know whether you'd
>>> even need it there in the default server since I guess the QEMU
>>> end of things post-dates the use of the HVM op (rather than the
>>> old param).
>>>
>>
>> Not sure how to parse "post-dates". Here is some tables about this that
>> I know about:
>>
>>
>> xen Supports handle_bufioreq
>> create_ioreq_server
>> 4.5 yes 0 or !0
>> 4.6 yes 0 or !0
>> 4.7 yes 0 or !0
>>
>> Upstream vmport is_default atomic
>> QEMU support
>>
>> 2.2.x yes yes n/a
>> 2.3.x yes no no
>> 2.4.x yes no no
>> 2.5.x yes no yes
>>
>> Xen vmport is_default atomic
>> QEMU support
>>
>> 4.5.x no yes n/a
>> 4.6.x yes no yes
>> 4.7.x yes no yes
>>
>> With just a "xen only" build, you will not get a QEMU that is a default
>> ioreq server. However it looks possible to mix Xen and QEMU and get
>> this case.
>>
>
> What I meant was that I believe that the vmport ioreq page will
> only be used by a qemu that also make use of the
> create_ioreq_server hmvop, so you don't have to care about
> making it work with older QEMU. It looks like 2.2.x may prove
> me wrong though in which case it should be present in the
> default ioreq server but still optional for all others.
>
Yes, default ioreq server will get the mapping when enabled,
optional for all others.
-Don Slutz
> Paul
>
>> So unless I hear otherwise, I will not be making a change here.
>>
>>>> + /* VMware port */
>>>> + if ( i == HVMOP_IO_RANGE_VMWARE_PORT &&
>>>> + s->domain->arch.hvm_domain.is_vmware_port_enabled )
>>>> + rc = rangeset_add_range(s->range[i], 1, 1);
>>>>
>>>>
>>>>
>>>> but you are right that a check on is_vmware_port_enabled should be
>>>> added. Will do.
>>>
>>> Cool. Thanks,
>>>
>>> Paul
>>>
>>>>
>>>> -Don Slutz
>>>>
>>>>> Paul
>>>>>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |