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:
@@ -412,8 +412,11 @@ u32 au1xxx_dbdma_ring_alloc(u32 chanid, int entries)
|
|||||||
if (desc_base == 0)
|
if (desc_base == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
ctp->cdb_membase = desc_base;
|
||||||
desc_base = ALIGN_ADDR(desc_base, sizeof(au1x_ddma_desc_t));
|
desc_base = ALIGN_ADDR(desc_base, sizeof(au1x_ddma_desc_t));
|
||||||
}
|
} else
|
||||||
|
ctp->cdb_membase = desc_base;
|
||||||
|
|
||||||
dp = (au1x_ddma_desc_t *)desc_base;
|
dp = (au1x_ddma_desc_t *)desc_base;
|
||||||
|
|
||||||
/* Keep track of the base descriptor. */
|
/* Keep track of the base descriptor. */
|
||||||
@@ -831,7 +834,7 @@ void au1xxx_dbdma_chan_free(u32 chanid)
|
|||||||
|
|
||||||
au1xxx_dbdma_stop(chanid);
|
au1xxx_dbdma_stop(chanid);
|
||||||
|
|
||||||
kfree((void *)ctp->chan_desc_base);
|
kfree((void *)ctp->cdb_membase);
|
||||||
|
|
||||||
stp->dev_flags &= ~DEV_FLAGS_INUSE;
|
stp->dev_flags &= ~DEV_FLAGS_INUSE;
|
||||||
dtp->dev_flags &= ~DEV_FLAGS_INUSE;
|
dtp->dev_flags &= ~DEV_FLAGS_INUSE;
|
||||||
|
@@ -202,7 +202,7 @@ static struct resource usb_res[] = {
|
|||||||
.name = "mem",
|
.name = "mem",
|
||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
.start = 0x03400000,
|
.start = 0x03400000,
|
||||||
.end = 0x034001fff,
|
.end = 0x03401fff,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -191,6 +191,9 @@
|
|||||||
# ifndef cpu_has_64bit_addresses
|
# ifndef cpu_has_64bit_addresses
|
||||||
# define cpu_has_64bit_addresses 0
|
# define cpu_has_64bit_addresses 0
|
||||||
# endif
|
# endif
|
||||||
|
# ifndef cpu_vmbits
|
||||||
|
# define cpu_vmbits 31
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
@@ -209,6 +212,10 @@
|
|||||||
# ifndef cpu_has_64bit_addresses
|
# ifndef cpu_has_64bit_addresses
|
||||||
# define cpu_has_64bit_addresses 1
|
# define cpu_has_64bit_addresses 1
|
||||||
# endif
|
# endif
|
||||||
|
# ifndef cpu_vmbits
|
||||||
|
# define cpu_vmbits cpu_data[0].vmbits
|
||||||
|
# define __NEED_VMBITS_PROBE
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_CPU_MIPSR2_IRQ_VI) && !defined(cpu_has_vint)
|
#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 */
|
struct cache_desc tcache; /* Tertiary/split secondary cache */
|
||||||
int srsets; /* Shadow register sets */
|
int srsets; /* Shadow register sets */
|
||||||
int core; /* physical core number */
|
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)
|
#if defined(CONFIG_MIPS_MT_SMP) || defined(CONFIG_MIPS_MT_SMTC)
|
||||||
/*
|
/*
|
||||||
* In the MIPS MT "SMTC" model, each TC is considered
|
* In the MIPS MT "SMTC" model, each TC is considered
|
||||||
|
@@ -305,6 +305,7 @@ typedef struct dbdma_chan_config {
|
|||||||
dbdev_tab_t *chan_dest;
|
dbdev_tab_t *chan_dest;
|
||||||
au1x_dma_chan_t *chan_ptr;
|
au1x_dma_chan_t *chan_ptr;
|
||||||
au1x_ddma_desc_t *chan_desc_base;
|
au1x_ddma_desc_t *chan_desc_base;
|
||||||
|
u32 cdb_membase; /* kmalloc base of above */
|
||||||
au1x_ddma_desc_t *get_ptr, *put_ptr, *cur_ptr;
|
au1x_ddma_desc_t *get_ptr, *put_ptr, *cur_ptr;
|
||||||
void *chan_callparam;
|
void *chan_callparam;
|
||||||
void (*chan_callback)(int, void *);
|
void (*chan_callback)(int, void *);
|
||||||
|
@@ -110,7 +110,9 @@
|
|||||||
#define VMALLOC_START MAP_BASE
|
#define VMALLOC_START MAP_BASE
|
||||||
#define VMALLOC_END \
|
#define VMALLOC_END \
|
||||||
(VMALLOC_START + \
|
(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) && \
|
#if defined(CONFIG_MODULES) && defined(KBUILD_64BIT_SYM32) && \
|
||||||
VMALLOC_START != CKSSEG
|
VMALLOC_START != CKSSEG
|
||||||
/* Load modules into 32bit-compatible segment. */
|
/* 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);
|
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 \
|
#define R4K_OPTS (MIPS_CPU_TLB | MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE \
|
||||||
| MIPS_CPU_COUNTER)
|
| MIPS_CPU_COUNTER)
|
||||||
|
|
||||||
@@ -969,6 +978,8 @@ __cpuinit void cpu_probe(void)
|
|||||||
c->srsets = ((read_c0_srsctl() >> 26) & 0x0f) + 1;
|
c->srsets = ((read_c0_srsctl() >> 26) & 0x0f) + 1;
|
||||||
else
|
else
|
||||||
c->srsets = 1;
|
c->srsets = 1;
|
||||||
|
|
||||||
|
cpu_probe_vmbits(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
__cpuinit void cpu_report(void)
|
__cpuinit void cpu_report(void)
|
||||||
|
Reference in New Issue
Block a user