Message ID | 1417721215-32639-1-git-send-email-julien.grall@linaro.org |
---|---|
State | Accepted, archived |
Headers | show |
Hi Konrad, On 04/12/2014 19:34, Konrad Rzeszutek Wilk wrote: > On Thu, Dec 04, 2014 at 07:26:55PM +0000, Julien Grall wrote: >> A 0 was forgotten when the arm32 BUG instruction opcode has been added in commit >> 3e802c6ca1fb9a9549258c2855a57cad483f3cbd "xen/arm: Correctly support WARN_ON". >> >> This will result to use a valid instruction (mcreq 0, 3, r0, cr15, cr0, {7}), >> and inhibit usage of BUG/WARN_ON and co. >> >> Signed-off-by: Julien Grall <julien.grall@linaro.org> >> >> --- >> >> Not sure, why I dropped the 0 when I implemented the patch... >> This is a bug fixed for Xen 4.5. This is only affected ARM32 where the >> BUG opcode was malformed. >> >> With the malformed opcode, the ASSERT/BUG_ON is skipped and the >> processor may execute another patch (because the compiler has optimized > > s/patch/path/ ? Yes. >> due the unreachable in both macro). >> >> The code modified is only executed when Xen is in bad state. > > Release-Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Thanks! Regards,
diff --git a/xen/include/asm-arm/arm32/bug.h b/xen/include/asm-arm/arm32/bug.h index 155b420..3e66f35 100644 --- a/xen/include/asm-arm/arm32/bug.h +++ b/xen/include/asm-arm/arm32/bug.h @@ -6,7 +6,7 @@ /* ARMv7 provides a list of undefined opcode (see A8.8.247 DDI 0406C.b) * Use one them encoding A1 to go in exception mode */ -#define BUG_OPCODE 0xe7f00f0 +#define BUG_OPCODE 0xe7f000f0 #define BUG_INSTR ".word " __stringify(BUG_OPCODE)
A 0 was forgotten when the arm32 BUG instruction opcode has been added in commit 3e802c6ca1fb9a9549258c2855a57cad483f3cbd "xen/arm: Correctly support WARN_ON". This will result to use a valid instruction (mcreq 0, 3, r0, cr15, cr0, {7}), and inhibit usage of BUG/WARN_ON and co. Signed-off-by: Julien Grall <julien.grall@linaro.org> --- Not sure, why I dropped the 0 when I implemented the patch... This is a bug fixed for Xen 4.5. This is only affected ARM32 where the BUG opcode was malformed. With the malformed opcode, the ASSERT/BUG_ON is skipped and the processor may execute another patch (because the compiler has optimized due the unreachable in both macro). The code modified is only executed when Xen is in bad state. --- xen/include/asm-arm/arm32/bug.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)