[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v5 7/9] ioreq-server: remove p2m entries when server is enabled



>>> On 01.05.14 at 14:08, <paul.durrant@xxxxxxxxxx> wrote:
> +static int hvm_add_ioreq_gmfn(
> +    struct domain *d, struct hvm_ioreq_page *iorp)
> +{
> +    return guest_physmap_add_page(d, iorp->gmfn,
> +                                  page_to_mfn(iorp->page), 0);

What if the guest meanwhile put something else at that address? Or
is the address range protected by some means (e.g. marked reserved
in the E820 map)?

> +    case HVMOP_set_ioreq_server_state:
> +        rc = hvmop_set_ioreq_server_state(
> +            guest_handle_cast(arg, xen_hvm_set_ioreq_server_state_t));
> +        break;

Again no XSM operation here or in the called function?

> @@ -68,6 +68,7 @@ struct hvm_ioreq_server {
>      spinlock_t             bufioreq_lock;
>      evtchn_port_t          bufioreq_evtchn;
>      struct rangeset        *range[MAX_IO_RANGE_TYPE];
> +    bool_t                 enabled;
>  };

Is there no 1-byte hole anywhere in the structure where this could
be put in a more efficient manner?

> --- a/xen/include/public/hvm/hvm_op.h
> +++ b/xen/include/public/hvm/hvm_op.h
> @@ -340,6 +340,22 @@ struct xen_hvm_destroy_ioreq_server {
>  typedef struct xen_hvm_destroy_ioreq_server xen_hvm_destroy_ioreq_server_t;
>  DEFINE_XEN_GUEST_HANDLE(xen_hvm_destroy_ioreq_server_t);
>  
> +/*
> + * HVMOP_set_ioreq_server_state: Enable or disable the IOREQ Server <id> 
> servicing
> + *                               domain <domid>.
> + *
> + * The IOREQ Server will not be passed any emulation requests until it is in 
> the
> + * enabled state.
> + */
> +#define HVMOP_set_ioreq_server_state 22
> +struct xen_hvm_set_ioreq_server_state {
> +    domid_t domid;   /* IN - domain to be serviced */
> +    ioservid_t id;   /* IN - server id */
> +    uint8_t enabled; /* IN - enabled? */    
> +};
> +typedef struct xen_hvm_set_ioreq_server_state 
> xen_hvm_set_ioreq_server_state_t;
> +DEFINE_XEN_GUEST_HANDLE(xen_hvm_set_ioreq_server_state_t);
> +
>  #endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */

No change to HVMOP_get_ioreq_server_info at all?

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®.