From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH 1/1] Add .adjust_global callback Date: Mon, 3 May 2010 16:50:15 -0700 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1501818236==" Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Dulloor Cc: keir.fraser@citrix.com, Kathy Hadley , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --===============1501818236== Content-Type: multipart/related; boundary=00151747c0fe315bed0485b94124 --00151747c0fe315bed0485b94124 Content-Type: multipart/alternative; boundary=00151747c0fe315be90485b94123 --00151747c0fe315be90485b94123 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Also, the SCHEDOP needs an xsm callback; but I'm not an expert enough in th= e xsm framework to say what it needs. Other than that: Acked-by: George Dunlap On Mon, Apr 19, 2010 at 6:54 AM, Dulloor wrote: > You don't have to explicitly set adjust_global to NULL for credit and sed= f. > > -dulloor > > On Mon, Apr 19, 2010 at 9:39 AM, Kathy Hadley < > Kathy.Hadley@dornerworks.com> wrote: > >> Resubmitting now that I have been added to the Xen-devel mailing list. >> >> >> >> Kathy Hadley >> >> DornerWorks, Ltd. >> >> >> >> *From:* Kathy Hadley >> *Sent:* Friday, April 16, 2010 10:14 AM >> *To:* 'xen-devel@lists.xensource.com' >> *Cc:* 'Keir.Fraser@citrix.com' >> *Subject:* [Xen-Devel] [PATCH 1/1] Add .adjust_global callback >> >> >> >> This patch adds an .adjust_global scheduler callback function, which >> allows adjusting the global scheduler parameters (rather than just one >> domain=92s parameters). This patch supports the addition of an ARINC 65= 3 >> scheduler (which will be submitted in a subsequent patch), and was sugge= sted >> by George Dunlap and Keir Fraser in response to an earlier patch (ref: >> [Xen-devel] [PATCH 1/1] Xen ARINC 653 scheduler). >> >> >> >> Thanks and regards, >> >> >> >> >> >> [image: cid:image001.jpg@01CAD7E0.50E45D70] >> >> *Kathy Hadley >> *DornerWorks, Ltd. >> *Embedded Systems Engineering >> >> *3445 Lake Eastbrook Blvd SE >> Grand Rapids, MI 49546 >> >> Direct: 616.389.6127 >> >> Tel: 616.245.8369 >> >> Fax: 616.245.8372 >> >> >> >> Kathy.Hadley@DornerWorks.com >> >> www.DornerWorks.com >> >> [image: cid:image002.jpg@01CAD7E0.50E45D70] >> >> *Honored as one of the 2010 =93Michigan 50 Companies to Watch=94* >> >> >> >> diff -rupN a/xen/common/domctl.c b/xen/common/domctl.c >> >> --- a/xen/common/domctl.c 2010-04-07 12:12:06.000000000 -0400 >> >> +++ b/xen/common/domctl.c 2010-04-14 10:57:11.262796000 -0400 >> >> @@ -592,22 +592,35 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc >> >> >> >> case XEN_DOMCTL_scheduler_op: >> >> { >> >> - struct domain *d; >> >> - >> >> - ret =3D -ESRCH; >> >> - if ( (d =3D rcu_lock_domain_by_id(op->domain)) =3D=3D NULL ) >> >> - break; >> >> + if ( (op->u.scheduler_op.cmd =3D=3D >> XEN_DOMCTL_SCHEDOP_put_global_info) >> >> + || (op->u.scheduler_op.cmd =3D=3D >> XEN_DOMCTL_SCHEDOP_get_global_info) ) >> >> + { >> >> + ret =3D sched_adjust_global(&op->u.scheduler_op); >> >> + if (op->u.scheduler_op.cmd =3D=3D >> XEN_DOMCTL_SCHEDOP_get_global_info) >> >> + { >> >> + if ( copy_to_guest(u_domctl, op, 1) ) >> >> + ret =3D -EFAULT; >> >> + } >> >> + } >> >> + else >> >> + { >> >> + struct domain *d; >> >> >> >> - ret =3D xsm_scheduler(d); >> >> - if ( ret ) >> >> - goto scheduler_op_out; >> >> + ret =3D -ESRCH; >> >> + if ( (d =3D rcu_lock_domain_by_id(op->domain)) =3D=3D NULL = ) >> >> + break; >> >> >> >> - ret =3D sched_adjust(d, &op->u.scheduler_op); >> >> - if ( copy_to_guest(u_domctl, op, 1) ) >> >> - ret =3D -EFAULT; >> >> + ret =3D xsm_scheduler(d); >> >> + if ( ret ) >> >> + goto scheduler_op_out; >> >> + >> >> + ret =3D sched_adjust(d, &op->u.scheduler_op); >> >> + if ( copy_to_guest(u_domctl, op, 1) ) >> >> + ret =3D -EFAULT; >> >> >> >> - scheduler_op_out: >> >> - rcu_unlock_domain(d); >> >> + scheduler_op_out: >> >> + rcu_unlock_domain(d); >> >> + } >> >> } >> >> break; >> >> >> >> diff -rupN a/xen/common/sched_credit.c b/xen/common/sched_credit.c >> >> --- a/xen/common/sched_credit.c 2010-04-07 12:12:06.000000000 >> -0400 >> >> +++ b/xen/common/sched_credit.c 2010-04-13 17:30:40.710992000 -04= 00 >> >> @@ -1404,6 +1404,7 @@ const struct scheduler sched_credit_def >> >> .wake =3D csched_vcpu_wake, >> >> >> >> .adjust =3D csched_dom_cntl, >> >> + .adjust_global =3D NULL, >> >> >> >> .pick_cpu =3D csched_cpu_pick, >> >> .do_schedule =3D csched_schedule, >> >> diff -rupN a/xen/common/sched_sedf.c b/xen/common/sched_sedf.c >> >> --- a/xen/common/sched_sedf.c 2010-04-07 12:12:06.000000000 -0400 >> >> +++ b/xen/common/sched_sedf.c 2010-04-13 17:30:40.710992000 -04= 00 >> >> @@ -1473,6 +1473,7 @@ const struct scheduler sched_sedf_def =3D >> >> .sleep =3D sedf_sleep, >> >> .wake =3D sedf_wake, >> >> .adjust =3D sedf_adjust, >> >> + .adjust_global =3D NULL, >> >> }; >> >> >> >> /* >> >> diff -rupN a/xen/common/schedule.c b/xen/common/schedule.c >> >> --- a/xen/common/schedule.c 2010-04-07 12:12:06.000000000 -0400 >> >> +++ b/xen/common/schedule.c 2010-04-14 10:57:11.262796000 -0400 >> >> @@ -804,6 +804,21 @@ long sched_adjust(struct domain *d, stru >> >> return ret; >> >> } >> >> >> >> +/* Adjust scheduling parameters globally */ >> >> +long sched_adjust_global(struct xen_domctl_scheduler_op *op) >> >> +{ >> >> + long ret; >> >> + >> >> + if ( (op->sched_id !=3D ops.sched_id) >> >> + || ( (op->cmd !=3D XEN_DOMCTL_SCHEDOP_put_global_info) >> >> + && (op->cmd !=3D XEN_DOMCTL_SCHEDOP_get_global_info) ) ) >> >> + return -EINVAL; >> >> + >> >> + ret =3D SCHED_OP(adjust_global, op); >> >> + >> >> + return ret; >> >> +} >> >> + >> >> static void vcpu_periodic_timer_work(struct vcpu *v) >> >> { >> >> s_time_t now =3D NOW(); >> >> diff -rupN a/xen/include/public/domctl.h b/xen/include/public/domctl.h >> >> --- a/xen/include/public/domctl.h 2010-04-07 12:12:06.000000000 -0400 >> >> +++ b/xen/include/public/domctl.h 2010-04-14 10:57:11.262796000 >> -0400 >> >> @@ -306,6 +306,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_v >> >> /* Set or get info? */ >> >> #define XEN_DOMCTL_SCHEDOP_putinfo 0 >> >> #define XEN_DOMCTL_SCHEDOP_getinfo 1 >> >> +#define XEN_DOMCTL_SCHEDOP_put_global_info 2 >> >> +#define XEN_DOMCTL_SCHEDOP_get_global_info 3 >> >> struct xen_domctl_scheduler_op { >> >> uint32_t sched_id; /* XEN_SCHEDULER_* */ >> >> uint32_t cmd; /* XEN_DOMCTL_SCHEDOP_* */ >> >> diff -rupN a/xen/include/xen/sched.h b/xen/include/xen/sched.h >> >> --- a/xen/include/xen/sched.h 2010-04-07 12:12:06.000000000 -0400 >> >> +++ b/xen/include/xen/sched.h 2010-04-13 17:30:40.710992000 -0400 >> >> @@ -472,6 +472,7 @@ void sched_destroy_vcpu(struct vcpu *v); >> >> int sched_init_domain(struct domain *d); >> >> void sched_destroy_domain(struct domain *d); >> >> long sched_adjust(struct domain *, struct xen_domctl_scheduler_op *); >> >> +long sched_adjust_global(struct xen_domctl_scheduler_op *); >> >> int sched_id(void); >> >> void sched_tick_suspend(void); >> >> void sched_tick_resume(void); >> >> diff -rupN a/xen/include/xen/sched-if.h b/xen/include/xen/sched-if.h >> >> --- a/xen/include/xen/sched-if.h 2010-04-07 12:12:06.000000000 -0400 >> >> +++ b/xen/include/xen/sched-if.h 2010-04-13 17:30:40.710992000 >> -0400 >> >> @@ -76,6 +76,7 @@ struct scheduler { >> >> int (*pick_cpu) (struct vcpu *); >> >> int (*adjust) (struct domain *, >> >> struct xen_domctl_scheduler_op *); >> >> + int (*adjust_global) (struct xen_domctl_scheduler_op *); >> >> void (*dump_settings) (void); >> >> void (*dump_cpu_state) (int); >> >> >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xensource.com >> http://lists.xensource.com/xen-devel >> >> > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel > > --00151747c0fe315be90485b94123 Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Also, the SCHEDOP needs an xsm callback; but I'm not an expert enough i= n the xsm framework to say what it needs.

