|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 4/4] xen/arm: Add some useful debug in coprocessor trapping
On Thu, 2014-04-24 at 23:45 +0100, Julien Grall wrote:
> XSA-93 adds a couple of new functions to trap coprocessor registers. They
> unconditonally inject an undefined instruction to guest.
"unconditionally"
> When debugging an OS at early stage, it may be hard to know why the guest
> received an UNDEFINED. Add some debug message to help the developper when Xen
"developer"
> is built in debug mode.
>
> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
> ---
> xen/arch/arm/traps.c | 18 ++++++++++++++++++
> xen/include/asm-arm/processor.h | 15 +++++++++++++--
> 2 files changed, 31 insertions(+), 2 deletions(-)
>
> diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
> index 1f61e6e..c04f53f 100644
> --- a/xen/arch/arm/traps.c
> +++ b/xen/arch/arm/traps.c
> @@ -1539,23 +1539,41 @@ bad_cp:
>
> static void do_cp14_dbg(struct cpu_user_regs *regs, union hsr hsr)
> {
> + struct hsr_cp64 cp64 = hsr.cp64;
Won't this be unused in debug=n builds and therefore not build?
> diff --git a/xen/include/asm-arm/processor.h b/xen/include/asm-arm/processor.h
> index 9267c1b..bc29de1 100644
> --- a/xen/include/asm-arm/processor.h
> +++ b/xen/include/asm-arm/processor.h
> @@ -289,12 +289,23 @@ union hsr {
> unsigned long reg2:5; /* Rt2 */
> unsigned long sbzp2:1;
> unsigned long op1:4; /* Op1 */
> - unsigned long cc:4; /* Condition Code */
> - unsigned long ccvalid:1;/* CC Valid */
> + unsigned long cc:4; /* condition code */
> + unsigned long ccvalid:1;/* cc valid */
This seems a bit gratuitous, especially given it appears 3 times and you
only change one. I'd prefer if you just made the new version match the
existing ones than change everything.
> unsigned long len:1; /* Instruction length */
> unsigned long ec:6; /* Exception Class */
> } cp64; /* HSR_EC_CP15_64, HSR_EC_CP14_64 */
>
> + struct hsr_cp {
> + unsigned long coproc:4; /* Number of coproc accessed */
> + unsigned long sbz0p:1;
> + unsigned long tas:1; /* Trapped Advanced SIMD */
> + unsigned long res0:14;
> + unsigned long cc:4; /* condition code */
> + unsigned long ccvalid:1;/* cc valid */
> + unsigned long len:1; /* Instruction length */
> + unsigned long ec:6; /* Exception Class */
> + } cp; /* HSR_EC_CP */
> +
> #ifdef CONFIG_ARM_64
> struct hsr_sysreg {
> unsigned long read:1; /* Direction */
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |