Implement platform_irq_to_vector() for SN
RFC PATCH 2/2 Implement platform_irq_to_vector() for SN
Implement platform_irq_to_vector() for SN platform.
--- arch/ia64/sn/kernel/irq.c | 5 +++++ include/asm-ia64/machvec_sn2.h | 2 ++ 2 files changed, 7 insertions(+)
Index: linux-2.6.23-rc1/arch/ia64/sn/kernel/irq.c =================================--- linux-2.6.23-rc1.orig/arch/ia64/sn/kernel/irq.c +++ linux-2.6.23-rc1/arch/ia64/sn/kernel/irq.c
@@ -256,6 +256,11 @@ struct irq_chip irq_type_sn = {
.set_affinity = sn_set_affinity_irq
};
+ia64_vector sn_irq_to_vector(int irq)
+{
+ return (ia64_vector)irq;
+}
+
unsigned int sn_local_vector_to_irq(u8 vector)
{
return (CPU_VECTOR_TO_IRQ(smp_processor_id(), vector));
Index: linux-2.6.23-rc1/include/asm-ia64/machvec_sn2.h =================================--- linux-2.6.23-rc1.orig/include/asm-ia64/machvec_sn2.h +++ linux-2.6.23-rc1/include/asm-ia64/machvec_sn2.h
@@ -35,6 +35,7 @@ extern ia64_mv_send_ipi_t sn2_send_IPI;
extern ia64_mv_timer_interrupt_t sn_timer_interrupt;
extern ia64_mv_global_tlb_purge_t sn2_global_tlb_purge;
extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish;
+extern ia64_mv_irq_to_vector sn_irq_to_vector;
extern ia64_mv_local_vector_to_irq sn_local_vector_to_irq;
extern ia64_mv_pci_get_legacy_mem_t sn_pci_get_legacy_mem;
extern ia64_mv_pci_legacy_read_t sn_pci_legacy_read;
@@ -104,6 +105,7 @@ extern ia64_mv_pci_fixup_bus_t sn_pci_f
#define platform_readw_relaxed __sn_readw_relaxed
#define platform_readl_relaxed __sn_readl_relaxed
#define platform_readq_relaxed __sn_readq_relaxed
+#define platform_irq_to_vector sn_irq_to_vector
#define platform_local_vector_to_irq sn_local_vector_to_irq
#define platform_pci_get_legacy_mem sn_pci_get_legacy_mem
#define platform_pci_legacy_read sn_pci_legacy_read
Quoted 15 lines · Kenji Kaneshige
Implement
platform_irq_to_vector()for SN platform.Signed-off-by Kenji Kaneshige <[email protected]>--- arch/ia64/sn/kernel/irq.c | 5 +++++ include/asm-ia64/machvec_sn2.h | 2 ++ 2 files changed, 7 insertions(+)Index:
linux-2.6.23-rc1/arch/ia64/sn/kernel/irq.c=================================> ---linux-2.6.23-rc1.orig/arch/ia64/sn/kernel/irq.c+++linux-2.6.23-rc1/arch/ia64/sn/kernel/irq.c(quoted diff) +0
-0@@ -256,6 +256,11 @@ struct irq_chip irq_type_sn = { .set_affinity = sn_set_affinity_irq
Review struct irq_chip irq_type_sn = { · line 266
Quoted 10 lines
(quoted diff) +5
-0}; +ia64_vector sn_irq_to_vector(int irq) +{ + return (ia64_vector)irq; +} + unsigned int sn_local_vector_to_irq(u8 vector) { return (CPU_VECTOR_TO_IRQ(smp_processor_id(), vector));
One thing to be aware of is ia64_vector is u8, which can hold a value from 0-255. NR_IRQS is 1024.
So sn_irq_to_vector() will truncate any IRQ > 255.
Signature · 2 lines
Russ Anderson, OS RAS/Partitioning Project Lead SGI - Silicon Graphics Inc [email protected]
2007-08-02 (木) の 15:27 -0500 に Russ Anderson さんは書きました:
Quoted 30 lines
Quoted 15 lines · Kenji Kaneshige
Implement
platform_irq_to_vector()for SN platform.Signed-off-by Kenji Kaneshige <[email protected]>--- arch/ia64/sn/kernel/irq.c | 5 +++++ include/asm-ia64/machvec_sn2.h | 2 ++ 2 files changed, 7 insertions(+)Index:
linux-2.6.23-rc1/arch/ia64/sn/kernel/irq.c=================================> > ---linux-2.6.23-rc1.orig/arch/ia64/sn/kernel/irq.c+++linux-2.6.23-rc1/arch/ia64/sn/kernel/irq.c(quoted diff) +0
-0@@ -256,6 +256,11 @@ struct irq_chip irq_type_sn = { .set_affinity = sn_set_affinity_irqReview struct irq_chip irq_type_sn = { · line 266
Quoted 10 lines
(quoted diff) +5
-0}; +ia64_vector sn_irq_to_vector(int irq) +{ + return (ia64_vector)irq; +} + unsigned int sn_local_vector_to_irq(u8 vector) { return (CPU_VECTOR_TO_IRQ(smp_processor_id(), vector));One thing to be aware of is
ia64_vectoris u8, which can hold a value from 0-255.NR_IRQSis 1024.
Quoted 2 lines
So
sn_irq_to_vector()will truncate any IRQ > 255.
What about this:
ia64_vector sn_irq_to_vector(int irq)
{
if (irq >= IA64_NUM_VECTORS)
return 0;
return (ia64_vector)irq;
}Thanks,
Kenji Kaneshige