All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Mukesh Rathor <mukesh.rathor@oracle.com>
Cc: Xen-devel@lists.xensource.com
Subject: Re: [PATCH 16/18] PVH xen: Miscellaneous changes
Date: Wed, 5 Jun 2013 08:39:33 -0700 (PDT)	[thread overview]
Message-ID: <20130605153933.GH28843@phenom.dumpdata.com> (raw)
In-Reply-To: <1369445137-19755-17-git-send-email-mukesh.rathor@oracle.com>

On Fri, May 24, 2013 at 06:25:35PM -0700, Mukesh Rathor wrote:
> This patch contains misc changes like restricting iobitmap calls for PVH,
> restricting 32bit PVH guest, etc..

Could you please mention _why_ in the commit? And enumerate which
hypercalls are restricted. From the look of it is:

PHYSDEVOP_set_iopl, PHYSDEVOP_set_iobitmap and XEN_DOMCTL_getvcpucontext?


> 
> Changes in V6:
>   - clear out vcpu_guest_context struct in arch_get_info_guest.
> 
> Signed-off-by: Mukesh Rathor <mukesh.rathor@oracle.com>

I think besides the commit description which needs a bit more
explanation you can also attach:

Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

> ---
>  xen/arch/x86/domain.c      |    7 +++++++
>  xen/arch/x86/domain_page.c |   10 +++++-----
>  xen/arch/x86/domctl.c      |    6 ++++++
>  xen/arch/x86/mm.c          |    2 +-
>  xen/arch/x86/physdev.c     |   13 +++++++++++++
>  xen/common/grant_table.c   |    4 ++--
>  6 files changed, 34 insertions(+), 8 deletions(-)
> 
> diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
> index 9953f80..8cff7c9 100644
> --- a/xen/arch/x86/domain.c
> +++ b/xen/arch/x86/domain.c
> @@ -339,6 +339,13 @@ int switch_compat(struct domain *d)
>  
>      if ( d == NULL )
>          return -EINVAL;
> +
> +    if ( is_pvh_domain(d) )
> +    {
> +        gdprintk(XENLOG_G_ERR,
> +                 "Xen does not currently support 32bit PVH guests\n");
> +        return -EINVAL;
> +    }
>      if ( !may_switch_mode(d) )
>          return -EACCES;
>      if ( is_pv_32on64_domain(d) )
> diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
> index efda6af..7685416 100644
> --- a/xen/arch/x86/domain_page.c
> +++ b/xen/arch/x86/domain_page.c
> @@ -34,7 +34,7 @@ static inline struct vcpu *mapcache_current_vcpu(void)
>       * then it means we are running on the idle domain's page table and must
>       * therefore use its mapcache.
>       */
> -    if ( unlikely(pagetable_is_null(v->arch.guest_table)) && !is_hvm_vcpu(v) )
> +    if ( unlikely(pagetable_is_null(v->arch.guest_table)) && is_pv_vcpu(v) )
>      {
>          /* If we really are idling, perform lazy context switch now. */
>          if ( (v = idle_vcpu[smp_processor_id()]) == current )
> @@ -71,7 +71,7 @@ void *map_domain_page(unsigned long mfn)
>  #endif
>  
>      v = mapcache_current_vcpu();
> -    if ( !v || is_hvm_vcpu(v) )
> +    if ( !v || !is_pv_vcpu(v) )
>          return mfn_to_virt(mfn);
>  
>      dcache = &v->domain->arch.pv_domain.mapcache;
> @@ -175,7 +175,7 @@ void unmap_domain_page(const void *ptr)
>      ASSERT(va >= MAPCACHE_VIRT_START && va < MAPCACHE_VIRT_END);
>  
>      v = mapcache_current_vcpu();
> -    ASSERT(v && !is_hvm_vcpu(v));
> +    ASSERT(v && is_pv_vcpu(v));
>  
>      dcache = &v->domain->arch.pv_domain.mapcache;
>      ASSERT(dcache->inuse);
> @@ -242,7 +242,7 @@ int mapcache_domain_init(struct domain *d)
>      struct mapcache_domain *dcache = &d->arch.pv_domain.mapcache;
>      unsigned int bitmap_pages;
>  
> -    if ( is_hvm_domain(d) || is_idle_domain(d) )
> +    if ( !is_pv_domain(d) || is_idle_domain(d) )
>          return 0;
>  
>  #ifdef NDEBUG
> @@ -273,7 +273,7 @@ int mapcache_vcpu_init(struct vcpu *v)
>      unsigned int ents = d->max_vcpus * MAPCACHE_VCPU_ENTRIES;
>      unsigned int nr = PFN_UP(BITS_TO_LONGS(ents) * sizeof(long));
>  
> -    if ( is_hvm_vcpu(v) || !dcache->inuse )
> +    if ( !is_pv_vcpu(v) || !dcache->inuse )
>          return 0;
>  
>      if ( ents > dcache->entries )
> diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
> index ce32245..8b44061 100644
> --- a/xen/arch/x86/domctl.c
> +++ b/xen/arch/x86/domctl.c
> @@ -1305,6 +1305,12 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c)
>              c.nat->gs_base_kernel = hvm_get_shadow_gs_base(v);
>          }
>      }
> +    else if ( is_pvh_vcpu(v) )
> +    {
> +        /* pvh fixme: punt it to phase II */
> +        printk(XENLOG_WARNING "PVH: fixme: arch_get_info_guest()\n");
> +        memset(c.nat, 0, sizeof(*c.nat));
> +    }
>      else
>      {
>          c(ldt_base = v->arch.pv_vcpu.ldt_base);
> diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
> index b190ad9..e992b4f 100644
> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -2805,7 +2805,7 @@ static struct domain *get_pg_owner(domid_t domid)
>          goto out;
>      }
>  
> -    if ( unlikely(paging_mode_translate(curr)) )
> +    if ( !is_pvh_domain(curr) && unlikely(paging_mode_translate(curr)) )
>      {
>          MEM_LOG("Cannot mix foreign mappings with translated domains");
>          goto out;
> diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
> index 3733c7a..2fc7ae6 100644
> --- a/xen/arch/x86/physdev.c
> +++ b/xen/arch/x86/physdev.c
> @@ -475,6 +475,13 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>  
>      case PHYSDEVOP_set_iopl: {
>          struct physdev_set_iopl set_iopl;
> +
> +        if ( is_pvh_vcpu(current) )
> +        {
> +            ret = -EINVAL;
> +            break;
> +        }
> +
>          ret = -EFAULT;
>          if ( copy_from_guest(&set_iopl, arg, 1) != 0 )
>              break;
> @@ -488,6 +495,12 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>  
>      case PHYSDEVOP_set_iobitmap: {
>          struct physdev_set_iobitmap set_iobitmap;
> +
> +        if ( is_pvh_vcpu(current) )
> +        {
> +            ret = -EINVAL;
> +            break;
> +        }
>          ret = -EFAULT;
>          if ( copy_from_guest(&set_iobitmap, arg, 1) != 0 )
>              break;
> diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
> index 3f97328..a2073d2 100644
> --- a/xen/common/grant_table.c
> +++ b/xen/common/grant_table.c
> @@ -721,7 +721,7 @@ __gnttab_map_grant_ref(
>  
>      double_gt_lock(lgt, rgt);
>  
> -    if ( !is_hvm_domain(ld) && need_iommu(ld) )
> +    if ( is_pv_domain(ld) && need_iommu(ld) )
>      {
>          unsigned int wrc, rdc;
>          int err = 0;
> @@ -932,7 +932,7 @@ __gnttab_unmap_common(
>              act->pin -= GNTPIN_hstw_inc;
>      }
>  
> -    if ( !is_hvm_domain(ld) && need_iommu(ld) )
> +    if ( is_pv_domain(ld) && need_iommu(ld) )
>      {
>          unsigned int wrc, rdc;
>          int err = 0;
> -- 
> 1.7.2.3
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
> 

  reply	other threads:[~2013-06-05 15:39 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-25  1:25 [PATCH 00/18][V6]: PVH xen: version 6 patches Mukesh Rathor
2013-05-25  1:25 ` [PATCH 01/18] PVH xen: turn gdb_frames/gdt_ents into union Mukesh Rathor
2013-05-31  9:13   ` Jan Beulich
2013-05-25  1:25 ` [PATCH 02/18] PVH xen: add XENMEM_add_to_physmap_range Mukesh Rathor
2013-05-31  9:28   ` Jan Beulich
2013-05-31  9:38     ` Ian Campbell
2013-05-31 10:14       ` Jan Beulich
2013-05-31 10:40         ` Ian Campbell
2013-06-05  0:24         ` Mukesh Rathor
2013-06-05  0:31     ` Mukesh Rathor
2013-06-05  7:32       ` Jan Beulich
2013-06-05 20:41         ` Mukesh Rathor
2013-06-06  6:43           ` Jan Beulich
2013-06-06 22:19             ` Mukesh Rathor
2013-06-07  6:13               ` Jan Beulich
2013-06-07 20:46                 ` Mukesh Rathor
2013-06-07 15:08             ` Konrad Rzeszutek Wilk
2013-06-07 15:48               ` Jan Beulich
2013-05-25  1:25 ` [PATCH 03/18] PVH xen: create domctl_memory_mapping() function Mukesh Rathor
2013-05-31  9:46   ` Jan Beulich
2013-06-05  0:47     ` Mukesh Rathor
2013-06-05  7:34       ` Jan Beulich
2013-05-25  1:25 ` [PATCH 04/18] PVH xen: add params to read_segment_register Mukesh Rathor
2013-05-31 10:00   ` Jan Beulich
2013-06-06  1:25     ` Mukesh Rathor
2013-06-06  6:48       ` Jan Beulich
2013-06-07  1:43         ` Mukesh Rathor
2013-06-07  6:29           ` Jan Beulich
2013-06-08  0:45             ` Mukesh Rathor
2013-06-10  8:01               ` Jan Beulich
2013-06-10 23:10                 ` Mukesh Rathor
2013-05-25  1:25 ` [PATCH 05/18] PVH xen: vmx realted preparatory changes for PVH Mukesh Rathor
2013-05-25  1:25 ` [PATCH 06/18] PVH xen: Move e820 fields out of pv_domain struct Mukesh Rathor
2013-06-05 15:33   ` Konrad Rzeszutek Wilk
2013-05-25  1:25 ` [PATCH 07/18] PVH xen: Introduce PVH guest type Mukesh Rathor
2013-05-25  1:25 ` [PATCH 08/18] PVH xen: tools changes to create PVH domain Mukesh Rathor
2013-06-12 14:58   ` Ian Campbell
2013-06-15  0:14     ` Mukesh Rathor
2013-06-17 11:11       ` Ian Campbell
2013-07-30 23:47         ` Mukesh Rathor
2013-07-31 12:00           ` Ian Campbell
2013-08-01  2:02             ` Mukesh Rathor
2013-08-01  8:01               ` Ian Campbell
2013-08-02  1:12                 ` Mukesh Rathor
2013-08-29  1:51                 ` Mukesh Rathor
2013-08-29  9:01                   ` Ian Campbell
2013-08-30  0:45                     ` Mukesh Rathor
2013-08-30  9:56                       ` Ian Campbell
2013-08-29 11:13               ` George Dunlap
2013-08-29 11:29                 ` Ian Campbell
2013-08-30  1:24                   ` Mukesh Rathor
2013-08-30  9:53                     ` Ian Campbell
2013-08-30 10:22                       ` George Dunlap
2013-08-30 10:27                     ` George Dunlap
2013-08-29  0:14         ` Mukesh Rathor
2013-07-31  1:06     ` Mukesh Rathor
2013-07-31 11:32       ` Ian Campbell
2013-05-25  1:25 ` [PATCH 09/18] PVH xen: domain creation code changes Mukesh Rathor
2013-05-25  1:25 ` [PATCH 10/18] PVH xen: create PVH vmcs, and also initialization Mukesh Rathor
2013-05-25  1:25 ` [PATCH 11/18] PVH xen: create read_descriptor_sel() Mukesh Rathor
2013-05-25  1:25 ` [PATCH 12/18] PVH xen: support hypercalls for PVH Mukesh Rathor
2013-06-05 15:27   ` Konrad Rzeszutek Wilk
2013-05-25  1:25 ` [PATCH 13/18] PVH xen: introduce vmx_pvh.c Mukesh Rathor
2013-05-25  1:25 ` [PATCH 14/18] PVH xen: some misc changes like mtrr, intr, msi Mukesh Rathor
2013-05-25  1:25 ` [PATCH 15/18] PVH xen: hcall page initialize, create PVH guest type, etc Mukesh Rathor
2013-05-25  1:25 ` [PATCH 16/18] PVH xen: Miscellaneous changes Mukesh Rathor
2013-06-05 15:39   ` Konrad Rzeszutek Wilk [this message]
2013-05-25  1:25 ` [PATCH 17/18] PVH xen: Introduce p2m_map_foreign Mukesh Rathor
2013-05-25  1:25 ` [PATCH 18/18] PVH xen: Add and remove foreign pages Mukesh Rathor
2013-06-05 15:23 ` [PATCH 00/18][V6]: PVH xen: version 6 patches Konrad Rzeszutek Wilk
2013-06-05 15:25   ` George Dunlap
2013-06-05 15:36   ` Ian Campbell
2013-06-05 18:34     ` Konrad Rzeszutek Wilk
2013-06-05 20:51       ` Ian Campbell
2013-06-05 22:01         ` Mukesh Rathor
2013-06-06  8:46           ` Ian Campbell
2013-06-07 13:56             ` Konrad Rzeszutek Wilk
2013-06-06 10:08     ` George Dunlap
2013-06-05 17:14   ` Tim Deegan
2013-06-06  7:29     ` Jan Beulich

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=20130605153933.GH28843@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=Xen-devel@lists.xensource.com \
    --cc=mukesh.rathor@oracle.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.