Other than that:

Ac= ked-by: George Dunlap <ge= orge.dunlap@eu.citrix.com>

On Mon, Apr 19, 2010 at 6:54 AM, Dulloor <dulloor@gmail.com> wrote:
You don't have to explicitly set adjust_global to NULL for credit and s= edf.

-dulloor

=

Resubmittin= g now that I have been added to the Xen-devel mailing list.

=A0<= /p>

Kathy Hadle= y

DornerWorks= , Ltd.

=A0<= /p>

From:= Kathy Hadley
Sent: Friday, April 16, 2010 10:14 AM
To: 'xen-devel@lists.xensource.com'
Cc: 'Keir.Fraser@citrix.com'
Subject: [Xen-Devel] [PATCH 1/1] Add .adjust_global callback
<= /p>

=A0

This patch adds an .adjust_global scheduler callback function, which allows adjusting the global scheduler parameters (rather th= an just one domain=92s parameters).=A0 This patch supports the addition of an ARINC 653 scheduler (which will be submitted in a subsequent patch), and= was suggested by George Dunlap and Keir Fraser in response to an earlier patch (ref: [Xen-devel] [PATCH 1/1] Xen ARINC 653 scheduler).

=A0

Thanks and regards,

=A0

=A0

3D"cid:image00=

Kathy Hadley
DornerWorks, Ltd.
Embedded Systems Engineering

