All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] export iommu_area_reserve helper funciton
@ 2008-09-22 13:35 FUJITA Tomonori
  2008-09-22 14:08 ` Joerg Roedel
  2008-09-22 14:48 ` Ingo Molnar
  0 siblings, 2 replies; 5+ messages in thread
From: FUJITA Tomonori @ 2008-09-22 13:35 UTC (permalink / raw)
  To: mingo; +Cc: joerg.roedel, muli, linux-kernel

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>
---
 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


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] export iommu_area_reserve helper funciton
  2008-09-22 13:35 [PATCH] export iommu_area_reserve helper funciton FUJITA Tomonori
@ 2008-09-22 14:08 ` Joerg Roedel
  2008-09-22 14:48 ` Ingo Molnar
  1 sibling, 0 replies; 5+ messages in thread
From: Joerg Roedel @ 2008-09-22 14:08 UTC (permalink / raw)
  To: FUJITA Tomonori; +Cc: mingo, muli, linux-kernel

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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] export iommu_area_reserve helper funciton
  2008-09-22 13:35 [PATCH] export iommu_area_reserve helper funciton FUJITA Tomonori
  2008-09-22 14:08 ` Joerg Roedel
@ 2008-09-22 14:48 ` Ingo Molnar
  2008-09-22 16:15   ` FUJITA Tomonori
  1 sibling, 1 reply; 5+ messages in thread
From: Ingo Molnar @ 2008-09-22 14:48 UTC (permalink / raw)
  To: FUJITA Tomonori; +Cc: joerg.roedel, muli, linux-kernel


* FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> wrote:

> 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.

applied the patch below to tip/x86/iommu, thanks.

> 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.

could you please send this as a separate patch?

	Ingo

----------------->
>From d26dbc5cf94b0a28acc947285c3b54814a73cb2e Mon Sep 17 00:00:00 2001
From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Date: Mon, 22 Sep 2008 22:35:07 +0900
Subject: [PATCH] iommu: export iommu_area_reserve helper function

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.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Acked-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/kernel/amd_iommu.c      |    2 +-
 arch/x86/kernel/pci-calgary_64.c |    2 +-
 arch/x86/kernel/pci-gart_64.c    |    2 +-
 include/linux/iommu-helper.h     |    1 +
 lib/iommu-helper.c               |    5 ++---
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
index 6f7b974..70537d1 100644
--- a/arch/x86/kernel/amd_iommu.c
+++ b/arch/x86/kernel/amd_iommu.c
@@ -572,7 +572,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/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;
 }

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] export iommu_area_reserve helper funciton
  2008-09-22 14:48 ` Ingo Molnar
@ 2008-09-22 16:15   ` FUJITA Tomonori
  2008-09-22 17:49     ` Ingo Molnar
  0 siblings, 1 reply; 5+ messages in thread
From: FUJITA Tomonori @ 2008-09-22 16:15 UTC (permalink / raw)
  To: mingo; +Cc: fujita.tomonori, joerg.roedel, muli, linux-kernel

On Mon, 22 Sep 2008 16:48:49 +0200
Ingo Molnar <mingo@elte.hu> wrote:

> 
> * FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> wrote:
> 
> > 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.
> 
> applied the patch below to tip/x86/iommu, thanks.
> 
> > 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.
> 
> could you please send this as a separate patch?

Sure, no problem.

=
From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Subject: [PATCH] x86: remove unused set_bit_string

"export iommu_area_reserve helper funciton" patch converted all the
users of set_bit_string, GART, Calgary and AMD IOMMU drivers, to use
iommu_area_reserve helper function. Now we can remove unused
set_bit_string function.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
---
 include/asm-x86/bitops.h |   10 ----------
 1 files changed, 0 insertions(+), 10 deletions(-)

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>
-- 
1.5.5.GIT


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] export iommu_area_reserve helper funciton
  2008-09-22 16:15   ` FUJITA Tomonori
@ 2008-09-22 17:49     ` Ingo Molnar
  0 siblings, 0 replies; 5+ messages in thread
From: Ingo Molnar @ 2008-09-22 17:49 UTC (permalink / raw)
  To: FUJITA Tomonori; +Cc: joerg.roedel, muli, linux-kernel


* FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> wrote:

> Subject: [PATCH] x86: remove unused set_bit_string
> 
> "export iommu_area_reserve helper funciton" patch converted all the 
> users of set_bit_string, GART, Calgary and AMD IOMMU drivers, to use 
> iommu_area_reserve helper function. Now we can remove unused 
> set_bit_string function.
> 
> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>

applied to tip/x86/iommu, thanks!

	Ingo

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-09-22 17:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-22 13:35 [PATCH] export iommu_area_reserve helper funciton FUJITA Tomonori
2008-09-22 14:08 ` Joerg Roedel
2008-09-22 14:48 ` Ingo Molnar
2008-09-22 16:15   ` FUJITA Tomonori
2008-09-22 17:49     ` Ingo Molnar

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.