]> git.ipfire.org Git - people/arne_f/kernel.git/commit
xtensa: make __pa work with uncached KSEG addresses
authorMax Filippov <jcmvbkbc@gmail.com>
Wed, 29 Mar 2017 22:44:47 +0000 (15:44 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 12 Apr 2017 10:41:14 +0000 (12:41 +0200)
commit6a776f6ae3f8b27a55c7d3479b7a6f13bc5e54bd
tree5758ea87eaad4c353edf9c3f679d76e25ffca1bd
parentc1dcea123655f4b905790842b04e054407559229
xtensa: make __pa work with uncached KSEG addresses

commit 2b83878dd74a7c73bedcb6600663c1c46836e8af upstream.

When __pa is applied to virtual address in uncached KSEG region the
result is incorrect. Fix it by checking if the original address is in
the uncached KSEG and adjusting the result. It looks better than masking
off bits because pfn_valid would correctly work with new __pa results
and it may be made working in noMMU case, once we get definition for
uncached memory view.

This is required for the dma_common_mmap and DMA debug code to work
correctly: they both indirectly use __pa with coherent DMA addresses.
In case of DMA debug the visible effect is false reports that an address
mapped for DMA is accessed by CPU.

Tested-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/xtensa/include/asm/page.h