3445 Lake Eastbrook Blvd SE
Grand Rapids, MI=A0 49546

Direct: 616.389.6127

Tel:=A0=A0=A0=A0=A0 616.245.8369

Fax:=A0=A0=A0=A0 616.245.8372

=A0

Kathy.Hadley@DornerWorks.com

www.DornerWorks.com

3D"cid:image002.jpg@01CAD7E0.50=

Honored as one of the 2010 =93Michigan 50 Companies to Watch=94

=A0

diff -rupN a/xen/common/domctl.c b/xen/common/domctl.c

--- a/xen/common/domctl.c=A0=A0=A0=A0=A0=A0=A0 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/common/domctl.c=A0=A0=A0=A0 2010-04-14 10:57:11.262796000 -0400

@@ -592,22 +592,35 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc

=A0

=A0=A0=A0=A0 case XEN_DOMCTL_scheduler_op:

=A0=A0=A0=A0 {

-=A0=A0=A0=A0=A0=A0=A0 struct domain *d;

-

-=A0=A0=A0=A0=A0=A0=A0 ret =3D -ESRCH;

-=A0=A0=A0=A0=A0=A0=A0 if ( (d =3D rcu_lock_domain_by_id(op->domain)) =3D=3D NULL )

-=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 break;

+=A0=A0=A0=A0=A0=A0=A0 if ( (op->u.scheduler_op.cmd =3D=3D XEN_DOMCTL_SCHEDOP_put_global_info= )

+=A0=A0=A0=A0=A0=A0=A0=A0=A0 || (op->u.scheduler_op.cmd =3D=3D XEN_DOMCTL_SCHEDOP_get_global_info) = )

+=A0=A0=A0=A0=A0=A0=A0 {

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D sched_adjust_global(&op->u.scheduler_op);

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if (op->u.scheduler_op.cmd =3D=3D XEN_DOMCTL_SCHEDOP_get_global_info)<= /span>

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 {

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if ( copy_to_guest(u_domctl, op, 1) )

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0 ret =3D -EFAULT;

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 }

+=A0=A0=A0=A0=A0=A0=A0 }

+=A0=A0=A0=A0=A0=A0=A0 else

+=A0=A0=A0=A0=A0=A0=A0 {

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 struct domain *d;

=A0

-=A0=A0=A0=A0=A0=A0=A0 ret =3D xsm_scheduler(d);

-=A0=A0=A0=A0=A0=A0=A0 if ( ret )

-=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 goto scheduler_op_out;

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D -ESRCH;

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if ( (d =3D rcu_lock_domain_by_id(op->domain)) =3D=3D NULL )

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 break;

=A0

-=A0=A0=A0=A0=A0=A0=A0 ret =3D sched_adjust(d, &op->u.scheduler_op);

-=A0=A0=A0=A0=A0=A0=A0 if ( copy_to_guest(u_domctl, op, 1) )

-=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D -EFAULT;

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D xsm_scheduler(d);

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if ( ret )

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 goto scheduler_op_out;

+

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D sched_adjust(d, &op->u.scheduler_op);

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 if ( copy_to_guest(u_domctl, op, 1) )

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ret =3D -EFAULT;

=A0

-=A0=A0=A0 scheduler_op_out:

-=A0=A0=A0=A0=A0=A0=A0 rcu_unlock_domain(d);

+=A0=A0=A0=A0=A0=A0=A0 scheduler_op_out:

+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 rcu_unlock_domain(d);

+=A0=A0=A0=A0=A0=A0=A0 }

=A0=A0=A0=A0 }

