[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.