From: Mukesh Rathor <mukesh.rathor@oracle.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH 10/17] PVH xen: introduce vmx_pvh.c and pvh.c
Date: Wed, 24 Apr 2013 17:57:14 -0700 [thread overview]
Message-ID: <20130424175714.11d53ffc@mantra.us.oracle.com> (raw)
In-Reply-To: <5177B85B02000078000D03CA@nat28.tlf.novell.com>
On Wed, 24 Apr 2013 09:47:55 +0100
"Jan Beulich" <JBeulich@suse.com> wrote:
> >>> On 23.04.13 at 23:25, Mukesh Rathor <mukesh.rathor@oracle.com>
> >>> 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...
BTW, similar checks exist in hvm_physdev_op(),hvm_vcpu_op()......
> > +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.
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?
> > +/*
> > + * Check if hypercall is valid
> > + * Returns: 0 if hcall is not valid with eax set to the errno to
> > ret to guest
> > + */
> > +static bool_t hcall_valid(struct cpu_user_regs *regs)
> > +{
> > + struct segment_register sreg;
> > +
> > + hvm_get_segment_register(current, x86_seg_ss, &sreg);
> > + if ( unlikely(sreg.attr.fields.dpl == 3) )
>
> if ( unlikely(sreg.attr.fields.dpl != 0) )
Ok, thanks.
> > + {
> > + regs->eax = -EPERM;
> > + return 0;
> > + }
> > +
> > + /* Following HCALLs have not been verified for PVH domUs */
> > + if ( !IS_PRIV(current->domain) &&
> > + (regs->eax == __HYPERVISOR_xsm_op ||
> > + regs->eax == __HYPERVISOR_platform_op ||
> > + regs->eax == __HYPERVISOR_domctl) ) /* for privcmd
> > mmap */
> > + {
> > + regs->eax = -ENOSYS;
> > + return 0;
> > + }
>
> This looks bogus - it shouldn't be the job of the generic handler
> to verify permission to use certain hypercalls - the individual
> handlers should be doing this quite well. And I suppose you saw
> Daniel De Graaf's effort to eliminate IS_PRIV() from the tree?
Ok, will remove it. Yup, my next refresh will take care of IS_PRIV.
> > + if ( regs->eax == __HYPERVISOR_sched_op && regs->rdi ==
> > SCHEDOP_shutdown )
> > + {
> > + domain_crash_synchronous();
> > + return HVM_HCALL_completed;
> > + }
>
> ???
Right. my bad, don't need this anymore.
thanks,
Mukesh
next prev parent reply other threads:[~2013-04-25 0:57 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-23 21:25 [PATCH 00/17][V4]: PVH xen: version 4 patches Mukesh Rathor
2013-04-23 21:25 ` [PATCH 01/17] PVH xen: turn gdb_frames/gdt_ents into union Mukesh Rathor
2013-04-23 21:25 ` [PATCH 02/17] PVH xen: add XENMEM_add_to_physmap_range Mukesh Rathor
2013-04-23 21:25 ` [PATCH 03/17] PVH xen: create domctl_memory_mapping() function Mukesh Rathor
2013-04-24 7:01 ` Jan Beulich
2013-04-23 21:25 ` [PATCH 04/17] PVH xen: add params to read_segment_register Mukesh Rathor
2013-04-23 21:25 ` [PATCH 05/17] PVH xen: vmx realted preparatory changes for PVH Mukesh Rathor
2013-04-23 21:25 ` [PATCH 06/17] PVH xen: Introduce PVH guest type Mukesh Rathor
2013-04-24 7:07 ` Jan Beulich
2013-04-24 23:01 ` Mukesh Rathor
2013-04-25 8:28 ` Jan Beulich
2013-04-23 21:25 ` [PATCH 07/17] PVH xen: tools changes to create PVH domain Mukesh Rathor
2013-04-24 7:10 ` Jan Beulich
2013-04-24 23:02 ` Mukesh Rathor
2013-04-23 21:25 ` [PATCH 08/17] PVH xen: domain creation code changes Mukesh Rathor
2013-04-23 21:25 ` [PATCH 09/17] PVH xen: create PVH vmcs, and also initialization Mukesh Rathor
2013-04-24 7:42 ` Jan Beulich
2013-04-30 21:01 ` Mukesh Rathor
2013-04-30 21:04 ` Mukesh Rathor
2013-04-23 21:25 ` [PATCH 10/17] PVH xen: introduce vmx_pvh.c and pvh.c Mukesh Rathor
2013-04-24 8:47 ` Jan Beulich
2013-04-25 0:57 ` Mukesh Rathor [this message]
2013-04-25 8:36 ` Jan Beulich
2013-04-26 1:16 ` Mukesh Rathor
2013-04-26 1:58 ` Mukesh Rathor
2013-04-26 7:29 ` Jan Beulich
2013-04-26 7:20 ` Jan Beulich
2013-04-27 2:06 ` Mukesh Rathor
2013-05-01 0:51 ` Mukesh Rathor
2013-05-01 13:52 ` Jan Beulich
2013-05-02 1:10 ` Mukesh Rathor
2013-05-02 6:42 ` Jan Beulich
2013-05-03 1:03 ` Mukesh Rathor
2013-05-10 1:51 ` Mukesh Rathor
2013-05-10 7:07 ` Jan Beulich
2013-05-10 23:44 ` Mukesh Rathor
2013-05-02 1:17 ` Mukesh Rathor
2013-05-02 6:53 ` Jan Beulich
2013-05-03 0:40 ` Mukesh Rathor
2013-05-03 6:33 ` Jan Beulich
2013-05-04 1:40 ` Mukesh Rathor
2013-05-06 6:44 ` Jan Beulich
2013-05-07 1:25 ` Mukesh Rathor
2013-05-07 8:07 ` Jan Beulich
2013-05-11 0:30 ` Mukesh Rathor
2013-04-25 11:19 ` Tim Deegan
2013-04-23 21:26 ` [PATCH 11/17] PVH xen: some misc changes like mtrr, intr, msi Mukesh Rathor
2013-04-23 21:26 ` [PATCH 12/17] PVH xen: support invalid op, return PVH features etc Mukesh Rathor
2013-04-24 9:01 ` Jan Beulich
2013-04-25 1:01 ` Mukesh Rathor
2013-04-23 21:26 ` [PATCH 13/17] PVH xen: p2m related changes Mukesh Rathor
2013-04-25 11:28 ` Tim Deegan
2013-04-25 21:59 ` Mukesh Rathor
2013-04-26 8:53 ` Tim Deegan
2013-04-23 21:26 ` [PATCH 14/17] PVH xen: Add and remove foreign pages Mukesh Rathor
2013-04-25 11:38 ` Tim Deegan
2013-04-23 21:26 ` [PATCH 15/17] PVH xen: Miscellaneous changes Mukesh Rathor
2013-04-24 9:06 ` Jan Beulich
2013-05-10 1:54 ` Mukesh Rathor
2013-05-10 7:10 ` Jan Beulich
2013-04-23 21:26 ` [PATCH 16/17] PVH xen: elf and iommu related changes to prep for dom0 PVH Mukesh Rathor
2013-04-24 9:15 ` Jan Beulich
2013-05-14 1:16 ` Mukesh Rathor
2013-05-14 6:56 ` Jan Beulich
2013-05-14 19:14 ` Mukesh Rathor
2013-04-23 21:26 ` [PATCH 17/17] PVH xen: PVH dom0 creation Mukesh Rathor
2013-04-24 9:28 ` Jan Beulich
2013-04-26 1:18 ` Mukesh Rathor
2013-04-26 7:22 ` Jan Beulich
2013-05-10 1:53 ` Mukesh Rathor
2013-05-10 7:14 ` Jan Beulich
2013-05-15 1:18 ` Mukesh Rathor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130424175714.11d53ffc@mantra.us.oracle.com \
--to=mukesh.rathor@oracle.com \
--cc=JBeulich@suse.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).