ARC: PAE40: don't panic and instead turn off hw ioc
HSDK currently panics when built for HIGHMEM/ARC_HAS_PAE40 because ioc is enabled with default which doesn't work for the 2 non contiguous memory nodes. So get PAE working by disabling ioc instead. Tested with !PAE40 by forcing @ioc_enable=0 and running the glibc testsuite over ssh Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
This commit is contained in:
parent
79a3aaa7b8
commit
99bd5fcc50
|
@ -113,10 +113,24 @@ static void read_decode_cache_bcr_arcv2(int cpu)
|
||||||
}
|
}
|
||||||
|
|
||||||
READ_BCR(ARC_REG_CLUSTER_BCR, cbcr);
|
READ_BCR(ARC_REG_CLUSTER_BCR, cbcr);
|
||||||
if (cbcr.c)
|
if (cbcr.c) {
|
||||||
ioc_exists = 1;
|
ioc_exists = 1;
|
||||||
else
|
|
||||||
|
/*
|
||||||
|
* As for today we don't support both IOC and ZONE_HIGHMEM enabled
|
||||||
|
* simultaneously. This happens because as of today IOC aperture covers
|
||||||
|
* only ZONE_NORMAL (low mem) and any dma transactions outside this
|
||||||
|
* region won't be HW coherent.
|
||||||
|
* If we want to use both IOC and ZONE_HIGHMEM we can use
|
||||||
|
* bounce_buffer to handle dma transactions to HIGHMEM.
|
||||||
|
* Also it is possible to modify dma_direct cache ops or increase IOC
|
||||||
|
* aperture size if we are planning to use HIGHMEM without PAE.
|
||||||
|
*/
|
||||||
|
if (IS_ENABLED(CONFIG_HIGHMEM) || is_pae40_enabled())
|
||||||
|
ioc_enable = 0;
|
||||||
|
} else {
|
||||||
ioc_enable = 0;
|
ioc_enable = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* HS 2.0 didn't have AUX_VOL */
|
/* HS 2.0 didn't have AUX_VOL */
|
||||||
if (cpuinfo_arc700[cpu].core.family > 0x51) {
|
if (cpuinfo_arc700[cpu].core.family > 0x51) {
|
||||||
|
@ -1158,19 +1172,6 @@ noinline void __init arc_ioc_setup(void)
|
||||||
if (!ioc_enable)
|
if (!ioc_enable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
|
||||||
* As for today we don't support both IOC and ZONE_HIGHMEM enabled
|
|
||||||
* simultaneously. This happens because as of today IOC aperture covers
|
|
||||||
* only ZONE_NORMAL (low mem) and any dma transactions outside this
|
|
||||||
* region won't be HW coherent.
|
|
||||||
* If we want to use both IOC and ZONE_HIGHMEM we can use
|
|
||||||
* bounce_buffer to handle dma transactions to HIGHMEM.
|
|
||||||
* Also it is possible to modify dma_direct cache ops or increase IOC
|
|
||||||
* aperture size if we are planning to use HIGHMEM without PAE.
|
|
||||||
*/
|
|
||||||
if (IS_ENABLED(CONFIG_HIGHMEM))
|
|
||||||
panic("IOC and HIGHMEM can't be used simultaneously");
|
|
||||||
|
|
||||||
/* Flush + invalidate + disable L1 dcache */
|
/* Flush + invalidate + disable L1 dcache */
|
||||||
__dc_disable();
|
__dc_disable();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue