diff options
author | Kyle McMartin <kyle@parisc-linux.org> | 2007-02-17 00:18:23 -0500 |
---|---|---|
committer | Kyle McMartin <kyle@parisc-linux.org> | 2007-02-17 00:18:23 -0500 |
commit | e7b3ca08549caccf5d6e1cf066780bf4f0ae77a7 (patch) | |
tree | 7e5745bea06675cfce60d6813ee3b4d5e19cbb56 /arch/parisc/kernel | |
parent | 62d0cfcb27cf755cebdc93ca95dabc83608007cd (diff) | |
parent | cb6efb39163bfb6bb6475fa7c8a5e08e44dbf14a (diff) |
Merge branch 'parisc' from /home/kyle/repos/parisc-2.6.git
Conflicts:
arch/parisc/hpux/sys_hpux.c
arch/parisc/mm/ioremap.c
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r-- | arch/parisc/kernel/drivers.c | 8 | ||||
-rw-r--r-- | arch/parisc/kernel/module.c | 3 | ||||
-rw-r--r-- | arch/parisc/kernel/pci-dma.c | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/pci.c | 4 | ||||
-rw-r--r-- | arch/parisc/kernel/process.c | 4 | ||||
-rw-r--r-- | arch/parisc/kernel/processor.c | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/smp.c | 11 |
7 files changed, 19 insertions, 15 deletions
diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c index d6c486e9501c..6274cd268e6a 100644 --- a/arch/parisc/kernel/drivers.c +++ b/arch/parisc/kernel/drivers.c | |||
@@ -689,7 +689,9 @@ parse_tree_node(struct device *parent, int index, struct hardware_path *modpath) | |||
689 | .fn = check_parent, | 689 | .fn = check_parent, |
690 | }; | 690 | }; |
691 | 691 | ||
692 | device_for_each_child(parent, &recurse_data, descend_children); | 692 | if (device_for_each_child(parent, &recurse_data, descend_children)) |
693 | /* nothing */; | ||
694 | |||
693 | return d.dev; | 695 | return d.dev; |
694 | } | 696 | } |
695 | 697 | ||
@@ -835,8 +837,8 @@ static void print_parisc_device(struct parisc_device *dev) | |||
835 | static int count; | 837 | static int count; |
836 | 838 | ||
837 | print_pa_hwpath(dev, hw_path); | 839 | print_pa_hwpath(dev, hw_path); |
838 | printk(KERN_INFO "%d. %s at 0x%lx [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }", | 840 | printk(KERN_INFO "%d. %s at 0x%p [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }", |
839 | ++count, dev->name, dev->hpa.start, hw_path, dev->id.hw_type, | 841 | ++count, dev->name, (void*) dev->hpa.start, hw_path, dev->id.hw_type, |
840 | dev->id.hversion_rev, dev->id.hversion, dev->id.sversion); | 842 | dev->id.hversion_rev, dev->id.hversion, dev->id.sversion); |
841 | 843 | ||
842 | if (dev->num_addrs) { | 844 | if (dev->num_addrs) { |
diff --git a/arch/parisc/kernel/module.c b/arch/parisc/kernel/module.c index f50b982b0834..47ea4e4a2179 100644 --- a/arch/parisc/kernel/module.c +++ b/arch/parisc/kernel/module.c | |||
@@ -822,7 +822,8 @@ int module_finalize(const Elf_Ehdr *hdr, | |||
822 | me->name, strtab, symhdr); | 822 | me->name, strtab, symhdr); |
823 | 823 | ||
824 | if(me->arch.got_count > MAX_GOTS) { | 824 | if(me->arch.got_count > MAX_GOTS) { |
825 | printk(KERN_ERR "%s: Global Offset Table overflow (used %ld, allowed %d\n", me->name, me->arch.got_count, MAX_GOTS); | 825 | printk(KERN_ERR "%s: Global Offset Table overflow (used %ld, allowed %d)\n", |
826 | me->name, me->arch.got_count, MAX_GOTS); | ||
826 | return -EINVAL; | 827 | return -EINVAL; |
827 | } | 828 | } |
828 | 829 | ||
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c index a6caf1073085..0c3aecb85a5c 100644 --- a/arch/parisc/kernel/pci-dma.c +++ b/arch/parisc/kernel/pci-dma.c | |||
@@ -342,7 +342,7 @@ pcxl_dma_init(void) | |||
342 | pcxl_res_map = (char *)__get_free_pages(GFP_KERNEL, | 342 | pcxl_res_map = (char *)__get_free_pages(GFP_KERNEL, |
343 | get_order(pcxl_res_size)); | 343 | get_order(pcxl_res_size)); |
344 | memset(pcxl_res_map, 0, pcxl_res_size); | 344 | memset(pcxl_res_map, 0, pcxl_res_size); |
345 | proc_gsc_root = proc_mkdir("gsc", 0); | 345 | proc_gsc_root = proc_mkdir("gsc", NULL); |
346 | if (!proc_gsc_root) | 346 | if (!proc_gsc_root) |
347 | printk(KERN_WARNING | 347 | printk(KERN_WARNING |
348 | "pcxl_dma_init: Unable to create gsc /proc dir entry\n"); | 348 | "pcxl_dma_init: Unable to create gsc /proc dir entry\n"); |
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c index 199887a61c76..563df0072dee 100644 --- a/arch/parisc/kernel/pci.c +++ b/arch/parisc/kernel/pci.c | |||
@@ -200,8 +200,8 @@ static void | |||
200 | pcibios_link_hba_resources( struct resource *hba_res, struct resource *r) | 200 | pcibios_link_hba_resources( struct resource *hba_res, struct resource *r) |
201 | { | 201 | { |
202 | if (!r->parent) { | 202 | if (!r->parent) { |
203 | printk(KERN_EMERG "PCI: resource not parented! [%lx-%lx]\n", | 203 | printk(KERN_EMERG "PCI: resource not parented! [%p-%p]\n", |
204 | r->start, r->end); | 204 | (void*) r->start, (void*) r->end); |
205 | r->parent = hba_res; | 205 | r->parent = hba_res; |
206 | 206 | ||
207 | /* reverse link is harder *sigh* */ | 207 | /* reverse link is harder *sigh* */ |
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index 2f9f9dfa66f7..dfca014b49ba 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c | |||
@@ -355,8 +355,8 @@ asmlinkage int sys_execve(struct pt_regs *regs) | |||
355 | error = PTR_ERR(filename); | 355 | error = PTR_ERR(filename); |
356 | if (IS_ERR(filename)) | 356 | if (IS_ERR(filename)) |
357 | goto out; | 357 | goto out; |
358 | error = do_execve(filename, (char __user **) regs->gr[25], | 358 | error = do_execve(filename, (char __user * __user *) regs->gr[25], |
359 | (char __user **) regs->gr[24], regs); | 359 | (char __user * __user *) regs->gr[24], regs); |
360 | if (error == 0) { | 360 | if (error == 0) { |
361 | task_lock(current); | 361 | task_lock(current); |
362 | current->ptrace &= ~PT_DTRACE; | 362 | current->ptrace &= ~PT_DTRACE; |
diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c index fb81e5687e7c..0af1fad2fc65 100644 --- a/arch/parisc/kernel/processor.c +++ b/arch/parisc/kernel/processor.c | |||
@@ -153,8 +153,6 @@ static int __init processor_probe(struct parisc_device *dev) | |||
153 | p->cpuid = cpuid; /* save CPU id */ | 153 | p->cpuid = cpuid; /* save CPU id */ |
154 | p->txn_addr = txn_addr; /* save CPU IRQ address */ | 154 | p->txn_addr = txn_addr; /* save CPU IRQ address */ |
155 | #ifdef CONFIG_SMP | 155 | #ifdef CONFIG_SMP |
156 | spin_lock_init(&p->lock); | ||
157 | |||
158 | /* | 156 | /* |
159 | ** FIXME: review if any other initialization is clobbered | 157 | ** FIXME: review if any other initialization is clobbered |
160 | ** for boot_cpu by the above memset(). | 158 | ** for boot_cpu by the above memset(). |
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 12cc019307ad..3b67d115fb0a 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -76,6 +76,7 @@ cpumask_t cpu_possible_map __read_mostly = CPU_MASK_ALL; /* Bitmap of Present CP | |||
76 | EXPORT_SYMBOL(cpu_online_map); | 76 | EXPORT_SYMBOL(cpu_online_map); |
77 | EXPORT_SYMBOL(cpu_possible_map); | 77 | EXPORT_SYMBOL(cpu_possible_map); |
78 | 78 | ||
79 | DEFINE_PER_CPU(spinlock_t, ipi_lock) = SPIN_LOCK_UNLOCKED; | ||
79 | 80 | ||
80 | struct smp_call_struct { | 81 | struct smp_call_struct { |
81 | void (*func) (void *info); | 82 | void (*func) (void *info); |
@@ -167,10 +168,11 @@ ipi_interrupt(int irq, void *dev_id) | |||
167 | mb(); /* Order interrupt and bit testing. */ | 168 | mb(); /* Order interrupt and bit testing. */ |
168 | 169 | ||
169 | for (;;) { | 170 | for (;;) { |
170 | spin_lock_irqsave(&(p->lock),flags); | 171 | spinlock_t *lock = &per_cpu(ipi_lock, this_cpu); |
172 | spin_lock_irqsave(lock, flags); | ||
171 | ops = p->pending_ipi; | 173 | ops = p->pending_ipi; |
172 | p->pending_ipi = 0; | 174 | p->pending_ipi = 0; |
173 | spin_unlock_irqrestore(&(p->lock),flags); | 175 | spin_unlock_irqrestore(lock, flags); |
174 | 176 | ||
175 | mb(); /* Order bit clearing and data access. */ | 177 | mb(); /* Order bit clearing and data access. */ |
176 | 178 | ||
@@ -275,12 +277,13 @@ static inline void | |||
275 | ipi_send(int cpu, enum ipi_message_type op) | 277 | ipi_send(int cpu, enum ipi_message_type op) |
276 | { | 278 | { |
277 | struct cpuinfo_parisc *p = &cpu_data[cpu]; | 279 | struct cpuinfo_parisc *p = &cpu_data[cpu]; |
280 | spinlock_t *lock = &per_cpu(ipi_lock, cpu); | ||
278 | unsigned long flags; | 281 | unsigned long flags; |
279 | 282 | ||
280 | spin_lock_irqsave(&(p->lock),flags); | 283 | spin_lock_irqsave(lock, flags); |
281 | p->pending_ipi |= 1 << op; | 284 | p->pending_ipi |= 1 << op; |
282 | gsc_writel(IPI_IRQ - CPU_IRQ_BASE, cpu_data[cpu].hpa); | 285 | gsc_writel(IPI_IRQ - CPU_IRQ_BASE, cpu_data[cpu].hpa); |
283 | spin_unlock_irqrestore(&(p->lock),flags); | 286 | spin_unlock_irqrestore(lock, flags); |
284 | } | 287 | } |
285 | 288 | ||
286 | 289 | ||