xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Keir Fraser <keir.fraser@eu.citrix.com>
To: George Dunlap <George.Dunlap@eu.citrix.com>,
	Kathy Hadley <Kathy.Hadley@dornerworks.com>,
	"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: Re: [PATCH 1/1] Add .adjust_global callback
Date: Tue, 4 May 2010 17:18:06 +0100	[thread overview]
Message-ID: <C806074E.1349F%keir.fraser@eu.citrix.com> (raw)
In-Reply-To: <q2qde76405a1005040846r44491569n605715e5f6b9193@mail.gmail.com>

For domctl/sysctl we do whatever gives the cleanest API, and bump the
interface version number if the change is not backwards compatible.

 -- Keir

On 04/05/2010 16:46, "George Dunlap" <George.Dunlap@eu.citrix.com> wrote:

> Keir, the new SCHEDOP_adjust_global needs to have the cpupool_id so that we
> can call the "global" parameters for the right pool.  Would it make sense to
> overload the domid in DOMCTL, making it the cpupool_id if the command is
> XEN_DOMCTL_SCHEDOP_{get,put}_global_info?  Or should we put it somewhere
> else?  I glanced around the other hypercalls, and nothing seems much better;
> the cpupools stuff is in the DOMCTL file anyway.
> 
>  -George
> 
> On Mon, May 3, 2010 at 10:29 PM, George Dunlap <George.Dunlap@eu.citrix.com>
> wrote:
>> 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,
>>>>>  
>>>>>  
>>>>>  
>>>>>      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
>>>>> <mailto:Kathy.Hadley@DornerWorks.com>  www.DornerWorks.com
>>>>> <http://www.dornerworks.com/>
>>>>>   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
>>>>> 
>>>> 
>>> 
>> 
>> 

  reply	other threads:[~2010-05-04 16:18 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
2010-05-04 15:46       ` George Dunlap
2010-05-04 16:18         ` Keir Fraser [this message]
  -- 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=C806074E.1349F%keir.fraser@eu.citrix.com \
    --to=keir.fraser@eu.citrix.com \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=Kathy.Hadley@dornerworks.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).