=A0=A0=A0=A0 break;

=A0

diff -rupN a/xen/common/sched_credit.c b/xen/common/sched_credit.c

--- a/xen/common/sched_credit.c=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/common/sched_credit.c=A0=A0=A0=A0=A0=A0=A0 2010-04-13 17:30:40.710992000 -0400

@@ -1404,6 +1404,7 @@ const struct scheduler sched_credit_def

=A0=A0=A0=A0 .wake=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3D csched_vcpu_wake,

=A0

=A0=A0=A0=A0 .adjust=A0=A0=A0=A0=A0=A0=A0=A0 =3D csched_dom_cntl,

+=A0=A0=A0 .adjust_global=A0 =3D NULL,

=A0

=A0=A0=A0=A0 .pick_cpu=A0=A0=A0=A0=A0=A0 =3D csched_cpu_pick,

=A0=A0=A0=A0 .do_schedule=A0=A0=A0 =3D csched_schedule,

diff -rupN a/xen/common/sched_sedf.c b/xen/common/sched_sedf.c

--- a/xen/common/sched_sedf.c 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/common/sched_sedf.c=A0=A0=A0=A0=A0=A0=A0=A0=A0 2010-04-13 17:30:40.710992000 -0400

@@ -1473,6 +1473,7 @@ const struct scheduler sched_sedf_def =3D

