Date: Mon, 8 Dec 2014 09:36:06 +0100 From: Marko Zec <zec@fer.hr> To: Craig Rodrigues <rodrigc@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, hselasky@freebsd.org Subject: Re: svn commit: r275599 - in head/sys/ofed/include: linux net Message-ID: <20141208093606.0960142f@x23> In-Reply-To: <201412080726.sB87Q0Yw034908@svn.freebsd.org> References: <201412080726.sB87Q0Yw034908@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 8 Dec 2014 07:26:00 +0000 Craig Rodrigues <rodrigc@freebsd.org> wrote: > Author: rodrigc > Date: Mon Dec 8 07:25:59 2014 > New Revision: 275599 > URL: https://svnweb.freebsd.org/changeset/base/275599 > > Log: > Use CURVNET macros inside inet_get_local_port_range() function. > Without this fix, a kernel with VIMAGE + Infiniband will panic on > bootup. Why is CURVNET_SET_QUIET() used here instead of plain CURVNET_SET()? inet_get_local_port_range() seems to be called from only two functions: cma_alloc_any_port() and cma_init(). Did the panic ocur in both, or only in cma_init()? If so, then CURVNET_SET() should have been placed only inside cma_init() and not in inet_get_local_port_range(). And perhaps all of this stuff could have been completely avoided if cma_init() was scheduled to fire with curvnet contex already set to vnet0, using proper SYSINIT scheduling instead of module_init(), i.e. after SI_SUB_VNET and before SI_SUB_VNET_DONE? Finally, the comment re. extra #includes and LIST_HEAD seems confusing since TD_TO_VNET() macro requires both sys/jail.h and net/vnet.h, and this dependency is unrelated to the LIST_HEAD macro cited in commit log. Marko > Certain necessary #include statements require LIST_HEAD. > Add these includes to ofed/include/linux/list.h, because > LIST_HEAD is specifically overridden in this file. > > PR: 191468 > Differential Revision: D1279 > Reviewed by: hselasky > > Modified: > head/sys/ofed/include/linux/list.h > head/sys/ofed/include/net/ip.h > > Modified: head/sys/ofed/include/linux/list.h > ============================================================================== > --- head/sys/ofed/include/linux/list.h Mon Dec 8 07:14:25 > 2014 (r275598) +++ head/sys/ofed/include/linux/list.h > Mon Dec 8 07:25:59 2014 (r275599) @@ -40,6 +40,7 @@ > #include <sys/kernel.h> > #include <sys/queue.h> > #include <sys/cpuset.h> > +#include <sys/jail.h> > #include <sys/lock.h> > #include <sys/mutex.h> > #include <sys/proc.h> > @@ -53,6 +54,7 @@ > #include <net/if_var.h> > #include <net/if_types.h> > #include <net/if_media.h> > +#include <net/vnet.h> > > #include <netinet/in.h> > #include <netinet/in_pcb.h> > > Modified: head/sys/ofed/include/net/ip.h > ============================================================================== > --- head/sys/ofed/include/net/ip.h Mon Dec 8 07:14:25 > 2014 (r275598) +++ head/sys/ofed/include/net/ip.h Mon > Dec 8 07:25:59 2014 (r275599) @@ -45,8 +45,10 @@ > #ifdef INET > static inline void inet_get_local_port_range(int *low, int *high) > { > + CURVNET_SET_QUIET(TD_TO_VNET(curthread)); > *low = V_ipport_firstauto; > *high = V_ipport_lastauto; > + CURVNET_RESTORE(); > } > > static inline void >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141208093606.0960142f>