From patchwork Fri Mar 30 11:01:46 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akinobu Mita X-Patchwork-Id: 149619 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 62363B6EE6 for ; Fri, 30 Mar 2012 22:01:13 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933463Ab2C3LBM (ORCPT ); Fri, 30 Mar 2012 07:01:12 -0400 Received: from mail-pb0-f46.google.com ([209.85.160.46]:37561 "EHLO mail-pb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759426Ab2C3LBJ (ORCPT ); Fri, 30 Mar 2012 07:01:09 -0400 Received: by pbcun15 with SMTP id un15so1603185pbc.19 for ; Fri, 30 Mar 2012 04:01:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=BtMfoKO3gjjvCa9po+aMG0fkbXfAwUORmCMY0Dj6DMM=; b=S6Ly22iHDFOPOu6MwqoSAWS0QzCMYJ4kcu9SnRq6C8ei4H4ZLWo973K4By468n8Vip jwwHrwv6tH6mOf8ATQT4hJ++J+7kPbx6eoSneOvKoUgQ3fLTsTJCZYbnfvOGWx3COV1y rW/tRiMCdK9Jwd/FGslItWsiccYGql63sEoPbQwEd1wkdwANck8nYdqFzure31qlpPkm TIUwOS1ZjfwfXEtRijOntjDaBLBqzBIzM5sUogPpGSUJ6hR5lI2O8ZIoJzBWiP/1l7Lj unuHqHQzhb8WXAL9yHe0PuwRu6sB5NzKHUQ54YpT7EGARFhtMMtN7JjYWBCRblnCgbxW osiA== Received: by 10.68.220.65 with SMTP id pu1mr8888157pbc.32.1333105268455; Fri, 30 Mar 2012 04:01:08 -0700 (PDT) Received: from localhost.localdomain (p6056-adsao03yokonib2-acca.kanagawa.ocn.ne.jp. [219.165.76.56]) by mx.google.com with ESMTPS id l4sm7162989pbl.27.2012.03.30.04.01.04 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 30 Mar 2012 04:01:07 -0700 (PDT) From: Akinobu Mita To: netdev@vger.kernel.org Cc: Akinobu Mita , Matt Porter , Alexandre Bounine Subject: [PATCH] rionet: fix page allocation order of rionet_active Date: Fri, 30 Mar 2012 20:01:46 +0900 Message-Id: <1333105306-2601-1-git-send-email-akinobu.mita@gmail.com> X-Mailer: git-send-email 1.7.4.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org rionet_active is allocated from the page allocator and the allocation order is calculated on the assumption that the page size is 4KB, so it wastes memory on more than 4K page systems. Signed-off-by: Akinobu Mita Cc: Matt Porter Cc: Alexandre Bounine Cc: netdev@vger.kernel.org --- drivers/net/rionet.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c index a57f057..91d2588 100644 --- a/drivers/net/rionet.c +++ b/drivers/net/rionet.c @@ -375,8 +375,8 @@ static void rionet_remove(struct rio_dev *rdev) struct net_device *ndev = rio_get_drvdata(rdev); struct rionet_peer *peer, *tmp; - free_pages((unsigned long)rionet_active, rdev->net->hport->sys_size ? - __fls(sizeof(void *)) + 4 : 0); + free_pages((unsigned long)rionet_active, get_order(sizeof(void *) * + RIO_MAX_ROUTE_ENTRIES(rdev->net->hport->sys_size))); unregister_netdev(ndev); free_netdev(ndev); @@ -432,15 +432,16 @@ static int rionet_setup_netdev(struct rio_mport *mport, struct net_device *ndev) int rc = 0; struct rionet_private *rnet; u16 device_id; + const size_t rionet_active_bytes = sizeof(void *) * + RIO_MAX_ROUTE_ENTRIES(mport->sys_size); rionet_active = (struct rio_dev **)__get_free_pages(GFP_KERNEL, - mport->sys_size ? __fls(sizeof(void *)) + 4 : 0); + get_order(rionet_active_bytes)); if (!rionet_active) { rc = -ENOMEM; goto out; } - memset((void *)rionet_active, 0, sizeof(void *) * - RIO_MAX_ROUTE_ENTRIES(mport->sys_size)); + memset((void *)rionet_active, 0, rionet_active_bytes); /* Set up private area */ rnet = netdev_priv(ndev);