=A0=A0=A0=A0 .sleep=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3D sedf_sleep,

=A0=A0=A0=A0 .wake=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3D sedf_wake,

=A0=A0=A0=A0 .adjust=A0=A0=A0=A0=A0=A0=A0=A0 =3D sedf_adjust,

+=A0=A0=A0 .adjust_global=A0 =3D NULL,

=A0};

=A0

=A0/*

diff -rupN a/xen/common/schedule.c b/xen/common/schedule.c

--- a/xen/common/schedule.c=A0=A0=A0=A0 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/common/schedule.c=A0 2010-04-14 10:57:11.262796000 -0400

@@ -804,6 +804,21 @@ long sched_adjust(struct domain *d, stru

=A0=A0=A0=A0 return ret;

=A0}

=A0

+/* Adjust scheduling parameters globally */

+long sched_adjust_global(struct xen_domctl_scheduler_op *op)

+{

+=A0=A0=A0 long ret;

+

+=A0=A0=A0 if ( (op->sched_id !=3D ops.sched_id)

+=A0=A0=A0=A0=A0 || ( (op->cmd !=3D XEN_DOMCTL_SCHEDOP_put_global_info)

+=A0=A0=A0=A0=A0=A0=A0 && (op->cmd !=3D XEN_DOMCTL_SCHEDOP_get_global_info) ) )

+=A0=A0=A0=A0=A0=A0=A0 return -EINVAL;

+

+=A0=A0=A0 ret =3D SCHED_OP(adjust_global, op);

+

+=A0=A0=A0 return ret;

+}

+

=A0static void vcpu_periodic_timer_work(struct vcpu *v)

