I migrated to c/s 21632 in the staging tree. I see that
xen_sysctl_scheduler_op in sysctl.h was updated in c/s 21626 to add cpupool_id
to the structure. I call the following function from an application executing
in Dom0 to adjust the ARINC 653 schedule:
xc_sched_arinc653_sched_set(
xc_interface *xch,
xen_sysctl_sched_arinc653_schedule_t * sched)
{
DECLARE_SYSCTL;
sysctl.cmd = XEN_SYSCTL_scheduler_op;
sysctl.u.scheduler_op.sched_id = XEN_SCHEDULER_ARINC653;
sysctl.u.scheduler_op.cmd = XEN_SYSCTL_SCHEDOP_putinfo;
set_xen_guest_handle(sysctl.u.scheduler_op.u.arinc653.schedule, sched);
return do_sysctl(xch, &sysctl);
}
In this function, which executes in Dom0, how do I determine the cpupool_id
that I need to set in the sysctl data structure?
Thank you,
Kathy Hadley
> -----Original Message-----
> From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx]
> Sent: Thursday, June 17, 2010 3:04 AM
> To: Kathy Hadley; George Dunlap
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxx; Juergen Gross
> Subject: Re: [Xen-devel] [PATCH 1/1] Xen ARINC 653 Scheduler (updated
> to add support for CPU pools)
>
> On 16/06/2010 19:03, "Kathy Hadley" <Kathy.Hadley@xxxxxxxxxxxxxxx>
> wrote:
>
> > That sounds reasonable to me.
>
> Fixed as of changeset 21626, in the staging tree
> (http://xenbits.xensource.com/staging/xen-unstable.hg).
>
> K.
>
> > Kathy
> >
> >> -----Original Message-----
> >> From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx]
> >> Sent: Wednesday, June 16, 2010 12:50 PM
> >> To: Kathy Hadley; George Dunlap
> >> Cc: xen-devel@xxxxxxxxxxxxxxxxxxx; Juergen Gross
> >> Subject: Re: [Xen-devel] [PATCH 1/1] Xen ARINC 653 Scheduler
> (updated
> >> to add support for CPU pools)
> >>
> >> Oh, I see. Well, the cause is that the
> >> common/schedule.c:sched_adjust_global() is broken. But, what should
> it
> >> actually do, given that multiple schedulers of same or differing
> types
> >> may
> >> exist in a system now? Perhaps the sysctl should take a cpupool id,
> to
> >> uniquely identify the scheduler instance to be adjusted?
> >>
> >> -- Keir
> >>
> >> On 16/06/2010 17:40, "Kathy Hadley" <Kathy.Hadley@xxxxxxxxxxxxxxx>
> >> wrote:
> >>
> >>> Keir, George, et. al.,
> >>> I definitely saw two "ops" values. When the .init function was
> >> called, ops
> >>> = 0xFF213DC0; I then used xmalloc() to allocate memory for the
> >> scheduler data
> >>> structure and set ops->sched_data equal to the address of that
> memory
> >> block
> >>> (similar to what is done in csched_init in sched_credit.c). When
> the
> >>> .adjust_global function was called, ops = 0xFF2112D0 and ops-
> >>> sched_data was
> >>> not equal to the address of the memory block allocated in the .init
> >> function
> >>> (it was equal to the value set when "sched_arinc653_def" was
> >> declared).
> >>>
> >>> Regards,
> >>> Kathy
> >>>
> >>>> -----Original Message-----
> >>>> From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx]
> >>>> Sent: Wednesday, June 16, 2010 12:32 PM
> >>>> To: Kathy Hadley; George Dunlap
> >>>> Cc: xen-devel@xxxxxxxxxxxxxxxxxxx; Juergen Gross
> >>>> Subject: Re: [Xen-devel] [PATCH 1/1] Xen ARINC 653 Scheduler
> >> (updated
> >>>> to add support for CPU pools)
> >>>>
> >>>> On 16/06/2010 17:25, "Kathy Hadley" <Kathy.Hadley@xxxxxxxxxxxxxxx>
> >>>> wrote:
> >>>>
> >>>>> Keir,
> >>>>> I only saw the .init function called once. I downloaded xen-
> >>>> unstable on May
> >>>>> 27. Were your updates after that?
> >>>>
> >>>> My changes were done before May 27, and that ties in with you
> seeing
> >>>> .init
> >>>> called only once. That being the case, you should not see multiple
> >>>> different
> >>>> ops structures ('struct scheduler' instances). The only ops struct
> >> that
> >>>> should exist in the system in this case should be the one
> statically
> >>>> defined
> >>>> near the top of common/schedule.c.
> >>>>
> >>>> -- Keir
> >>>>
> >>>>> Thanks,
> >>>>> Kathy Hadley
> >>>>>
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx]
> >>>>>> Sent: Wednesday, June 16, 2010 12:20 PM
> >>>>>> To: George Dunlap; Kathy Hadley
> >>>>>> Cc: xen-devel@xxxxxxxxxxxxxxxxxxx; Juergen Gross
> >>>>>> Subject: Re: [Xen-devel] [PATCH 1/1] Xen ARINC 653 Scheduler
> >>>> (updated
> >>>>>> to add support for CPU pools)
> >>>>>>
> >>>>>> On 16/06/2010 17:14, "George Dunlap"
> <George.Dunlap@xxxxxxxxxxxxx>
> >>>>>> wrote:
> >>>>>>
> >>>>>>>> I actually tried the xmalloc() method first. I found that
> when
> >>>> the
> >>>>>>>> .adjust_global function was called, the address of the "ops"
> >> data
> >>>>>> structure
> >>>>>>>> passed to that function was different from the address of the
> >>>> "ops"
> >>>>>> data
> >>>>>>>> structure when the .init function was called. I wanted to use
> >>>>>> .adjust_global
> >>>>>>>> to modify the data structure that was created when the .init
> >>>>>> function was
> >>>>>>>> called, but I could not figure out a way to get the address of
> >> the
> >>>>>> second
> >>>>>>>> data structure. Suggestions?
> >>>>>>>
> >>>>>>> It's been a month or two since I trawled through the cpupools
> >> code;
> >>>>>>> but I seem to recall that .init is called twice -- once for the
> >>>>>>> "default pool" (cpupool0), and once for an actually in-use
> pool.
> >>>>>>> (Juergen, can you correct me if I'm wrong?) Is it possible
> that
> >>>>>>> that's the difference in the pointers that you're seeing?
> >>>>>>
> >>>>>> Oh yes, that was the old behaviour. I took a hatchet to the
> >>>>>> scheduler/cpupool interfaces a few weeks ago and now we should
> >> only
> >>>>>> initialise the scheduler once, unless extra cpupools are
> manually
> >>>>>> created.
> >>>>>> The fact that Kathy is seeing two different ops structures
> >> probably
> >>>>>> indicates that her xen-unstable tree is very out of date. Which
> >> may
> >>>>>> also
> >>>>>> mean that the patch will not apply to current tip.
> >>>>>>
> >>>>>> -- Keir
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> >
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|