From: Joerg Roedel <joerg.roedel@amd.com>
To: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: mingo@elte.hu, muli@il.ibm.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] export iommu_area_reserve helper funciton
Date: Mon, 22 Sep 2008 16:08:18 +0200 [thread overview]
Message-ID: <20080922140818.GZ24392@amd.com> (raw)
In-Reply-To: <20080922223353K.fujita.tomonori@lab.ntt.co.jp>
On Mon, Sep 22, 2008 at 10:35:07PM +0900, FUJITA Tomonori wrote:
> This is against tip/x86/iommu
>
> =
> From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> Subject: [PATCH] export iommu_area_reserve helper funciton
>
> x86 has set_bit_string() that does the exact same thing that
> set_bit_area() in lib/iommu-helper.c does.
>
> This patch exports set_bit_area() in lib/iommu-helper.c as
> iommu_area_reserve(), converts GART, Calgary, and AMD IOMMU to use it.
>
> x86's set_bit_string() is used by only the above IOMMUs so this patch
> also removes set_bit_string. We can put it back easily when it
> necessary.
>
> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Acked-by: Joerg Roedel <joerg.roedel@amd.com>
> ---
> arch/x86/kernel/amd_iommu.c | 2 +-
> arch/x86/kernel/pci-calgary_64.c | 2 +-
> arch/x86/kernel/pci-gart_64.c | 2 +-
> include/asm-x86/bitops.h | 10 ----------
> include/linux/iommu-helper.h | 1 +
> lib/iommu-helper.c | 5 ++---
> 6 files changed, 6 insertions(+), 16 deletions(-)
>
> diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
> index 853b614..0ad59b0 100644
> --- a/arch/x86/kernel/amd_iommu.c
> +++ b/arch/x86/kernel/amd_iommu.c
> @@ -582,7 +582,7 @@ static void dma_ops_reserve_addresses(struct dma_ops_domain *dom,
> if (start_page + pages > last_page)
> pages = last_page - start_page;
>
> - set_bit_string(dom->bitmap, start_page, pages);
> + iommu_area_reserve(dom->bitmap, start_page, pages);
> }
>
> static void dma_ops_free_pagetable(struct dma_ops_domain *dma_dom)
> diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c
> index fe7695e..080d1d2 100644
> --- a/arch/x86/kernel/pci-calgary_64.c
> +++ b/arch/x86/kernel/pci-calgary_64.c
> @@ -261,7 +261,7 @@ static void iommu_range_reserve(struct iommu_table *tbl,
> badbit, tbl, start_addr, npages);
> }
>
> - set_bit_string(tbl->it_map, index, npages);
> + iommu_area_reserve(tbl->it_map, index, npages);
>
> spin_unlock_irqrestore(&tbl->it_lock, flags);
> }
> diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c
> index 508ef47..3dcb1ad 100644
> --- a/arch/x86/kernel/pci-gart_64.c
> +++ b/arch/x86/kernel/pci-gart_64.c
> @@ -827,7 +827,7 @@ void __init gart_iommu_init(void)
> * Out of IOMMU space handling.
> * Reserve some invalid pages at the beginning of the GART.
> */
> - set_bit_string(iommu_gart_bitmap, 0, EMERGENCY_PAGES);
> + iommu_area_reserve(iommu_gart_bitmap, 0, EMERGENCY_PAGES);
>
> agp_memory_reserved = iommu_size;
> printk(KERN_INFO
> diff --git a/include/asm-x86/bitops.h b/include/asm-x86/bitops.h
> index 61989b9..451a747 100644
> --- a/include/asm-x86/bitops.h
> +++ b/include/asm-x86/bitops.h
> @@ -424,16 +424,6 @@ static inline int fls(int x)
>
> #undef ADDR
>
> -static inline void set_bit_string(unsigned long *bitmap,
> - unsigned long i, int len)
> -{
> - unsigned long end = i + len;
> - while (i < end) {
> - __set_bit(i, bitmap);
> - i++;
> - }
> -}
> -
> #ifdef __KERNEL__
>
> #include <asm-generic/bitops/sched.h>
> diff --git a/include/linux/iommu-helper.h b/include/linux/iommu-helper.h
> index 58f4110..786539e 100644
> --- a/include/linux/iommu-helper.h
> +++ b/include/linux/iommu-helper.h
> @@ -11,6 +11,7 @@ static inline unsigned long iommu_device_max_index(unsigned long size,
> extern int iommu_is_span_boundary(unsigned int index, unsigned int nr,
> unsigned long shift,
> unsigned long boundary_size);
> +extern void iommu_area_reserve(unsigned long *map, unsigned long i, int len);
> extern unsigned long iommu_area_alloc(unsigned long *map, unsigned long size,
> unsigned long start, unsigned int nr,
> unsigned long shift,
> diff --git a/lib/iommu-helper.c b/lib/iommu-helper.c
> index a3b8d4c..5d90074 100644
> --- a/lib/iommu-helper.c
> +++ b/lib/iommu-helper.c
> @@ -30,8 +30,7 @@ again:
> return index;
> }
>
> -static inline void set_bit_area(unsigned long *map, unsigned long i,
> - int len)
> +void iommu_area_reserve(unsigned long *map, unsigned long i, int len)
> {
> unsigned long end = i + len;
> while (i < end) {
> @@ -64,7 +63,7 @@ again:
> start = index + 1;
> goto again;
> }
> - set_bit_area(map, index, nr);
> + iommu_area_reserve(map, index, nr);
> }
> return index;
> }
> --
> 1.5.4.2
>
>
--
| AMD Saxony Limited Liability Company & Co. KG
Operating | Wilschdorfer Landstr. 101, 01109 Dresden, Germany
System | Register Court Dresden: HRA 4896
Research | General Partner authorized to represent:
Center | AMD Saxony LLC (Wilmington, Delaware, US)
| General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy
next prev parent reply other threads:[~2008-09-22 14:08 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-22 13:35 [PATCH] export iommu_area_reserve helper funciton FUJITA Tomonori
2008-09-22 14:08 ` Joerg Roedel [this message]
2008-09-22 14:48 ` Ingo Molnar
2008-09-22 16:15 ` FUJITA Tomonori
2008-09-22 17:49 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080922140818.GZ24392@amd.com \
--to=joerg.roedel@amd.com \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=muli@il.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.