Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp935959imu; Wed, 9 Jan 2019 08:47:09 -0800 (PST) X-Google-Smtp-Source: ALg8bN5kacHTIABD70RvNPJcV/0bks3vOHkspnGdQUx34p0psG/Ni/eAXv5+nbOrn6SNmLIpPjws X-Received: by 2002:a17:902:7e0d:: with SMTP id b13mr6836620plm.154.1547052429135; Wed, 09 Jan 2019 08:47:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547052429; cv=none; d=google.com; s=arc-20160816; b=0lWZbFhS05HFTVkuHAiQmBRVEb2rQOOmZGzTE7429I52zQblMkiKdyomQU5307KuAb zPYw0PWAGmgLKRrcr4NjcPHH2N4ehUY9NOmco6n1lLm+H0YwT+71o90jw3Y6+hUoIwM6 YJC3s62QQH0CFVgU2+6HKQ9vhrQCtLArLZZzmnga7sAs/pwlWEdgcRFkTVzrW48aAXQL TYkjkC0SaSXiKfhJcWPOtzGqs5PfVYQqXUojedKbvjN1X2Jjq9IFyH0xP21MVtfamHH2 /F/a9sVATiOj1FeEKxDD5yiM4u1kZEOYZSlcxCMxlelsHZ1bzUwuDDQt4aTYx8DuHGDD jIxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:from; bh=hrxtyRmtbXqzCLozOcPVEDaxh/hePTam7Z6TNNXN3T0=; b=McYmiDUaTqn5y8c3eMzKDe8wg0XypLwZzKHxG6mSJtv69+7wzgtUSfa7mM5mlhZ7Tt D6zKQpze3EGJd1uNhWEGjj/7lEQGU/3VzKrxzGj87MaMugNI0s4Jt0Q+6h+yT5/JCOxK rdYsd3s8CL7X+qrJv7UIkEZl1ZKgduURlr9c6JPWiFm97zly6j4cM+9jP39pF5ROv9PG yYZOdQ/dtGO0iHalHh0Ylxd49eT3sFZB2nFwIKJ+TfxJ3s8xIKCcZhm9YRkq8YWXTU5P yfNMu103dD1SEMbmSFLyXgL4biFKAWgXexrfan1PHCVaIq+tzs6oDg4by88K3+za7fiL H3oA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 37si14966980plq.210.2019.01.09.08.46.53; Wed, 09 Jan 2019 08:47:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726566AbfAIQki (ORCPT + 99 others); Wed, 9 Jan 2019 11:40:38 -0500 Received: from mx2.suse.de ([195.135.220.15]:57510 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726546AbfAIQki (ORCPT ); Wed, 9 Jan 2019 11:40:38 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 2F557AF58; Wed, 9 Jan 2019 16:40:37 +0000 (UTC) From: Roman Penyaev Cc: Roman Penyaev , Andrew Morton , Michal Hocko , Andrey Ryabinin , Joe Perches , "Luis R. Rodriguez" , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 01/15] mm/vmalloc: add new 'alignment' field for vm_struct structure Date: Wed, 9 Jan 2019 17:40:11 +0100 Message-Id: <20190109164025.24554-2-rpenyaev@suse.de> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190109164025.24554-1-rpenyaev@suse.de> References: <20190109164025.24554-1-rpenyaev@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I need a new alignment field for vm area in order to reallocate previously allocated area with the same alignment. Patch for a new vrealloc() call will follow and this new call I want to keep as simple as possible, thus not to provide dozens of variants, like vrealloc_user(), which cares about alignment. Current changes are just preparations. Worth to mention, that on archs were unsigned long is 64 bit this new field does not bloat vm_struct, because originally there was a padding between nr_pages and phys_addr. Signed-off-by: Roman Penyaev Cc: Andrew Morton Cc: Michal Hocko Cc: Andrey Ryabinin Cc: Joe Perches Cc: "Luis R. Rodriguez" Cc: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org --- include/linux/vmalloc.h | 1 + mm/vmalloc.c | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index 398e9c95cd61..78210aa0bb43 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h @@ -38,6 +38,7 @@ struct vm_struct { unsigned long flags; struct page **pages; unsigned int nr_pages; + unsigned int alignment; phys_addr_t phys_addr; const void *caller; }; diff --git a/mm/vmalloc.c b/mm/vmalloc.c index e83961767dc1..4851b4a67f55 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -1347,12 +1347,14 @@ int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page **pages) EXPORT_SYMBOL_GPL(map_vm_area); static void setup_vmalloc_vm(struct vm_struct *vm, struct vmap_area *va, - unsigned long flags, const void *caller) + unsigned int align, unsigned long flags, + const void *caller) { spin_lock(&vmap_area_lock); vm->flags = flags; vm->addr = (void *)va->va_start; vm->size = va->va_end - va->va_start; + vm->alignment = align; vm->caller = caller; va->vm = vm; va->flags |= VM_VM_AREA; @@ -1399,7 +1401,7 @@ static struct vm_struct *__get_vm_area_node(unsigned long size, return NULL; } - setup_vmalloc_vm(area, va, flags, caller); + setup_vmalloc_vm(area, va, align, flags, caller); return area; } @@ -2601,8 +2603,8 @@ struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets, /* insert all vm's */ for (area = 0; area < nr_vms; area++) - setup_vmalloc_vm(vms[area], vas[area], VM_ALLOC, - pcpu_get_vm_areas); + setup_vmalloc_vm(vms[area], vas[area], align, + VM_ALLOC, pcpu_get_vm_areas); kfree(vas); return vms; -- 2.19.1