All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2]: Powerpc: Fix EHCA driver on relocatable kernel
@ 2010-08-20  4:10 ` Sonny Rao
  0 siblings, 0 replies; 4+ messages in thread
From: Sonny Rao @ 2010-08-20  4:10 UTC (permalink / raw)
  To: linux-ppc-uLR06cmDAlY/bJ5BZ2RsiQ
  Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	rolandd-FYB4Gu1CFyUAvxtiuMwx3w, fenkes-tA70FqPdS9bQT0dZR+AlfA,
	raisch-tA70FqPdS9bQT0dZR+AlfA, hnguyen-tA70FqPdS9bQT0dZR+AlfA

the eHCA driver registers a MR for all of kernel memory, but makes the
assumption that valid memory exists at KERNELBASE.  This assumption
may not be true in the case of a relocatable kernel, so use KERNELBASE
+ PHYSICAL_START to get the true beginning of usable kernel memory.

This patch depends on the earlier patch which exports the necessary
symbol for PHYSICAL_START in a relocatable kernel.

cc: Joachim Fenkes <fenkes-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
cc: Christoph Raisch <raisch-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
cc: Hoan-Ham Hguyen <hnguyen-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Sonny Rao <sonnyrao-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>


Index: linux-2.6/drivers/infiniband/hw/ehca/ehca_mrmw.c
===================================================================
--- linux-2.6.orig/drivers/infiniband/hw/ehca/ehca_mrmw.c	2010-08-09 22:16:57.688652613 -0500
+++ linux-2.6/drivers/infiniband/hw/ehca/ehca_mrmw.c	2010-08-19 22:53:03.451507146 -0500
@@ -171,7 +171,7 @@
 		}
 
 		ret = ehca_reg_maxmr(shca, e_maxmr,
-				     (void *)ehca_map_vaddr((void *)KERNELBASE),
+				     (void *)ehca_map_vaddr((void *)(KERNELBASE + PHYSICAL_START)),
 				     mr_access_flags, e_pd,
 				     &e_maxmr->ib.ib_mr.lkey,
 				     &e_maxmr->ib.ib_mr.rkey);
@@ -1636,7 +1636,7 @@
 
 	/* register internal max-MR on HCA */
 	size_maxmr = ehca_mr_len;
-	iova_start = (u64 *)ehca_map_vaddr((void *)KERNELBASE);
+	iova_start = (u64 *)ehca_map_vaddr((void *)(KERNELBASE + PHYSICAL_START));
 	ib_pbuf.addr = 0;
 	ib_pbuf.size = size_maxmr;
 	num_kpages = NUM_CHUNKS(((u64)iova_start % PAGE_SIZE) + size_maxmr,
@@ -2209,7 +2209,7 @@
 {
 	/* a MR is treated as max-MR only if it fits following: */
 	if ((size == ehca_mr_len) &&
-	    (iova_start == (void *)ehca_map_vaddr((void *)KERNELBASE))) {
+	    (iova_start == (void *)ehca_map_vaddr((void *)(KERNELBASE + PHYSICAL_START)))) {
 		ehca_gen_dbg("this is a max-MR");
 		return 1;
 	} else
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 2/2]: Powerpc: Fix EHCA driver on relocatable kernel
@ 2010-08-20  4:10 ` Sonny Rao
  0 siblings, 0 replies; 4+ messages in thread
From: Sonny Rao @ 2010-08-20  4:10 UTC (permalink / raw)
  To: linux-ppc; +Cc: linux-rdma, fenkes, raisch

the eHCA driver registers a MR for all of kernel memory, but makes the
assumption that valid memory exists at KERNELBASE.  This assumption
may not be true in the case of a relocatable kernel, so use KERNELBASE
+ PHYSICAL_START to get the true beginning of usable kernel memory.

This patch depends on the earlier patch which exports the necessary
symbol for PHYSICAL_START in a relocatable kernel.

cc: Joachim Fenkes <fenkes@de.ibm.com>
cc: Christoph Raisch <raisch@de.ibm.com>
cc: Hoan-Ham Hguyen <hnguyen@de.ibm.com>
Signed-off-by: Sonny Rao <sonnyrao@us.ibm.com>


Index: linux-2.6/drivers/infiniband/hw/ehca/ehca_mrmw.c
===================================================================
--- linux-2.6.orig/drivers/infiniband/hw/ehca/ehca_mrmw.c	2010-08-09 22:16:57.688652613 -0500
+++ linux-2.6/drivers/infiniband/hw/ehca/ehca_mrmw.c	2010-08-19 22:53:03.451507146 -0500
@@ -171,7 +171,7 @@
 		}

 		ret = ehca_reg_maxmr(shca, e_maxmr,
-				     (void *)ehca_map_vaddr((void *)KERNELBASE),
+				     (void *)ehca_map_vaddr((void *)(KERNELBASE + PHYSICAL_START)),
 				     mr_access_flags, e_pd,
 				     &e_maxmr->ib.ib_mr.lkey,
 				     &e_maxmr->ib.ib_mr.rkey);
@@ -1636,7 +1636,7 @@

 	/* register internal max-MR on HCA */
 	size_maxmr = ehca_mr_len;
