Re: [PATCH] ARC: PAE40: don't panic and instead turn off hw ioc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Vineet,

On Fri, 2019-03-29 at 13:45 -0700, Vineet Gupta wrote:
> HSDK currently panics when built for HIGHMEM/ARC_HAS_PAE40 because ioc
> is enabled with default which doesn't for the 2 non contiguous memory
> nodes.
> 
> So get PAE working with ioc disabled instead
> 
> Tested with !PAE40 by forcing @ioc_enable=0 and running the glibc
> testsuite over ssh
> 
> Signed-off-by: Vineet Gupta <vgupta@xxxxxxxxxxxx>
> ---
>  arch/arc/mm/cache.c | 31 ++++++++++++++++---------------
>  1 file changed, 16 insertions(+), 15 deletions(-)
> 
> diff --git a/arch/arc/mm/cache.c b/arch/arc/mm/cache.c
> index 4135abec3fb0..63e6e6504699 100644
> --- a/arch/arc/mm/cache.c
> +++ b/arch/arc/mm/cache.c
> @@ -113,10 +113,24 @@ static void read_decode_cache_bcr_arcv2(int cpu)
>  	}
>  
>  	READ_BCR(ARC_REG_CLUSTER_BCR, cbcr);
> -	if (cbcr.c)
> +	if (cbcr.c) {
>  		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())

As for today PAE40 couldn't be enabled without HIGHMEM for ARC, so probably we can
simplify this to

----------------------------->8----------------------------------
if (IS_ENABLED(CONFIG_HIGHMEM))
	ioc_enable = 0;
----------------------------->8----------------------------------

> +			ioc_enable = 0;
> +	} else {
>  		ioc_enable = 0;
> +	}
>  
>  	/* HS 2.0 didn't have AUX_VOL */
>  	if (cpuinfo_arc700[cpu].core.family > 0x51) {
> @@ -1158,19 +1172,6 @@ noinline void __init arc_ioc_setup(void)
>  	if (!ioc_enable)
>  		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 */
>  	__dc_disable();
>  
-- 
 Eugeniy Paltsev
_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/linux-snps-arc



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux