WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] add HVMOP_get_mem_type hvmop

To: Tim Deegan <Tim.Deegan@xxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] add HVMOP_get_mem_type hvmop
From: Olaf Hering <olaf@xxxxxxxxx>
Date: Tue, 3 May 2011 15:59:28 +0200
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Tue, 03 May 2011 07:01:14 -0700
Dkim-signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1304431169; l=2565; s=domk; d=aepfle.de; h=In-Reply-To:Content-Type:MIME-Version:References:Subject:Cc:To:From: Date:X-RZG-CLASS-ID:X-RZG-AUTH; bh=to90KO4RV5y6laC/ibJ5k9QTM/o=; b=uqqRNvr5yOq/tE6E83L0NT7dr9XHwAqv8cFtEI671aiaKUg1PV7KWbVYs6cDph68x7G Bh057SbyBCsSkDD8OI1PDDi+JOhPf50zfUwpxrxG9S1+CJuv47J7snyzQo5JNC21l33qb 6IjPtHTi1ra84KKwbqfdKNApJZ+ywVeKyQY=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20110503133050.GE10252@xxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <e7356373147a21df7280.1304428273@localhost> <20110503133050.GE10252@xxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.21 (2010-09-15)
On Tue, May 03, Tim Deegan wrote:

> > +        rc = rcu_lock_remote_target_domain_by_id(a.domid, &d);
> 
> I thought this call was intended to be used from inside the guest in
> question.  rcu_lock_remote_target_domain_by_id() explicitly refuses to
> let a domain operate on itself. 

Hmm, I have to test it with xen-unstable too. I did copy&paste from
other parts of the file. 4.0 used rcu_lock_target_domain_by_id, so can I
use that function?



> > +typedef enum {
> > +    HVMMEM_ram_rw,             /* Normal read/write guest RAM */
> > +    HVMMEM_ram_ro,             /* Read-only; writes are discarded */
> > +    HVMMEM_mmio_dm,            /* Reads and write go to the device model */
> > +} hvmmem_type_t;
> > +
> 
> This is now outside the #ifdef, when both of its users are inside it.
> If that wasn't deliberate, please put it back. 

Should HVMOP_get_mem_type use hvmmem_type_t? Its outside the ifdef,
otherwise unmodified_drivers/linux-2.6/platform-pci/platform-pci.c does
not get the define.

> >  /* Following tools-only interfaces may change in future. */
> >  #if defined(__XEN__) || defined(__XEN_TOOLS__)
> >  
> > @@ -109,11 +115,6 @@ typedef struct xen_hvm_modified_memory x
> >  DEFINE_XEN_GUEST_HANDLE(xen_hvm_modified_memory_t);
> >  
> >  #define HVMOP_set_mem_type    8
> > -typedef enum {
> > -    HVMMEM_ram_rw,             /* Normal read/write guest RAM */
> > -    HVMMEM_ram_ro,             /* Read-only; writes are discarded */
> > -    HVMMEM_mmio_dm,            /* Reads and write go to the device model */
> > -} hvmmem_type_t;
> >  /* Notify that a region of memory is to be treated in a specific way. */
> >  struct xen_hvm_set_mem_type {
> >      /* Domain to be updated. */
> > @@ -223,6 +224,20 @@ struct xen_hvm_inject_trap {
> >  typedef struct xen_hvm_inject_trap xen_hvm_inject_trap_t;
> >  DEFINE_XEN_GUEST_HANDLE(xen_hvm_inject_trap_t);
> >  
> > +#define HVMOP_get_mem_type    15
> > +/* Return hvmmem_type_t for the specified pfn. */
> > +struct xen_hvm_get_mem_type {
> > +    /* Domain to be queried. */
> > +    domid_t domid;
> > +    /* OUT variable. */
> > +    uint8_t mem_type;
> > +    /* IN variable. */
> > +    uint64_t pfn;
> 
> This structure will be laid out differently on 32-bit and 64-bit
> builds. :(  Also, since the _set operation uses a 16-bit variable for
> the type, you might as well do the same here. 

Good point. Should I use the same padding as in xen_hvm_pagetable_dying?

struct xen_hvm_get_mem_type {
    /* Domain to be queried. */
    domid_t domid;
    /* OUT variable. */
    uint16_t mem_type;
    uint16_t pad[2];
    /* IN variable. */
    uint64_t pfn;
};




Olaf


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel