|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 10/17] PVH xen: introduce vmx_pvh.c and pvh.c
>>> On 25.04.13 at 02:57, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote:
> On Wed, 24 Apr 2013 09:47:55 +0100 "Jan Beulich" <JBeulich@xxxxxxxx> wrote:
>> >>> On 23.04.13 at 23:25, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote:
>> > +static int pvh_grant_table_op(unsigned int cmd, XEN_GUEST_HANDLE(void)
>> > uop,
>> > + unsigned int count)
>> > +{
>> > + switch ( cmd )
>> > + {
>> > + /*
>> > + * Only the following Grant Ops have been verified for PVH guest,
>> > hence
>> > + * we check for them here.
>> > + */
>> > + case GNTTABOP_map_grant_ref:
>> > + case GNTTABOP_unmap_grant_ref:
>> > + case GNTTABOP_setup_table:
>> > + case GNTTABOP_copy:
>> > + case GNTTABOP_query_size:
>> > + case GNTTABOP_set_version:
>> > + return do_grant_table_op(cmd, uop, count);
>> > + }
>> > + return -ENOSYS;
>> > +}
>>
>> As said before - I object to this sort of white listing. A PVH guest
>> ought to be permitted to issue any hypercall, with the sole
>> exception of MMU and very few other ones. So if anything,
>> specific hypercall functions should be black listed.
>
> Well, like I said before, these are verified/tested with PVH currently,
> and during the early stages we need to do whatever to catch things as
> bugs come in. I can make it DEBUG only if that makes it easier for you?
> I'd rather see a post here saying they got ENOSYS than saying they got
> weird crash/hang/etc...
Then this patch series really ought to continue to be RFC, and
I start questioning why I'm spending hours reviewing it. The
number of hacks you need clearly should be limited - to me it is
unacceptable to scatter half done code all over the tree. I had
the same problem when I did the 32-on-64 support, and iirc I
got things into largely hack free state before even posting the
first full, non-RFC series.
> BTW, similar checks exist in hvm_physdev_op(),hvm_vcpu_op()......
And of course the comment applies to all of them.
>> > +static hvm_hypercall_t *pvh_hypercall64_table[NR_hypercalls] = {
>> > + [__HYPERVISOR_platform_op] = (hvm_hypercall_t
>> > *)do_platform_op,
>> > + [__HYPERVISOR_memory_op] = (hvm_hypercall_t
>> > *)do_memory_op,
>> > + [__HYPERVISOR_xen_version] = (hvm_hypercall_t
>> > *)do_xen_version,
>> > + [__HYPERVISOR_console_io] = (hvm_hypercall_t
>> > *)do_console_io,
>> > + [__HYPERVISOR_grant_table_op] = (hvm_hypercall_t
>> > *)pvh_grant_table_op,
>> > + [__HYPERVISOR_vcpu_op] = (hvm_hypercall_t
>> > *)pvh_vcpu_op,
>> > + [__HYPERVISOR_mmuext_op] = (hvm_hypercall_t
>> > *)do_mmuext_op,
>> > + [__HYPERVISOR_xsm_op] = (hvm_hypercall_t *)do_xsm_op,
>> > + [__HYPERVISOR_sched_op] = (hvm_hypercall_t
>> > *)do_sched_op,
>> > + [__HYPERVISOR_event_channel_op]= (hvm_hypercall_t
>> > *)do_event_channel_op,
>> > + [__HYPERVISOR_physdev_op] = (hvm_hypercall_t
>> > *)pvh_physdev_op,
>> > + [__HYPERVISOR_hvm_op] = (hvm_hypercall_t *)pvh_hvm_op,
>> > + [__HYPERVISOR_sysctl] = (hvm_hypercall_t *)do_sysctl,
>> > + [__HYPERVISOR_domctl] = (hvm_hypercall_t *)do_domctl
>> > +};
>>
>> Is this table complete? What about multicalls, timer_op, kexec_op,
>> tmem_op, mca? I again think that copying hypercall_table and
>> adjusting the entries you explicitly need to override might be
>> better than creating yet another table that needs attention when
>> a new hypercall gets added.
>
> Nop. Like I've said few times before, we are not fully done with PVH with
> this patch set. This patch set establishes min baseline to get linux to
> boot with PVH enabled. Next would be go thru timer_op, look at do_timer_op,
> verify/test it out for PVH, and add it here. Then mca, tmem, ....
> When we are fully satifisfied with PVH completeness, we can
> remove this table if you wish, or make it DEBUG so one knows right away
> what PVH supports at that time.
Having that extra stuff only in debug builds would at least look
slightly more acceptable.
> I am not sure I understant what you mean by copying hypercall_table. You
> mean copy all the calls in this table above from entry.S?
Yes - memcpy() the whole table, then overwrite the (few) entries
you need to overwrite. After all, in the long run adding a new
hypercall ought to "just work" for PVH (and in most cases even for
HVM).
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |