Re: Userland breakage from "Modify the device name as devfreq(X) for sysfs"

From: Kevin Wangtao
Date: Wed May 09 2018 - 10:12:25 EST


Hi Chanwoo Choi,

>From my point of view, if it is a new framework, you can use either
the consistent name or device name,
but as a framework has been used for several kernel version, you
should not change the device name
easily if there is no special reason, It will bring no benefits except
for confusion and compatibility issues.
Hope you reconsider.

Regards,
Kevin

On 9 May 2018 at 10:28, Chanwoo Choi <cw00.choi@xxxxxxxxxxx> wrote:
> Hi John,
>
> On 2018ë 05ì 09ì 08:17, John Stultz wrote:
>> Hey folks,
>> I wanted to bring up an issue we've recently tripped over, which was
>> caused by 4585fbcb5331f ("PM / devfreq: Modify the device name as
>> devfreq(X) for sysfs").
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=4585fbcb5331fc910b7e553ad3efd0dd7b320d14
>>
>> That patch replaced paths like:
>> /sys/class/devfreq/ddr_devfreq/min_freq
>> and
>> /sys/class/devfreq/e82c0000.mali/min_freq
>>
>> With
>> /sys/class/devfreq/devfreq(0)/min_freq
>> and
>> /sys/class/devfreq/devfreq(1)/min_freq
>>
>>
>> This broke userspace we have that needs to work on 4.4, 4.9 and 4.14 (and on).
>
> Firstly, I'm sorry to make some problem on userland.
>
>>
>> I wanted to try to ask to understand more about the rational for this
>> patch, as it doesn't make much sense to me, particularly as now it is
>> less obvious as to which path is for which device - and more
>> worrisome it could change depending on initialization order.
>
> Some linux framework used the their own prefix under "/sys/class/"
> for device such as input/pwm/hwmon/regulator and so on.
> (But, some linux framework used the device name directly without any changes)
>
> I thought that devfreq better to use use the consistent name.
> If user wanted to access the specific device with device name,
> the user can access the path of '/sys/devices/platform/...'.
>
> [Example on Exynos5433-based TM2 board]
> root@localhost:~# ls -al /sys/class/devfreq
> total 0
> drwxr-xr-x 2 root root 0 Jul 26 04:49 .
> drwxr-xr-x 50 root root 0 Jan 1 1970 ..
> lrwxrwxrwx 1 root root 0 Jul 26 04:49 devfreq0 -> ../../devices/platform/soc/soc:bus0/devfreq/devfreq0
> lrwxrwxrwx 1 root root 0 Jul 26 04:49 devfreq1 -> ../../devices/platform/soc/soc:bus1/devfreq/devfreq1
> (skip)
>
> - User can access the devfreq device with specific device name.
> root@localhost:/sys/devices/platform/soc/soc:bus0/devfreq/devfreq0# pwd
> /sys/devices/platform/soc/soc:bus0/devfreq/devfreq0
>
> root@localhost:/sys/devices/platform/soc/soc:bus0/devfreq/devfreq0# ls
> available_frequencies device min_freq subsystem uevent
> available_governors governor polling_interval target_freq
> cur_freq max_freq power trans_stat
>
> root@localhost:/sys/devices/platform/soc/soc:bus0/devfreq/devfreq0# cat min_freq
> 160000000
>
>
> But, there is one of my mistake. The /sys/class/devfreq/devfreq(X)
> doesn't have the 'name' attribute. So, the user cannot find the required
> device. It is my mistake. I'll add the 'name' attribute as following:
> - /sys/class/devfreq/devfreqX/name
>
>>
>> Unfortunately, this wasn't noticed very quickly, as the patch has been
>> upstream now for some time. But I wanted to better understand why
>> this change was made, and see if we might consider reverting it, or
>> alternatively consider provide multiple sysfs links (both dev_name and
>> devfreq(N)) so that we can preserve compatibility?
>
> Unfortunately, there are no frameworks which provide the both dev_name and
> [defined prefix](N) link under /sys/class/. I'm not sure this way.
>
> As you comment, devfreq(number) is not fixed as the initialization order.
> After adding the 'name' attribute, the user can find the specific device.
>
> How about using the 'name' attribute to find the device
> after adding new 'name' attribute when access device through /sys/class?
>
>
> --
> Best Regards,
> Chanwoo Choi
> Samsung Electronics