Skip to content

Commit b22793f

Browse files
committed
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6: [IA64] Cannot use register_percpu_irq() from ia64_mca_init() [IA64] Initialize interrupts later (from init_IRQ()) [IA64] enable ARCH_DMA_ADDR_T_64BIT [IA64] ioc3_serial: release resources in error return path [IA64] Stop using the deprecated __do_IRQ() code path [IA64] Remove unnecessary casts of private_data in perfmon.c [IA64] Fix missing iounmap in error path in cyclone.c [IA64] salinfo: sema_init instead of init_MUTEX [IA64] xen: use ARRAY_SIZE macro in xen_pv_ops.c [IA64] Use static const char * const in palinfo.c [IA64] remove asm/compat.h [IA64] Add CONFIG_STACKTRACE_SUPPORT [IA64] Move local_softirq_pending() definition [IA64] iommu: Add a dummy iommu_table.h file in IA64. [IA64] unwind - optimise linked-list searches for modules [IA64] unwind: remove preprocesser noise, and correct comment
2 parents b653788 + c0f37d2 commit b22793f

File tree

15 files changed

+117
-300
lines changed

15 files changed

+117
-300
lines changed

arch/ia64/Kconfig

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ config MMU
5353
bool
5454
default y
5555

56+
config ARCH_DMA_ADDR_T_64BIT
57+
def_bool y
58+
5659
config NEED_DMA_MAP_STATE
5760
def_bool y
5861

@@ -62,6 +65,9 @@ config NEED_SG_DMA_LENGTH
6265
config SWIOTLB
6366
bool
6467

68+
config STACKTRACE_SUPPORT
69+
def_bool y
70+
6571
config GENERIC_LOCKBREAK
6672
def_bool n
6773

@@ -683,8 +689,10 @@ source "lib/Kconfig"
683689
# Use the generic interrupt handling code in kernel/irq/:
684690
#
685691
config GENERIC_HARDIRQS
686-
bool
687-
default y
692+
def_bool y
693+
694+
config GENERIC_HARDIRQS_NO__DO_IRQ
695+
def_bool y
688696

689697
config GENERIC_IRQ_PROBE
690698
bool

arch/ia64/include/asm/compat.h

Lines changed: 0 additions & 208 deletions
This file was deleted.

arch/ia64/kernel/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ obj-$(CONFIG_AUDIT) += audit.o
3434
obj-$(CONFIG_PCI_MSI) += msi_ia64.o
3535
mca_recovery-y += mca_drv.o mca_drv_asm.o
3636
obj-$(CONFIG_IA64_MC_ERR_INJECT)+= err_inject.o
37+
obj-$(CONFIG_STACKTRACE) += stacktrace.o
3738

3839
obj-$(CONFIG_PARAVIRT) += paravirt.o paravirtentry.o \
3940
paravirt_patch.o

arch/ia64/kernel/cyclone.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ int __init init_cyclone_clock(void)
5959
return -ENODEV;
6060
}
6161
base = readq(reg);
62+
iounmap(reg);
6263
if(!base){
6364
printk(KERN_ERR "Summit chipset: Could not find valid CBAR"
6465
" value.\n");
6566
use_cyclone = 0;
6667
return -ENODEV;
6768
}
68-
iounmap(reg);
6969

7070
/* setup PMCC */
7171
offset = (base + CYCLONE_PMCC_OFFSET);

arch/ia64/kernel/iosapic.c

Lines changed: 9 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,6 @@
108108
#define DBG(fmt...)
109109
#endif
110110

111-
#define NR_PREALLOCATE_RTE_ENTRIES \
112-
(PAGE_SIZE / sizeof(struct iosapic_rte_info))
113-
#define RTE_PREALLOCATED (1)
114-
115111
static DEFINE_SPINLOCK(iosapic_lock);
116112

117113
/*
@@ -136,7 +132,6 @@ struct iosapic_rte_info {
136132
struct list_head rte_list; /* RTEs sharing the same vector */
137133
char rte_index; /* IOSAPIC RTE index */
138134
int refcnt; /* reference counter */
139-
unsigned int flags; /* flags */
140135
struct iosapic *iosapic;
141136
} ____cacheline_aligned;
142137

