diff mbox series

cpuset_hotplug_test/cpuset_hotplug: Fix bug for obtaining task_cpus value in root_cpu_hotplug_test

Message ID 1617701249-62196-1-git-send-email-zou_wei@huawei.com
State Accepted
Headers show
Series cpuset_hotplug_test/cpuset_hotplug: Fix bug for obtaining task_cpus value in root_cpu_hotplug_test | expand

Commit Message

Samuel Zou April 6, 2021, 9:27 a.m. UTC
--------------------------

1. The method of obtaining $task_cpus from root_cpu_hotplug_test is
incorrect, because the value of Cpus_allowed_list is related 
to /sys/devices/system/cpu/possible and 
/sys/devices/system/cpu/isolated.

2. If isolcpus is configured in cmdline, the value of
Cpus_allowed_list is equal to /sys/devices/system/cpu/possible minus
/sys/devices/system/cpu/isolated. In this case, $task_cpus is inconsistent
with $expect_task_cpus, test will be failed.

3. Need to change the method of obtaining $task_cpu
from /sys/devices/system/cpu/present.

4. The description of cpu_present_mask:
   Bitmap of CPUs currently present in the system. 
   Not all of them may be online. When physical hotplug is processed
   by the relevant subsystem (e.g ACPI) can change and new bit either be
   added or removed from the map depending on the event is
   hot-add/hot-remove. There are currently no locking rules as of now.
   Typical usage is to init topology during boot,
   at which time hotplug is disabled.

Signed-off-by: Zou Wei <zou_wei@huawei.com>
---
 .../controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh      | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Samuel Zou April 27, 2021, 1:35 a.m. UTC | #1
Hi,

A friendly reminder for the two patchs in:

https://patchwork.ozlabs.org/project/ltp/patch/1617707717-63693-1-git-send-email-zou_wei@huawei.com/

https://patchwork.ozlabs.org/project/ltp/patch/1617701249-62196-1-git-send-email-zou_wei@huawei.com/

Can someone please review the patchs, comment, and if appropriate commit
them?

Regards,
Zou Wei

On 2021/4/6 17:27, Zou Wei wrote:
> --------------------------
> 
> 1. The method of obtaining $task_cpus from root_cpu_hotplug_test is
> incorrect, because the value of Cpus_allowed_list is related
> to /sys/devices/system/cpu/possible and
> /sys/devices/system/cpu/isolated.
> 
> 2. If isolcpus is configured in cmdline, the value of
> Cpus_allowed_list is equal to /sys/devices/system/cpu/possible minus
> /sys/devices/system/cpu/isolated. In this case, $task_cpus is inconsistent
> with $expect_task_cpus, test will be failed.
> 
> 3. Need to change the method of obtaining $task_cpu
> from /sys/devices/system/cpu/present.
> 
> 4. The description of cpu_present_mask:
>     Bitmap of CPUs currently present in the system.
>     Not all of them may be online. When physical hotplug is processed
>     by the relevant subsystem (e.g ACPI) can change and new bit either be
>     added or removed from the map depending on the event is
>     hot-add/hot-remove. There are currently no locking rules as of now.
>     Typical usage is to init topology during boot,
>     at which time hotplug is disabled.
> 
> Signed-off-by: Zou Wei <zou_wei@huawei.com>
> ---
>   .../controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh      | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
> index 155e536..2c6993a 100755
> --- a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
> +++ b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
> @@ -93,8 +93,7 @@ root_cpu_hotplug_test()
>   
>   	root_cpus="`cat $CPUSET/cpuset.cpus`"
>   
> -	task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
> -	task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
> +	task_cpus="`cat /sys/devices/system/cpu/present`"
>   
>   	check_result "$root_cpus" "$expect_cpus"
>   	ret=$?
>
Yang Xu June 17, 2021, 11:07 a.m. UTC | #2
Hi Samuel, Zou
> Hi,
>
> A friendly reminder for the two patchs in:
>
> https://patchwork.ozlabs.org/project/ltp/patch/1617707717-63693-1-git-send-email-zou_wei@huawei.com/
>
>
> https://patchwork.ozlabs.org/project/ltp/patch/1617701249-62196-1-git-send-email-zou_wei@huawei.com/
>
>
> Can someone please review the patchs, comment, and if appropriate commit
> them?
>
> Regards,
> Zou Wei
>
> On 2021/4/6 17:27, Zou Wei wrote:
>> --------------------------
>>
>> 1. The method of obtaining $task_cpus from root_cpu_hotplug_test is
>> incorrect, because the value of Cpus_allowed_list is related
>> to /sys/devices/system/cpu/possible and
>> /sys/devices/system/cpu/isolated.
>>
>> 2. If isolcpus is configured in cmdline, the value of
>> Cpus_allowed_list is equal to /sys/devices/system/cpu/possible minus
>> /sys/devices/system/cpu/isolated. In this case, $task_cpus is
>> inconsistent
>> with $expect_task_cpus, test will be failed.
>>
>> 3. Need to change the method of obtaining $task_cpu
>> from /sys/devices/system/cpu/present.
Thanks for your patch, I also met the same problem when 
/sys/devices/system/cpu/possible is not equal 
to/sys/devices/system/cpu/possible/present  .
Cpus_allowed_list:      0-511
but my present cpu is 0-103

Then I use possible_cpus==104 in /etc/defaut/grub, cpu_hotplug case then 
pass.

According to kernel documentation[1] and kernel fs/proc/array code[2](It 
just print cpu mask instead of present cpu), So using 
/sys/devices/system/cpu/present is right instead of getting cpu_allow_list.

possible: cpus that have been allocated resources and can be
		brought online if they are present.

present: cpus that have been identified as being present in
		the system.


Reviewed-by: Yang Xu <xuyang2018.jy@fujitsu.com>

