Messages in this thread | | | Subject | Re: [PATCH v2 1/2] mm/vmalloc: export __vmalloc_node_range | From | Christian Borntraeger <> | Date | Wed, 9 Jun 2021 19:47:43 +0200 |
| |
On 09.06.21 18:28, Claudio Imbrenda wrote: > On Wed, 9 Jun 2021 16:59:17 +0100 > Christoph Hellwig <hch@infradead.org> wrote: > >> On Tue, Jun 08, 2021 at 08:06:17PM +0200, Claudio Imbrenda wrote: >>> The recent patches to add support for hugepage vmalloc mappings >>> added a flag for __vmalloc_node_range to allow to request small >>> pages. This flag is not accessible when calling vmalloc, the only >>> option is to call directly __vmalloc_node_range, which is not >>> exported. >>> >>> This means that a module can't vmalloc memory with small pages. >>> >>> Case in point: KVM on s390x needs to vmalloc a large area, and it >>> needs to be mapped with small pages, because of a hardware >>> limitation. >>> >>> This patch exports __vmalloc_node_range so it can be used in modules >>> too. >> >> No. I spent a lot of effort to mak sure such a low-level API is >> not exported. > > ok, but then how can we vmalloc memory with small pages from KVM?
An alternative would be to provide a vmalloc_no_huge function in generic code (similar to vmalloc_32) (or if preferred in s390 base architecture code) Something like
void *vmalloc_no_huge(unsigned long size) { return __vmalloc_node_flags(size, NUMA_NO_NODE,VM_NO_HUGE_VMAP | GFP_KERNEL | __GFP_ZERO); } EXPORT_SYMBOL(vmalloc_no_huge);
or a similar vzalloc variant.
| |