From: julien.grall@linaro.org (Julien Grall)
To: linux-arm-kernel@lists.infradead.org
Subject: [Xen-devel] [PATCH v9 0/13] introduce GNTTABOP_cache_flush
Date: Wed, 12 Nov 2014 14:22:15 +0000 [thread overview]
Message-ID: <54636D17.9080008@linaro.org> (raw)
In-Reply-To: <alpine.DEB.2.02.1411121130020.26318@kaball.uk.xensource.com>
Hi,
On 11/12/2014 11:39 AM, Stefano Stabellini wrote:
> Hi all,
> this patch series introduces support for GNTTABOP_cache_flush to perform
> cache maintenance operation on foreign pages and reverts the current
> code based on XENFEAT_grant_map_identity.
>
> It also provides a very slow fallback by bouncing on the swiotlb buffer,
> in case the hypercall is not available.
>
> v7 introduces a flag named dma_coherent in dev_archdata and an accessor
> function named is_device_dma_coherent in asm/dma-mapping.h under arm and
> arm64.
I've been tested this series on non-LPAE kernel and don't see crash anymore:
Tested-by: Julien Grall <julien.grall@linaro.org>
Regards,
> Changes in v9:
> - remove BUG_ON from the loop in dma_cache_maint;
> - add static inline for xen_dma_unmap_page, xen_dma_sync_single_for_cpu,
> xen_dma_sync_single_for_device;
> - map_page is always present, don't check whether it's implemented;
> - use bool local for clarity;
> - add an in-code comment.
>
> Changes in v8:
> - remove code duplication in mm32.c by moving the pfn_valid check in
> page-coherent.h;
> - add a dma_addr_t dev_addr argument to xen_dma_map_page;
> - use hypercall to flush caches in map_page;
> - pass dev_addr to xen_dma_unmap_page and xen_dma_sync_single_for_cpu;
> - remove BUG_ON in xen_bus_to_phys.
>
> Changes in v7:
> - rebased on 3.18-rc1;
> - rename is_dma_coherent to is_device_dma_coherent and move it to
> asm/dma-mapping.h on arm and arm64;
> - introduce a dma_coherent flag on arm and arm64;
> - set the flags from set_arch_dma_coherent_ops.
>
> Changes in v6:
> - rename xen_is_dma_coherent to is_dma_coherent;
> - use of_dma_is_coherent to detect the dma coherency of a device;
> - remove arch/arm64/include/asm/xen/page-coherent.h, include
> ../../arm/include/asm/xen/page-coherent.h instead;
> - fix indentation.
>
> Changes in v5:
> - introduce xen_is_dma_coherent as a xen specific function;
> - call xen_is_dma_coherent instead of is_dma_coherent;
> - introduce xen_is_dma_coherent to
> arch/arm64/include/asm/xen/page-coherent.h;
> - do not remove arch/arm64/include/asm/xen/page-coherent.h, add
> the missing dma_ops calls from it;
> - fix indentation;
> - rename hypercall_flush to hypercall_cflush;
> - remove spurious change.
>
> Changes in v4:
> - remove outer_*_range call;
> - introduce is_dma_coherent;
> - use is_dma_coherent in arch/arm/xen/mm32.c;
> - merge xen/mm32.c into xen/mm.c;
> - xen/arm/arm64: introduce xen_arch_need_swiotlb;
> - avoid bouncing dma map operations that involve foreign grants and
> non-coherent devices if GNTTABOP_cache_flush is provided by Xen.
>
> Changes in v3:
> - fix the cache maintenance op call to match what Linux does natively;
> - update the hypercall interface to match Xen.
>
> Changes in v2:
> - remove the definition of XENFEAT_grant_map_identity;
> - update the hypercall interface to match Xen;
> - call the interface on a single page at a time.
>
>
>
> git://git.kernel.org/pub/scm/linux/kernel/git/sstabellini/xen.git cache_flush_v9
>
> Stefano Stabellini (13):
> xen/arm: remove handling of XENFEAT_grant_map_identity
> xen/arm: remove outer_*_range call
> xen/arm: if(pfn_valid(pfn)) call native dma_ops
> arm64: introduce is_device_dma_coherent
> arm: introduce is_device_dma_coherent
> xen/arm: use is_device_dma_coherent
> xen: add a dma_addr_t dev_addr argument to xen_dma_map_page
> xen/arm: use hypercall to flush caches in map_page
> xen/arm/arm64: merge xen/mm32.c into xen/mm.c
> xen/arm/arm64: introduce xen_arch_need_swiotlb
> xen/arm: introduce GNTTABOP_cache_flush
> swiotlb-xen: pass dev_addr to xen_dma_unmap_page and xen_dma_sync_single_for_cpu
> swiotlb-xen: remove BUG_ON in xen_bus_to_phys
>
> arch/arm/include/asm/device.h | 1 +
> arch/arm/include/asm/dma-mapping.h | 6 +
> arch/arm/include/asm/xen/page-coherent.h | 66 +++++++--
> arch/arm/include/asm/xen/page.h | 4 +
> arch/arm/xen/Makefile | 2 +-
> arch/arm/xen/enlighten.c | 5 -
> arch/arm/xen/mm.c | 121 +++++++++++++++++
> arch/arm/xen/mm32.c | 202 ----------------------------
> arch/arm64/include/asm/device.h | 1 +
> arch/arm64/include/asm/dma-mapping.h | 6 +
> arch/arm64/include/asm/xen/page-coherent.h | 44 +-----
> arch/x86/include/asm/xen/page-coherent.h | 4 +-
> arch/x86/include/asm/xen/page.h | 7 +
> drivers/xen/swiotlb-xen.c | 19 +--
> include/xen/interface/features.h | 3 -
> include/xen/interface/grant_table.h | 19 +++
> 16 files changed, 237 insertions(+), 273 deletions(-)
> delete mode 100644 arch/arm/xen/mm32.c
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel at lists.xen.org
> http://lists.xen.org/xen-devel
>
--
Julien Grall
prev parent reply other threads:[~2014-11-12 14:22 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-12 11:39 [PATCH v9 0/13] introduce GNTTABOP_cache_flush Stefano Stabellini
2014-11-12 11:40 ` [PATCH v9 01/13] xen/arm: remove handling of XENFEAT_grant_map_identity Stefano Stabellini
2014-11-12 11:40 ` [PATCH v9 02/13] xen/arm: remove outer_*_range call Stefano Stabellini
2014-11-12 11:40 ` [PATCH v9 03/13] xen/arm: if(pfn_valid(pfn)) call native dma_ops Stefano Stabellini
2014-11-12 11:40 ` [PATCH v9 04/13] arm64: introduce is_device_dma_coherent Stefano Stabellini
2014-11-12 11:40 ` [PATCH v9 05/13] arm: " Stefano Stabellini
2014-11-14 11:59 ` Stefano Stabellini
2014-11-18 16:49 ` Stefano Stabellini
2014-11-20 0:07 ` Russell King - ARM Linux
2014-11-20 10:39 ` Stefano Stabellini
2014-11-21 15:29 ` Russell King - ARM Linux
2014-11-12 11:40 ` [PATCH v9 06/13] xen/arm: use is_device_dma_coherent Stefano Stabellini
2014-11-12 11:40 ` [PATCH v9 07/13] xen: add a dma_addr_t dev_addr argument to xen_dma_map_page Stefano Stabellini
2014-11-12 11:40 ` [PATCH v9 08/13] xen/arm: use hypercall to flush caches in map_page Stefano Stabellini
2014-11-12 11:40 ` [PATCH v9 09/13] xen/arm/arm64: merge xen/mm32.c into xen/mm.c Stefano Stabellini
2014-11-12 11:40 ` [PATCH v9 10/13] xen/arm/arm64: introduce xen_arch_need_swiotlb Stefano Stabellini
2014-11-21 16:31 ` Stefano Stabellini
2014-11-21 16:48 ` Konrad Rzeszutek Wilk
2014-11-12 11:40 ` [PATCH v9 11/13] xen/arm: introduce GNTTABOP_cache_flush Stefano Stabellini
2014-11-12 11:40 ` [PATCH v9 12/13] swiotlb-xen: pass dev_addr to xen_dma_unmap_page and xen_dma_sync_single_for_cpu Stefano Stabellini
2014-11-19 21:07 ` Konrad Rzeszutek Wilk
2014-11-20 10:33 ` Stefano Stabellini
2014-11-20 10:47 ` Stefano Stabellini
2014-11-20 20:30 ` Konrad Rzeszutek Wilk
2014-11-12 11:40 ` [PATCH v9 13/13] swiotlb-xen: remove BUG_ON in xen_bus_to_phys Stefano Stabellini
2014-11-19 21:06 ` Konrad Rzeszutek Wilk
2014-11-12 14:22 ` Julien Grall [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54636D17.9080008@linaro.org \
--to=julien.grall@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).