Re: [kvm-unit-tests PATCH v2 1/4] memory: allocation in low memory

Cornelia Huck
2020-09-28T15:32:05Z

On Mon, 28 Sep 2020 16:23:34 +0200
Pierre Morel <pmorel@linux.ibm.com> wrote:

> Some architectures need allocations to be done under a
> specific address limit to allow DMA from I/O.
>
> We propose here a very simple page allocator to get
> pages allocated under this specific limit.
>
> The DMA page allocator will only use part of the available memory
> under the DMA address limit to let room for the standard allocator.
>
> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> ---
> lib/alloc_dma_page.c | 57 ++++++++++++++++++++++++++++++++++++++++++++
> lib/alloc_dma_page.h | 24 +++++++++++++++++++
> lib/s390x/sclp.c | 2 ++
> s390x/Makefile | 1 +
> 4 files changed, 84 insertions(+)
> create mode 100644 lib/alloc_dma_page.c
> create mode 100644 lib/alloc_dma_page.h

(...)

> diff --git a/lib/alloc_dma_page.h b/lib/alloc_dma_page.h
> new file mode 100644
> index 0000000..85e1d2f
> --- /dev/null
> +++ b/lib/alloc_dma_page.h
> @@ -0,0 +1,24 @@
> +/*
> + * Page allocator for DMA definitions
> + *
> + * Copyright (c) IBM, Corp. 2020
> + *
> + * Authors:
> + * Pierre Morel <pmorel@linux.ibm.com>
> + *
> + * This code is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU Library General Public License version 2.
> + */
> +#ifndef _ALLOC_DMA_PAGE_H_
> +#define _ALLOC_DMA_PAGE_H_
> +
> +#include <asm/page.h>
> +
> +void put_dma_page(void *dma_page);
> +void *get_dma_page(void);
> +phys_addr_t dma_page_alloc_init(phys_addr_t start_pfn, phys_addr_t nb_pages);
> +
> +#define DMA_MAX_PFN (0x80000000 >> PAGE_SHIFT)
> +#define DMA_ALLOC_RATIO 8

Hm, shouldn't the architecture be able to decide where a dma page can
be located? Or am I misunderstanding?

> +
> +#endif /* _ALLOC_DMA_PAGE_H_ */
(...)