@@ -155,9 +150,6 @@ static struct iosapic_intr_info {
155150

156151
static unsigned char pcat_compat __devinitdata; /* 8259 compatibility flag */
157152

158-
static int iosapic_kmalloc_ok;
159-
static LIST_HEAD(free_rte_list);
160-
161153
static inline void
162154
iosapic_write(struct iosapic *iosapic, unsigned int reg, u32 val)
163155
{
@@ -394,7 +386,7 @@ iosapic_startup_level_irq (unsigned int irq)
394386
}
395387

396388
static void
397-
iosapic_end_level_irq (unsigned int irq)
389+
iosapic_unmask_level_irq (unsigned int irq)
398390
{
399391
ia64_vector vec = irq_to_vector(irq);
400392
struct iosapic_rte_info *rte;
@@ -404,7 +396,8 @@ iosapic_end_level_irq (unsigned int irq)
404396
if (unlikely(irq_desc[irq].status & IRQ_MOVE_PENDING)) {
405397
do_unmask_irq = 1;
406398
mask_irq(irq);
407-
}
399+
} else
400+
unmask_irq(irq);
408401

409402
list_for_each_entry(rte, &iosapic_intr_info[irq].rtes, rte_list)
410403
iosapic_eoi(rte->iosapic->addr, vec);
@@ -427,9 +420,8 @@ static struct irq_chip irq_type_iosapic_level = {
427420
.enable = iosapic_enable_level_irq,
428421
.disable = iosapic_disable_level_irq,
429422
.ack = iosapic_ack_level_irq,
430-
.end = iosapic_end_level_irq,
431423
.mask = mask_irq,
432-
.unmask = unmask_irq,
424+
.unmask = iosapic_unmask_level_irq,
433425
.set_affinity = iosapic_set_affinity
434426
};
435427

@@ -552,37 +544,6 @@ iosapic_reassign_vector (int irq)
552544
}
553545
}
554546

555-
static struct iosapic_rte_info * __init_refok iosapic_alloc_rte (void)
556-
{
557-
int i;
558-
struct iosapic_rte_info *rte;
559-
int preallocated = 0;
560-
561-
if (!iosapic_kmalloc_ok && list_empty(&free_rte_list)) {
562-
rte = alloc_bootmem(sizeof(struct iosapic_rte_info) *
563-
NR_PREALLOCATE_RTE_ENTRIES);
564-
for (i = 0; i < NR_PREALLOCATE_RTE_ENTRIES; i++, rte++)
565-
list_add(&rte->rte_list, &free_rte_list);
566-
}
567-
568-
if (!list_empty(&free_rte_list)) {
569-
rte = list_entry(free_rte_list.next, struct iosapic_rte_info,
570-
rte_list);
571-
list_del(&rte->rte_list);
572-
preallocated++;
573-
} else {
574-
rte = kmalloc(sizeof(struct iosapic_rte_info), GFP_ATOMIC);
575-
if (!rte)
576-
return NULL;
577-
}
578-
579-
memset(rte, 0, sizeof(struct iosapic_rte_info));
580-
if (preallocated)
581-
rte->flags |= RTE_PREALLOCATED;
582-
583-
return rte;
584-
}
585-
586547
static inline int irq_is_shared (int irq)
587548
{
588549
return (iosapic_intr_info[irq].count > 1);
@@ -615,7 +576,7 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
615576

616577
rte = find_rte(irq, gsi);
617578
if (!rte) {
618-
rte = iosapic_alloc_rte();
579+
rte = kzalloc(sizeof (*rte), GFP_ATOMIC);
619580
if (!rte) {
620581
printk(KERN_WARNING "%s: cannot allocate memory\n",
621582
__func__);
@@ -658,6 +619,10 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
658619
idesc->chip->name, irq_type->name);
659620
idesc->chip = irq_type;
660621
}
622+
if (trigger == IOSAPIC_EDGE)
623+
__set_irq_handler_unlocked(irq, handle_edge_irq);
624+
else
625+
__set_irq_handler_unlocked(irq, handle_level_irq);
661626
return 0;
662627
}
663628

@@ -1161,10 +1126,3 @@ map_iosapic_to_node(unsigned int gsi_base, int node)
11611126
return;
11621127
}
11631128
#endif
1164-
1165-
static int __init iosapic_enable_kmalloc (void)
1166-
{
1167-
iosapic_kmalloc_ok = 1;
1168-
return 0;
1169-
}
1170-
core_initcall (iosapic_enable_kmalloc);

0 commit comments

Comments
 (0)