diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2009-01-30 17:50:57 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2009-01-30 17:50:57 -0500 |
commit | 9b7ed8faa034fc2d350e2eff5c68680eb5c43a07 (patch) | |
tree | 5c94c34ad30e312604c1ce4f08ab6631b64a94f5 /arch/ia64 | |
parent | 6522869c34664dd5f05a0a327e93915b1281c90d (diff) | |
parent | c43e0e46adf79c321ed3fbf0351e1005fb8a2413 (diff) |
Merge branch 'core/percpu' into x86/paravirt
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/configs/bigsur_defconfig | 2 | ||||
-rw-r--r-- | arch/ia64/configs/zx1_defconfig | 2 | ||||
-rw-r--r-- | arch/ia64/hp/common/sba_iommu.c | 12 | ||||
-rw-r--r-- | arch/ia64/include/asm/topology.h | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/iosapic.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/irq.c | 4 | ||||
-rw-r--r-- | arch/ia64/kernel/irq_ia64.c | 12 | ||||
-rw-r--r-- | arch/ia64/kernel/msi_ia64.c | 4 | ||||
-rw-r--r-- | arch/ia64/kernel/vmlinux.lds.S | 1 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/msi_sn.c | 2 |
10 files changed, 24 insertions, 19 deletions
diff --git a/arch/ia64/configs/bigsur_defconfig b/arch/ia64/configs/bigsur_defconfig index 6dd8655664f3..ace41096b47b 100644 --- a/arch/ia64/configs/bigsur_defconfig +++ b/arch/ia64/configs/bigsur_defconfig | |||
@@ -752,7 +752,7 @@ CONFIG_I2C_ALGOBIT=y | |||
752 | # | 752 | # |
753 | # CONFIG_SENSORS_DS1337 is not set | 753 | # CONFIG_SENSORS_DS1337 is not set |
754 | # CONFIG_SENSORS_DS1374 is not set | 754 | # CONFIG_SENSORS_DS1374 is not set |
755 | # CONFIG_SENSORS_EEPROM is not set | 755 | # CONFIG_EEPROM_LEGACY is not set |
756 | # CONFIG_SENSORS_PCF8574 is not set | 756 | # CONFIG_SENSORS_PCF8574 is not set |
757 | # CONFIG_SENSORS_PCA9539 is not set | 757 | # CONFIG_SENSORS_PCA9539 is not set |
758 | # CONFIG_SENSORS_PCF8591 is not set | 758 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/ia64/configs/zx1_defconfig b/arch/ia64/configs/zx1_defconfig index 0a06b1333c95..514f0635dafe 100644 --- a/arch/ia64/configs/zx1_defconfig +++ b/arch/ia64/configs/zx1_defconfig | |||
@@ -841,7 +841,7 @@ CONFIG_I2C_ALGOPCF=y | |||
841 | # | 841 | # |
842 | # CONFIG_SENSORS_DS1337 is not set | 842 | # CONFIG_SENSORS_DS1337 is not set |
843 | # CONFIG_SENSORS_DS1374 is not set | 843 | # CONFIG_SENSORS_DS1374 is not set |
844 | # CONFIG_SENSORS_EEPROM is not set | 844 | # CONFIG_EEPROM_LEGACY is not set |
845 | # CONFIG_SENSORS_PCF8574 is not set | 845 | # CONFIG_SENSORS_PCF8574 is not set |
846 | # CONFIG_SENSORS_PCA9539 is not set | 846 | # CONFIG_SENSORS_PCA9539 is not set |
847 | # CONFIG_SENSORS_PCF8591 is not set | 847 | # CONFIG_SENSORS_PCF8591 is not set |
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c index d98f0f4ff83f..6d5e6c5630e3 100644 --- a/arch/ia64/hp/common/sba_iommu.c +++ b/arch/ia64/hp/common/sba_iommu.c | |||
@@ -906,7 +906,7 @@ sba_mark_invalid(struct ioc *ioc, dma_addr_t iova, size_t byte_cnt) | |||
906 | * @dir: R/W or both. | 906 | * @dir: R/W or both. |
907 | * @attrs: optional dma attributes | 907 | * @attrs: optional dma attributes |
908 | * | 908 | * |
909 | * See Documentation/DMA-mapping.txt | 909 | * See Documentation/PCI/PCI-DMA-mapping.txt |
910 | */ | 910 | */ |
911 | dma_addr_t | 911 | dma_addr_t |
912 | sba_map_single_attrs(struct device *dev, void *addr, size_t size, int dir, | 912 | sba_map_single_attrs(struct device *dev, void *addr, size_t size, int dir, |
@@ -1024,7 +1024,7 @@ sba_mark_clean(struct ioc *ioc, dma_addr_t iova, size_t size) | |||
1024 | * @dir: R/W or both. | 1024 | * @dir: R/W or both. |
1025 | * @attrs: optional dma attributes | 1025 | * @attrs: optional dma attributes |
1026 | * | 1026 | * |
1027 | * See Documentation/DMA-mapping.txt | 1027 | * See Documentation/PCI/PCI-DMA-mapping.txt |
1028 | */ | 1028 | */ |
1029 | void sba_unmap_single_attrs(struct device *dev, dma_addr_t iova, size_t size, | 1029 | void sba_unmap_single_attrs(struct device *dev, dma_addr_t iova, size_t size, |
1030 | int dir, struct dma_attrs *attrs) | 1030 | int dir, struct dma_attrs *attrs) |
@@ -1102,7 +1102,7 @@ EXPORT_SYMBOL(sba_unmap_single_attrs); | |||
1102 | * @size: number of bytes mapped in driver buffer. | 1102 | * @size: number of bytes mapped in driver buffer. |
1103 | * @dma_handle: IOVA of new buffer. | 1103 | * @dma_handle: IOVA of new buffer. |
1104 | * | 1104 | * |
1105 | * See Documentation/DMA-mapping.txt | 1105 | * See Documentation/PCI/PCI-DMA-mapping.txt |
1106 | */ | 1106 | */ |
1107 | void * | 1107 | void * |
1108 | sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flags) | 1108 | sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flags) |
@@ -1165,7 +1165,7 @@ sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp | |||
1165 | * @vaddr: virtual address IOVA of "consistent" buffer. | 1165 | * @vaddr: virtual address IOVA of "consistent" buffer. |
1166 | * @dma_handler: IO virtual address of "consistent" buffer. | 1166 | * @dma_handler: IO virtual address of "consistent" buffer. |
1167 | * | 1167 | * |
1168 | * See Documentation/DMA-mapping.txt | 1168 | * See Documentation/PCI/PCI-DMA-mapping.txt |
1169 | */ | 1169 | */ |
1170 | void sba_free_coherent (struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle) | 1170 | void sba_free_coherent (struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle) |
1171 | { | 1171 | { |
@@ -1420,7 +1420,7 @@ sba_coalesce_chunks(struct ioc *ioc, struct device *dev, | |||
1420 | * @dir: R/W or both. | 1420 | * @dir: R/W or both. |
1421 | * @attrs: optional dma attributes | 1421 | * @attrs: optional dma attributes |
1422 | * | 1422 | * |
1423 | * See Documentation/DMA-mapping.txt | 1423 | * See Documentation/PCI/PCI-DMA-mapping.txt |
1424 | */ | 1424 | */ |
1425 | int sba_map_sg_attrs(struct device *dev, struct scatterlist *sglist, int nents, | 1425 | int sba_map_sg_attrs(struct device *dev, struct scatterlist *sglist, int nents, |
1426 | int dir, struct dma_attrs *attrs) | 1426 | int dir, struct dma_attrs *attrs) |
@@ -1512,7 +1512,7 @@ EXPORT_SYMBOL(sba_map_sg_attrs); | |||
1512 | * @dir: R/W or both. | 1512 | * @dir: R/W or both. |
1513 | * @attrs: optional dma attributes | 1513 | * @attrs: optional dma attributes |
1514 | * | 1514 | * |
1515 | * See Documentation/DMA-mapping.txt | 1515 | * See Documentation/PCI/PCI-DMA-mapping.txt |
1516 | */ | 1516 | */ |
1517 | void sba_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist, | 1517 | void sba_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist, |
1518 | int nents, int dir, struct dma_attrs *attrs) | 1518 | int nents, int dir, struct dma_attrs *attrs) |
diff --git a/arch/ia64/include/asm/topology.h b/arch/ia64/include/asm/topology.h index 32f3af1641c5..3193f4417e16 100644 --- a/arch/ia64/include/asm/topology.h +++ b/arch/ia64/include/asm/topology.h | |||
@@ -84,7 +84,7 @@ void build_cpu_to_node_map(void); | |||
84 | .child = NULL, \ | 84 | .child = NULL, \ |
85 | .groups = NULL, \ | 85 | .groups = NULL, \ |
86 | .min_interval = 8, \ | 86 | .min_interval = 8, \ |
87 | .max_interval = 8*(min(num_online_cpus(), 32)), \ | 87 | .max_interval = 8*(min(num_online_cpus(), 32U)), \ |
88 | .busy_factor = 64, \ | 88 | .busy_factor = 64, \ |
89 | .imbalance_pct = 125, \ | 89 | .imbalance_pct = 125, \ |
90 | .cache_nice_tries = 2, \ | 90 | .cache_nice_tries = 2, \ |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index 5cfd3d91001a..006ad366a454 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
@@ -880,7 +880,7 @@ iosapic_unregister_intr (unsigned int gsi) | |||
880 | if (iosapic_intr_info[irq].count == 0) { | 880 | if (iosapic_intr_info[irq].count == 0) { |
881 | #ifdef CONFIG_SMP | 881 | #ifdef CONFIG_SMP |
882 | /* Clear affinity */ | 882 | /* Clear affinity */ |
883 | cpus_setall(idesc->affinity); | 883 | cpumask_setall(idesc->affinity); |
884 | #endif | 884 | #endif |
885 | /* Clear the interrupt information */ | 885 | /* Clear the interrupt information */ |
886 | iosapic_intr_info[irq].dest = 0; | 886 | iosapic_intr_info[irq].dest = 0; |
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c index a58f64ca9f0e..226233a6fa19 100644 --- a/arch/ia64/kernel/irq.c +++ b/arch/ia64/kernel/irq.c | |||
@@ -103,7 +103,7 @@ static char irq_redir [NR_IRQS]; // = { [0 ... NR_IRQS-1] = 1 }; | |||
103 | void set_irq_affinity_info (unsigned int irq, int hwid, int redir) | 103 | void set_irq_affinity_info (unsigned int irq, int hwid, int redir) |
104 | { | 104 | { |
105 | if (irq < NR_IRQS) { | 105 | if (irq < NR_IRQS) { |
106 | cpumask_copy(&irq_desc[irq].affinity, | 106 | cpumask_copy(irq_desc[irq].affinity, |
107 | cpumask_of(cpu_logical_id(hwid))); | 107 | cpumask_of(cpu_logical_id(hwid))); |
108 | irq_redir[irq] = (char) (redir & 0xff); | 108 | irq_redir[irq] = (char) (redir & 0xff); |
109 | } | 109 | } |
@@ -148,7 +148,7 @@ static void migrate_irqs(void) | |||
148 | if (desc->status == IRQ_PER_CPU) | 148 | if (desc->status == IRQ_PER_CPU) |
149 | continue; | 149 | continue; |
150 | 150 | ||
151 | if (cpumask_any_and(&irq_desc[irq].affinity, cpu_online_mask) | 151 | if (cpumask_any_and(irq_desc[irq].affinity, cpu_online_mask) |
152 | >= nr_cpu_ids) { | 152 | >= nr_cpu_ids) { |
153 | /* | 153 | /* |
154 | * Save it for phase 2 processing | 154 | * Save it for phase 2 processing |
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index 28d3d483db92..927ad027820c 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -493,11 +493,13 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) | |||
493 | saved_tpr = ia64_getreg(_IA64_REG_CR_TPR); | 493 | saved_tpr = ia64_getreg(_IA64_REG_CR_TPR); |
494 | ia64_srlz_d(); | 494 | ia64_srlz_d(); |
495 | while (vector != IA64_SPURIOUS_INT_VECTOR) { | 495 | while (vector != IA64_SPURIOUS_INT_VECTOR) { |
496 | struct irq_desc *desc = irq_to_desc(vector); | ||
497 | |||
496 | if (unlikely(IS_LOCAL_TLB_FLUSH(vector))) { | 498 | if (unlikely(IS_LOCAL_TLB_FLUSH(vector))) { |
497 | smp_local_flush_tlb(); | 499 | smp_local_flush_tlb(); |
498 | kstat_this_cpu.irqs[vector]++; | 500 | kstat_incr_irqs_this_cpu(vector, desc); |
499 | } else if (unlikely(IS_RESCHEDULE(vector))) | 501 | } else if (unlikely(IS_RESCHEDULE(vector))) |
500 | kstat_this_cpu.irqs[vector]++; | 502 | kstat_incr_irqs_this_cpu(vector, desc); |
501 | else { | 503 | else { |
502 | int irq = local_vector_to_irq(vector); | 504 | int irq = local_vector_to_irq(vector); |
503 | 505 | ||
@@ -551,11 +553,13 @@ void ia64_process_pending_intr(void) | |||
551 | * Perform normal interrupt style processing | 553 | * Perform normal interrupt style processing |
552 | */ | 554 | */ |
553 | while (vector != IA64_SPURIOUS_INT_VECTOR) { | 555 | while (vector != IA64_SPURIOUS_INT_VECTOR) { |
556 | struct irq_desc *desc = irq_to_desc(vector); | ||
557 | |||
554 | if (unlikely(IS_LOCAL_TLB_FLUSH(vector))) { | 558 | if (unlikely(IS_LOCAL_TLB_FLUSH(vector))) { |
555 | smp_local_flush_tlb(); | 559 | smp_local_flush_tlb(); |
556 | kstat_this_cpu.irqs[vector]++; | 560 | kstat_incr_irqs_this_cpu(vector, desc); |
557 | } else if (unlikely(IS_RESCHEDULE(vector))) | 561 | } else if (unlikely(IS_RESCHEDULE(vector))) |
558 | kstat_this_cpu.irqs[vector]++; | 562 | kstat_incr_irqs_this_cpu(vector, desc); |
559 | else { | 563 | else { |
560 | struct pt_regs *old_regs = set_irq_regs(NULL); | 564 | struct pt_regs *old_regs = set_irq_regs(NULL); |
561 | int irq = local_vector_to_irq(vector); | 565 | int irq = local_vector_to_irq(vector); |
diff --git a/arch/ia64/kernel/msi_ia64.c b/arch/ia64/kernel/msi_ia64.c index 890339339035..dcb6b7c51ea7 100644 --- a/arch/ia64/kernel/msi_ia64.c +++ b/arch/ia64/kernel/msi_ia64.c | |||
@@ -75,7 +75,7 @@ static void ia64_set_msi_irq_affinity(unsigned int irq, | |||
75 | msg.data = data; | 75 | msg.data = data; |
76 | 76 | ||
77 | write_msi_msg(irq, &msg); | 77 | write_msi_msg(irq, &msg); |
78 | irq_desc[irq].affinity = cpumask_of_cpu(cpu); | 78 | cpumask_copy(irq_desc[irq].affinity, cpumask_of(cpu)); |
79 | } | 79 | } |
80 | #endif /* CONFIG_SMP */ | 80 | #endif /* CONFIG_SMP */ |
81 | 81 | ||
@@ -187,7 +187,7 @@ static void dmar_msi_set_affinity(unsigned int irq, const struct cpumask *mask) | |||
187 | msg.address_lo |= MSI_ADDR_DESTID_CPU(cpu_physical_id(cpu)); | 187 | msg.address_lo |= MSI_ADDR_DESTID_CPU(cpu_physical_id(cpu)); |
188 | 188 | ||
189 | dmar_msi_write(irq, &msg); | 189 | dmar_msi_write(irq, &msg); |
190 | irq_desc[irq].affinity = *mask; | 190 | cpumask_copy(irq_desc[irq].affinity, mask); |
191 | } | 191 | } |
192 | #endif /* CONFIG_SMP */ | 192 | #endif /* CONFIG_SMP */ |
193 | 193 | ||
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 10a7d47e8510..f45e4e508eca 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
@@ -219,6 +219,7 @@ SECTIONS | |||
219 | .data.percpu PERCPU_ADDR : AT(__phys_per_cpu_start - LOAD_OFFSET) | 219 | .data.percpu PERCPU_ADDR : AT(__phys_per_cpu_start - LOAD_OFFSET) |
220 | { | 220 | { |
221 | __per_cpu_start = .; | 221 | __per_cpu_start = .; |
222 | *(.data.percpu.page_aligned) | ||
222 | *(.data.percpu) | 223 | *(.data.percpu) |
223 | *(.data.percpu.shared_aligned) | 224 | *(.data.percpu.shared_aligned) |
224 | __per_cpu_end = .; | 225 | __per_cpu_end = .; |
diff --git a/arch/ia64/sn/kernel/msi_sn.c b/arch/ia64/sn/kernel/msi_sn.c index ca553b0429ce..81e428943d73 100644 --- a/arch/ia64/sn/kernel/msi_sn.c +++ b/arch/ia64/sn/kernel/msi_sn.c | |||
@@ -205,7 +205,7 @@ static void sn_set_msi_irq_affinity(unsigned int irq, | |||
205 | msg.address_lo = (u32)(bus_addr & 0x00000000ffffffff); | 205 | msg.address_lo = (u32)(bus_addr & 0x00000000ffffffff); |
206 | 206 | ||
207 | write_msi_msg(irq, &msg); | 207 | write_msi_msg(irq, &msg); |
208 | irq_desc[irq].affinity = *cpu_mask; | 208 | cpumask_copy(irq_desc[irq].affinity, cpu_mask); |
209 | } | 209 | } |
210 | #endif /* CONFIG_SMP */ | 210 | #endif /* CONFIG_SMP */ |
211 | 211 | ||