Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Browse files Browse the repository at this point in the history
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Nov 29, 2012
2 parents 3177bf6 + e9296e8 commit 8a2cf06
Show file tree
Hide file tree
Showing 69 changed files with 585 additions and 786 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
VERSION = 3
PATCHLEVEL = 7
SUBLEVEL = 0
EXTRAVERSION = -rc6
EXTRAVERSION = -rc7
NAME = Terrified Chipmunk

# *DOCUMENTATION*
Expand Down
14 changes: 13 additions & 1 deletion arch/arm/boot/compressed/head.S
Original file line number Diff line number Diff line change
Expand Up @@ -652,6 +652,15 @@ __setup_mmu: sub r3, r4, #16384 @ Page directory size
mov pc, lr
ENDPROC(__setup_mmu)

@ Enable unaligned access on v6, to allow better code generation
@ for the decompressor C code:
__armv6_mmu_cache_on:
mrc p15, 0, r0, c1, c0, 0 @ read SCTLR
bic r0, r0, #2 @ A (no unaligned access fault)
orr r0, r0, #1 << 22 @ U (v6 unaligned access model)
mcr p15, 0, r0, c1, c0, 0 @ write SCTLR
b __armv4_mmu_cache_on

__arm926ejs_mmu_cache_on:
#ifdef CONFIG_CPU_DCACHE_WRITETHROUGH
mov r0, #4 @ put dcache in WT mode
Expand Down Expand Up @@ -694,6 +703,9 @@ __armv7_mmu_cache_on:
bic r0, r0, #1 << 28 @ clear SCTLR.TRE
orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement
orr r0, r0, #0x003c @ write buffer
bic r0, r0, #2 @ A (no unaligned access fault)
orr r0, r0, #1 << 22 @ U (v6 unaligned access model)
@ (needed for ARM1176)
#ifdef CONFIG_MMU
#ifdef CONFIG_CPU_ENDIAN_BE8
orr r0, r0, #1 << 25 @ big-endian page tables
Expand Down Expand Up @@ -914,7 +926,7 @@ proc_types:

.word 0x0007b000 @ ARMv6
.word 0x000ff000
W(b) __armv4_mmu_cache_on
W(b) __armv6_mmu_cache_on
W(b) __armv4_mmu_cache_off
W(b) __armv6_mmu_cache_flush

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mm/proc-v6.S
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ ENTRY(cpu_v6_dcache_clean_area)
mov pc, lr

/*
* cpu_arm926_switch_mm(pgd_phys, tsk)
* cpu_v6_switch_mm(pgd_phys, tsk)
*
* Set the translation table base pointer to be pgd_phys
*
Expand Down
26 changes: 20 additions & 6 deletions arch/mips/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ static struct resource data_resource = { .name = "Kernel data", };
void __init add_memory_region(phys_t start, phys_t size, long type)
{
int x = boot_mem_map.nr_map;
struct boot_mem_map_entry *prev = boot_mem_map.map + x - 1;
int i;

/* Sanity check */
if (start + size < start) {
Expand All @@ -88,15 +88,29 @@ void __init add_memory_region(phys_t start, phys_t size, long type)
}

/*
* Try to merge with previous entry if any. This is far less than
* perfect but is sufficient for most real world cases.
* Try to merge with existing entry, if any.
*/
if (x && prev->addr + prev->size == start && prev->type == type) {
prev->size += size;
for (i = 0; i < boot_mem_map.nr_map; i++) {
struct boot_mem_map_entry *entry = boot_mem_map.map + i;
unsigned long top;

if (entry->type != type)
continue;

if (start + size < entry->addr)
continue; /* no overlap */

if (entry->addr + entry->size < start)
continue; /* no overlap */

top = max(entry->addr + entry->size, start + size);
entry->addr = min(entry->addr, start);
entry->size = top - entry->addr;

return;
}

if (x == BOOT_MEM_MAP_MAX) {
if (boot_mem_map.nr_map == BOOT_MEM_MAP_MAX) {
pr_err("Ooops! Too many entries in the memory map!\n");
return;
}
Expand Down
8 changes: 4 additions & 4 deletions arch/mips/lib/mips-atomic.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ __asm__(
" .set pop \n"
" .endm \n");

void arch_local_irq_disable(void)
notrace void arch_local_irq_disable(void)
{
preempt_disable();
__asm__ __volatile__(
Expand Down Expand Up @@ -93,7 +93,7 @@ __asm__(
" .set pop \n"
" .endm \n");

unsigned long arch_local_irq_save(void)
notrace unsigned long arch_local_irq_save(void)
{
unsigned long flags;
preempt_disable();
Expand Down Expand Up @@ -135,7 +135,7 @@ __asm__(
" .set pop \n"
" .endm \n");

void arch_local_irq_restore(unsigned long flags)
notrace void arch_local_irq_restore(unsigned long flags)
{
unsigned long __tmp1;

Expand All @@ -159,7 +159,7 @@ void arch_local_irq_restore(unsigned long flags)
EXPORT_SYMBOL(arch_local_irq_restore);


void __arch_local_irq_restore(unsigned long flags)
notrace void __arch_local_irq_restore(unsigned long flags)
{
unsigned long __tmp1;

Expand Down
2 changes: 1 addition & 1 deletion arch/powerpc/platforms/pseries/eeh_pe.c
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ int eeh_rmv_from_parent_pe(struct eeh_dev *edev, int purge_pe)
if (list_empty(&pe->edevs)) {
cnt = 0;
list_for_each_entry(child, &pe->child_list, child) {
if (!(pe->type & EEH_PE_INVALID)) {
if (!(child->type & EEH_PE_INVALID)) {
cnt++;
break;
}
Expand Down
3 changes: 2 additions & 1 deletion arch/powerpc/platforms/pseries/msi.c
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,8 @@ static struct device_node *find_pe_dn(struct pci_dev *dev, int *total)

/* Get the top level device in the PE */
edev = of_node_to_eeh_dev(dn);
edev = list_first_entry(&edev->pe->edevs, struct eeh_dev, list);
if (edev->pe)
edev = list_first_entry(&edev->pe->edevs, struct eeh_dev, list);
dn = eeh_dev_to_of_node(edev);
if (!dn)
return NULL;
Expand Down
1 change: 1 addition & 0 deletions drivers/atm/ambassador.c
Original file line number Diff line number Diff line change
Expand Up @@ -1961,6 +1961,7 @@ static int __devinit ucode_init (loader_block * lb, amb_dev * dev) {
res = loader_verify(lb, dev, rec);
if (res)
break;
rec = ihex_next_binrec(rec);
}
release_firmware(fw);
if (!res)
Expand Down
6 changes: 3 additions & 3 deletions drivers/media/dvb-frontends/stv0900_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -300,15 +300,15 @@ static enum fe_stv0900_error stv0900_set_mclk(struct stv0900_internal *intp, u32
{
u32 m_div, clk_sel;

dprintk("%s: Mclk set to %d, Quartz = %d\n", __func__, mclk,
intp->quartz);

if (intp == NULL)
return STV0900_INVALID_HANDLE;

if (intp->errs)
return STV0900_I2C_ERROR;

dprintk("%s: Mclk set to %d, Quartz = %d\n", __func__, mclk,
intp->quartz);

clk_sel = ((stv0900_get_bits(intp, F0900_SELX1RATIO) == 1) ? 4 : 6);
m_div = ((clk_sel * mclk) / intp->quartz) - 1;
stv0900_write_bits(intp, F0900_M_DIV, m_div);
Expand Down
Loading

0 comments on commit 8a2cf06

Please sign in to comment.