|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 04/16] xen: sched: implement .init_pdata in all schedulers
On 22/03/16 08:03, Juergen Gross wrote:
> On 18/03/16 20:04, Dario Faggioli wrote:
>> by borrowing some of the code of .alloc_pdata, i.e.,
>> the bits that perform initializations, leaving only
>> actual allocations in there, when any, which is the
>> case for Credit1 and RTDS.
>>
>> On the other hand, in Credit2, since we don't really
>> need any per-pCPU data allocation, everything that was
>> being done in .alloc_pdata, is now done in .init_pdata.
>> And the fact that now .alloc_pdata can be left undefined,
>> allows us to just get rid of it.
>>
>> Still for Credit2, the fact that .init_pdata is called
>> during CPU_STARTING (rather than CPU_UP_PREPARE) kills
>> the need for the scheduler to setup a similar callback
>> itself, simplifying the code.
>>
>> And thanks to such simplification, it is now also ok to
>> move some of the logic meant at double checking that a
>> cpu was (or was not) initialized, into ASSERTS (rather
>> than an if() and a BUG_ON).
>>
>> Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
>> ---
>> Cc: George Dunlap <george.dunlap@xxxxxxxxxxxxx>
>> Cc: Meng Xu <mengxu@xxxxxxxxxxxxx>
>> Cc: Juergen Gross <jgross@xxxxxxxx>
>> ---
>> xen/common/sched_credit.c | 20 +++++++++---
>> xen/common/sched_credit2.c | 72
>> +++-----------------------------------------
>> xen/common/sched_rt.c | 9 ++++--
>> 3 files changed, 26 insertions(+), 75 deletions(-)
>>
>> diff --git a/xen/common/sched_credit.c b/xen/common/sched_credit.c
>> index 288749f..d4a0f5e 100644
>> --- a/xen/common/sched_credit.c
>> +++ b/xen/common/sched_credit.c
>> @@ -526,8 +526,6 @@ static void *
>> csched_alloc_pdata(const struct scheduler *ops, int cpu)
>> {
>> struct csched_pcpu *spc;
>> - struct csched_private *prv = CSCHED_PRIV(ops);
>> - unsigned long flags;
>>
>> /* Allocate per-PCPU info */
>> spc = xzalloc(struct csched_pcpu);
>> @@ -540,6 +538,19 @@ csched_alloc_pdata(const struct scheduler *ops, int cpu)
>> return ERR_PTR(-ENOMEM);
>> }
>>
>> + return spc;
>> +}
>> +
>> +static void
>> +csched_init_pdata(const struct scheduler *ops, void *pdata, int cpu)
>> +{
>> + struct csched_private *prv = CSCHED_PRIV(ops);
>> + struct csched_pcpu * const spc = pdata;
>> + unsigned long flags;
>> +
>> + /* cpu data needs to be allocated, but STILL uninitialized */
>> + ASSERT(spc && spc->runq.next == spc->runq.prev && spc->runq.next ==
>> NULL);
>
> This looks weird. I'd prefer:
>
> ASSERT(spc && spc->runq.next == NULL && spc->runq.prev == NULL);
I prefer Juergen's suggestion too. I wouldn't say it's worth respinning
over, but since you have to make adjustments to the previous patch
anyway, you might as well change this while you're at it.
With that change:
Reviewed-by: George Dunlap <george.dunlap@xxxxxxxxxx>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |