2017-08-22 15:44:50

by raymond pang

[permalink] [raw]
Subject: [PATCH] x86/ioapic: Correctly print IRTE's index field when enabling INTR

When enabling interrupt remap, IOAPIC's RTE contains interrupt_index
field of IRTE. And this field is composed of index and index2 member of
struct IR_IO_APIC_route_entry. Make io_apic_print_entries() correctly
print interrupt index field.

Signed-off-by: Raymond Pang <[email protected]>
---
arch/x86/kernel/apic/io_apic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 237e9c2..70e48aa 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -1243,7 +1243,7 @@ static void io_apic_print_entries(unsigned int
apic, unsigned int nr_entries)
entry.vector, entry.irr, entry.delivery_status);
if (ir_entry->format)
printk(KERN_DEBUG "%s, remapped, I(%04X), Z(%X)\n",
- buf, (ir_entry->index << 15) | ir_entry->index,
+ buf, (ir_entry->index2 << 15) | ir_entry->index,
ir_entry->zero);
else
printk(KERN_DEBUG "%s, %s, D(%02X), M(%1d)\n",
--
1.9.1


2017-08-23 08:16:45

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] x86/ioapic: Correctly print IRTE's index field when enabling INTR


* raymond pang <[email protected]> wrote:

> When enabling interrupt remap, IOAPIC's RTE contains interrupt_index
> field of IRTE. And this field is composed of index and index2 member of
> struct IR_IO_APIC_route_entry. Make io_apic_print_entries() correctly
> print interrupt index field.
>
> Signed-off-by: Raymond Pang <[email protected]>
> ---
> arch/x86/kernel/apic/io_apic.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
> index 237e9c2..70e48aa 100644
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -1243,7 +1243,7 @@ static void io_apic_print_entries(unsigned int
> apic, unsigned int nr_entries)
> entry.vector, entry.irr, entry.delivery_status);
> if (ir_entry->format)
> printk(KERN_DEBUG "%s, remapped, I(%04X), Z(%X)\n",
> - buf, (ir_entry->index << 15) | ir_entry->index,
> + buf, (ir_entry->index2 << 15) | ir_entry->index,
> ir_entry->zero);
> else
> printk(KERN_DEBUG "%s, %s, D(%02X), M(%1d)\n",

Applied.

[ Note that your patch was whitespace damaged (all tabs were converted to spaces),
I fixed that up manually. It's a pain to keep some mailers from doing that, see
Documentation/process/email-clients.rst for best practices. ]

Thanks,

Ingo

Subject: [tip:x86/apic] x86/ioapic: Print the IRTE's index field correctly when enabling INTR

Commit-ID: adfaf18334cbf16c563e4ebc67e968ea1b17ec51
Gitweb: http://git.kernel.org/tip/adfaf18334cbf16c563e4ebc67e968ea1b17ec51
Author: raymond pang <[email protected]>
AuthorDate: Tue, 22 Aug 2017 23:44:47 +0800
Committer: Ingo Molnar <[email protected]>
CommitDate: Wed, 23 Aug 2017 10:17:17 +0200

x86/ioapic: Print the IRTE's index field correctly when enabling INTR

When enabling interrupt remap, IOAPIC's RTE contains the interrupt_index
field of IRTE. This field is composed of the ->index and the ->index2 members
of 'struct IR_IO_APIC_route_entry' - but what we print out currently only
uses ->index.

Fix it.

Signed-off-by: Raymond Pang <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: [email protected]
Cc: [email protected]
Link: http://lkml.kernel.org/r/CAHG4imNDzpDyOVi7MByVrLQ%[email protected]
Signed-off-by: Ingo Molnar <[email protected]>
---
arch/x86/kernel/apic/io_apic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 237e9c2..70e48aa 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -1243,7 +1243,7 @@ static void io_apic_print_entries(unsigned int apic, unsigned int nr_entries)
entry.vector, entry.irr, entry.delivery_status);
if (ir_entry->format)
printk(KERN_DEBUG "%s, remapped, I(%04X), Z(%X)\n",
- buf, (ir_entry->index << 15) | ir_entry->index,
+ buf, (ir_entry->index2 << 15) | ir_entry->index,
ir_entry->zero);
else
printk(KERN_DEBUG "%s, %s, D(%02X), M(%1d)\n",