RE: Kobject_uevent in cpufreq.c

From: R, Durgadoss
Date: Mon May 13 2013 - 12:08:30 EST


> -----Original Message-----
> From: linux-pm-owner@xxxxxxxxxxxxxxx [mailto:linux-pm-
> owner@xxxxxxxxxxxxxxx] On Behalf Of Greg KH
> (gregkh@xxxxxxxxxxxxxxxxxxx)
> Sent: Monday, May 13, 2013 5:28 PM
> To: R, Durgadoss
> Cc: linux-kernel@xxxxxxxxxxxxxxx; Linux PM list (linux-pm@xxxxxxxxxxxxxxx);
> Wysocki, Rafael J
> Subject: Re: Kobject_uevent in cpufreq.c
>
> On Mon, May 13, 2013 at 11:31:57AM +0000, R, Durgadoss wrote:
> > Hi,
> >
> > I am observing an UEvent issue in cpufreq.c.
> > The cpufreq_add_dev() function is called whenever a core is 'onlined'.
> > we expect the kobject_uevent() method in cpufreq_add_dev() to
> > send an UEvent with KOBJ_ADD as the action parameter.
> >
> > But this call fails because of the 'filter function' inside kobject_uevent_env
> > inside lib/kobject_uevent.c. The ->filter points to 'dev_uevent_filter' in
> > drivers/base/core.c, where the check for 'device_ktype' fails.
> >
> > Error message:
> > kobject: 'cpufreq' (e5bbf290): kobject_uevent_env:
> > filter function caused the event to drop!
> >
> > As far as I can see, we need a kset, and associated filter function
> > inside cpufreq.c to get this working. Is this the right way to go ?
> > Any other easy/correct ways to get it working ? Please advise.
>
> What exactly are you trying to do, and want the kernel to do? You
> already get on/offline events for CPUs, why do you want them for cpufreq
> devices as well?

I want to update the permission of a cpufreq sysfs interface (scaling_*)
of a cpu (say cpu1) when the cpu resumes from suspend (s3).
I am trying to do this by listening to the uevent (sent by cpufreq.c,
when a cpu resumes) through udev.

For example,
chmod user:user /sys/devices/system/cpu1/cpufreq/scaling_max_freq

But I am not able to receive this event in udev, because kobject_uevent()
call fails due to the above-mentioned reason (i.e filter function)
I am trying to see how to make the kobject_uevent() call succeed,
so that I can change the permission as mentioned above.

The on/offline events come only when I manually do a
echo 0 > /sys/devices/system/cpu/cpu1/online
They don't come when the cpu resumes from suspend(s3)

[I checked this in code. Looks like during resume, the call flow
does not hit cpu.c, where this KOBJ_ONLINE is being sent]

Thanks,
Durga

>
> thanks,
>
> greg k-h
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pm" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/