=A0{

=A0=A0=A0=A0 s_time_t now =3D NOW();

diff -rupN a/xen/include/public/domctl.h b/xen/include/public/domctl.h<= /p>

--- a/xen/include/public/domctl.h 2010-04-07 12:12:06.000000000 -0400<= /p>

+++ b/xen/include/public/domctl.h=A0=A0=A0=A0=A0=A0=A0=A0 2010-04-14 10:57:11.262796000 -0400

@@ -306,6 +306,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_v

=A0/* Set or get info? */

=A0#define XEN_DOMCTL_SCHEDOP_putinfo 0

=A0#define XEN_DOMCTL_SCHEDOP_getinfo 1

+#define XEN_DOMCTL_SCHEDOP_put_global_info 2

+#define XEN_DOMCTL_SCHEDOP_get_global_info 3

=A0struct xen_domctl_scheduler_op {

=A0=A0=A0=A0 uint32_t sched_id;=A0 /* XEN_SCHEDULER_* */

=A0=A0=A0=A0 uint32_t cmd;=A0=A0=A0=A0=A0=A0 /* XEN_DOMCTL_SCHEDOP_* */

diff -rupN a/xen/include/xen/sched.h b/xen/include/xen/sched.h

--- a/xen/include/xen/sched.h=A0=A0=A0=A0=A0 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/include/xen/sched.h=A0 2010-04-13 17:30:40.710992000 -0400

@@ -472,6 +472,7 @@ void sched_destroy_vcpu(struct vcpu *v);

=A0int=A0 sched_init_domain(struct domain *d);

=A0void sched_destroy_domain(struct domain *d);

=A0long sched_adjust(struct domain *, struct xen_domctl_scheduler_op *);

+long sched_adjust_global(struct xen_domctl_scheduler_op *);

=A0int=A0 sched_id(void);

=A0void sched_tick_suspend(void);

=A0void sched_tick_resume(void);

diff -rupN a/xen/include/xen/sched-if.h b/xen/include/xen/sched-if.h

--- a/xen/include/xen/sched-if.h=A0=A0 2010-04-07 12:12:06.000000000 -0400

+++ b/xen/include/xen/sched-if.h=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 2010-04-13 17:30:40.710992000 -0400

@@ -76,6 +76,7 @@ struct scheduler {

=A0=A0=A0=A0 int=A0=A0=A0=A0=A0=A0=A0=A0=A0 (*pick_cpu)=A0=A0=A0=A0=A0=A0 (struct vcpu *);

=A0=A0=A0=A0 int=A0=A0=A0=A0=A0=A0=A0=A0=A0 (*adjust)=A0=A0=A0=A0=A0=A0=A0=A0 (struct domain *,

=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 struct xen_domctl_scheduler_op *);

+=A0=A0=A0 int=A0=A0=A0=A0=A0=A0=A0=A0=A0 (*adjust_global)=A0 (struct xen_domctl_scheduler_op *);

=A0=A0=A0=A0 void=A0=A0=A0=A0=A0=A0=A0=A0 (*dump_settings)=A0 (void);

=A0=A0=A0=A0 void=A0=A0=A0=A0=A0=A0=A0=A0 (*dump_cpu_state) (int);

=A0<= /p>

=A0<= /p>

=A0<= /p>

=A0

=A0


_______________________________________________
Xen-devel mailing list
Xen-deve= l@lists.xensource.com
http://l= ists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.= com
http://l= ists.xensource.com/xen-devel


--00151747c0fe315be90485b94123-- --00151747c0fe315bed0485b94124 Content-Type: image/jpeg; name="image002.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 0.0.2 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCABVAFIDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDrNJOm pZzXl3Ikrx52wbhuOPbuaZbeJIJ72K2vNESGKZwiuvJBPTPFYcMUaS7o0+duOOSa6a0s7fRrZdR1 THmZ/cw4yd3bA/vfypiGaraLYXgRCSjjcoPUe1WZvI0XT0nntzdXMvCQj1/+t3NYmoanLdM93MAp AGFHRRnpW74jORayryhBAP1waAIdL1W31i4exurD7FdbdybejD2plzIdPkfzYXmMR/1adX9K5LX/ ABENJki+xuPt6ZKsOfLBGDn86q+HPF8skq2mrTl2biO4c8/Rj/WsnWgp8p1RwtSVP2iR6PaXCX+i veGyFq/zDYeSMHr0qGEtJIqL1Y4qW1cf8I/Kc92/nVfTplF7FuIGTgfU1qco/VNWXS50srOyN7dl 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 miiigD//2Q== --00151747c0fe315bed0485b94124 Content-Type: image/jpeg; name="image001.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 0.0.1 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCABSAGcDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwBdc1SD QLXRre10LRpBNpkErvPZKzFiOTn8Kyf+Exf/AKF7QP8AwXrU3jj/AJgP/YHt/wCRrl66YxTR5Nat UjUaTPR/D/jDwneOtvrXhvTLOQ8CdLVDGfqMZX9a6LxDoaW9oL/Q9E0W6hC7mjNijMR/eUjr9K8W rsvAfjebQbtLC+lL6bK2Pm58gnuPb1FZ1KN17uhrQxbvaYf8JGv/AEL+hf8AgvSj/hI1/wChf0L/ AMAEre8f+Go7SQazYqBbzn98q9FY9GHsf5/WuIrw6k6sJcrkeqrM2f8AhI1/6F/Qv/ABKP8AhI1/ 6F/Qv/ABKxqXk8AZNZ+3qfzDsjY/4SNf+hf0L/wASj/hI1/6F/Qv/ABKl8SeG30K30+U5P2iEebn +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 --00151747c0fe315bed0485b94124-- --===============1501818236== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --===============1501818236==--