From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932825AbZJ1IoX (ORCPT ); Wed, 28 Oct 2009 04:44:23 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932772AbZJ1Iny (ORCPT ); Wed, 28 Oct 2009 04:43:54 -0400 Received: from mail-yw0-f202.google.com ([209.85.211.202]:60692 "EHLO mail-yw0-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932708AbZJ1Inv (ORCPT ); Wed, 28 Oct 2009 04:43:51 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=lKCBm2Wj+JnFUjCXC7+RtVrAJX5+kw5GrBqkQyZxT201NqJTMvCpBASMOOfyuXnxHe eLtZM0qMOrjuWWErNGlLAALevkCUhsIis7qUrlJIeWXzQ1aIdDeNBMwEaRWAvT0cGTa0 Pa45Oy8WEUFovOTUHSQxZV5dt/NPWEL9jNsso= From: Akinobu Mita To: linux-kernel@vger.kernel.org, akpm@linux-foundation.org Cc: Akinobu Mita , Tony Luck , Fenghua Yu , linux-ia64@vger.kernel.org, linux-altix@sgi.com Subject: [PATCH 6/7] ia64: Use bitmap_find_next_zero_area Date: Wed, 28 Oct 2009 17:43:16 +0900 Message-Id: <1256719397-4258-6-git-send-email-akinobu.mita@gmail.com> X-Mailer: git-send-email 1.6.5.1 In-Reply-To: <1256719397-4258-1-git-send-email-akinobu.mita@gmail.com> References: <1256719397-4258-1-git-send-email-akinobu.mita@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Akinobu Mita Cc: Tony Luck Cc: Fenghua Yu Cc: linux-ia64@vger.kernel.org Cc: linux-altix@sgi.com --- arch/ia64/sn/pci/tioca_provider.c | 19 +++++-------------- 1 files changed, 5 insertions(+), 14 deletions(-) diff --git a/arch/ia64/sn/pci/tioca_provider.c b/arch/ia64/sn/pci/tioca_provider.c index 35b2a27..efb4545 100644 --- a/arch/ia64/sn/pci/tioca_provider.c +++ b/arch/ia64/sn/pci/tioca_provider.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -369,7 +370,7 @@ tioca_dma_d48(struct pci_dev *pdev, u64 paddr) static dma_addr_t tioca_dma_mapped(struct pci_dev *pdev, unsigned long paddr, size_t req_size) { - int i, ps, ps_shift, entry, entries, mapsize, last_entry; + int ps, ps_shift, entry, entries, mapsize; u64 xio_addr, end_xio_addr; struct tioca_common *tioca_common; struct tioca_kernel *tioca_kern; @@ -410,23 +411,13 @@ tioca_dma_mapped(struct pci_dev *pdev, unsigned long paddr, size_t req_size) map = tioca_kern->ca_pcigart_pagemap; mapsize = tioca_kern->ca_pcigart_entries; - entry = find_first_zero_bit(map, mapsize); - while (entry < mapsize) { - last_entry = find_next_bit(map, mapsize, entry); - - if (last_entry - entry >= entries) - break; - - entry = find_next_zero_bit(map, mapsize, last_entry); - } - - if (entry > mapsize) { + entry = bitmap_find_next_zero_area(map, mapsize, 0, entries, 0); + if (entry >= mapsize) { kfree(ca_dmamap); goto map_return; } - for (i = 0; i < entries; i++) - set_bit(entry + i, map); + bitmap_set(map, entry, entries); bus_addr = tioca_kern->ca_pciap_base + (entry * ps); -- 1.6.5.1