diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-02-07 10:02:16 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-02-07 10:02:16 -0800 |
commit | 336a62afd24e907ce13f10f59c2524f61d06e9c4 (patch) | |
tree | 2338d273370343cf6dce62aa457a7b2b5c328a10 /pci | |
parent | 87c8d93a36a27f45e502de74d806bee851df3d32 (diff) | |
download | patches-336a62afd24e907ce13f10f59c2524f61d06e9c4.tar.gz |
2.6.16-rc2-git3 refresh
Diffstat (limited to 'pci')
-rw-r--r-- | pci/altix-msi-support.patch | 58 | ||||
-rw-r--r-- | pci/msi-vector-targeting-abstractions.patch | 4 | ||||
-rw-r--r-- | pci/per-platform-ia64_-first-last-_device_vector-definitions.patch | 8 |
3 files changed, 29 insertions, 41 deletions
diff --git a/pci/altix-msi-support.patch b/pci/altix-msi-support.patch index f9c37267700a9..f28f089324ebc 100644 --- a/pci/altix-msi-support.patch +++ b/pci/altix-msi-support.patch @@ -13,17 +13,17 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- arch/ia64/sn/kernel/io_init.c | 2 - arch/ia64/sn/kernel/irq.c | 144 +++++++++++--------- + arch/ia64/sn/kernel/irq.c | 143 +++++++++++--------- arch/ia64/sn/pci/msi.c | 200 ++++++++++++++++++++++++++++- arch/ia64/sn/pci/pci_dma.c | 10 - arch/ia64/sn/pci/pcibr/pcibr_dma.c | 62 ++++++-- arch/ia64/sn/pci/tioca_provider.c | 8 + arch/ia64/sn/pci/tioce_provider.c | 65 ++++++--- - include/asm-ia64/sn/intr.h | 10 + + include/asm-ia64/sn/intr.h | 8 + include/asm-ia64/sn/pcibr_provider.h | 7 - include/asm-ia64/sn/pcibus_provider_defs.h | 17 ++ include/asm-ia64/sn/tiocp.h | 3 - 11 files changed, 407 insertions(+), 121 deletions(-) + 11 files changed, 406 insertions(+), 119 deletions(-) --- gregkh-2.6.orig/arch/ia64/sn/pci/msi.c +++ gregkh-2.6/arch/ia64/sn/pci/msi.c @@ -250,7 +250,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } --- gregkh-2.6.orig/arch/ia64/sn/kernel/irq.c +++ gregkh-2.6/arch/ia64/sn/kernel/irq.c -@@ -25,11 +25,11 @@ static void unregister_intr_pda(struct s +@@ -26,11 +26,11 @@ static void unregister_intr_pda(struct s int sn_force_interrupt_flag = 1; extern int sn_ioif_inited; @@ -265,7 +265,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> int req_irq, nasid_t req_nasid, int req_slice) { -@@ -39,12 +39,13 @@ static inline u64 sn_intr_alloc(nasid_t +@@ -40,12 +40,13 @@ static inline u64 sn_intr_alloc(nasid_t SAL_CALL_NOLOCK(ret_stuff, (u64) SN_SAL_IOIF_INTERRUPT, (u64) SAL_INTR_ALLOC, (u64) local_nasid, @@ -281,7 +281,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> struct sn_irq_info *sn_irq_info) { struct ia64_sal_retval ret_stuff; -@@ -113,73 +114,91 @@ static void sn_end_irq(unsigned int irq) +@@ -112,73 +113,91 @@ static void sn_end_irq(unsigned int irq) static void sn_irq_info_free(struct rcu_head *head); @@ -354,22 +354,12 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - break; - } + local_nasid = NASID_GET(bridge); - -- new_irq_info->irq_cpuid = cpuid; -- register_intr_pda(new_irq_info); ++ + if (local_nasid & 1) + local_widget = TIO_SWIN_WIDGETNUM(bridge); + else + local_widget = SWIN_WIDGETNUM(bridge); - -- pci_provider = sn_pci_provider[new_irq_info->irq_bridge_type]; -- if (pci_provider && pci_provider->target_interrupt) -- (pci_provider->target_interrupt)(new_irq_info); -- -- spin_lock(&sn_irq_info_lock); -- list_replace_rcu(&sn_irq_info->list, &new_irq_info->list); -- spin_unlock(&sn_irq_info_lock); -- call_rcu(&sn_irq_info->rcu, sn_irq_info_free); ++ + vector = sn_irq_info->irq_irq; + /* Free the old PROM new_irq_info structure */ + sn_intr_free(local_nasid, local_widget, new_irq_info); @@ -392,7 +382,9 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + register_intr_pda(new_irq_info); + + pci_provider = sn_pci_provider[new_irq_info->irq_bridge_type]; -+ + +- new_irq_info->irq_cpuid = cpuid; +- register_intr_pda(new_irq_info); + /* + * If this represents a line interrupt, target it. If it's + * an msi (irq_int_bit < 0), it's already targeted. @@ -400,7 +392,15 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + if (new_irq_info->irq_int_bit >= 0 && + pci_provider && pci_provider->target_interrupt) + (pci_provider->target_interrupt)(new_irq_info); -+ + +- pci_provider = sn_pci_provider[new_irq_info->irq_bridge_type]; +- if (pci_provider && pci_provider->target_interrupt) +- (pci_provider->target_interrupt)(new_irq_info); +- +- spin_lock(&sn_irq_info_lock); +- list_replace_rcu(&sn_irq_info->list, &new_irq_info->list); +- spin_unlock(&sn_irq_info_lock); +- call_rcu(&sn_irq_info->rcu, sn_irq_info_free); + spin_lock(&sn_irq_info_lock); + list_replace_rcu(&sn_irq_info->list, &new_irq_info->list); + spin_unlock(&sn_irq_info_lock); @@ -430,12 +430,6 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } struct hw_interrupt_type irq_type_sn = { -@@ -441,5 +460,4 @@ void sn_irq_lh_init(void) - - INIT_LIST_HEAD(sn_irq_lh[i]); - } -- - } --- gregkh-2.6.orig/arch/ia64/sn/pci/pci_dma.c +++ gregkh-2.6/arch/ia64/sn/pci/pci_dma.c @@ -11,7 +11,7 @@ @@ -880,21 +874,13 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /** --- gregkh-2.6.orig/include/asm-ia64/sn/intr.h +++ gregkh-2.6/include/asm-ia64/sn/intr.h -@@ -3,13 +3,14 @@ - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * -- * Copyright (C) 1992 - 1997, 2000-2004 Silicon Graphics, Inc. All rights reserved. -+ * Copyright (C) 1992 - 1997, 2000-2005 Silicon Graphics, Inc. All rights reserved. - */ - - #ifndef _ASM_IA64_SN_INTR_H +@@ -10,6 +10,7 @@ #define _ASM_IA64_SN_INTR_H #include <linux/rcupdate.h> +#include <asm/sn/types.h> - #define SGI_UART_VECTOR (0xe9) + #define SGI_UART_VECTOR 0xe9 @@ -40,6 +41,7 @@ struct sn_irq_info { int irq_cpuid; /* kernel logical cpuid */ diff --git a/pci/msi-vector-targeting-abstractions.patch b/pci/msi-vector-targeting-abstractions.patch index e500c7a3917fb..ae41d5377f4ab 100644 --- a/pci/msi-vector-targeting-abstractions.patch +++ b/pci/msi-vector-targeting-abstractions.patch @@ -396,7 +396,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #endif /* ASM_MSI_H */ --- gregkh-2.6.orig/arch/ia64/sn/pci/Makefile +++ gregkh-2.6/arch/ia64/sn/pci/Makefile -@@ -3,8 +3,9 @@ +@@ -3,10 +3,11 @@ # License. See the file "COPYING" in the main directory of this archive # for more details. # @@ -405,6 +405,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> # # Makefile for the sn pci general routines. + CPPFLAGS += -I$(srctree)/arch/ia64/sn/include + obj-y := pci_dma.o tioca_provider.o tioce_provider.o pcibr/ +obj-$(CONFIG_PCI_MSI) += msi.o --- /dev/null diff --git a/pci/per-platform-ia64_-first-last-_device_vector-definitions.patch b/pci/per-platform-ia64_-first-last-_device_vector-definitions.patch index 594ed7e3436b9..4a249c16cc107 100644 --- a/pci/per-platform-ia64_-first-last-_device_vector-definitions.patch +++ b/pci/per-platform-ia64_-first-last-_device_vector-definitions.patch @@ -66,7 +66,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #else --- gregkh-2.6.orig/arch/ia64/sn/kernel/irq.c +++ gregkh-2.6/arch/ia64/sn/kernel/irq.c -@@ -203,6 +203,9 @@ void sn_irq_init(void) +@@ -202,6 +202,9 @@ void sn_irq_init(void) int i; irq_desc_t *base_desc = irq_desc; @@ -76,15 +76,15 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> for (i = 0; i < NR_IRQS; i++) { if (base_desc[i].handler == &no_irq_type) { base_desc[i].handler = &irq_type_sn; -@@ -287,6 +290,7 @@ void sn_irq_fixup(struct pci_dev *pci_de +@@ -285,6 +288,7 @@ void sn_irq_fixup(struct pci_dev *pci_de /* link it into the sn_irq[irq] list */ spin_lock(&sn_irq_info_lock); list_add_rcu(&sn_irq_info->list, sn_irq_lh[sn_irq_info->irq_irq]); + reserve_irq_vector(sn_irq_info->irq_irq); spin_unlock(&sn_irq_info_lock); - (void)register_intr_pda(sn_irq_info); -@@ -310,8 +314,11 @@ void sn_irq_unfixup(struct pci_dev *pci_ + register_intr_pda(sn_irq_info); +@@ -308,8 +312,11 @@ void sn_irq_unfixup(struct pci_dev *pci_ spin_lock(&sn_irq_info_lock); list_del_rcu(&sn_irq_info->list); spin_unlock(&sn_irq_info_lock); |