Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752092AbdIUJAa (ORCPT ); Thu, 21 Sep 2017 05:00:30 -0400 Received: from mail-by2nam01on0064.outbound.protection.outlook.com ([104.47.34.64]:22064 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751840AbdIUJAY (ORCPT ); Thu, 21 Sep 2017 05:00:24 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ganapatrao.Kulkarni@cavium.com; From: Ganapatrao Kulkarni To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux-foundation.org, linux-mm@kvack.org Cc: Will.Deacon@arm.com, robin.murphy@arm.com, lorenzo.pieralisi@arm.com, hanjun.guo@linaro.org, joro@8bytes.org, vbabka@suse.cz, akpm@linux-foundation.org, mhocko@suse.com, Tomasz.Nowicki@cavium.com, Robert.Richter@cavium.com, jnair@caviumnetworks.com, gklkml16@gmail.com Subject: [PATCH 4/4] iommu/dma, numa: Use NUMA aware memory allocations in __iommu_dma_alloc_pages Date: Thu, 21 Sep 2017 14:29:22 +0530 Message-Id: <20170921085922.11659-5-ganapatrao.kulkarni@cavium.com> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170921085922.11659-1-ganapatrao.kulkarni@cavium.com> References: <20170921085922.11659-1-ganapatrao.kulkarni@cavium.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: PN1PR01CA0111.INDPRD01.PROD.OUTLOOK.COM (10.174.144.27) To CO2PR07MB2566.namprd07.prod.outlook.com (10.166.201.17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f8ec80db-16cb-4cfb-42a3-08d500cf310a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:CO2PR07MB2566; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2566;3:clj/Wgbg7u+xbv/RWRJtk+TESp6A0nNkZSvZBQISuq5kz8NwT7TCY/keY5lUD12N91l1wGrUuGzVTv1AdOf3yA0emXzEfUdIGffQ6Jv2JXSv2Rz7QeJLkxHSGx9cWso4PZ0uG4Y83ny6e2j7TEY3lASsGVbBkBkZXnxr6LsWMM1UfGGsetStfvZQM0UBqlPqigfNsNrQtmfjvNVTj7X5K6rImXl99Vk7qhWKkYag/IX4U5J/mOY23d+sBEzjABZb;25:m0cklJ/PWqHAhj02jiPpqAEbuY9tY4YdW8spq2PLdRr7L472AzlmtGZDDraGcP6tU/16S4ahNcgazYbUK3O2Mmb+q6xl0TDUu31jlFPK8dYtvAaSIm+AEniLGGJdZaVpm84N3k03X0PoJKZHBFD01uTSSlR1Nt8/AjW1rvYLPyQr4maKDu0XoiWCFPMa68ASYcepMLLkyIEmPO/dy9D3hW1vzgdALtEEz+mO1c6whcZldQ7rR7NEN4S75sXTGIk4v63hlVMj390UKGtBVhlA3HpkMtAr9AgpZtcdmZj38HhoPUPH28fIHdobPkESlP5l2yn+DGYa1G7LSCJUlYuleg==;31:QQR49iJh1Foa7cV2BA987NeUlkD2HXLlinMTDuvFLXPYTJOgbr83E7X11zmrVk7Ewoc6GmaqX+UFyTO9+I9gdpEzMRyTeBX8cNMRHBvgkTqwTXSZWgmU0rQ/GjvIZbV1nHkmmP70Xwqto112jEHbTt5oxsod9Lv7mPRscSvlxn3J/FFXMgZzUcLUUnZ0VjdP/CloG7B8eBDqr7Tcxhhc+Drxbdx02ipMVGyUaSgqAJI= X-MS-TrafficTypeDiagnostic: CO2PR07MB2566: X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2566;20:xqJZ7+cYmEvtXUwNJKRAl0FX/fLdxt3PvSpWENQmJxqzCjwnCw/VI6RSxJCzaPkgzrJZbsYvO3ww+tiLhj/b8FCuWuhwgfkMzx8EnlIc2vTpvfwVllY76xgIIG+m5BnBbYFDRtcPDu3KgXpoIuflN0N5RWgkEljVF560RiZwozNn9FDBls4yKKpCamYUklTSVXJ5qa3PxAJEJYcLAoQpTgxoZPCz2n58m11FIW9m/IUxkEg3wNlNOdV9wBayWbTMjdhV03TwElXhgfMOAexPp4A8MIXtGp5C7Ad1otQH6+O9oci3JfgVvNyLAg1ZFtB2FAnJ2rDAEfINSBaG43zwWcCLE/JlLdT8b9M+TM9XubdA3Q0ARUS3ZXHe+2juSZyc7UvH4LZc+wIeVUzwXIynhZoJo1/owUbs3tQf6se6MQzPt6wS2EauTi/jNwQT+CUj5c8ukbR0lnEQsAEXQn5OBAUHTtZNvSziq++oqJchgzGPYBJWjR0jZ+T9MDspe2xB;4:PDIJfRjhe0BOUlM9+SYvzwCiyj1WaPnbgNaf2JRUZbYzPxaR83S1ZDemEQPdnp0GufuapkUKBDdedokbdqutzBEWqXtot07CWAgTKOuXgATtOBLoWoK1EmwSMxC/Q6U90MpyMblUV1faMfruvYF/XXcDReD3Ki2mu3k9YdfzygE7sJz7d16f0VgXF71N7akAdRn4UbA3Nr3XpZqLMlFc3MlgIpC7zY09oMJYNpDHXHgSb8M6nz8pWlx+xRp97yXG X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3002001)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123562025)(20161123560025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CO2PR07MB2566;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CO2PR07MB2566; X-Forefront-PRVS: 04371797A5 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(376002)(346002)(199003)(189002)(1076002)(3846002)(6116002)(6486002)(316002)(68736007)(6506006)(16526017)(25786009)(97736004)(305945005)(7736002)(36756003)(6666003)(16586007)(5003940100001)(4326008)(2950100002)(5009440100003)(86362001)(53936002)(76176999)(50986999)(189998001)(39060400002)(66066001)(50226002)(478600001)(8936002)(106356001)(105586002)(33646002)(7416002)(2906002)(47776003)(8676002)(101416001)(81166006)(6512007)(81156014)(5660300001)(72206003)(50466002)(48376002);DIR:OUT;SFP:1101;SCL:1;SRVR:CO2PR07MB2566;H:mypc.cavium.com.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO2PR07MB2566;23:xkY7nC2IDnyKfw5d2C1rnPufck9T18sbNnq/2bD64?= =?us-ascii?Q?yx2b2i7AQA2DaH8k1JM4IuObmbH/lbuChMkm/Xc0mRXp8i1Z8gOdPQDVxugi?= =?us-ascii?Q?vL95RpUTQY1Hmaap5hPmY4Vwy+iSUFExDjwPUtJ7aEJplioVnQZbBjWn6gVN?= =?us-ascii?Q?ClcTpBMFZe76zMooqHp1FhN9yx4k/Fb3VWAcoZ8F/7tORrrT1VLNn2y0vWic?= =?us-ascii?Q?W3hNNxUajzck40f1wvHp2e0DrQPdPkiiwrmYMAUyEyF/H+y19njfCa8Htmm+?= =?us-ascii?Q?sJNu6Pj9UzMpziAz8oE8wXAvU5lxZUws0htKkrEm4Z1epB8nSo1BtHZBNDD6?= =?us-ascii?Q?Te7kUR0htGo6xhLykOvVWvLSrestJUGO1EfPeRE/zBziS2+L4QL5vEfDbUQM?= =?us-ascii?Q?VDniKK2zYrFZPsAagUf0F0Xv+3VoyFsSfWG25KOZEPynpxwz/RFkmUwWmNKP?= =?us-ascii?Q?MJW6uxlkdgZ2jXg/lTs5l2ul85x2/SNDDT+uc4myjsC2SNjI0mGf+vaTAxIj?= =?us-ascii?Q?C3yR2nRW1SLmnCeIM22UZsHXPX7i7+kzwUTofkZkDCAtdW2xqobubm5kcy0Z?= =?us-ascii?Q?tMYzGAPcnkUreVuxWx6aQt2RcXzC009aPRrFT6XfQRRzOBcdXvmUInHjjnVy?= =?us-ascii?Q?BCTVnXWFFXnkYQfiVTbUh0D7MkxJPRrbzHN8VQ3l1PizisngC7vGtmKWmNSB?= =?us-ascii?Q?vr1IgHtOf4kEC9tjwJVSLqmGXoyOC0FRpxoVyk+IkbDZoitXLIJOz4Aic0ou?= =?us-ascii?Q?67UV3J1xLZ2tWvotnNFHNv04AvYHAvldtc5uG5eq/5Li9h2sv0cuMvCBW2j2?= =?us-ascii?Q?G4OL2J6KRJvP8OUUKotuCAZGqamtLxULwH+9Uy26OJImKvy2ufG0f0FDr4F4?= =?us-ascii?Q?0MBMukz65awKIU8yLcp7lvVnRChZrW423uwkU5NES2lJCMnaXYEkFdPJI0hL?= =?us-ascii?Q?7tS4BHnxDV0TxPUDlZkbEO8QhphKkq/xtJdjZHCjeoZ7EihlpNaALLIoA8by?= =?us-ascii?Q?ZSJORlko+NRydykOiSPfR1+rjfhh9jbVk8nQoG6A5BuXzfJfNZtE71gHBWNk?= =?us-ascii?Q?vp6fw1pycs9+guz+VWRQlzxrq0jOVKqHHmS/iuBl5PODk2yPSc7zhubT0p0n?= =?us-ascii?Q?Lom6l9Kx9dhzQuKKmBZzMPdAg4p3S5ubEC8+B09zR0vBcTwW9CO4Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2566;6:Wnxm0SMw8RozFXpdhn2GbEOowrju16CvI74I+EXvP84T9jOa0B/sxisS3DEjZtYxTqmgyuS0YMDGk9WMgY1QuA+NodAH9TjPpo8kV3izNCEIpNNZJnzAYXYPC+cG6hgvmamfFA7wHftXJzRiRQX+1d/nAqvOvoIJCjVxV5sthl3gJFOQJgYfyo70Aj22+fYLb+J8gLGvumfWLJP9j3DuPqj1x/cFianehLNGP1UZAES9CW0rHIZfw0sN+35oJcXvQHJBsakhs/WXL5/fFYslcZ8pwi53ZDO1Hm1GhepdK719xf9iog7xP/SgQndmbaObTB1w6wYHUIEePu/BcvAybQ==;5:d4Q8AUVkwaS8QcMqhCygJqqZp6UwbxvHRi7M3Oq0mzcrTbBL9VaMOkH2pKqOpKgqrKEmFzg8pX53+VOaF6XGjRL2wZhLAbb3CLOwzsCf/LdU/Iz758WISRhgtsmS8Iq6HJRMSed3khumzLg7HBGakA==;24:hisxccllOyR/wAsMkYx/OLYfypyPUeyU+IHgsY2LIvjaiLw+M9AJFm34axAFKARUOKP6znvsDOO20ELdSf2H99B2sY+YukAaYz9HtaHlHP8=;7:nOzFQMtE2jq4BeEEyiBSPoznZVOTKMA1fNz9YZOZuBj0LftXGlRRvFQ8ZP86281xIIHf4GYhyACtdKJwwY60an82ECNfBfm9KZ76nL1qcreptswlncelRRUIUMDgTDZnfTn4RNcI/aKOgk40HZ6f8Epvcj/YuvonoObQf0Hmu+qvzni4gT52JkVNtnku6toB4cZbyWrK8DrrqvxNJheV8bnhh616Zh5U6KwOsb+FhBk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Sep 2017 09:00:17.6122 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR07MB2566 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2020 Lines: 62 Change function __iommu_dma_alloc_pages to allocate memory/pages for dma from respective device numa node. Signed-off-by: Ganapatrao Kulkarni --- drivers/iommu/dma-iommu.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index 9d1cebe..0626b58 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -428,20 +428,21 @@ static void __iommu_dma_free_pages(struct page **pages, int count) kvfree(pages); } -static struct page **__iommu_dma_alloc_pages(unsigned int count, - unsigned long order_mask, gfp_t gfp) +static struct page **__iommu_dma_alloc_pages(struct device *dev, + unsigned int count, unsigned long order_mask, gfp_t gfp) { struct page **pages; unsigned int i = 0, array_size = count * sizeof(*pages); + int numa_node = dev_to_node(dev); order_mask &= (2U << MAX_ORDER) - 1; if (!order_mask) return NULL; if (array_size <= PAGE_SIZE) - pages = kzalloc(array_size, GFP_KERNEL); + pages = kzalloc_node(array_size, GFP_KERNEL, numa_node); else - pages = vzalloc(array_size); + pages = vzalloc_node(array_size, numa_node); if (!pages) return NULL; @@ -462,8 +463,9 @@ static struct page **__iommu_dma_alloc_pages(unsigned int count, unsigned int order = __fls(order_mask); order_size = 1U << order; - page = alloc_pages((order_mask - order_size) ? - gfp | __GFP_NORETRY : gfp, order); + page = alloc_pages_node(numa_node, + (order_mask - order_size) ? + gfp | __GFP_NORETRY : gfp, order); if (!page) continue; if (!order) @@ -548,7 +550,8 @@ struct page **iommu_dma_alloc(struct device *dev, size_t size, gfp_t gfp, alloc_sizes = min_size; count = PAGE_ALIGN(size) >> PAGE_SHIFT; - pages = __iommu_dma_alloc_pages(count, alloc_sizes >> PAGE_SHIFT, gfp); + pages = __iommu_dma_alloc_pages(dev, count, alloc_sizes >> PAGE_SHIFT, + gfp); if (!pages) return NULL; -- 2.9.4