mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
To: <xen-devel@lists.xensource.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	David Vrabel <david.vrabel@citrix.com>,
	<linux-kernel@vger.kernel.org>,
	Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
	<linux-arm-kernel@lists.infradead.org>, <catalin.marinas@arm.com>
Subject: [PATCH v8 0/13] introduce GNTTABOP_cache_flush
Date: Mon, 10 Nov 2014 16:12:40 +0000	[thread overview]
Message-ID: <alpine.DEB.2.02.1411101607130.22875@kaball.uk.xensource.com> (raw)

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.


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.


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   |   56 +++++++-
 arch/arm/include/asm/xen/page.h            |    4 +
 arch/arm/xen/Makefile                      |    2 +-
 arch/arm/xen/enlighten.c                   |    5 -
 arch/arm/xen/mm.c                          |  123 +++++++++++++++++
 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, 232 insertions(+), 270 deletions(-)
 delete mode 100644 arch/arm/xen/mm32.c

             reply	other threads:[~2014-11-10 16:13 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-10 16:12 Stefano Stabellini [this message]
2014-11-10 16:13 ` [PATCH v8 01/13] xen/arm: remove handling of XENFEAT_grant_map_identity Stefano Stabellini
2014-11-10 16:13 ` [PATCH v8 02/13] xen/arm: remove outer_*_range call Stefano Stabellini
2014-11-10 16:13 ` [PATCH v8 03/13] xen/arm: if(pfn_valid(pfn)) call native dma_ops Stefano Stabellini
2014-11-10 18:41   ` Catalin Marinas
2014-11-11 11:07     ` Stefano Stabellini
2014-11-10 16:13 ` [PATCH v8 04/13] arm64: introduce is_device_dma_coherent Stefano Stabellini
2014-11-10 18:42   ` Catalin Marinas
2014-11-11 11:14     ` Stefano Stabellini
2014-11-10 16:13 ` [PATCH v8 05/13] arm: " Stefano Stabellini
2014-11-10 16:13 ` [PATCH v8 06/13] xen/arm: use is_device_dma_coherent Stefano Stabellini
2014-11-10 16:13 ` [PATCH v8 07/13] xen: add a dma_addr_t dev_addr argument to xen_dma_map_page Stefano Stabellini
2014-11-10 18:24   ` Catalin Marinas
2014-11-10 16:14 ` [PATCH v8 08/13] xen/arm: use hypercall to flush caches in map_page Stefano Stabellini
2014-11-10 18:27   ` Catalin Marinas
2014-11-10 16:14 ` [PATCH v8 09/13] xen/arm/arm64: merge xen/mm32.c into xen/mm.c Stefano Stabellini
2014-11-10 18:32   ` Catalin Marinas
2014-11-10 16:14 ` [PATCH v8 10/13] xen/arm/arm64: introduce xen_arch_need_swiotlb Stefano Stabellini
2014-11-10 18:34   ` Catalin Marinas
2014-11-11 11:52     ` Stefano Stabellini
2014-11-10 16:14 ` [PATCH v8 11/13] xen/arm: introduce GNTTABOP_cache_flush Stefano Stabellini
2014-11-10 16:14 ` [PATCH v8 12/13] swiotlb-xen: pass dev_addr to xen_dma_unmap_page and xen_dma_sync_single_for_cpu Stefano Stabellini
2014-11-10 16:14 ` [PATCH v8 13/13] swiotlb-xen: remove BUG_ON in xen_bus_to_phys Stefano Stabellini
2014-11-10 18:44 ` [PATCH v8 0/13] introduce GNTTABOP_cache_flush Catalin Marinas
2014-11-11 11:16   ` Stefano Stabellini

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=alpine.DEB.2.02.1411101607130.22875@kaball.uk.xensource.com \
    --to=stefano.stabellini@eu.citrix.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=catalin.marinas@arm.com \
    --cc=david.vrabel@citrix.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=xen-devel@lists.xensource.com \
    /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

all inboxes | Powered by JetHome®