forked from Minki/linux
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: MIPS: 64-bit: Detect virtual memory size MIPS: AR7: Fix USB slave mem range typo MIPS: Alchemy: Fix dbdma ring destruction memory debugcheck.
This commit is contained in:
commit
e770a0f115
@ -412,8 +412,11 @@ u32 au1xxx_dbdma_ring_alloc(u32 chanid, int entries)
|
||||
if (desc_base == 0)
|
||||
return 0;
|
||||
|
||||
ctp->cdb_membase = desc_base;
|
||||
desc_base = ALIGN_ADDR(desc_base, sizeof(au1x_ddma_desc_t));
|
||||
}
|
||||
} else
|
||||
ctp->cdb_membase = desc_base;
|
||||
|
||||
dp = (au1x_ddma_desc_t *)desc_base;
|
||||
|
||||
/* Keep track of the base descriptor. */
|
||||
@ -831,7 +834,7 @@ void au1xxx_dbdma_chan_free(u32 chanid)
|
||||
|
||||
au1xxx_dbdma_stop(chanid);
|
||||
|
||||
kfree((void *)ctp->chan_desc_base);
|
||||
kfree((void *)ctp->cdb_membase);
|
||||
|
||||
stp->dev_flags &= ~DEV_FLAGS_INUSE;
|
||||
dtp->dev_flags &= ~DEV_FLAGS_INUSE;
|
||||
|
@ -202,7 +202,7 @@ static struct resource usb_res[] = {
|
||||
.name = "mem",
|
||||
.flags = IORESOURCE_MEM,
|
||||
.start = 0x03400000,
|
||||
.end = 0x034001fff,
|
||||
.end = 0x03401fff,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -191,6 +191,9 @@
|
||||
# ifndef cpu_has_64bit_addresses
|
||||
# define cpu_has_64bit_addresses 0
|
||||
# endif
|
||||
# ifndef cpu_vmbits
|
||||
# define cpu_vmbits 31
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
@ -209,6 +212,10 @@
|
||||
# ifndef cpu_has_64bit_addresses
|
||||
# define cpu_has_64bit_addresses 1
|
||||
# endif
|
||||
# ifndef cpu_vmbits
|
||||
# define cpu_vmbits cpu_data[0].vmbits
|
||||
# define __NEED_VMBITS_PROBE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CPU_MIPSR2_IRQ_VI) && !defined(cpu_has_vint)
|
||||
|
@ -58,6 +58,9 @@ struct cpuinfo_mips {
|
||||
struct cache_desc tcache; /* Tertiary/split secondary cache */
|
||||
int srsets; /* Shadow register sets */
|
||||
int core; /* physical core number */
|
||||
#ifdef CONFIG_64BIT
|
||||
int vmbits; /* Virtual memory size in bits */
|
||||
#endif
|
||||
#if defined(CONFIG_MIPS_MT_SMP) || defined(CONFIG_MIPS_MT_SMTC)
|
||||
/*
|
||||
* In the MIPS MT "SMTC" model, each TC is considered
|
||||
|
@ -305,6 +305,7 @@ typedef struct dbdma_chan_config {
|
||||
dbdev_tab_t *chan_dest;
|
||||
au1x_dma_chan_t *chan_ptr;
|
||||
au1x_ddma_desc_t *chan_desc_base;
|
||||
u32 cdb_membase; /* kmalloc base of above */
|
||||
au1x_ddma_desc_t *get_ptr, *put_ptr, *cur_ptr;
|
||||
void *chan_callparam;
|
||||
void (*chan_callback)(int, void *);
|
||||
|
@ -110,7 +110,9 @@
|
||||
#define VMALLOC_START MAP_BASE
|
||||
#define VMALLOC_END \
|
||||
(VMALLOC_START + \
|
||||
PTRS_PER_PGD * PTRS_PER_PMD * PTRS_PER_PTE * PAGE_SIZE - (1UL << 32))
|
||||
min(PTRS_PER_PGD * PTRS_PER_PMD * PTRS_PER_PTE * PAGE_SIZE, \
|
||||
(1UL << cpu_vmbits)) - (1UL << 32))
|
||||
|
||||
#if defined(CONFIG_MODULES) && defined(KBUILD_64BIT_SYM32) && \
|
||||
VMALLOC_START != CKSSEG
|
||||
/* Load modules into 32bit-compatible segment. */
|
||||
|
@ -284,6 +284,15 @@ static inline int __cpu_has_fpu(void)
|
||||
return ((cpu_get_fpu_id() & 0xff00) != FPIR_IMP_NONE);
|
||||
}
|
||||
|
||||
static inline void cpu_probe_vmbits(struct cpuinfo_mips *c)
|
||||
{
|
||||
#ifdef __NEED_VMBITS_PROBE
|
||||
write_c0_entryhi(0x3ffffffffffff000ULL);
|
||||
back_to_back_c0_hazard();
|
||||
c->vmbits = fls64(read_c0_entryhi() & 0x3ffffffffffff000ULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
#define R4K_OPTS (MIPS_CPU_TLB | MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE \
|
||||
| MIPS_CPU_COUNTER)
|
||||
|
||||
@ -969,6 +978,8 @@ __cpuinit void cpu_probe(void)
|
||||
c->srsets = ((read_c0_srsctl() >> 26) & 0x0f) + 1;
|
||||
else
|
||||
c->srsets = 1;
|
||||
|
||||
cpu_probe_vmbits(c);
|
||||
}
|
||||
|
||||
__cpuinit void cpu_report(void)
|
||||
|
Loading…
Reference in New Issue
Block a user