On Tuesday, September 11, 2012, Daniel Lezcano wrote:
> On 09/08/2012 12:06 AM, Rafael J. Wysocki wrote:
> > On Friday, September 07, 2012, Rafael J. Wysocki wrote:
> >> On Friday, September 07, 2012, Rafael J. Wysocki wrote:
> >>> On Friday, September 07, 2012, Daniel Lezcano wrote:
> >>>> Currently we have the cpuidle_device field in the acpi_processor_power 
> >>>> structure.
> >>>> This adds a dependency in processor.h for cpuidle.h.
> >>>>
> >>>> In order to be consistent with the rest of the drivers and for the per 
> >>>> cpu states
> >>>> coming right after this patch, this one move out of the 
> >>>> acpi_processor_power
> >>>> structure the cpuidle_device field.
> >>>>
> >>>> Signed-off-by: Daniel Lezcano <daniel.lezc...@linaro.org>
> >>>> Acked-by: Peter De Schrijver <pdeschrij...@nvidia.com>
> >>>> Tested-by: Peter De Schrijver <pdeschrij...@nvidia.com>
> >>>> ---
> >>>>  drivers/acpi/processor_idle.c |   25 ++++++++++++++++++-------
> >>>>  include/acpi/processor.h      |    2 --
> >>>>  2 files changed, 18 insertions(+), 9 deletions(-)
> >>>>
> >>>> diff --git a/drivers/acpi/processor_idle.c 
> >>>> b/drivers/acpi/processor_idle.c
> >>>> index de89624..084b1d2 100644
> >>>> --- a/drivers/acpi/processor_idle.c
> >>>> +++ b/drivers/acpi/processor_idle.c
> >>>> @@ -79,6 +79,8 @@ module_param(bm_check_disable, uint, 0000);
> >>>>  static unsigned int latency_factor __read_mostly = 2;
> >>>>  module_param(latency_factor, uint, 0644);
> >>>>  
> >>>> +static DEFINE_PER_CPU(struct cpuidle_device, acpi_cpuidle_device);
> >>>> +
> >>>
> >>> Well.  Why are you moving that thing into the percpu memory?  It doesn't
> >>> have to be per-CPU and storing it there just wastes the room.
> >>
> >> Sorry, it is per-CPU already, scratch that.
> > 
> > Well, no, it isn't.  So I was right originally (boy, that code _is_ 
> > confusing).
> > 
> > So originally you had per-CPU pointers called 'processors' that each pointed
> > to a struct acpi_processor object created by acpi_processor_add() in slab
> > memory.  Your patch doesn't touch those pointers, so they are still there.
> 
> Yes, the purpose of this patch is the same as the other patches which is
> separate the cpuidle code from the rest of the acpi code. It is part of
> the cleanup.
> 
> > In addition to them it creates a number of static per-CPU objects that
> > previously were stored in those struct acpi_processor object mentioned 
> > above.
> > These things need not be stored in percpu memory.
> 
> Agreed, this patch makes the cpuidle driver to consume more per cpu
> memory. Is it acceptable to create a per cpu pointer for the cpuidle
> devices which will be allocated in the processor_driver init function
> like the intel_idle driver ? We keep the same memory consumption while
> we are moving the cpuidle specific code the C file.

I'm not really sure what you mean hear, care to elaborate?

> By the way, most of the cpuidle drivers for ARM are defining a static
> cpuidle device structure per cpu. I guess your remark for acpi applies
> to them too.

Yes, it does.  Percpu memory is limited and should only be used for things
that really need to be stored there.

> Not easy to make all these drivers to converge to the same code scheme ...

I agree, but then I'm not sure it's a problem if they are slightly different.

Thanks,
Rafael

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to