[1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/ABI/testing/sysfs-devices-system-cpu
[2]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/proc/array.c#n418

ps:
Also find a kernel documentation problem and have sent a patch to remove 
non-existed cpu-hotplug.txt in admin-guide/cputopology.rst.


Best Regards
Yang Xu
>>
>> 4. The description of cpu_present_mask:
>> Bitmap of CPUs currently present in the system.
>> Not all of them may be online. When physical hotplug is processed
>> by the relevant subsystem (e.g ACPI) can change and new bit either be
>> added or removed from the map depending on the event is
>> hot-add/hot-remove. There are currently no locking rules as of now.
>> Typical usage is to init topology during boot,
>> at which time hotplug is disabled.
>>
>> Signed-off-by: Zou Wei <zou_wei@huawei.com>
>> ---
>> .../controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git
>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>
>> index 155e536..2c6993a 100755
>> ---
>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>
>> +++
>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>
>> @@ -93,8 +93,7 @@ root_cpu_hotplug_test()
>> root_cpus="`cat $CPUSET/cpuset.cpus`"
>> - task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>> - task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>> check_result "$root_cpus" "$expect_cpus"
>> ret=$?
>>
>
Yang Xu June 21, 2021, 8:56 a.m. UTC | #3
Hi Zou

It looks like this patch also miss to get task_cpus value 
intgeneric_cpu_hotplug_test when expect cpu value is EMPTY.

I can reproduce this easily by increasing the possible_cpus value in 
cmdline. Merge your patch, this case still fails as below:
cpuset_hotplug 1 TINFO: CPUs are numbered continuously starting at 0 (0-3)
cpuset_hotplug 1 TINFO: Nodes are numbered continuously starting at 0 (0-3)
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5676 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
cpuset_hotplug 1 TPASS: Cpuset vs CPU hotplug test succeeded.
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5714 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
cpuset_hotplug 3 TPASS: Cpuset vs CPU hotplug test succeeded.
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5750 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
cpuset_hotplug 5 TPASS: Cpuset vs CPU hotplug test succeeded.
cpuset_hotplug 7 TFAIL: task's cpu present list isn't expected(Result: 
0-7, Expect: 0-3).
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5795 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5846 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
cpuset_hotplug 9 TPASS: Cpuset vs CPU hotplug test succeeded.
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5894 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
cpuset_hotplug 11 TPASS: Cpuset vs CPU hotplug test succeeded.


Also since we have use present value, we shoud adjust output to match 
it. I modify this patch as below, What do you think about it?

--- 
a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
+++ 
b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
@@ -93,9 +93,7 @@ root_cpu_hotplug_test()

         root_cpus="`cat $CPUSET/cpuset.cpus`"

-       task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
-       task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
-
+       task_cpus="`cat /sys/devices/system/cpu/present`"
         check_result "$root_cpus" "$expect_cpus"
         ret=$?
         if [ $ret -eq 0 ]
@@ -103,7 +101,7 @@ root_cpu_hotplug_test()
                 check_result "$task_cpus" "$expect_task_cpus"
                 ret=$?
                 if [ $ret -ne 0 ]; then
-                       tst_resm TFAIL "task's allowed list isn't 
expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
+                       tst_resm TFAIL "task's present list isn't 
expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
                 fi
         else
                 tst_resm TFAIL "root group's cpus isn't 
expected(Result: $root_cpus, Expect: $expect_cpus)."
@@ -166,7 +164,6 @@ general_cpu_hotplug_test()
         sleep 1

         cpus="`cat $path/cpuset.cpus`"
-
         task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
         task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"

@@ -186,6 +183,7 @@ general_cpu_hotplug_test()
                         /bin/kill -s SIGKILL $tst_pid
                         return 1
                 fi
+               task_cpus="`cat /sys/devices/system/cpu/present`"
         fi

         check_result "$cpus" "$expect_cpus"
@@ -194,7 +192,7 @@ general_cpu_hotplug_test()
                 check_result $task_cpus $expect_task_cpus
                 ret=$?
                 if [ $ret -ne 0 ]; then
-                       tst_resm TFAIL "task's cpu allowed list isn't 
expected(Result: $task_cpus, Expect: $expect_task_cpus)."
+                       tst_resm TFAIL "task's cpu present list isn't 
expected(Result: $task_cpus, Expect: $expect_task_cpus)."
                 fi
         else
                 if [ "$cpus" = "" ]; then


Best Regards
Yang XU
> Hi Samuel, Zou
>> Hi,
>>
>> A friendly reminder for the two patchs in:
>>
>> https://patchwork.ozlabs.org/project/ltp/patch/1617707717-63693-1-git-send-email-zou_wei@huawei.com/
>>
>>
>>
>> https://patchwork.ozlabs.org/project/ltp/patch/1617701249-62196-1-git-send-email-zou_wei@huawei.com/
>>
>>
>>
>> Can someone please review the patchs, comment, and if appropriate commit
>> them?
>>
>> Regards,
>> Zou Wei
>>
>> On 2021/4/6 17:27, Zou Wei wrote:
>>> --------------------------
>>>
>>> 1. The method of obtaining $task_cpus from root_cpu_hotplug_test is
>>> incorrect, because the value of Cpus_allowed_list is related
>>> to /sys/devices/system/cpu/possible and
>>> /sys/devices/system/cpu/isolated.
>>>
>>> 2. If isolcpus is configured in cmdline, the value of
>>> Cpus_allowed_list is equal to /sys/devices/system/cpu/possible minus
>>> /sys/devices/system/cpu/isolated. In this case, $task_cpus is
>>> inconsistent
>>> with $expect_task_cpus, test will be failed.
>>>
>>> 3. Need to change the method of obtaining $task_cpu
>>> from /sys/devices/system/cpu/present.
> Thanks for your patch, I also met the same problem when
> /sys/devices/system/cpu/possible is not equal
> to/sys/devices/system/cpu/possible/present .
> Cpus_allowed_list: 0-511
> but my present cpu is 0-103
>
> Then I use possible_cpus==104 in /etc/defaut/grub, cpu_hotplug case then
> pass.
>
> According to kernel documentation[1] and kernel fs/proc/array code[2](It
> just print cpu mask instead of present cpu), So using
> /sys/devices/system/cpu/present is right instead of getting cpu_allow_list.
>
> possible: cpus that have been allocated resources and can be
> brought online if they are present.
>
> present: cpus that have been identified as being present in
> the system.
>
>
> Reviewed-by: Yang Xu <xuyang2018.jy@fujitsu.com>
>
> [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/ABI/testing/sysfs-devices-system-cpu
>
> [2]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/proc/array.c#n418
>
>
> ps:
> Also find a kernel documentation problem and have sent a patch to remove
> non-existed cpu-hotplug.txt in admin-guide/cputopology.rst.
>
>
> Best Regards
> Yang Xu
>>>
>>> 4. The description of cpu_present_mask:
>>> Bitmap of CPUs currently present in the system.
>>> Not all of them may be online. When physical hotplug is processed
>>> by the relevant subsystem (e.g ACPI) can change and new bit either be
>>> added or removed from the map depending on the event is
>>> hot-add/hot-remove. There are currently no locking rules as of now.
>>> Typical usage is to init topology during boot,
>>> at which time hotplug is disabled.
>>>
>>> Signed-off-by: Zou Wei <zou_wei@huawei.com>
>>> ---
>>> .../controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh | 3
>>> +--
>>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>>
>>> diff --git
>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>
>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>
>>>
>>> index 155e536..2c6993a 100755
>>> ---
>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>
>>>
>>> +++
>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>
>>>
>>> @@ -93,8 +93,7 @@ root_cpu_hotplug_test()
>>> root_cpus="`cat $CPUSET/cpuset.cpus`"
>>> - task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>>> - task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>>> check_result "$root_cpus" "$expect_cpus"
>>> ret=$?
>>>
>>
Samuel Zou June 21, 2021, 9:18 a.m. UTC | #4
Hi Xu,

You'are right, I miss to get task_cpus value in general_cpu_hotplug_test().
Thanks for your review and agree with your modification.


On 2021/6/21 16:56, xuyang2018.jy@fujitsu.com wrote:
> Hi Zou
> 
> It looks like this patch also miss to get task_cpus value
> intgeneric_cpu_hotplug_test when expect cpu value is EMPTY.
> 
> I can reproduce this easily by increasing the possible_cpus value in
> cmdline. Merge your patch, this case still fails as below:
> cpuset_hotplug 1 TINFO: CPUs are numbered continuously starting at 0 (0-3)
> cpuset_hotplug 1 TINFO: Nodes are numbered continuously starting at 0 (0-3)
> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5676 Killed
>           /bin/cat /dev/zero > /dev/null 2>&1
> cpuset_hotplug 1 TPASS: Cpuset vs CPU hotplug test succeeded.
> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5714 Killed
>           /bin/cat /dev/zero > /dev/null 2>&1
> cpuset_hotplug 3 TPASS: Cpuset vs CPU hotplug test succeeded.
> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5750 Killed
>           /bin/cat /dev/zero > /dev/null 2>&1
> cpuset_hotplug 5 TPASS: Cpuset vs CPU hotplug test succeeded.
> cpuset_hotplug 7 TFAIL: task's cpu present list isn't expected(Result:
> 0-7, Expect: 0-3).
> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5795 Killed
>           /bin/cat /dev/zero > /dev/null 2>&1
> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5846 Killed
>           /bin/cat /dev/zero > /dev/null 2>&1
> cpuset_hotplug 9 TPASS: Cpuset vs CPU hotplug test succeeded.
> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5894 Killed
>           /bin/cat /dev/zero > /dev/null 2>&1
> cpuset_hotplug 11 TPASS: Cpuset vs CPU hotplug test succeeded.
> 
> 
> Also since we have use present value, we shoud adjust output to match
> it. I modify this patch as below, What do you think about it?
> 
> ---
> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
> +++
> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
> @@ -93,9 +93,7 @@ root_cpu_hotplug_test()
> 
>           root_cpus="`cat $CPUSET/cpuset.cpus`"
> 
> -       task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
> -       task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
> -
> +       task_cpus="`cat /sys/devices/system/cpu/present`"
>           check_result "$root_cpus" "$expect_cpus"
>           ret=$?
>           if [ $ret -eq 0 ]
> @@ -103,7 +101,7 @@ root_cpu_hotplug_test()
>                   check_result "$task_cpus" "$expect_task_cpus"
>                   ret=$?
>                   if [ $ret -ne 0 ]; then
> -                       tst_resm TFAIL "task's allowed list isn't
> expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
> +                       tst_resm TFAIL "task's present list isn't
> expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
>                   fi
>           else
>                   tst_resm TFAIL "root group's cpus isn't
> expected(Result: $root_cpus, Expect: $expect_cpus)."
> @@ -166,7 +164,6 @@ general_cpu_hotplug_test()
>           sleep 1
> 
>           cpus="`cat $path/cpuset.cpus`"
> -
>           task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>           task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
> 
> @@ -186,6 +183,7 @@ general_cpu_hotplug_test()
>                           /bin/kill -s SIGKILL $tst_pid
>                           return 1
>                   fi
> +               task_cpus="`cat /sys/devices/system/cpu/present`"
>           fi
> 
>           check_result "$cpus" "$expect_cpus"
> @@ -194,7 +192,7 @@ general_cpu_hotplug_test()
>                   check_result $task_cpus $expect_task_cpus
>                   ret=$?
>                   if [ $ret -ne 0 ]; then
> -                       tst_resm TFAIL "task's cpu allowed list isn't
> expected(Result: $task_cpus, Expect: $expect_task_cpus)."
> +                       tst_resm TFAIL "task's cpu present list isn't
> expected(Result: $task_cpus, Expect: $expect_task_cpus)."
>                   fi
>           else
>                   if [ "$cpus" = "" ]; then
> 
> 
> Best Regards
> Yang XU
>> Hi Samuel, Zou
>>> Hi,
>>>
>>> A friendly reminder for the two patchs in:
>>>
>>> https://patchwork.ozlabs.org/project/ltp/patch/1617707717-63693-1-git-send-email-zou_wei@huawei.com/
>>>
>>>
>>>
>>> https://patchwork.ozlabs.org/project/ltp/patch/1617701249-62196-1-git-send-email-zou_wei@huawei.com/
>>>
>>>
>>>
>>> Can someone please review the patchs, comment, and if appropriate commit
>>> them?
>>>
>>> Regards,
>>> Zou Wei
>>>
>>> On 2021/4/6 17:27, Zou Wei wrote:
>>>> --------------------------
>>>>
>>>> 1. The method of obtaining $task_cpus from root_cpu_hotplug_test is
>>>> incorrect, because the value of Cpus_allowed_list is related
>>>> to /sys/devices/system/cpu/possible and
>>>> /sys/devices/system/cpu/isolated.
>>>>
>>>> 2. If isolcpus is configured in cmdline, the value of
>>>> Cpus_allowed_list is equal to /sys/devices/system/cpu/possible minus
>>>> /sys/devices/system/cpu/isolated. In this case, $task_cpus is
>>>> inconsistent
>>>> with $expect_task_cpus, test will be failed.
>>>>
>>>> 3. Need to change the method of obtaining $task_cpu
>>>> from /sys/devices/system/cpu/present.
>> Thanks for your patch, I also met the same problem when
>> /sys/devices/system/cpu/possible is not equal
>> to/sys/devices/system/cpu/possible/present .
>> Cpus_allowed_list: 0-511
>> but my present cpu is 0-103
>>
>> Then I use possible_cpus==104 in /etc/defaut/grub, cpu_hotplug case then
>> pass.
>>
>> According to kernel documentation[1] and kernel fs/proc/array code[2](It
>> just print cpu mask instead of present cpu), So using
>> /sys/devices/system/cpu/present is right instead of getting cpu_allow_list.
>>
>> possible: cpus that have been allocated resources and can be
>> brought online if they are present.
>>
>> present: cpus that have been identified as being present in
>> the system.
>>
>>
>> Reviewed-by: Yang Xu <xuyang2018.jy@fujitsu.com>
>>
>> [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/ABI/testing/sysfs-devices-system-cpu
>>
>> [2]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/proc/array.c#n418
>>
>>
>> ps:
>> Also find a kernel documentation problem and have sent a patch to remove
>> non-existed cpu-hotplug.txt in admin-guide/cputopology.rst.
>>
>>
>> Best Regards
>> Yang Xu
>>>>
>>>> 4. The description of cpu_present_mask:
>>>> Bitmap of CPUs currently present in the system.
>>>> Not all of them may be online. When physical hotplug is processed
>>>> by the relevant subsystem (e.g ACPI) can change and new bit either be
>>>> added or removed from the map depending on the event is
>>>> hot-add/hot-remove. There are currently no locking rules as of now.
>>>> Typical usage is to init topology during boot,
>>>> at which time hotplug is disabled.
>>>>
>>>> Signed-off-by: Zou Wei <zou_wei@huawei.com>
>>>> ---
>>>> .../controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh | 3
>>>> +--
>>>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>>>
>>>> diff --git
>>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>
>>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>
>>>>
>>>> index 155e536..2c6993a 100755
>>>> ---
>>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>
>>>>
>>>> +++
>>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>
>>>>
>>>> @@ -93,8 +93,7 @@ root_cpu_hotplug_test()
>>>> root_cpus="`cat $CPUSET/cpuset.cpus`"
>>>> - task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>>>> - task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>>>> check_result "$root_cpus" "$expect_cpus"
>>>> ret=$?
>>>>
>>>
Yang Xu June 21, 2021, 9:53 a.m. UTC | #5
Hi Zou
Do you want to send a v2 patch? Or I modify this patch and push it directly.

Best Regards
Yang Xu
> Hi Xu,
>
> You'are right, I miss to get task_cpus value in general_cpu_hotplug_test().
> Thanks for your review and agree with your modification.
>
>
> On 2021/6/21 16:56, xuyang2018.jy@fujitsu.com wrote:
>> Hi Zou
>>
>> It looks like this patch also miss to get task_cpus value
>> intgeneric_cpu_hotplug_test when expect cpu value is EMPTY.
>>
>> I can reproduce this easily by increasing the possible_cpus value in
>> cmdline. Merge your patch, this case still fails as below:
>> cpuset_hotplug 1 TINFO: CPUs are numbered continuously starting at 0
>> (0-3)
>> cpuset_hotplug 1 TINFO: Nodes are numbered continuously starting at 0
>> (0-3)
>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5676 Killed
>> /bin/cat /dev/zero > /dev/null 2>&1
>> cpuset_hotplug 1 TPASS: Cpuset vs CPU hotplug test succeeded.
>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5714 Killed
>> /bin/cat /dev/zero > /dev/null 2>&1
>> cpuset_hotplug 3 TPASS: Cpuset vs CPU hotplug test succeeded.
>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5750 Killed
>> /bin/cat /dev/zero > /dev/null 2>&1
>> cpuset_hotplug 5 TPASS: Cpuset vs CPU hotplug test succeeded.
>> cpuset_hotplug 7 TFAIL: task's cpu present list isn't expected(Result:
>> 0-7, Expect: 0-3).
>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5795 Killed
>> /bin/cat /dev/zero > /dev/null 2>&1
>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5846 Killed
>> /bin/cat /dev/zero > /dev/null 2>&1
>> cpuset_hotplug 9 TPASS: Cpuset vs CPU hotplug test succeeded.
>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5894 Killed
>> /bin/cat /dev/zero > /dev/null 2>&1
>> cpuset_hotplug 11 TPASS: Cpuset vs CPU hotplug test succeeded.
>>
>>
>> Also since we have use present value, we shoud adjust output to match
>> it. I modify this patch as below, What do you think about it?
>>
>> ---
>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>
>> +++
>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>
>> @@ -93,9 +93,7 @@ root_cpu_hotplug_test()
>>
>> root_cpus="`cat $CPUSET/cpuset.cpus`"
>>
>> - task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>> - task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>> -
>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>> check_result "$root_cpus" "$expect_cpus"
>> ret=$?
>> if [ $ret -eq 0 ]
>> @@ -103,7 +101,7 @@ root_cpu_hotplug_test()
>> check_result "$task_cpus" "$expect_task_cpus"
>> ret=$?
>> if [ $ret -ne 0 ]; then
>> - tst_resm TFAIL "task's allowed list isn't
>> expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
>> + tst_resm TFAIL "task's present list isn't
>> expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
>> fi
>> else
>> tst_resm TFAIL "root group's cpus isn't
>> expected(Result: $root_cpus, Expect: $expect_cpus)."
>> @@ -166,7 +164,6 @@ general_cpu_hotplug_test()
>> sleep 1
>>
>> cpus="`cat $path/cpuset.cpus`"
>> -
>> task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>> task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>
>> @@ -186,6 +183,7 @@ general_cpu_hotplug_test()
>> /bin/kill -s SIGKILL $tst_pid
>> return 1
>> fi
>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>> fi
>>
>> check_result "$cpus" "$expect_cpus"
>> @@ -194,7 +192,7 @@ general_cpu_hotplug_test()
>> check_result $task_cpus $expect_task_cpus
>> ret=$?
>> if [ $ret -ne 0 ]; then
>> - tst_resm TFAIL "task's cpu allowed list isn't
>> expected(Result: $task_cpus, Expect: $expect_task_cpus)."
>> + tst_resm TFAIL "task's cpu present list isn't
>> expected(Result: $task_cpus, Expect: $expect_task_cpus)."
>> fi
>> else
>> if [ "$cpus" = "" ]; then
>>
>>
>> Best Regards
>> Yang XU
>>> Hi Samuel, Zou
>>>> Hi,
>>>>
>>>> A friendly reminder for the two patchs in:
>>>>
>>>> https://patchwork.ozlabs.org/project/ltp/patch/1617707717-63693-1-git-send-email-zou_wei@huawei.com/
>>>>
>>>>
>>>>
>>>>
>>>> https://patchwork.ozlabs.org/project/ltp/patch/1617701249-62196-1-git-send-email-zou_wei@huawei.com/
>>>>
>>>>
>>>>
>>>>
>>>> Can someone please review the patchs, comment, and if appropriate
>>>> commit
>>>> them?
>>>>
>>>> Regards,
>>>> Zou Wei
>>>>
>>>> On 2021/4/6 17:27, Zou Wei wrote:
>>>>> --------------------------
>>>>>
>>>>> 1. The method of obtaining $task_cpus from root_cpu_hotplug_test is
>>>>> incorrect, because the value of Cpus_allowed_list is related
>>>>> to /sys/devices/system/cpu/possible and
>>>>> /sys/devices/system/cpu/isolated.
>>>>>
>>>>> 2. If isolcpus is configured in cmdline, the value of
>>>>> Cpus_allowed_list is equal to /sys/devices/system/cpu/possible minus
>>>>> /sys/devices/system/cpu/isolated. In this case, $task_cpus is
>>>>> inconsistent
>>>>> with $expect_task_cpus, test will be failed.
>>>>>
>>>>> 3. Need to change the method of obtaining $task_cpu
>>>>> from /sys/devices/system/cpu/present.
>>> Thanks for your patch, I also met the same problem when
>>> /sys/devices/system/cpu/possible is not equal
>>> to/sys/devices/system/cpu/possible/present .
>>> Cpus_allowed_list: 0-511
>>> but my present cpu is 0-103
>>>
>>> Then I use possible_cpus==104 in /etc/defaut/grub, cpu_hotplug case then
>>> pass.
>>>
>>> According to kernel documentation[1] and kernel fs/proc/array code[2](It
>>> just print cpu mask instead of present cpu), So using
>>> /sys/devices/system/cpu/present is right instead of getting
>>> cpu_allow_list.
>>>
>>> possible: cpus that have been allocated resources and can be
>>> brought online if they are present.
>>>
>>> present: cpus that have been identified as being present in
>>> the system.
>>>
>>>
>>> Reviewed-by: Yang Xu <xuyang2018.jy@fujitsu.com>
>>>
>>> [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/ABI/testing/sysfs-devices-system-cpu
>>>
>>>
>>> [2]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/proc/array.c#n418
>>>
>>>
>>>
>>> ps:
>>> Also find a kernel documentation problem and have sent a patch to remove
>>> non-existed cpu-hotplug.txt in admin-guide/cputopology.rst.
>>>
>>>
>>> Best Regards
>>> Yang Xu
>>>>>
>>>>> 4. The description of cpu_present_mask:
>>>>> Bitmap of CPUs currently present in the system.
>>>>> Not all of them may be online. When physical hotplug is processed
>>>>> by the relevant subsystem (e.g ACPI) can change and new bit either be
>>>>> added or removed from the map depending on the event is
>>>>> hot-add/hot-remove. There are currently no locking rules as of now.
>>>>> Typical usage is to init topology during boot,
>>>>> at which time hotplug is disabled.
>>>>>
>>>>> Signed-off-by: Zou Wei <zou_wei@huawei.com>
>>>>> ---
>>>>> .../controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh | 3
>>>>> +--
>>>>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>>>>
>>>>> diff --git
>>>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>
>>>>>
>>>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>
>>>>>
>>>>>
>>>>> index 155e536..2c6993a 100755
>>>>> ---
>>>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>
>>>>>
>>>>>
>>>>> +++
>>>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>
>>>>>
>>>>>
>>>>> @@ -93,8 +93,7 @@ root_cpu_hotplug_test()
>>>>> root_cpus="`cat $CPUSET/cpuset.cpus`"
>>>>> - task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>>>>> - task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>>>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>>>>> check_result "$root_cpus" "$expect_cpus"
>>>>> ret=$?
>>>>>
>>>>
Samuel Zou June 21, 2021, 10:33 a.m. UTC | #6
Hi Xu,

Please push it directly, thanks a lot :)

On 2021/6/21 17:53, xuyang2018.jy@fujitsu.com wrote:
> Hi Zou
> Do you want to send a v2 patch? Or I modify this patch and push it directly.
> 
> Best Regards
> Yang Xu
>> Hi Xu,
>>
>> You'are right, I miss to get task_cpus value in general_cpu_hotplug_test().
>> Thanks for your review and agree with your modification.
>>
>>
>> On 2021/6/21 16:56, xuyang2018.jy@fujitsu.com wrote:
>>> Hi Zou
>>>
>>> It looks like this patch also miss to get task_cpus value
>>> intgeneric_cpu_hotplug_test when expect cpu value is EMPTY.
>>>
>>> I can reproduce this easily by increasing the possible_cpus value in
>>> cmdline. Merge your patch, this case still fails as below:
>>> cpuset_hotplug 1 TINFO: CPUs are numbered continuously starting at 0
>>> (0-3)
>>> cpuset_hotplug 1 TINFO: Nodes are numbered continuously starting at 0
>>> (0-3)
>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5676 Killed
>>> /bin/cat /dev/zero > /dev/null 2>&1
>>> cpuset_hotplug 1 TPASS: Cpuset vs CPU hotplug test succeeded.
>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5714 Killed
>>> /bin/cat /dev/zero > /dev/null 2>&1
>>> cpuset_hotplug 3 TPASS: Cpuset vs CPU hotplug test succeeded.
>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5750 Killed
>>> /bin/cat /dev/zero > /dev/null 2>&1
>>> cpuset_hotplug 5 TPASS: Cpuset vs CPU hotplug test succeeded.
>>> cpuset_hotplug 7 TFAIL: task's cpu present list isn't expected(Result:
>>> 0-7, Expect: 0-3).
>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5795 Killed
>>> /bin/cat /dev/zero > /dev/null 2>&1
>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5846 Killed
>>> /bin/cat /dev/zero > /dev/null 2>&1
>>> cpuset_hotplug 9 TPASS: Cpuset vs CPU hotplug test succeeded.
>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5894 Killed
>>> /bin/cat /dev/zero > /dev/null 2>&1
>>> cpuset_hotplug 11 TPASS: Cpuset vs CPU hotplug test succeeded.
>>>
>>>
>>> Also since we have use present value, we shoud adjust output to match
>>> it. I modify this patch as below, What do you think about it?
>>>
>>> ---
>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>
>>> +++
>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>
>>> @@ -93,9 +93,7 @@ root_cpu_hotplug_test()
>>>
>>> root_cpus="`cat $CPUSET/cpuset.cpus`"
>>>
>>> - task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>>> - task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>> -
>>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>>> check_result "$root_cpus" "$expect_cpus"
>>> ret=$?
>>> if [ $ret -eq 0 ]
>>> @@ -103,7 +101,7 @@ root_cpu_hotplug_test()
>>> check_result "$task_cpus" "$expect_task_cpus"
>>> ret=$?
>>> if [ $ret -ne 0 ]; then
>>> - tst_resm TFAIL "task's allowed list isn't
>>> expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
>>> + tst_resm TFAIL "task's present list isn't
>>> expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
>>> fi
>>> else
>>> tst_resm TFAIL "root group's cpus isn't
>>> expected(Result: $root_cpus, Expect: $expect_cpus)."
>>> @@ -166,7 +164,6 @@ general_cpu_hotplug_test()
>>> sleep 1
>>>
>>> cpus="`cat $path/cpuset.cpus`"
>>> -
>>> task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>>> task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>>
>>> @@ -186,6 +183,7 @@ general_cpu_hotplug_test()
>>> /bin/kill -s SIGKILL $tst_pid
>>> return 1
>>> fi
>>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>>> fi
>>>
>>> check_result "$cpus" "$expect_cpus"
>>> @@ -194,7 +192,7 @@ general_cpu_hotplug_test()
>>> check_result $task_cpus $expect_task_cpus
>>> ret=$?
>>> if [ $ret -ne 0 ]; then
>>> - tst_resm TFAIL "task's cpu allowed list isn't
>>> expected(Result: $task_cpus, Expect: $expect_task_cpus)."
>>> + tst_resm TFAIL "task's cpu present list isn't
>>> expected(Result: $task_cpus, Expect: $expect_task_cpus)."
>>> fi
>>> else
>>> if [ "$cpus" = "" ]; then
>>>
>>>
>>> Best Regards
>>> Yang XU
>>>> Hi Samuel, Zou
>>>>> Hi,
>>>>>
>>>>> A friendly reminder for the two patchs in:
>>>>>
>>>>> https://patchwork.ozlabs.org/project/ltp/patch/1617707717-63693-1-git-send-email-zou_wei@huawei.com/
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> https://patchwork.ozlabs.org/project/ltp/patch/1617701249-62196-1-git-send-email-zou_wei@huawei.com/
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Can someone please review the patchs, comment, and if appropriate
>>>>> commit
>>>>> them?
>>>>>
>>>>> Regards,
>>>>> Zou Wei
>>>>>
>>>>> On 2021/4/6 17:27, Zou Wei wrote:
>>>>>> --------------------------
>>>>>>
>>>>>> 1. The method of obtaining $task_cpus from root_cpu_hotplug_test is
>>>>>> incorrect, because the value of Cpus_allowed_list is related
>>>>>> to /sys/devices/system/cpu/possible and
>>>>>> /sys/devices/system/cpu/isolated.
>>>>>>
>>>>>> 2. If isolcpus is configured in cmdline, the value of
>>>>>> Cpus_allowed_list is equal to /sys/devices/system/cpu/possible minus
>>>>>> /sys/devices/system/cpu/isolated. In this case, $task_cpus is
>>>>>> inconsistent
>>>>>> with $expect_task_cpus, test will be failed.
>>>>>>
>>>>>> 3. Need to change the method of obtaining $task_cpu
>>>>>> from /sys/devices/system/cpu/present.
>>>> Thanks for your patch, I also met the same problem when
>>>> /sys/devices/system/cpu/possible is not equal
>>>> to/sys/devices/system/cpu/possible/present .
>>>> Cpus_allowed_list: 0-511
>>>> but my present cpu is 0-103
>>>>
>>>> Then I use possible_cpus==104 in /etc/defaut/grub, cpu_hotplug case then
>>>> pass.
>>>>
>>>> According to kernel documentation[1] and kernel fs/proc/array code[2](It
>>>> just print cpu mask instead of present cpu), So using
>>>> /sys/devices/system/cpu/present is right instead of getting
>>>> cpu_allow_list.
>>>>
>>>> possible: cpus that have been allocated resources and can be
>>>> brought online if they are present.
>>>>
>>>> present: cpus that have been identified as being present in
>>>> the system.
>>>>
>>>>
>>>> Reviewed-by: Yang Xu <xuyang2018.jy@fujitsu.com>
>>>>
>>>> [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/ABI/testing/sysfs-devices-system-cpu
>>>>
>>>>
>>>> [2]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/proc/array.c#n418
>>>>
>>>>
>>>>
>>>> ps:
>>>> Also find a kernel documentation problem and have sent a patch to remove
>>>> non-existed cpu-hotplug.txt in admin-guide/cputopology.rst.
>>>>
>>>>
>>>> Best Regards
>>>> Yang Xu
>>>>>>
>>>>>> 4. The description of cpu_present_mask:
>>>>>> Bitmap of CPUs currently present in the system.
>>>>>> Not all of them may be online. When physical hotplug is processed
>>>>>> by the relevant subsystem (e.g ACPI) can change and new bit either be
>>>>>> added or removed from the map depending on the event is
>>>>>> hot-add/hot-remove. There are currently no locking rules as of now.
>>>>>> Typical usage is to init topology during boot,
>>>>>> at which time hotplug is disabled.
>>>>>>
>>>>>> Signed-off-by: Zou Wei <zou_wei@huawei.com>
>>>>>> ---
>>>>>> .../controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh | 3
>>>>>> +--
>>>>>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git
>>>>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>>
>>>>>>
>>>>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>>
>>>>>>
>>>>>>
>>>>>> index 155e536..2c6993a 100755
>>>>>> ---
>>>>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>>
>>>>>>
>>>>>>
>>>>>> +++
>>>>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>>
>>>>>>
>>>>>>
>>>>>> @@ -93,8 +93,7 @@ root_cpu_hotplug_test()
>>>>>> root_cpus="`cat $CPUSET/cpuset.cpus`"
>>>>>> - task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>>>>>> - task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>>>>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>>>>>> check_result "$root_cpus" "$expect_cpus"
>>>>>> ret=$?
>>>>>>
>>>>>
Yang Xu June 21, 2021, 11:03 a.m. UTC | #7
Hi Zou

Thanks for your patch! Merged.

Best Regards
Yang Xu
> Hi Xu,
>
> Please push it directly, thanks a lot :)
>
> On 2021/6/21 17:53, xuyang2018.jy@fujitsu.com wrote:
>> Hi Zou
>> Do you want to send a v2 patch? Or I modify this patch and push it
>> directly.
>>
>> Best Regards
>> Yang Xu
>>> Hi Xu,
>>>
>>> You'are right, I miss to get task_cpus value in
>>> general_cpu_hotplug_test().
>>> Thanks for your review and agree with your modification.
>>>
>>>
>>> On 2021/6/21 16:56, xuyang2018.jy@fujitsu.com wrote:
>>>> Hi Zou
>>>>
>>>> It looks like this patch also miss to get task_cpus value
>>>> intgeneric_cpu_hotplug_test when expect cpu value is EMPTY.
>>>>
>>>> I can reproduce this easily by increasing the possible_cpus value in
>>>> cmdline. Merge your patch, this case still fails as below:
>>>> cpuset_hotplug 1 TINFO: CPUs are numbered continuously starting at 0
>>>> (0-3)
>>>> cpuset_hotplug 1 TINFO: Nodes are numbered continuously starting at 0
>>>> (0-3)
>>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5676 Killed
>>>> /bin/cat /dev/zero > /dev/null 2>&1
>>>> cpuset_hotplug 1 TPASS: Cpuset vs CPU hotplug test succeeded.
>>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5714 Killed
>>>> /bin/cat /dev/zero > /dev/null 2>&1
>>>> cpuset_hotplug 3 TPASS: Cpuset vs CPU hotplug test succeeded.
>>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5750 Killed
>>>> /bin/cat /dev/zero > /dev/null 2>&1
>>>> cpuset_hotplug 5 TPASS: Cpuset vs CPU hotplug test succeeded.
>>>> cpuset_hotplug 7 TFAIL: task's cpu present list isn't expected(Result:
>>>> 0-7, Expect: 0-3).
>>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5795 Killed
>>>> /bin/cat /dev/zero > /dev/null 2>&1
>>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5846 Killed
>>>> /bin/cat /dev/zero > /dev/null 2>&1
>>>> cpuset_hotplug 9 TPASS: Cpuset vs CPU hotplug test succeeded.
>>>> /opt/ltp/testcases/bin/cpuset_funcs.sh: line 179: 5894 Killed
>>>> /bin/cat /dev/zero > /dev/null 2>&1
>>>> cpuset_hotplug 11 TPASS: Cpuset vs CPU hotplug test succeeded.
>>>>
>>>>
>>>> Also since we have use present value, we shoud adjust output to match
>>>> it. I modify this patch as below, What do you think about it?
>>>>
>>>> ---
>>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>
>>>>
>>>> +++
>>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>
>>>>
>>>> @@ -93,9 +93,7 @@ root_cpu_hotplug_test()
>>>>
>>>> root_cpus="`cat $CPUSET/cpuset.cpus`"
>>>>
>>>> - task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>>>> - task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>>> -
>>>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>>>> check_result "$root_cpus" "$expect_cpus"
>>>> ret=$?
>>>> if [ $ret -eq 0 ]
>>>> @@ -103,7 +101,7 @@ root_cpu_hotplug_test()
>>>> check_result "$task_cpus" "$expect_task_cpus"
>>>> ret=$?
>>>> if [ $ret -ne 0 ]; then
>>>> - tst_resm TFAIL "task's allowed list isn't
>>>> expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
>>>> + tst_resm TFAIL "task's present list isn't
>>>> expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
>>>> fi
>>>> else
>>>> tst_resm TFAIL "root group's cpus isn't
>>>> expected(Result: $root_cpus, Expect: $expect_cpus)."
>>>> @@ -166,7 +164,6 @@ general_cpu_hotplug_test()
>>>> sleep 1
>>>>
>>>> cpus="`cat $path/cpuset.cpus`"
>>>> -
>>>> task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>>>> task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>>>
>>>> @@ -186,6 +183,7 @@ general_cpu_hotplug_test()
>>>> /bin/kill -s SIGKILL $tst_pid
>>>> return 1
>>>> fi
>>>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>>>> fi
>>>>
>>>> check_result "$cpus" "$expect_cpus"
>>>> @@ -194,7 +192,7 @@ general_cpu_hotplug_test()
>>>> check_result $task_cpus $expect_task_cpus
>>>> ret=$?
>>>> if [ $ret -ne 0 ]; then
>>>> - tst_resm TFAIL "task's cpu allowed list isn't
>>>> expected(Result: $task_cpus, Expect: $expect_task_cpus)."
>>>> + tst_resm TFAIL "task's cpu present list isn't
>>>> expected(Result: $task_cpus, Expect: $expect_task_cpus)."
>>>> fi
>>>> else
>>>> if [ "$cpus" = "" ]; then
>>>>
>>>>
>>>> Best Regards
>>>> Yang XU
>>>>> Hi Samuel, Zou
>>>>>> Hi,
>>>>>>
>>>>>> A friendly reminder for the two patchs in:
>>>>>>
>>>>>> https://patchwork.ozlabs.org/project/ltp/patch/1617707717-63693-1-git-send-email-zou_wei@huawei.com/
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> https://patchwork.ozlabs.org/project/ltp/patch/1617701249-62196-1-git-send-email-zou_wei@huawei.com/
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Can someone please review the patchs, comment, and if appropriate
>>>>>> commit
>>>>>> them?
>>>>>>
>>>>>> Regards,
>>>>>> Zou Wei
>>>>>>
>>>>>> On 2021/4/6 17:27, Zou Wei wrote:
>>>>>>> --------------------------
>>>>>>>
>>>>>>> 1. The method of obtaining $task_cpus from root_cpu_hotplug_test is
>>>>>>> incorrect, because the value of Cpus_allowed_list is related
>>>>>>> to /sys/devices/system/cpu/possible and
>>>>>>> /sys/devices/system/cpu/isolated.
>>>>>>>
>>>>>>> 2. If isolcpus is configured in cmdline, the value of
>>>>>>> Cpus_allowed_list is equal to /sys/devices/system/cpu/possible minus
>>>>>>> /sys/devices/system/cpu/isolated. In this case, $task_cpus is
>>>>>>> inconsistent
>>>>>>> with $expect_task_cpus, test will be failed.
>>>>>>>
>>>>>>> 3. Need to change the method of obtaining $task_cpu
>>>>>>> from /sys/devices/system/cpu/present.
>>>>> Thanks for your patch, I also met the same problem when
>>>>> /sys/devices/system/cpu/possible is not equal
>>>>> to/sys/devices/system/cpu/possible/present .
>>>>> Cpus_allowed_list: 0-511
>>>>> but my present cpu is 0-103
>>>>>
>>>>> Then I use possible_cpus==104 in /etc/defaut/grub, cpu_hotplug case
>>>>> then
>>>>> pass.
>>>>>
>>>>> According to kernel documentation[1] and kernel fs/proc/array
>>>>> code[2](It
>>>>> just print cpu mask instead of present cpu), So using
>>>>> /sys/devices/system/cpu/present is right instead of getting
>>>>> cpu_allow_list.
>>>>>
>>>>> possible: cpus that have been allocated resources and can be
>>>>> brought online if they are present.
>>>>>
>>>>> present: cpus that have been identified as being present in
>>>>> the system.
>>>>>
>>>>>
>>>>> Reviewed-by: Yang Xu <xuyang2018.jy@fujitsu.com>
>>>>>
>>>>> [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/ABI/testing/sysfs-devices-system-cpu
>>>>>
>>>>>
>>>>>
>>>>> [2]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/proc/array.c#n418
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ps:
>>>>> Also find a kernel documentation problem and have sent a patch to
>>>>> remove
>>>>> non-existed cpu-hotplug.txt in admin-guide/cputopology.rst.
>>>>>
>>>>>
>>>>> Best Regards
>>>>> Yang Xu
>>>>>>>
>>>>>>> 4. The description of cpu_present_mask:
>>>>>>> Bitmap of CPUs currently present in the system.
>>>>>>> Not all of them may be online. When physical hotplug is processed
>>>>>>> by the relevant subsystem (e.g ACPI) can change and new bit
>>>>>>> either be
>>>>>>> added or removed from the map depending on the event is
>>>>>>> hot-add/hot-remove. There are currently no locking rules as of now.
>>>>>>> Typical usage is to init topology during boot,
>>>>>>> at which time hotplug is disabled.
>>>>>>>
>>>>>>> Signed-off-by: Zou Wei <zou_wei@huawei.com>
>>>>>>> ---
>>>>>>> .../controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>>> | 3
>>>>>>> +--
>>>>>>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>>>>>>
>>>>>>> diff --git
>>>>>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> index 155e536..2c6993a 100755
>>>>>>> ---
>>>>>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> +++
>>>>>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> @@ -93,8 +93,7 @@ root_cpu_hotplug_test()
>>>>>>> root_cpus="`cat $CPUSET/cpuset.cpus`"
>>>>>>> - task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>>>>>>> - task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>>>>>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>>>>>>> check_result "$root_cpus" "$expect_cpus"
>>>>>>> ret=$?
>>>>>>>
>>>>>>
diff mbox series

Patch

diff --git a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
index 155e536..2c6993a 100755
--- a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
+++ b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
@@ -93,8 +93,7 @@  root_cpu_hotplug_test()
 
 	root_cpus="`cat $CPUSET/cpuset.cpus`"
 
-	task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
-	task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
+	task_cpus="`cat /sys/devices/system/cpu/present`"
 
 	check_result "$root_cpus" "$expect_cpus"
 	ret=$?