Re: [PATCH 18/25] MIPS: loongson64: use generic dma noncoherent ops

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

 



Hi Christoph,

On Fri, Jun 15, 2018 at 01:08:47PM +0200, Christoph Hellwig wrote:
> -static inline unsigned long plat_dma_addr_to_phys(struct device *dev,
> -	dma_addr_t dma_addr)
> -{
> -#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
> -	return (dma_addr > 0x8fffffff) ? dma_addr : (dma_addr & 0x0fffffff);
> -#else
> -	return dma_addr & 0x7fffffff;
> -#endif
> -}

...

> +phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t dma_addr)
> +{
> +#if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
> +	if (dma_addr > 0x8fffffff)
> +		return dma_addr;
> +#endif
> +	return dma_addr & 0x0fffffff;
> +}

Thanks for putting in the work here - I've applied patches 1-17 to
mips-next so far, but I'm struggling to convince myself that the above
is correct.

In the original code we have 3 distinct cases:

  64b Loongson2F, dma_addr > 0x8fffffff  -> dma_addr
  64b Loongson2F, dma_addr <= 0x8fffffff -> dma_addr & 0x0fffffff
  Everything else                        -> dma_addr & 0x7fffffff

In the new __dma_to_phys() though only the first case remains the same.

Is this intentional or a mixup?

Thanks,
    Paul




[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux