The livepatching self-tests tweak the dynamic debug config to verify the kernel log during the tests. Enhance set_dynamic_debug() so that the config changes are restored when the script exits.
Note this functionality needs to keep in sync with: - dynamic_debug input/output formatting - functions affected by set_dynamic_debug()
For example, push_dynamic_debug() transforms: kernel/livepatch/transition.c:530 [livepatch]klp_init_transition =_ "'%s': initializing %s transition\012" to: file kernel/livepatch/transition.c line 530 =_
Signed-off-by: Joe Lawrence joe.lawrence@redhat.com --- .../testing/selftests/livepatch/functions.sh | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh index de5a504ffdbc..860f27665ebd 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -29,13 +29,27 @@ function die() { exit 1 }
-# set_dynamic_debug() - setup kernel dynamic debug -# TODO - push and pop this config? +function push_dynamic_debug() { + DYNAMIC_DEBUG=$(grep '^kernel/livepatch' /sys/kernel/debug/dynamic_debug/control | \ + awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}') +} + +function pop_dynamic_debug() { + if [[ -n "$DYNAMIC_DEBUG" ]]; then + echo -n "$DYNAMIC_DEBUG" > /sys/kernel/debug/dynamic_debug/control + fi +} + +# set_dynamic_debug() - save the current dynamic debug config and tweak +# it for the self-tests. Set a script exit trap +# that restores the original config. function set_dynamic_debug() { - cat << EOF > /sys/kernel/debug/dynamic_debug/control -file kernel/livepatch/* +p -func klp_try_switch_task -p -EOF + push_dynamic_debug + trap pop_dynamic_debug EXIT INT TERM HUP + cat <<-EOF > /sys/kernel/debug/dynamic_debug/control + file kernel/livepatch/* +p + func klp_try_switch_task -p + EOF }
# loop_until(cmd) - loop a command until it is successful or $MAX_RETRIES,
On 7/18/19 4:29 PM, Joe Lawrence wrote:
The livepatching self-tests tweak the dynamic debug config to verify the kernel log during the tests. Enhance set_dynamic_debug() so that the config changes are restored when the script exits.
Note this functionality needs to keep in sync with:
- dynamic_debug input/output formatting
- functions affected by set_dynamic_debug()
For example, push_dynamic_debug() transforms: kernel/livepatch/transition.c:530 [livepatch]klp_init_transition =_ "'%s': initializing %s transition\012" to: file kernel/livepatch/transition.c line 530 =_
Signed-off-by: Joe Lawrence joe.lawrence@redhat.com
.../testing/selftests/livepatch/functions.sh | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh index de5a504ffdbc..860f27665ebd 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -29,13 +29,27 @@ function die() { exit 1 } -# set_dynamic_debug() - setup kernel dynamic debug -# TODO - push and pop this config? +function push_dynamic_debug() {
DYNAMIC_DEBUG=$(grep '^kernel/livepatch' /sys/kernel/debug/dynamic_debug/control | \
awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}')
+}
+function pop_dynamic_debug() {
- if [[ -n "$DYNAMIC_DEBUG" ]]; then
echo -n "$DYNAMIC_DEBUG" > /sys/kernel/debug/dynamic_debug/control
- fi
+}
+# set_dynamic_debug() - save the current dynamic debug config and tweak +# it for the self-tests. Set a script exit trap +# that restores the original config. function set_dynamic_debug() {
- cat << EOF > /sys/kernel/debug/dynamic_debug/control
-file kernel/livepatch/* +p -func klp_try_switch_task -p -EOF
push_dynamic_debug
trap pop_dynamic_debug EXIT INT TERM HUP
cat <<-EOF > /sys/kernel/debug/dynamic_debug/control
file kernel/livepatch/* +p
func klp_try_switch_task -p
}EOF
# loop_until(cmd) - loop a command until it is successful or $MAX_RETRIES,
I took a stab as this while working on "[PATCH v2] selftests/livepatch: add test skip handling", which this applies on top of.
It works for me, though I feel that the /sys/kernel/debug/dynamic_debug/control output to input translation is brittle. It would be nice to have some kind of mass export/import capability for that interface.
-- Joe
On Thu 2019-07-18 16:42:25, Joe Lawrence wrote:
On 7/18/19 4:29 PM, Joe Lawrence wrote:
The livepatching self-tests tweak the dynamic debug config to verify the kernel log during the tests. Enhance set_dynamic_debug() so that the config changes are restored when the script exits.
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh index de5a504ffdbc..860f27665ebd 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -29,13 +29,27 @@ function die() { exit 1 } -# set_dynamic_debug() - setup kernel dynamic debug -# TODO - push and pop this config? +function push_dynamic_debug() {
DYNAMIC_DEBUG=$(grep '^kernel/livepatch' /sys/kernel/debug/dynamic_debug/control | \
awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}')
+}
It works for me, though I feel that the /sys/kernel/debug/dynamic_debug/control output to input translation is brittle. It would be nice to have some kind of mass export/import capability for that interface.
I believe that the format is pretty stable. We could always reconsider it when it breaks.
I could confirm that it restores the original state, so:
Tested-by: Petr Mladek pmladek@suse.com
Best Regards, Petr
On 7/19/19 6:46 AM, Petr Mladek wrote:
On Thu 2019-07-18 16:42:25, Joe Lawrence wrote:
On 7/18/19 4:29 PM, Joe Lawrence wrote:
The livepatching self-tests tweak the dynamic debug config to verify the kernel log during the tests. Enhance set_dynamic_debug() so that the config changes are restored when the script exits.
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh index de5a504ffdbc..860f27665ebd 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -29,13 +29,27 @@ function die() { exit 1 } -# set_dynamic_debug() - setup kernel dynamic debug -# TODO - push and pop this config? +function push_dynamic_debug() {
DYNAMIC_DEBUG=$(grep '^kernel/livepatch' /sys/kernel/debug/dynamic_debug/control | \
awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}')
+}
It works for me, though I feel that the /sys/kernel/debug/dynamic_debug/control output to input translation is brittle. It would be nice to have some kind of mass export/import capability for that interface.
I believe that the format is pretty stable. We could always reconsider it when it breaks.
I could confirm that it restores the original state, so:
Tested-by: Petr Mladek pmladek@suse.com
Best Regards, Petr
Hi Shuah,
Can you review and route this patch through your tree as well?
Thanks,
-- Joe
On 7/30/19 11:31 AM, Joe Lawrence wrote:
On 7/19/19 6:46 AM, Petr Mladek wrote:
On Thu 2019-07-18 16:42:25, Joe Lawrence wrote:
On 7/18/19 4:29 PM, Joe Lawrence wrote:
The livepatching self-tests tweak the dynamic debug config to verify the kernel log during the tests. Enhance set_dynamic_debug() so that the config changes are restored when the script exits.
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh index de5a504ffdbc..860f27665ebd 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -29,13 +29,27 @@ function die() { exit 1 } -# set_dynamic_debug() - setup kernel dynamic debug -# TODO - push and pop this config? +function push_dynamic_debug() { + DYNAMIC_DEBUG=$(grep '^kernel/livepatch' /sys/kernel/debug/dynamic_debug/control | \ + awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}') +}
It works for me, though I feel that the /sys/kernel/debug/dynamic_debug/control output to input translation is brittle. It would be nice to have some kind of mass export/import capability for that interface.
I believe that the format is pretty stable. We could always reconsider it when it breaks.
I could confirm that it restores the original state, so:
Tested-by: Petr Mladek pmladek@suse.com
Best Regards, Petr
Hi Shuah,
Can you review and route this patch through your tree as well?
Looks good to me. Thanks for doing this. I will pick this up
thanks, -- Shuah
On 7/30/19 3:26 PM, shuah wrote:
On 7/30/19 11:31 AM, Joe Lawrence wrote:
On 7/19/19 6:46 AM, Petr Mladek wrote:
On Thu 2019-07-18 16:42:25, Joe Lawrence wrote:
On 7/18/19 4:29 PM, Joe Lawrence wrote:
The livepatching self-tests tweak the dynamic debug config to verify the kernel log during the tests. Enhance set_dynamic_debug() so that the config changes are restored when the script exits.
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh index de5a504ffdbc..860f27665ebd 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -29,13 +29,27 @@ function die() { exit 1 } -# set_dynamic_debug() - setup kernel dynamic debug -# TODO - push and pop this config? +function push_dynamic_debug() { + DYNAMIC_DEBUG=$(grep '^kernel/livepatch' /sys/kernel/debug/dynamic_debug/control | \ + awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}') +}
It works for me, though I feel that the /sys/kernel/debug/dynamic_debug/control output to input translation is brittle. It would be nice to have some kind of mass export/import capability for that interface.
I believe that the format is pretty stable. We could always reconsider it when it breaks.
I could confirm that it restores the original state, so:
Tested-by: Petr Mladek pmladek@suse.com
Best Regards, Petr
Hi Shuah,
Can you review and route this patch through your tree as well?
Looks good to me. Thanks for doing this. I will pick this up
Applied it with minor change to commit log to correct checkpatch error on
--- to the following: file kernel/livepatch/transition.c line 530 =_ ---
WARNING: Do not use whitespace before To: #72: to:
WARNING: Use a single space after To: #72: to:
ERROR: Unrecognized email address: '' #72: to:
I changed it to:
--- to the following: file kernel/livepatch/transition.c line 530 =_ ---
I will send this in for rc4
thanks, -- Shuah
linux-kselftest-mirror@lists.linaro.org