Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4936044 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/home/rmk/linux-2.6-arm

parents 9092131f 92a8cbed
Loading
Loading
Loading
Loading
+5 −13
Original line number Diff line number Diff line
@@ -93,15 +93,12 @@ static void print_alloc_stats(struct dmabounce_device_info *device_info)
static inline struct dmabounce_device_info *
find_dmabounce_dev(struct device *dev)
{
	struct list_head *entry;

	list_for_each(entry, &dmabounce_devs) {
		struct dmabounce_device_info *d =
			list_entry(entry, struct dmabounce_device_info, node);
	struct dmabounce_device_info *d;

	list_for_each_entry(d, &dmabounce_devs, node)
		if (d->dev == dev)
			return d;
	}

	return NULL;
}

@@ -172,15 +169,11 @@ alloc_safe_buffer(struct dmabounce_device_info *device_info, void *ptr,
static inline struct safe_buffer *
find_safe_buffer(struct dmabounce_device_info *device_info, dma_addr_t safe_dma_addr)
{
	struct list_head *entry;

	list_for_each(entry, &device_info->safe_buffers) {
		struct safe_buffer *b =
			list_entry(entry, struct safe_buffer, node);
	struct safe_buffer *b;

	list_for_each_entry(b, &device_info->safe_buffers, node)
		if (b->safe_dma_addr == safe_dma_addr)
			return b;
	}

	return NULL;
}
@@ -301,7 +294,6 @@ unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
			__func__, buf->ptr, (void *) virt_to_dma(dev, buf->ptr),
			buf->safe, (void *) buf->safe_dma_addr);


		DO_STATS ( device_info->bounce_count++ );

		if (dir == DMA_FROM_DEVICE || dir == DMA_BIDIRECTIONAL) {
+7 −6
Original line number Diff line number Diff line
@@ -721,16 +721,17 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq)
	return ret;
}

static int sa1111_remove_one(struct device *dev, void *data)
{
	device_unregister(dev);
	return 0;
}

static void __sa1111_remove(struct sa1111 *sachip)
{
	struct list_head *l, *n;
	void __iomem *irqbase = sachip->base + SA1111_INTC;

	list_for_each_safe(l, n, &sachip->dev->children) {
		struct device *d = list_to_dev(l);

		device_unregister(d);
	}
	device_for_each_child(sachip->dev, NULL, sa1111_remove_one);

	/* disable all IRQs */
	sa1111_writel(0, irqbase + SA1111_INTEN0);
+16 −9
Original line number Diff line number Diff line
@@ -395,6 +395,20 @@ static void __init early_initrd(char **p)
}
__early_param("initrd=", early_initrd);

static void __init add_memory(unsigned long start, unsigned long size)
{
	/*
	 * Ensure that start/size are aligned to a page boundary.
	 * Size is appropriately rounded down, start is rounded up.
	 */
	size -= start & ~PAGE_MASK;

	meminfo.bank[meminfo.nr_banks].start = PAGE_ALIGN(start);
	meminfo.bank[meminfo.nr_banks].size  = size & PAGE_MASK;
	meminfo.bank[meminfo.nr_banks].node  = PHYS_TO_NID(start);
	meminfo.nr_banks += 1;
}

/*
 * Pick out the memory size.  We look for mem=size@start,
 * where start and size are "size[KkMm]"
@@ -419,10 +433,7 @@ static void __init early_mem(char **p)
	if (**p == '@')
		start = memparse(*p + 1, p);

	meminfo.bank[meminfo.nr_banks].start = start;
	meminfo.bank[meminfo.nr_banks].size  = size;
	meminfo.bank[meminfo.nr_banks].node  = PHYS_TO_NID(start);
	meminfo.nr_banks += 1;
	add_memory(start, size);
}
__early_param("mem=", early_mem);

@@ -564,11 +575,7 @@ static int __init parse_tag_mem32(const struct tag *tag)
			tag->u.mem.start, tag->u.mem.size / 1024);
		return -EINVAL;
	}
	meminfo.bank[meminfo.nr_banks].start = tag->u.mem.start;
	meminfo.bank[meminfo.nr_banks].size  = tag->u.mem.size;
	meminfo.bank[meminfo.nr_banks].node  = PHYS_TO_NID(tag->u.mem.start);
	meminfo.nr_banks += 1;

	add_memory(tag->u.mem.start, tag->u.mem.size);
	return 0;
}

+19 −10
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <asm/unistd.h>

#include "ptrace.h"
#include "signal.h"

#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))

@@ -35,7 +36,7 @@
#define SWI_THUMB_SIGRETURN	(0xdf00 << 16 | 0x2700 | (__NR_sigreturn - __NR_SYSCALL_BASE))
#define SWI_THUMB_RT_SIGRETURN	(0xdf00 << 16 | 0x2700 | (__NR_rt_sigreturn - __NR_SYSCALL_BASE))

static const unsigned long retcodes[4] = {
const unsigned long sigreturn_codes[4] = {
	SWI_SYS_SIGRETURN,	SWI_THUMB_SIGRETURN,
	SWI_SYS_RT_SIGRETURN,	SWI_THUMB_RT_SIGRETURN
};
@@ -500,9 +501,16 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka,
		if (ka->sa.sa_flags & SA_SIGINFO)
			idx += 2;

		if (__put_user(retcodes[idx], rc))
		if (__put_user(sigreturn_codes[idx], rc))
			return 1;

		if (cpsr & MODE32_BIT) {
			/*
			 * 32-bit code can use the new high-page
			 * signal return code support.
			 */
			retcode = KERN_SIGRETURN_CODE + (idx << 2) + thumb;
		} else {
			/*
			 * Ensure that the instruction cache sees
			 * the return code written onto the stack.
@@ -512,6 +520,7 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka,

			retcode = ((unsigned long)rc) + thumb;
		}
	}

	regs->ARM_r0 = usig;
	regs->ARM_sp = (unsigned long)frame;
+12 −0
Original line number Diff line number Diff line
/*
 *  linux/arch/arm/kernel/signal.h
 *
 *  Copyright (C) 2005 Russell King.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#define KERN_SIGRETURN_CODE	0xffff0500

extern const unsigned long sigreturn_codes[4];
Loading