* [v2][PATCH] xen/apic: refactor error_interrupt
@ 2015-05-06 6:27 Tiejun Chen
2015-05-06 7:06 ` Andrew Cooper
0 siblings, 1 reply; 2+ messages in thread
From: Tiejun Chen @ 2015-05-06 6:27 UTC (permalink / raw)
To: andrew.cooper3, jbeulich, keir; +Cc: xen-devel
Just make this readable while debugging.
Signed-off-by: Tiejun Chen <tiejun.chen@intel.com>
---
v2:
* Tried to refine code according to comments.
xen/arch/x86/apic.c | 30 ++++++++++++++++++------------
1 file changed, 18 insertions(+), 12 deletions(-)
diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c
index 3217bdf..b9f53df 100644
--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -1319,9 +1319,21 @@ out: ;
* This interrupt should never happen with our APIC/SMP architecture
*/
+static const char * const esr_fields[] =
+{
+ "Send CS error",
+ "Receive CS error",
+ "Send accept error",
+ "Receive accept error",
+ "Redirectable IPI",
+ "Send illegal vector",
+ "Received illegal vector",
+ "Illegal register address",
+};
+
void error_interrupt(struct cpu_user_regs *regs)
{
- unsigned long v, v1;
+ unsigned int v, v1, i;
/* First tickle the hardware, only then report what went on. -- REW */
v = apic_read(APIC_ESR);
@@ -1329,18 +1341,12 @@ void error_interrupt(struct cpu_user_regs *regs)
v1 = apic_read(APIC_ESR);
ack_APIC_irq();
- /* Here is what the APIC error bits mean:
- 0: Send CS error
- 1: Receive CS error
- 2: Send accept error
- 3: Receive accept error
- 4: Reserved
- 5: Send illegal vector
- 6: Received illegal vector
- 7: Illegal register address
- */
- printk (KERN_DEBUG "APIC error on CPU%d: %02lx(%02lx)\n",
+ printk(XENLOG_DEBUG "APIC error on CPU%u: %02x(%02x)",
smp_processor_id(), v , v1);
+ for ( i = 7; i >= 0; --i )
+ if ( v1 & (1 << i) )
+ printk(", %s", esr_fields[i]);
+ printk("\n");
}
/*
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [v2][PATCH] xen/apic: refactor error_interrupt
2015-05-06 6:27 [v2][PATCH] xen/apic: refactor error_interrupt Tiejun Chen
@ 2015-05-06 7:06 ` Andrew Cooper
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Cooper @ 2015-05-06 7:06 UTC (permalink / raw)
To: Tiejun Chen, jbeulich, keir; +Cc: xen-devel
On 06/05/2015 07:27, Tiejun Chen wrote:
> Just make this readable while debugging.
>
> Signed-off-by: Tiejun Chen <tiejun.chen@intel.com>
Almost, but there is one issue.
> ---
> v2:
>
> * Tried to refine code according to comments.
>
> xen/arch/x86/apic.c | 30 ++++++++++++++++++------------
> 1 file changed, 18 insertions(+), 12 deletions(-)
>
> diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c
> index 3217bdf..b9f53df 100644
> --- a/xen/arch/x86/apic.c
> +++ b/xen/arch/x86/apic.c
> @@ -1319,9 +1319,21 @@ out: ;
> * This interrupt should never happen with our APIC/SMP architecture
> */
>
> +static const char * const esr_fields[] =
> +{
> + "Send CS error",
> + "Receive CS error",
> + "Send accept error",
> + "Receive accept error",
> + "Redirectable IPI",
> + "Send illegal vector",
> + "Received illegal vector",
> + "Illegal register address",
> +};
> +
> void error_interrupt(struct cpu_user_regs *regs)
> {
> - unsigned long v, v1;
> + unsigned int v, v1, i;
>
> /* First tickle the hardware, only then report what went on. -- REW */
> v = apic_read(APIC_ESR);
> @@ -1329,18 +1341,12 @@ void error_interrupt(struct cpu_user_regs *regs)
> v1 = apic_read(APIC_ESR);
> ack_APIC_irq();
>
> - /* Here is what the APIC error bits mean:
> - 0: Send CS error
> - 1: Receive CS error
> - 2: Send accept error
> - 3: Receive accept error
> - 4: Reserved
> - 5: Send illegal vector
> - 6: Received illegal vector
> - 7: Illegal register address
> - */
> - printk (KERN_DEBUG "APIC error on CPU%d: %02lx(%02lx)\n",
> + printk(XENLOG_DEBUG "APIC error on CPU%u: %02x(%02x)",
> smp_processor_id(), v , v1);
> + for ( i = 7; i >= 0; --i )
As the patch currently goes, i is unsigned making this an infinite loop.
Swap i to be a regular int, and Reviewed-by: Andrew Cooper
<andrew.cooper3@citrix.com>
> + if ( v1 & (1 << i) )
> + printk(", %s", esr_fields[i]);
> + printk("\n");
> }
>
> /*
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-05-06 7:06 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-06 6:27 [v2][PATCH] xen/apic: refactor error_interrupt Tiejun Chen
2015-05-06 7:06 ` Andrew Cooper
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.