* [patch 1/2] x86: io-apic - define names for redirection table entry fields
[not found] <20080607155355.010786004@gmail.com>
@ 2008-06-07 15:53 ` Cyrill Gorcunov
2008-06-10 10:36 ` Ingo Molnar
2008-06-07 15:53 ` [patch 2/2] x86: io-apic - use predefined names instead of numeric constants Cyrill Gorcunov
1 sibling, 1 reply; 4+ messages in thread
From: Cyrill Gorcunov @ 2008-06-07 15:53 UTC (permalink / raw)
To: macro, mingo, hpa, tglx, linux-kernel; +Cc: Cyrill Gorcunov
[-- Attachment #1: x86-io-apic-defs --]
[-- Type: text/plain, Size: 942 bytes --]
Each I/O APIC redirection table entry has a number of fields.
Define names for them to eliminate reference by hard coded
numbers.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
---
Index: linux-2.6.git/include/asm-x86/io_apic.h
====================================================================
--- linux-2.6.git.orig/include/asm-x86/io_apic.h 2008-06-07 17:09:10.000000000 +0400
+++ linux-2.6.git/include/asm-x86/io_apic.h 2008-06-07 17:55:22.000000000 +0400
@@ -11,6 +11,15 @@
* Copyright (C) 1997, 1998, 1999, 2000 Ingo Molnar
*/
+/* I/O Unit Redirection Table */
+#define IO_APIC_REDIR_VECTOR_MASK 0x000FF
+#define IO_APIC_REDIR_DEST_LOGICAL 0x00800
+#define IO_APIC_REDIR_DEST_PHYSICAL 0x00000
+#define IO_APIC_REDIR_SEND_PENDING (1 << 12)
+#define IO_APIC_REDIR_REMOTE_IRR (1 << 14)
+#define IO_APIC_REDIR_LEVEL_TRIGGER (1 << 15)
+#define IO_APIC_REDIR_MASKED (1 << 16)
+
/*
* The structure of the IO-APIC:
*/
--
^ permalink raw reply [flat|nested] 4+ messages in thread* [patch 2/2] x86: io-apic - use predefined names instead of numeric constants
[not found] <20080607155355.010786004@gmail.com>
2008-06-07 15:53 ` [patch 1/2] x86: io-apic - define names for redirection table entry fields Cyrill Gorcunov
@ 2008-06-07 15:53 ` Cyrill Gorcunov
2008-06-10 10:36 ` Ingo Molnar
1 sibling, 1 reply; 4+ messages in thread
From: Cyrill Gorcunov @ 2008-06-07 15:53 UTC (permalink / raw)
To: macro, mingo, hpa, tglx, linux-kernel; +Cc: Cyrill Gorcunov
[-- Attachment #1: x86-io-apic-use-defs --]
[-- Type: text/plain, Size: 2875 bytes --]
This patch replaces some hard-coded numbers
with predefined names.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
---
The patch was checked to _not_ introduce any finctional
change - compiled text sections remains the same.
Index: linux-2.6.git/arch/x86/kernel/io_apic_64.c
====================================================================
--- linux-2.6.git.orig/arch/x86/kernel/io_apic_64.c 2008-06-07 19:29:26.000000000 +0400
+++ linux-2.6.git/arch/x86/kernel/io_apic_64.c 2008-06-07 19:36:50.000000000 +0400
@@ -183,7 +183,7 @@ static bool io_apic_level_ack_pending(un
break;
reg = io_apic_read(entry->apic, 0x10 + pin*2);
/* Is the remote IRR bit set? */
- if ((reg >> 14) & 1) {
+ if (reg & IO_APIC_REDIR_REMOTE_IRR) {
spin_unlock_irqrestore(&ioapic_lock, flags);
return true;
}
@@ -298,7 +298,7 @@ static void __target_IO_APIC_irq(unsigne
break;
io_apic_write(apic, 0x11 + pin*2, dest);
reg = io_apic_read(apic, 0x10 + pin*2);
- reg &= ~0x000000ff;
+ reg &= ~IO_APIC_REDIR_VECTOR_MASK;
reg |= vector;
io_apic_modify(apic, reg);
if (!entry->next)
@@ -366,10 +366,11 @@ static void add_pin_to_irq(unsigned int
static void name##_IO_APIC_irq (unsigned int irq) \
__DO_ACTION(R, ACTION, FINAL)
-DO_ACTION( __mask, 0, |= 0x00010000, io_apic_sync(entry->apic) )
- /* mask = 1 */
-DO_ACTION( __unmask, 0, &= 0xfffeffff, )
- /* mask = 0 */
+/* mask = 1 */
+DO_ACTION(__mask, 0, |= IO_APIC_REDIR_MASKED, io_apic_sync(entry->apic))
+
+/* mask = 0 */
+DO_ACTION(__unmask, 0, &= ~IO_APIC_REDIR_MASKED, )
static void mask_IO_APIC_irq (unsigned int irq)
{
Index: linux-2.6.git/arch/x86/kernel/io_apic_32.c
====================================================================
--- linux-2.6.git.orig/arch/x86/kernel/io_apic_32.c 2008-06-07 19:29:26.000000000 +0400
+++ linux-2.6.git/arch/x86/kernel/io_apic_32.c 2008-06-07 19:35:21.000000000 +0400
@@ -261,25 +261,27 @@ static void __modify_IO_APIC_irq (unsign
/* mask = 1 */
static void __mask_IO_APIC_irq (unsigned int irq)
{
- __modify_IO_APIC_irq(irq, 0x00010000, 0);
+ __modify_IO_APIC_irq(irq, IO_APIC_REDIR_MASKED, 0);
}
/* mask = 0 */
static void __unmask_IO_APIC_irq (unsigned int irq)
{
- __modify_IO_APIC_irq(irq, 0, 0x00010000);
+ __modify_IO_APIC_irq(irq, 0, IO_APIC_REDIR_MASKED);
}
/* mask = 1, trigger = 0 */
static void __mask_and_edge_IO_APIC_irq (unsigned int irq)
{
- __modify_IO_APIC_irq(irq, 0x00010000, 0x00008000);
+ __modify_IO_APIC_irq(irq, IO_APIC_REDIR_MASKED,
+ IO_APIC_REDIR_LEVEL_TRIGGER);
}
/* mask = 0, trigger = 1 */
static void __unmask_and_level_IO_APIC_irq (unsigned int irq)
{
- __modify_IO_APIC_irq(irq, 0x00008000, 0x00010000);
+ __modify_IO_APIC_irq(irq, IO_APIC_REDIR_LEVEL_TRIGGER,
+ IO_APIC_REDIR_MASKED);
}
static void mask_IO_APIC_irq (unsigned int irq)
--
^ permalink raw reply [flat|nested] 4+ messages in thread