* [PATCH 0/5] merge io_apic_xx.c -- fix
@ 2008-08-16 10:07 Yinghai Lu
2008-08-16 10:07 ` [PATCH 1/5] pci: change msi-x vector to 32bit Yinghai Lu
2008-08-16 13:35 ` [PATCH 0/5] merge io_apic_xx.c -- fix Ingo Molnar
0 siblings, 2 replies; 12+ messages in thread
From: Yinghai Lu @ 2008-08-16 10:07 UTC (permalink / raw)
To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Eric W. Biederman,
Andrew Morton
Cc: linux-kernel, Yinghai Lu
merge io_apic_xx.c
Thanks
Yinghai Lu
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH 1/5] pci: change msi-x vector to 32bit 2008-08-16 10:07 [PATCH 0/5] merge io_apic_xx.c -- fix Yinghai Lu @ 2008-08-16 10:07 ` Yinghai Lu 2008-08-16 10:07 ` Yinghai Lu 2008-08-16 13:35 ` [PATCH 0/5] merge io_apic_xx.c -- fix Ingo Molnar 1 sibling, 1 reply; 12+ messages in thread From: Yinghai Lu @ 2008-08-16 10:07 UTC (permalink / raw) To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Eric W. Biederman, Andrew Morton Cc: linux-kernel, Yinghai Lu, Andrew Vasquez we are using 28bit pci (bus/dev/fn + 12 bits) as irq number, so the cache for irq number should be 32 bit too. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Cc: Andrew Vasquez <andrew.vasquez@qlogic.com> --- drivers/scsi/qla2xxx/qla_def.h | 2 +- include/linux/pci.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) Index: linux-2.6/drivers/scsi/qla2xxx/qla_def.h =================================================================== --- linux-2.6.orig/drivers/scsi/qla2xxx/qla_def.h +++ linux-2.6/drivers/scsi/qla2xxx/qla_def.h @@ -2109,7 +2109,7 @@ struct scsi_qla_host; struct qla_msix_entry { int have_irq; - uint16_t msix_vector; + uint32_t msix_vector; uint16_t msix_entry; }; Index: linux-2.6/include/linux/pci.h =================================================================== --- linux-2.6.orig/include/linux/pci.h +++ linux-2.6/include/linux/pci.h @@ -729,7 +729,7 @@ enum pci_dma_burst_strategy { }; struct msix_entry { - u16 vector; /* kernel uses to write allocated vector */ + u32 vector; /* kernel uses to write allocated vector */ u16 entry; /* driver uses to specify entry, OS writes */ }; ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/5] pci: change msi-x vector to 32bit 2008-08-16 10:07 ` [PATCH 1/5] pci: change msi-x vector to 32bit Yinghai Lu @ 2008-08-16 10:07 ` Yinghai Lu 2008-08-16 10:07 ` [PATCH 3/5] x86: irq: interrupt array size should be NR_VECTORS Yinghai Lu 0 siblings, 1 reply; 12+ messages in thread From: Yinghai Lu @ 2008-08-16 10:07 UTC (permalink / raw) To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Eric W. Biederman, Andrew Morton Cc: linux-kernel, Yinghai Lu Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> --- drivers/pci/intr_remapping.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: linux-2.6/drivers/pci/intr_remapping.c =================================================================== --- linux-2.6.orig/drivers/pci/intr_remapping.c +++ linux-2.6/drivers/pci/intr_remapping.c @@ -99,7 +99,7 @@ static struct irq_2_iommu irq_2_iommuX[N static struct irq_2_iommu *irq_2_iommu(unsigned int irq) { - if (irq <= nr_irqs) + if (irq < nr_irqs) return &irq_2_iommuX[irq]; return NULL; ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 3/5] x86: irq: interrupt array size should be NR_VECTORS 2008-08-16 10:07 ` Yinghai Lu @ 2008-08-16 10:07 ` Yinghai Lu 2008-08-16 10:07 ` [PATCH 4/5] x86: unify mask_IO_APIC_irq Yinghai Lu 0 siblings, 1 reply; 12+ messages in thread From: Yinghai Lu @ 2008-08-16 10:07 UTC (permalink / raw) To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Eric W. Biederman, Andrew Morton Cc: linux-kernel, Yinghai Lu Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> --- drivers/pci/intr_remapping.c | 2 +- include/asm-x86/hw_irq.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) Index: linux-2.6/include/asm-x86/hw_irq.h =================================================================== --- linux-2.6.orig/include/asm-x86/hw_irq.h +++ linux-2.6/include/asm-x86/hw_irq.h @@ -115,7 +115,7 @@ extern asmlinkage void smp_invalidate_in #endif #ifdef CONFIG_X86_32 -extern void (*const interrupt[NR_IRQS])(void); +extern void (*const interrupt[NR_VECTORS])(void); #endif typedef int vector_irq_t[NR_VECTORS]; ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 4/5] x86: unify mask_IO_APIC_irq 2008-08-16 10:07 ` [PATCH 3/5] x86: irq: interrupt array size should be NR_VECTORS Yinghai Lu @ 2008-08-16 10:07 ` Yinghai Lu 2008-08-16 10:07 ` [PATCH 5/5] x86: unify ack_apic_edge Yinghai Lu 0 siblings, 1 reply; 12+ messages in thread From: Yinghai Lu @ 2008-08-16 10:07 UTC (permalink / raw) To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Eric W. Biederman, Andrew Morton Cc: linux-kernel, Yinghai Lu use MACRO for 32 bit too Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> --- arch/x86/kernel/io_apic.c | 80 ++++++++++++---------------------------------- 1 file changed, 21 insertions(+), 59 deletions(-) Index: linux-2.6/arch/x86/kernel/io_apic.c =================================================================== --- linux-2.6.orig/arch/x86/kernel/io_apic.c +++ linux-2.6/arch/x86/kernel/io_apic.c @@ -608,18 +608,7 @@ static void __init replace_pin_at_irq(un add_pin_to_irq(irq, newapic, newpin); } -#ifdef CONFIG_X86_64 -/* - * Synchronize the IO-APIC and the CPU by doing - * a dummy read from the IO-APIC - */ -static inline void io_apic_sync(unsigned int apic) -{ - struct io_apic __iomem *io_apic = io_apic_base(apic); - readl(&io_apic->data); -} - -#define __DO_ACTION(R, ACTION, FINAL) \ +#define __DO_ACTION(R, ACTION_ENABLE, ACTION_DISABLE, FINAL) \ \ { \ int pin; \ @@ -634,7 +623,8 @@ static inline void io_apic_sync(unsigned break; \ pin = entry->pin; \ reg = io_apic_read(entry->apic, 0x10 + R + pin*2); \ - reg ACTION; \ + reg ACTION_DISABLE; \ + reg ACTION_ENABLE; \ io_apic_modify(entry->apic, 0x10 + R + pin*2, reg); \ FINAL; \ if (!entry->next) \ @@ -643,66 +633,38 @@ static inline void io_apic_sync(unsigned } \ } -#define DO_ACTION(name,R,ACTION, FINAL) \ +#define DO_ACTION(name,R, ACTION_ENABLE, ACTION_DISABLE, FINAL) \ \ static void name##_IO_APIC_irq (unsigned int irq) \ - __DO_ACTION(R, ACTION, FINAL) - -/* mask = 1 */ -DO_ACTION(__mask, 0, |= IO_APIC_REDIR_MASKED, io_apic_sync(entry->apic)) + __DO_ACTION(R, ACTION_ENABLE, ACTION_DISABLE, FINAL) /* mask = 0 */ -DO_ACTION(__unmask, 0, &= ~IO_APIC_REDIR_MASKED, ) +DO_ACTION(__unmask, 0, |= 0, &= ~IO_APIC_REDIR_MASKED, ) -#else - -static void __modify_IO_APIC_irq(unsigned int irq, unsigned long enable, unsigned long disable) +#ifdef CONFIG_X86_64 +/* + * Synchronize the IO-APIC and the CPU by doing + * a dummy read from the IO-APIC + */ +static inline void io_apic_sync(unsigned int apic) { - struct irq_cfg *cfg; - struct irq_pin_list *entry; - unsigned int pin, reg; - - cfg = irq_cfg(irq); - entry = cfg->irq_2_pin; - for (;;) { - if (!entry) - break; - pin = entry->pin; - reg = io_apic_read(entry->apic, 0x10 + pin*2); - reg &= ~disable; - reg |= enable; - io_apic_modify(entry->apic, 0x10 + pin*2, reg); - if (!entry->next) - break; - entry = entry->next; - } + struct io_apic __iomem *io_apic = io_apic_base(apic); + readl(&io_apic->data); } /* mask = 1 */ -static void __mask_IO_APIC_irq(unsigned int irq) -{ - __modify_IO_APIC_irq(irq, IO_APIC_REDIR_MASKED, 0); -} +DO_ACTION(__mask, 0, |= IO_APIC_REDIR_MASKED, &= ~0, io_apic_sync(entry->apic)) -/* mask = 0 */ -static void __unmask_IO_APIC_irq(unsigned int irq) -{ - __modify_IO_APIC_irq(irq, 0, IO_APIC_REDIR_MASKED); -} +#else + +/* mask = 1 */ +DO_ACTION(__mask, 0, |= IO_APIC_REDIR_MASKED, &= ~0, ) /* mask = 1, trigger = 0 */ -static void __mask_and_edge_IO_APIC_irq(unsigned int irq) -{ - __modify_IO_APIC_irq(irq, IO_APIC_REDIR_MASKED, - IO_APIC_REDIR_LEVEL_TRIGGER); -} +DO_ACTION(__mask_and_edge, 0, |= 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, IO_APIC_REDIR_LEVEL_TRIGGER, - IO_APIC_REDIR_MASKED); -} +DO_ACTION(__unmask_and_level, 0, |= IO_APIC_REDIR_LEVEL_TRIGGER, &= ~IO_APIC_REDIR_MASKED, ) #endif ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 5/5] x86: unify ack_apic_edge 2008-08-16 10:07 ` [PATCH 4/5] x86: unify mask_IO_APIC_irq Yinghai Lu @ 2008-08-16 10:07 ` Yinghai Lu 0 siblings, 0 replies; 12+ messages in thread From: Yinghai Lu @ 2008-08-16 10:07 UTC (permalink / raw) To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Eric W. Biederman, Andrew Morton Cc: linux-kernel, Yinghai Lu use code in 64 to replace move_native_irq(irq, desc); in 32 bit Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> --- arch/x86/kernel/io_apic.c | 73 ++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 38 deletions(-) Index: linux-2.6/arch/x86/kernel/io_apic.c =================================================================== --- linux-2.6.orig/arch/x86/kernel/io_apic.c +++ linux-2.6/arch/x86/kernel/io_apic.c @@ -389,7 +389,6 @@ static inline void io_apic_modify(unsign writel(value, &io_apic->data); } -#ifdef CONFIG_X86_64 static bool io_apic_level_ack_pending(unsigned int irq) { struct irq_pin_list *entry; @@ -419,7 +418,6 @@ static bool io_apic_level_ack_pending(un return false; } -#endif union entry_union { struct { u32 w1, w2; }; @@ -2397,9 +2395,16 @@ static void ack_apic_edge(unsigned int i ack_APIC_irq(); } -#ifdef CONFIG_X86_64 +#ifdef CONFIG_X86_32 +atomic_t irq_mis_count; +#endif + static void ack_apic_level(unsigned int irq, struct irq_desc *desc) { +#ifdef CONFIG_X86_32 + unsigned long v; + int i; +#endif int do_unmask_irq = 0; irq_complete_move(irq); @@ -2411,6 +2416,31 @@ static void ack_apic_level(unsigned int } #endif +#ifdef CONFIG_X86_32 + /* + * It appears there is an erratum which affects at least version 0x11 + * of I/O APIC (that's the 82093AA and cores integrated into various + * chipsets). Under certain conditions a level-triggered interrupt is + * erroneously delivered as edge-triggered one but the respective IRR + * bit gets set nevertheless. As a result the I/O unit expects an EOI + * message but it will never arrive and further interrupts are blocked + * from the source. The exact reason is so far unknown, but the + * phenomenon was observed when two consecutive interrupt requests + * from a given source get delivered to the same CPU and the source is + * temporarily disabled in between. + * + * A workaround is to simulate an EOI message manually. We achieve it + * by setting the trigger mode to edge and then to level when the edge + * trigger mode gets detected in the TMR of a local APIC for a + * level-triggered interrupt. We mask the source for the time of the + * operation to prevent an edge-triggered interrupt escaping meanwhile. + * The idea is from Manfred Spraul. --macro + */ + i = irq_cfg(irq)->vector; + + v = apic_read(APIC_TMR + ((i & ~0x1f) >> 1)); +#endif + /* * We must acknowledge the irq before we move it or the acknowledge will * not propagate properly. @@ -2449,41 +2479,8 @@ static void ack_apic_level(unsigned int move_masked_irq(irq, desc); unmask_IO_APIC_irq(irq); } -} -#else -atomic_t irq_mis_count; -static void ack_apic_level(unsigned int irq, struct irq_desc *desc) -{ - unsigned long v; - int i; - - irq_complete_move(irq); - move_native_irq(irq, desc); - /* - * It appears there is an erratum which affects at least version 0x11 - * of I/O APIC (that's the 82093AA and cores integrated into various - * chipsets). Under certain conditions a level-triggered interrupt is - * erroneously delivered as edge-triggered one but the respective IRR - * bit gets set nevertheless. As a result the I/O unit expects an EOI - * message but it will never arrive and further interrupts are blocked - * from the source. The exact reason is so far unknown, but the - * phenomenon was observed when two consecutive interrupt requests - * from a given source get delivered to the same CPU and the source is - * temporarily disabled in between. - * - * A workaround is to simulate an EOI message manually. We achieve it - * by setting the trigger mode to edge and then to level when the edge - * trigger mode gets detected in the TMR of a local APIC for a - * level-triggered interrupt. We mask the source for the time of the - * operation to prevent an edge-triggered interrupt escaping meanwhile. - * The idea is from Manfred Spraul. --macro - */ - i = irq_cfg(irq)->vector; - - v = apic_read(APIC_TMR + ((i & ~0x1f) >> 1)); - - ack_APIC_irq(); +#ifdef CONFIG_X86_32 if (!(v & (1 << (i & 0x1f)))) { atomic_inc(&irq_mis_count); spin_lock(&ioapic_lock); @@ -2491,8 +2488,8 @@ static void ack_apic_level(unsigned int __unmask_and_level_IO_APIC_irq(irq); spin_unlock(&ioapic_lock); } -} #endif +} static struct irq_chip ioapic_chip __read_mostly = { .name = "IO-APIC", ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] merge io_apic_xx.c -- fix 2008-08-16 10:07 [PATCH 0/5] merge io_apic_xx.c -- fix Yinghai Lu 2008-08-16 10:07 ` [PATCH 1/5] pci: change msi-x vector to 32bit Yinghai Lu @ 2008-08-16 13:35 ` Ingo Molnar 2008-08-19 22:21 ` Randy Dunlap 1 sibling, 1 reply; 12+ messages in thread From: Ingo Molnar @ 2008-08-16 13:35 UTC (permalink / raw) To: Yinghai Lu Cc: Thomas Gleixner, H. Peter Anvin, Eric W. Biederman, Andrew Morton, linux-kernel * Yinghai Lu <yhlu.kernel@gmail.com> wrote: > merge io_apic_xx.c > > Thanks applied to tip/irq/sparseirq - thanks! Ingo ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] merge io_apic_xx.c -- fix 2008-08-16 13:35 ` [PATCH 0/5] merge io_apic_xx.c -- fix Ingo Molnar @ 2008-08-19 22:21 ` Randy Dunlap 2008-08-20 0:24 ` Yinghai Lu 0 siblings, 1 reply; 12+ messages in thread From: Randy Dunlap @ 2008-08-19 22:21 UTC (permalink / raw) To: Ingo Molnar Cc: Yinghai Lu, Thomas Gleixner, H. Peter Anvin, Eric W. Biederman, Andrew Morton, linux-kernel On Sat, 16 Aug 2008 15:35:54 +0200 Ingo Molnar wrote: > > * Yinghai Lu <yhlu.kernel@gmail.com> wrote: > > > merge io_apic_xx.c > > > > Thanks > > applied to tip/irq/sparseirq - thanks! Are there patches in the io_apic series to fix these warnings in linux-next?? :: linux-next-20080819/arch/x86/kernel/io_apic_32.c:1539: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' linux-next-20080819/arch/x86/kernel/io_apic_32.c:1540: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64 and linux-next-20080819/arch/x86/kernel/io_apic_32.c:1539: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' linux-next-20080819/arch/x86/kernel/io_apic_32.c:1540: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' --- ~Randy [i swear people must not look at warnings] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] merge io_apic_xx.c -- fix 2008-08-19 22:21 ` Randy Dunlap @ 2008-08-20 0:24 ` Yinghai Lu 2008-08-20 0:27 ` Andrew Morton 0 siblings, 1 reply; 12+ messages in thread From: Yinghai Lu @ 2008-08-20 0:24 UTC (permalink / raw) To: Randy Dunlap Cc: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Eric W. Biederman, Andrew Morton, linux-kernel On Tue, Aug 19, 2008 at 3:21 PM, Randy Dunlap <randy.dunlap@oracle.com> wrote: > On Sat, 16 Aug 2008 15:35:54 +0200 Ingo Molnar wrote: > >> >> * Yinghai Lu <yhlu.kernel@gmail.com> wrote: >> >> > merge io_apic_xx.c >> > >> > Thanks >> >> applied to tip/irq/sparseirq - thanks! > > > Are there patches in the io_apic series to fix these warnings in linux-next?? :: > > > linux-next-20080819/arch/x86/kernel/io_apic_32.c:1539: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' > linux-next-20080819/arch/x86/kernel/io_apic_32.c:1540: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64 > > > and > > linux-next-20080819/arch/x86/kernel/io_apic_32.c:1539: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' > linux-next-20080819/arch/x86/kernel/io_apic_32.c:1540: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' > No after get io_apic_xx.c merged. YH ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] merge io_apic_xx.c -- fix 2008-08-20 0:24 ` Yinghai Lu @ 2008-08-20 0:27 ` Andrew Morton 2008-08-20 0:32 ` Randy Dunlap 0 siblings, 1 reply; 12+ messages in thread From: Andrew Morton @ 2008-08-20 0:27 UTC (permalink / raw) To: Yinghai Lu; +Cc: randy.dunlap, mingo, tglx, hpa, ebiederm, linux-kernel On Tue, 19 Aug 2008 17:24:08 -0700 "Yinghai Lu" <yhlu.kernel@gmail.com> wrote: > On Tue, Aug 19, 2008 at 3:21 PM, Randy Dunlap <randy.dunlap@oracle.com> wrote: > > On Sat, 16 Aug 2008 15:35:54 +0200 Ingo Molnar wrote: > > > >> > >> * Yinghai Lu <yhlu.kernel@gmail.com> wrote: > >> > >> > merge io_apic_xx.c > >> > > >> > Thanks > >> > >> applied to tip/irq/sparseirq - thanks! > > > > > > Are there patches in the io_apic series to fix these warnings in linux-next?? :: > > > > > > linux-next-20080819/arch/x86/kernel/io_apic_32.c:1539: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' > > linux-next-20080819/arch/x86/kernel/io_apic_32.c:1540: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64 > > > > > > and > > > > linux-next-20080819/arch/x86/kernel/io_apic_32.c:1539: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' > > linux-next-20080819/arch/x86/kernel/io_apic_32.c:1540: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' > > > > No yes From: Andrew Morton <akpm@linux-foundation.org> arch/x86/kernel/io_apic_32.c: In function 'print_local_APIC': arch/x86/kernel/io_apic_32.c:1539: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' arch/x86/kernel/io_apic_32.c:1540: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' No need for casting here - we know what type u64 has. Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- arch/x86/kernel/io_apic_32.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff -puN arch/x86/kernel/io_apic_32.c~arch-x86-kernel-io_apic_32c-fix-printk-warnings arch/x86/kernel/io_apic_32.c --- a/arch/x86/kernel/io_apic_32.c~arch-x86-kernel-io_apic_32c-fix-printk-warnings +++ a/arch/x86/kernel/io_apic_32.c @@ -1536,8 +1536,8 @@ __apicdebuginit(void) print_local_APIC(v } icr = apic_icr_read(); - printk(KERN_DEBUG "... APIC ICR: %08x\n", icr); - printk(KERN_DEBUG "... APIC ICR2: %08x\n", icr >> 32); + printk(KERN_DEBUG "... APIC ICR: %08Lx\n", icr); + printk(KERN_DEBUG "... APIC ICR2: %08Lx\n", icr >> 32); v = apic_read(APIC_LVTT); printk(KERN_DEBUG "... APIC LVTT: %08x\n", v); _ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] merge io_apic_xx.c -- fix 2008-08-20 0:27 ` Andrew Morton @ 2008-08-20 0:32 ` Randy Dunlap 2008-08-20 10:53 ` Ingo Molnar 0 siblings, 1 reply; 12+ messages in thread From: Randy Dunlap @ 2008-08-20 0:32 UTC (permalink / raw) To: Andrew Morton; +Cc: Yinghai Lu, mingo, tglx, hpa, ebiederm, linux-kernel Andrew Morton wrote: > On Tue, 19 Aug 2008 17:24:08 -0700 > "Yinghai Lu" <yhlu.kernel@gmail.com> wrote: > >> On Tue, Aug 19, 2008 at 3:21 PM, Randy Dunlap <randy.dunlap@oracle.com> wrote: >>> On Sat, 16 Aug 2008 15:35:54 +0200 Ingo Molnar wrote: >>> >>>> * Yinghai Lu <yhlu.kernel@gmail.com> wrote: >>>> >>>>> merge io_apic_xx.c >>>>> >>>>> Thanks >>>> applied to tip/irq/sparseirq - thanks! >>> >>> Are there patches in the io_apic series to fix these warnings in linux-next?? :: >>> >>> >>> linux-next-20080819/arch/x86/kernel/io_apic_32.c:1539: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' >>> linux-next-20080819/arch/x86/kernel/io_apic_32.c:1540: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64 >>> >>> >>> and >>> >>> linux-next-20080819/arch/x86/kernel/io_apic_32.c:1539: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' >>> linux-next-20080819/arch/x86/kernel/io_apic_32.c:1540: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' >>> >> No > > yes > > From: Andrew Morton <akpm@linux-foundation.org> > > arch/x86/kernel/io_apic_32.c: In function 'print_local_APIC': > arch/x86/kernel/io_apic_32.c:1539: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' > arch/x86/kernel/io_apic_32.c:1540: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'u64' > > No need for casting here - we know what type u64 has. > > Cc: Ingo Molnar <mingo@elte.hu> > Cc: Thomas Gleixner <tglx@linutronix.de> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > --- > > arch/x86/kernel/io_apic_32.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff -puN arch/x86/kernel/io_apic_32.c~arch-x86-kernel-io_apic_32c-fix-printk-warnings arch/x86/kernel/io_apic_32.c > --- a/arch/x86/kernel/io_apic_32.c~arch-x86-kernel-io_apic_32c-fix-printk-warnings > +++ a/arch/x86/kernel/io_apic_32.c > @@ -1536,8 +1536,8 @@ __apicdebuginit(void) print_local_APIC(v > } > > icr = apic_icr_read(); > - printk(KERN_DEBUG "... APIC ICR: %08x\n", icr); > - printk(KERN_DEBUG "... APIC ICR2: %08x\n", icr >> 32); > + printk(KERN_DEBUG "... APIC ICR: %08Lx\n", icr); > + printk(KERN_DEBUG "... APIC ICR2: %08Lx\n", icr >> 32); > > v = apic_read(APIC_LVTT); > printk(KERN_DEBUG "... APIC LVTT: %08x\n", v); > _ Crud, I had a copy-paste error. There are also printk format warnings in io_apic_64.c: linux-next-20080819/arch/x86/kernel/io_apic_64.c:1284: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'long unsigned int' linux-next-20080819/arch/x86/kernel/io_apic_64.c:1285: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'long unsigned int -- ~Randy Linux Plumbers Conference, 17-19 September 2008, Portland, Oregon USA http://linuxplumbersconf.org/ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] merge io_apic_xx.c -- fix 2008-08-20 0:32 ` Randy Dunlap @ 2008-08-20 10:53 ` Ingo Molnar 0 siblings, 0 replies; 12+ messages in thread From: Ingo Molnar @ 2008-08-20 10:53 UTC (permalink / raw) To: Randy Dunlap; +Cc: Andrew Morton, Yinghai Lu, tglx, hpa, ebiederm, linux-kernel * Randy Dunlap <randy.dunlap@oracle.com> wrote: > Crud, I had a copy-paste error. There are also printk format warnings > in io_apic_64.c: > > linux-next-20080819/arch/x86/kernel/io_apic_64.c:1284: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'long unsigned int' > linux-next-20080819/arch/x86/kernel/io_apic_64.c:1285: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'long unsigned int i have the commit below queued up in tip/irq/sparseirq. Ingo --------------> >From 0a7c144ca555c86b8410f2d6e1c10bf14fd481d1 Mon Sep 17 00:00:00 2001 From: Ingo Molnar <mingo@elte.hu> Date: Mon, 18 Aug 2008 13:04:26 +0200 Subject: [PATCH] warning: fix arch x86 kernel io_apic c MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit fix warning: arch/x86/kernel/io_apic.c: In function ‘print_local_APIC’: arch/x86/kernel/io_apic.c:1786: warning: format ‘%08x’ expects type ‘unsigned int’, but argument 2 has type ‘u64’ arch/x86/kernel/io_apic.c:1787: warning: format ‘%08x’ expects type ‘unsigned int’, but argument 2 has type ‘u64’ By creating uniform behavior on 32-bit and 64-bit and printing out the ICR value in two 32-bit words. Code has changed: text data bss dec hex filename 22901 19650 17040 59591 e8c7 io_apic.o.before 22899 19650 17040 59589 e8c5 io_apic.o.after Due to the 32-bit cast narrowing the printed out value on 64-bit. Signed-off-by: Ingo Molnar <mingo@elte.hu> --- arch/x86/kernel/io_apic.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c index f7e8026..34c74cf 100644 --- a/arch/x86/kernel/io_apic.c +++ b/arch/x86/kernel/io_apic.c @@ -1774,8 +1774,8 @@ __apicdebuginit(void) print_local_APIC(void *dummy) } icr = apic_icr_read(); - printk(KERN_DEBUG "... APIC ICR: %08x\n", icr); - printk(KERN_DEBUG "... APIC ICR2: %08x\n", icr >> 32); + printk(KERN_DEBUG "... APIC ICR: %08x\n", (u32)icr); + printk(KERN_DEBUG "... APIC ICR2: %08x\n", (u32)(icr >> 32)); v = apic_read(APIC_LVTT); printk(KERN_DEBUG "... APIC LVTT: %08x\n", v); ^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2008-08-20 10:53 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-08-16 10:07 [PATCH 0/5] merge io_apic_xx.c -- fix Yinghai Lu 2008-08-16 10:07 ` [PATCH 1/5] pci: change msi-x vector to 32bit Yinghai Lu 2008-08-16 10:07 ` Yinghai Lu 2008-08-16 10:07 ` [PATCH 3/5] x86: irq: interrupt array size should be NR_VECTORS Yinghai Lu 2008-08-16 10:07 ` [PATCH 4/5] x86: unify mask_IO_APIC_irq Yinghai Lu 2008-08-16 10:07 ` [PATCH 5/5] x86: unify ack_apic_edge Yinghai Lu 2008-08-16 13:35 ` [PATCH 0/5] merge io_apic_xx.c -- fix Ingo Molnar 2008-08-19 22:21 ` Randy Dunlap 2008-08-20 0:24 ` Yinghai Lu 2008-08-20 0:27 ` Andrew Morton 2008-08-20 0:32 ` Randy Dunlap 2008-08-20 10:53 ` Ingo Molnar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox