x86 apic: only compile local function if used
PATCH 1/1 x86 apic: only compile local function if used
From: Márton Németh <[email protected]>
The local function io_apic_level_ack_pending() is only called from io_apic_level_ack_pending(). The later function is only compiled if CONFIG_GENERIC_PENDING_IRQ is defined. Use this define around io_apic_level_ack_pending() function as well.
This will remove the following warning message during compiling
without CONFIG_GENERIC_PENDING_IRQ defined:
* arch/x86/kernel/apic/io_apic.c:382: warning: ‘io_apic_level_ack_pending’ defined but not used
---
arch/x86/kernel/apic/io_apic.c +2 -0
@@ -379,6 +379,7 @@ static void __io_apic_modify(unsigned int apic, unsigned int reg, unsigned int vwritel (value, &io_apic->data); } +#ifdef CONFIG_GENERIC_PENDING_IRQ static bool io_apic_level_ack_pending (struct irq_cfg *cfg) {struct irq_pin_list *entry;
@@ -401,6 +402,7 @@ static bool io_apic_level_ack_pending(struct irq_cfg *cfg)return false; } +#endif union entry_union {struct {u32 w1, w2; };
Quoted 26 lines · Németh Márton
From: Márton Németh <[email protected]>
The local function
io_apic_level_ack_pending()is only called fromio_apic_level_ack_pending(). The later function is only compiled ifCONFIG_GENERIC_PENDING_IRQis defined. Use this define aroundio_apic_level_ack_pending()function as well.This will remove the following warning message during compiling
withoutCONFIG_GENERIC_PENDING_IRQdefined:
*arch/x86/kernel/apic/io_apic.c:382: warning: ‘io_apic_level_ack_pending’ defined but not usedSigned-off-by Márton Németh <[email protected]>---
arch/x86/kernel/apic/io_apic.c +1
-0@@ -379,6 +379,7 @@ static void __io_apic_modify(unsigned int apic, unsigned int reg, unsigned int vwritel (value, &io_apic->data); } +#ifdef CONFIG_GENERIC_PENDING_IRQ static bool io_apic_level_ack_pending (struct irq_cfg *cfg) {struct irq_pin_list *entry;
arch/x86/kernel/apic/io_apic.c static bool io_apic_level_ack_pending(struct irq_cfg *cfg) · line 408
Quoted 7 lines
arch/x86/kernel/apic/io_apic.c +1
-0@@ -401,6 +402,7 @@ static bool io_apic_level_ack_pending(struct irq_cfg *cfg)return false; } +#endif union entry_union {struct {u32 w1, w2; };
it would be better/cleaner to just move this function into the already existing #ifdef CONFIG_GENERIC_PENDING_IRQ block.
Thanks,
Ingo
Quoted 33 lines · Ingo Molnar
Quoted 31 lines · Németh Márton
From: Márton Németh <[email protected]>
The local function
io_apic_level_ack_pending()is only called fromio_apic_level_ack_pending(). The later function is only compiled ifCONFIG_GENERIC_PENDING_IRQis defined. Use this define aroundio_apic_level_ack_pending()function as well.This will remove the following warning message during compiling
withoutCONFIG_GENERIC_PENDING_IRQdefined:
*arch/x86/kernel/apic/io_apic.c:382: warning: ‘io_apic_level_ack_pending’ defined but not usedSigned-off-by Márton Németh <[email protected]>---
arch/x86/kernel/apic/io_apic.c +2
-0@@ -379,6 +379,7 @@ static void __io_apic_modify(unsigned int apic, unsigned int reg, unsigned int vwritel (value, &io_apic->data); } +#ifdef CONFIG_GENERIC_PENDING_IRQ static bool io_apic_level_ack_pending (struct irq_cfg *cfg) {struct irq_pin_list *entry;@@ -401,6 +402,7 @@ static bool io_apic_level_ack_pending(struct irq_cfg *cfg) return false; } +#endif
Quoted 5 lines
arch/x86/kernel/apic/io_apic.c static bool io_apic_level_ack_pending(struct irq_cfg *cfg) · line 408
Quoted 2 lines
arch/x86/kernel/apic/io_apic.c +0
-0union entry_union {struct {u32 w1, w2; };it would be better/cleaner to just move this function into the already existing #ifdef
CONFIG_GENERIC_PENDING_IRQblock.
Sorry missed this patch to review before. Appended the modified patch with an updated changelog.
---
From: Márton Németh <[email protected]>
Subject: x86, ioapic: Fix the warning with !CONFIG_GENERIC_PENDING_IRQ
The local function io_apic_level_ack_pending() is only called from io_apic_level_ack_pending(). The later function is only compiled if CONFIG_GENERIC_PENDING_IRQ is defined. Move the io_apic_level_ack_pending() to the existing #ifdef CONFIG_GENERIC_PENDING_IRQ code block.
This will remove the following warning message during compiling
without CONFIG_GENERIC_PENDING_IRQ defined:
* arch/x86/kernel/apic/io_apic.c:382: warning: ‘io_apic_level_ack_pending’ defined but not used
--- arch/x86/kernel/apic/io_apic.c | 46 ++++++++++++++++++++-------------------- 1 files changed, 23 insertions(+), 23 deletions(-)
arch/x86/kernel/apic/io_apic.c +23 -23
@@ -362,29 +362,6 @@ void native_io_apic_modify(unsigned int apic, unsigned int reg, unsigned int valwritel (value, &io_apic->data); } -static bool io_apic_level_ack_pending (struct irq_cfg *cfg) -{ -struct irq_pin_list *entry; -unsigned long flags; - -raw_spin_lock_irqsave (&ioapic_lock, flags); -for_each_irq_pin (entry, cfg->irq_2_pin) { -unsigned int reg; -int pin; - - pin = entry->pin; - reg =io_apic_read (entry->apic,0x10 + pin*2 ); -/* Is the remote IRR bit set? */ -if (reg &IO_APIC_REDIR_REMOTE_IRR ) { -raw_spin_unlock_irqrestore (&ioapic_lock, flags); -return true; - } - } -raw_spin_unlock_irqrestore (&ioapic_lock, flags); - -return false; -} -union entry_union {struct {u32 w1, w2; };struct IO_APIC_route_entry entry;
@@ -2406,6 +2383,29 @@ static void ack_apic_edge(struct irq_data *data)atomic_t irq_mis_count;#ifdef CONFIG_GENERIC_PENDING_IRQ +static bool io_apic_level_ack_pending (struct irq_cfg *cfg) +{ +struct irq_pin_list *entry; +unsigned long flags; + +raw_spin_lock_irqsave (&ioapic_lock, flags); +for_each_irq_pin (entry, cfg->irq_2_pin) { +unsigned int reg; +int pin; + + pin = entry->pin; + reg =io_apic_read (entry->apic,0x10 + pin*2 ); +/* Is the remote IRR bit set? */ +if (reg &IO_APIC_REDIR_REMOTE_IRR ) { +raw_spin_unlock_irqrestore (&ioapic_lock, flags); +return true; + } + } +raw_spin_unlock_irqrestore (&ioapic_lock, flags); + +return false; +} +static inline bool ioapic_irqd_mask (struct irq_data *data,struct irq_cfg *cfg) {/* If we are moving the irq we need to mask it */
[tip:x86/apic] x86/apic: Only compile local function if used with !CONFIG_GENERIC_PENDING_IRQ
Commit-ID: d1ecad6eee8629c6b425580aad76cf99b85956e9 Gitweb: http://git.kernel.org/tip/d1ecad6eee8629c6b425580aad76cf99b85956e9 Author: Márton Németh <[email protected]> AuthorDate: Tue, 8 May 2012 00:24:20 -0700 Committer: Ingo Molnar <[email protected]> CommitDate: Tue, 8 May 2012 11:23:15 +0200
x86/apic: Only compile local function if used with !CONFIG_GENERIC_PENDING_IRQ
The local function io_apic_level_ack_pending() is only called from io_apic_level_ack_pending(). The later function is only compiled if CONFIG_GENERIC_PENDING_IRQ is defined. Move the io_apic_level_ack_pending() to the existing #ifdef CONFIG_GENERIC_PENDING_IRQ code block.
This will remove the following warning message during compiling without CONFIG_GENERIC_PENDING_IRQ defined:
* arch/x86/kernel/apic/io_apic.c:382: warning: ‘io_apic_level_ack_pending’ defined but not used
--- arch/x86/kernel/apic/io_apic.c | 46 ++++++++++++++++++++-------------------- 1 files changed, 23 insertions(+), 23 deletions(-)
arch/x86/kernel/apic/io_apic.c +23 -23
@@ -346,29 +346,6 @@ void native_io_apic_modify(unsigned int apic, unsigned int reg, unsigned int valwritel (value, &io_apic->data); } -static bool io_apic_level_ack_pending (struct irq_cfg *cfg) -{ -struct irq_pin_list *entry; -unsigned long flags; - -raw_spin_lock_irqsave (&ioapic_lock, flags); -for_each_irq_pin (entry, cfg->irq_2_pin) { -unsigned int reg; -int pin; - - pin = entry->pin; - reg =io_apic_read (entry->apic,0x10 + pin*2 ); -/* Is the remote IRR bit set? */ -if (reg &IO_APIC_REDIR_REMOTE_IRR ) { -raw_spin_unlock_irqrestore (&ioapic_lock, flags); -return true; - } - } -raw_spin_unlock_irqrestore (&ioapic_lock, flags); - -return false; -} -union entry_union {struct {u32 w1, w2; };struct IO_APIC_route_entry entry;
@@ -2519,6 +2496,29 @@ static void ack_apic_edge(struct irq_data *data)atomic_t irq_mis_count;#ifdef CONFIG_GENERIC_PENDING_IRQ +static bool io_apic_level_ack_pending (struct irq_cfg *cfg) +{ +struct irq_pin_list *entry; +unsigned long flags; + +raw_spin_lock_irqsave (&ioapic_lock, flags); +for_each_irq_pin (entry, cfg->irq_2_pin) { +unsigned int reg; +int pin; + + pin = entry->pin; + reg =io_apic_read (entry->apic,0x10 + pin*2 ); +/* Is the remote IRR bit set? */ +if (reg &IO_APIC_REDIR_REMOTE_IRR ) { +raw_spin_unlock_irqrestore (&ioapic_lock, flags); +return true; + } + } +raw_spin_unlock_irqrestore (&ioapic_lock, flags); + +return false; +} +static inline bool ioapic_irqd_mask (struct irq_data *data,struct irq_cfg *cfg) {/* If we are moving the irq we need to mask it */