Thread (29 messages) flat view 29 messages, 3 authors, 2012-09-21

[PATCH v3 02/17] ARM: add self test for runtime patch mechanism

From: Nicolas Pitre <hidden>
Date: 2012-09-21 17:40:26
Also in: lkml

On Tue, 11 Sep 2012, Cyril Chemparathy wrote:
quoted hunk ↗ jump to hunk
This patch adds basic sanity tests to ensure that the instruction patching
results in valid instruction encodings.  This is done by verifying the output
of the patch process against a vector of assembler generated instructions at
init time.

Signed-off-by: Cyril Chemparathy <redacted>
---
 arch/arm/Kconfig                |   12 +++++++
 arch/arm/kernel/runtime-patch.c |   75 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 87 insertions(+)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 36de4ea..bfcd29d 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -207,6 +207,18 @@ config ARM_PATCH_PHYS_VIRT
 	  this feature (eg, building a kernel for a single machine) and
 	  you need to shrink the kernel to the minimal size.
 
+config ARM_RUNTIME_PATCH_TEST
+	bool "Self test runtime patching mechanism" if ARM_RUNTIME_PATCH
+	default y
Here you probably want this instead:

	bool "Self test runtime patching mechanism"
	default y
	depends on ARM_RUNTIME_PATCH

Otherwise ARM_RUNTIME_PATCH_TEST will be forced to y whenever 
ARM_RUNTIME_PATCH is unset.  That doesn't currently affect the build 
since the containing .c file is only compiled when ARM_RUNTIME_PATCH is 
set but that is still not strictly right.

[...]
quoted hunk ↗ jump to hunk
@@ -189,5 +261,8 @@ void __init runtime_patch_kernel(void)
 	const void *start = &__runtime_patch_table_begin;
 	const void *end   = &__runtime_patch_table_end;
 
+#ifdef CONFIG_ARM_RUNTIME_PATCH_TEST
+	runtime_patch_test();
+#endif
 	BUG_ON(runtime_patch(start, end - start));
I think you shoulld have runtime_patch_test() return a possible error 
code and use BUG_ON() with it as well.

With those minor changes you can add...

Reviewed-by: Nicolas Pitre <redacted>


Nicolas
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help