-	iova_start = (u64 *)ehca_map_vaddr((void *)KERNELBASE);
+	iova_start = (u64 *)ehca_map_vaddr((void *)(KERNELBASE + PHYSICAL_START));
 	ib_pbuf.addr = 0;
 	ib_pbuf.size = size_maxmr;
 	num_kpages = NUM_CHUNKS(((u64)iova_start % PAGE_SIZE) + size_maxmr,
@@ -2209,7 +2209,7 @@
 {
 	/* a MR is treated as max-MR only if it fits following: */
 	if ((size == ehca_mr_len) &&
-	    (iova_start == (void *)ehca_map_vaddr((void *)KERNELBASE))) {
+	    (iova_start == (void *)ehca_map_vaddr((void *)(KERNELBASE + PHYSICAL_START)))) {
 		ehca_gen_dbg("this is a max-MR");
 		return 1;
 	} else

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

* Re: [PATCH 2/2]: Powerpc: Fix EHCA driver on relocatable kernel
       [not found] ` <20100820041019.GT16505-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
@ 2010-08-24  4:45   ` Benjamin Herrenschmidt
  2010-10-06 19:57   ` Roland Dreier
  1 sibling, 0 replies; 4+ messages in thread
From: Benjamin Herrenschmidt @ 2010-08-24  4:45 UTC (permalink / raw)
  To: Sonny Rao
  Cc: linux-ppc-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA, fenkes-tA70FqPdS9bQT0dZR+AlfA,
	raisch-tA70FqPdS9bQT0dZR+AlfA

On Thu, 2010-08-19 at 23:10 -0500, Sonny Rao wrote:
> the eHCA driver registers a MR for all of kernel memory, but makes the
> assumption that valid memory exists at KERNELBASE.  This assumption
> may not be true in the case of a relocatable kernel, so use KERNELBASE
> + PHYSICAL_START to get the true beginning of usable kernel memory.
> 
> This patch depends on the earlier patch which exports the necessary
> symbol for PHYSICAL_START in a relocatable kernel.

I'm going to send patch 1/2 to Linus today or tomorrow, so this patch
can then be picked up by the infiniband maintainers.

Cheers,
Ben.
 
> cc: Joachim Fenkes <fenkes-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
> cc: Christoph Raisch <raisch-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
> cc: Hoan-Ham Hguyen <hnguyen-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
> Signed-off-by: Sonny Rao <sonnyrao-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
> 
> 
> Index: linux-2.6/drivers/infiniband/hw/ehca/ehca_mrmw.c
> ===================================================================
> --- linux-2.6.orig/drivers/infiniband/hw/ehca/ehca_mrmw.c	2010-08-09 22:16:57.688652613 -0500
> +++ linux-2.6/drivers/infiniband/hw/ehca/ehca_mrmw.c	2010-08-19 22:53:03.451507146 -0500
> @@ -171,7 +171,7 @@
>  		}
> 
>  		ret = ehca_reg_maxmr(shca, e_maxmr,
> -				     (void *)ehca_map_vaddr((void *)KERNELBASE),
> +				     (void *)ehca_map_vaddr((void *)(KERNELBASE + PHYSICAL_START)),
>  				     mr_access_flags, e_pd,
>  				     &e_maxmr->ib.ib_mr.lkey,
>  				     &e_maxmr->ib.ib_mr.rkey);
> @@ -1636,7 +1636,7 @@
> 
>  	/* register internal max-MR on HCA */
>  	size_maxmr = ehca_mr_len;
> -	iova_start = (u64 *)ehca_map_vaddr((void *)KERNELBASE);
> +	iova_start = (u64 *)ehca_map_vaddr((void *)(KERNELBASE + PHYSICAL_START));
>  	ib_pbuf.addr = 0;
>  	ib_pbuf.size = size_maxmr;
>  	num_kpages = NUM_CHUNKS(((u64)iova_start % PAGE_SIZE) + size_maxmr,
> @@ -2209,7 +2209,7 @@
>  {
>  	/* a MR is treated as max-MR only if it fits following: */
>  	if ((size == ehca_mr_len) &&
> -	    (iova_start == (void *)ehca_map_vaddr((void *)KERNELBASE))) {
> +	    (iova_start == (void *)ehca_map_vaddr((void *)(KERNELBASE + PHYSICAL_START)))) {
>  		ehca_gen_dbg("this is a max-MR");
>  		return 1;
>  	} else
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH 2/2]: Powerpc: Fix EHCA driver on relocatable kernel
       [not found] ` <20100820041019.GT16505-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
  2010-08-24  4:45   ` Benjamin Herrenschmidt
@ 2010-10-06 19:57   ` Roland Dreier
  1 sibling, 0 replies; 4+ messages in thread
From: Roland Dreier @ 2010-10-06 19:57 UTC (permalink / raw)
  To: Sonny Rao
  Cc: linux-ppc-uLR06cmDAlY/bJ5BZ2RsiQ,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	rolandd-FYB4Gu1CFyUAvxtiuMwx3w, fenkes-tA70FqPdS9bQT0dZR+AlfA,
	raisch-tA70FqPdS9bQT0dZR+AlfA, hnguyen-tA70FqPdS9bQT0dZR+AlfA

thanks, applied.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2010-10-06 19:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-20  4:10 [PATCH 2/2]: Powerpc: Fix EHCA driver on relocatable kernel Sonny Rao
2010-08-20  4:10 ` Sonny Rao
     [not found] ` <20100820041019.GT16505-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-08-24  4:45   ` Benjamin Herrenschmidt
2010-10-06 19:57   ` Roland Dreier

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.