]> www.infradead.org Git - users/hch/misc.git/commit
x86/xen: allow larger contiguous memory regions in PV guests
authorJuergen Gross <jgross@suse.com>
Tue, 11 Feb 2025 10:16:28 +0000 (11:16 +0100)
committerJuergen Gross <jgross@suse.com>
Thu, 13 Feb 2025 11:48:57 +0000 (12:48 +0100)
commite93ec87286bd1fd30b7389e7a387cfb259f297e3
tree4be7675a411a043b5dd5826f56ed943b43a960e6
parent85fcb57c983f423180ba6ec5d0034242da05cc54
x86/xen: allow larger contiguous memory regions in PV guests

Today a PV guest (including dom0) can create 2MB contiguous memory
regions for DMA buffers at max. This has led to problems at least
with the megaraid_sas driver, which wants to allocate a 2.3MB DMA
buffer.

The limiting factor is the frame array used to do the hypercall for
making the memory contiguous, which has 512 entries and is just a
static array in mmu_pv.c.

In order to not waste memory for non-PV guests, put the initial
frame array into .init.data section and dynamically allocate an array
from the .init_after_bootmem hook of PV guests.

In case a contiguous memory area larger than the initially supported
2MB is requested, allocate a larger buffer for the frame list. Note
that such an allocation is tried only after memory management has been
initialized properly, which is tested via a flag being set in the
.init_after_bootmem hook.

Fixes: 9f40ec84a797 ("xen/swiotlb: add alignment check for dma buffers")
Signed-off-by: Juergen Gross <jgross@suse.com>
Tested-by: Alan Robinson <Alan.Robinson@fujitsu.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
arch/x86/xen/mmu_pv.c