|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH 0/2] Ability to allocate DMAable pages using unpopulated-alloc
From: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>
Hello all.
The purpose of this RFC patch series is to get feedback about supporting the
allocation
of DMAable pages by Linux's unpopulated-alloc.
The unpopulated-alloc feature has been enabled on Arm since the
extended-regions support
reached upstream. With that (if, of course, we run new Xen version and Xen was
able to
allocate extended regions), we don't allocate the real RAM pages from host
memory and balloon
them out (in order to obtain physical memory space to map the guest pages into)
anymore, we use
the unpopulated pages instead. And it seems that all users I have played with
on Arm (I mean,
Xen PV and virtio backends) are happy with the pages provided by
xen_alloc_unpopulated_pages().
It is worth mentioning that these pages are not contiguous, but this wasn't an
issue so far.
There is one place, where we still steal RAM pages if user-space Xen PV backend
tries
to establish grant mapping with a need to be backed by a DMA buffer for the
sake of zero-copy
(see dma_alloc*() usage in gnttab_dma_alloc_pages()).
And, if I am not mistaken (there might be pitfalls which I am not aware of), we
could avoid
wasting real RAM pages in that particular case also by adding an ability to
allocate
unpopulated DMAable pages (which are guaranteed to be contiguous in IPA).
The benefit is quite clear here:
1. Avoid wasting real RAM pages (reducing the amount of CMA memory usable) for
allocating
physical memory space to map the granted buffer into (which can be big
enough if
we deal with Xen PV Display driver using multiple Full HD buffers)
2. Avoid superpage shattering in Xen P2M when establishing stage-2 mapping for
that
granted buffer
3. Avoid extra operations needed for the granted buffer to be properly mapped
and
unmapped such as ballooning in/out real RAM pages
Please note, there are several TODOs (described in corresponding commit
subjects),
which I will try to eliminate in next versions if we find a common ground
regarding
the approach.
Any feedback/help would be highly appreciated.
Oleksandr Tyshchenko (2):
xen/unpopulated-alloc: Introduce helpers for DMA allocations
xen/grant-table: Use unpopulated DMAable pages instead of real RAM
ones
drivers/xen/grant-table.c | 27 +++++++
drivers/xen/unpopulated-alloc.c | 167 ++++++++++++++++++++++++++++++++++++++++
include/xen/xen.h | 15 ++++
3 files changed, 209 insertions(+)
--
2.7.4
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |