Skip to content

xen/arm: fix "xen_add_mach_to_phys_entry: cannot add" problem

Konrad Rzeszutek Wilk linux-arm-kernel xen-devel 2 versions – New

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v2 Latest posting 2/20 of 3 patches 0 repliesNew
  2. v2 posting 1/20 of 3 patches 0 repliesSuperseded

Patches in v2 posting 2/2 No applies recorded yet

None of the 3 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.

Read the v2 thread

Cover letter [Xen-devel] [PATCH v2 0/3] xen/arm: fix "xen_add_mach_to_phys_entry: cannot add" problem
Quoted 15 lines · Stefano Stabellini
Quoted 14 lines · Konrad Rzeszutek Wilk
Quoted 12 lines · Stefano Stabellini

Hi all,
Xen support in Linux for ARM and ARM64 suffers from lack of support for multiple mfn to pfn mappings: whenever a frontend grants the same page multiple times to the backend, the mfn to pfn accounting in arch/arm/xen/p2m.c fails. The issue has become critical since v3.15, when xen-netfront/xen-netback switched from grant copies to grant mappings, therefore causing the issue to happen much more often.

Fixing the mfn to pfn accounting in p2m.c is difficult and expensive, therefore we are looking for alternative solutions. One idea is avoiding mfn to pfn conversions altogether. The only code path that needs them is swiotlb-xen:unmap_page (and single_for_cpu and single_for_device).

Quoted 6 lines
Quoted 3 lines

I seem to have lost track of that patch? Or is it in now in the kernel?

Could you include the git commit id or URL for it in the cover letter please?

I take that you are asking the id of the commit that introduced the function calls that need mfn to pfn conversions in swiotlb-xen, right?

Earlier you said: "avoiding mfn to pfn conversions. The only code path that needs them is .." So I suspected (it seems wrongly) that there was some SWIOTLB patch that would do this and I had missed it.

But it seems that this soo fresh you hadn't yet posted the SWIOTLB changes to use this new API - so I hadn't missed them :-)

Quoted 49 lines

The commit that introduced them is:

commit 6cf054636261ca5c88f3c2984058d51f927b8a2e

Author: Stefano Stabellini <[email protected]>
Date:   Fri Oct 25 10:33:25 2013 +0000

swiotlb-xen: use xen_dma_map/unmap_page, xen_dma_sync_single_for_cpu/device

xen_dma_unmap_page on x86 doesn't do anything but on ARM performs important cache invalidate operations for non-dma-coherent devices.

Quoted 36 lines

Thanks

Quoted 34 lines

To avoid mfn to pfn conversions we rely on a second p2m mapping done by Xen (a separate patch series will be sent for Xen). In Linux we use it to perform the cache maintenance operations without mfns conversions.

Changes in v2:
- introduce XENFEAT_grant_map_11;
- remeber the ptep corresponding to scratch pages so that we don't need to calculate it again every time;
- do not acutally unmap the page on xen_mm32_unmap;
- properly account preempt_enable/disable;
- do not check for mfn in xen_add_phys_to_mach_entry.

Stefano Stabellini (3):
xen/arm: introduce XENFEAT_grant_map_11 xen/arm: reimplement xen_dma_unmap_page & friends xen/arm: remove mach_to_phys rbtree

 arch/arm/include/asm/xen/page-coherent.h |   25 ++--
 arch/arm/include/asm/xen/page.h          |    9 --
 arch/arm/xen/Makefile                    |    2 +-
 arch/arm/xen/enlighten.c                 |    6 +
 arch/arm/xen/mm32.c                      |  202 ++++++++++++++++++++++++++++++
 arch/arm/xen/p2m.c                       |   66 +---------
 include/xen/interface/features.h         |    3 +
 7 files changed, 220 insertions(+), 93 deletions(-)
 create mode 100644 arch/arm/xen/mm32.c

_______________________________________________
Xen-devel mailing list
Xen-devel at lists.xen.org
http://lists.xen.org/xen-devel