xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: George Dunlap <George.Dunlap@eu.citrix.com>
To: Dulloor <dulloor@gmail.com>
Cc: keir.fraser@citrix.com,
	Kathy Hadley <Kathy.Hadley@dornerworks.com>,
	xen-devel@lists.xensource.com
Subject: Re: [PATCH 1/1] Add .adjust_global callback
Date: Mon, 3 May 2010 20:29:19 -0700	[thread overview]
Message-ID: <o2tde76405a1005032029wc8b4ef36lca5c318d207c7f77@mail.gmail.com> (raw)
In-Reply-To: <z2sde76405a1005031650p98ad8dcfi7780120d710fe922@mail.gmail.com>


[-- Attachment #1.1.1: Type: text/plain, Size: 8912 bytes --]

Hmm, and it also needs to be adjusted for the new cpu pools stuff.  I'll
take a look at it tomorrow.
 -George



On Mon, May 3, 2010 at 4:50 PM, George Dunlap
<George.Dunlap@eu.citrix.com>wrote:

> Also, the SCHEDOP needs an xsm callback; but I'm not an expert enough in
> the xsm framework to say what it needs.
>
> Other than that:
>
> Acked-by: George Dunlap <george.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
>> sedf.
>>
>> -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’s parameters).  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).
>>>
>>>
>>>
>>> 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 <http://www.dornerworks.com/>
>>>
>>> [image: cid:image002.jpg@01CAD7E0.50E45D70]
>>>
>>> *Honored as one of the 2010 “Michigan 50 Companies to Watch”*
>>>
>>>
>>>
>>> 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 = -ESRCH;
>>>
>>> -        if ( (d = rcu_lock_domain_by_id(op->domain)) == NULL )
>>>
>>> -            break;
>>>
>>> +        if ( (op->u.scheduler_op.cmd ==
>>> XEN_DOMCTL_SCHEDOP_put_global_info)
>>>
>>> +          || (op->u.scheduler_op.cmd ==
>>> XEN_DOMCTL_SCHEDOP_get_global_info) )
>>>
>>> +        {
>>>
>>> +            ret = sched_adjust_global(&op->u.scheduler_op);
>>>
>>> +            if (op->u.scheduler_op.cmd ==
>>> XEN_DOMCTL_SCHEDOP_get_global_info)
>>>
>>> +            {
>>>
>>> +                if ( copy_to_guest(u_domctl, op, 1) )
>>>
>>> +                    ret = -EFAULT;
>>>
>>> +            }
>>>
>>> +        }
>>>
>>> +        else
>>>
>>> +        {
>>>
>>> +            struct domain *d;
>>>
>>>
>>>
>>> -        ret = xsm_scheduler(d);
>>>
>>> -        if ( ret )
>>>
>>> -            goto scheduler_op_out;
>>>
>>> +            ret = -ESRCH;
>>>
>>> +            if ( (d = rcu_lock_domain_by_id(op->domain)) == NULL )
>>>
>>> +                break;
>>>
>>>
>>>
>>> -        ret = sched_adjust(d, &op->u.scheduler_op);
>>>
>>> -        if ( copy_to_guest(u_domctl, op, 1) )
>>>
>>> -            ret = -EFAULT;
>>>
>>> +            ret = xsm_scheduler(d);
>>>
>>> +            if ( ret )
>>>
>>> +                goto scheduler_op_out;
>>>
>>> +
>>>
>>> +            ret = sched_adjust(d, &op->u.scheduler_op);
>>>
>>> +            if ( copy_to_guest(u_domctl, op, 1) )
>>>
>>> +                ret = -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
>>> -0400
>>>
>>> @@ -1404,6 +1404,7 @@ const struct scheduler sched_credit_def
>>>
>>>      .wake           = csched_vcpu_wake,
>>>
>>>
>>>
>>>      .adjust         = csched_dom_cntl,
>>>
>>> +    .adjust_global  = NULL,
>>>
>>>
>>>
>>>      .pick_cpu       = csched_cpu_pick,
>>>
>>>      .do_schedule    = 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
>>> -0400
>>>
>>> @@ -1473,6 +1473,7 @@ const struct scheduler sched_sedf_def =
>>>
>>>      .sleep          = sedf_sleep,
>>>
>>>      .wake           = sedf_wake,
>>>
>>>      .adjust         = sedf_adjust,
>>>
>>> +    .adjust_global  = 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 != ops.sched_id)
>>>
>>> +      || ( (op->cmd != XEN_DOMCTL_SCHEDOP_put_global_info)
>>>
>>> +        && (op->cmd != XEN_DOMCTL_SCHEDOP_get_global_info) ) )
>>>
>>> +        return -EINVAL;
>>>
>>> +
>>>
>>> +    ret = SCHED_OP(adjust_global, op);
>>>
>>> +
>>>
>>> +    return ret;
>>>
>>> +}
>>>
>>> +
>>>
>>>  static void vcpu_periodic_timer_work(struct vcpu *v)
>>>
>>>  {
>>>
>>>      s_time_t now = 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
>>
>>
>

[-- Attachment #1.1.2: Type: text/html, Size: 27187 bytes --]

[-- Attachment #1.2: image002.jpg --]
[-- Type: image/jpeg, Size: 2857 bytes --]

[-- Attachment #1.3: image001.jpg --]
[-- Type: image/jpeg, Size: 3294 bytes --]

[-- Attachment #2: Type: text/plain, Size: 138 bytes --]

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

  reply	other threads:[~2010-05-04  3:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-19 13:39 [PATCH 1/1] Add .adjust_global callback Kathy Hadley
2010-04-19 13:54 ` Dulloor
2010-05-03 23:50   ` George Dunlap
2010-05-04  3:29     ` George Dunlap [this message]
2010-05-04 15:46       ` George Dunlap
2010-05-04 16:18         ` Keir Fraser
  -- strict thread matches above, loose matches on Subject: below --
2010-04-16 14:14 Kathy Hadley

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=o2tde76405a1005032029wc8b4ef36lca5c318d207c7f77@mail.gmail.com \
    --to=george.dunlap@eu.citrix.com \
    --cc=Kathy.Hadley@dornerworks.com \
    --cc=dulloor@gmail.com \
    --cc=keir.fraser@citrix.com \
    --cc=xen-devel@lists.xensource.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 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).