Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Apr 2017 16:26:03 -0400
From:      Patrick Kelsey <pkelsey@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        Jung-uk Kim <jkim@freebsd.org>, svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r316648 - in head/sys: amd64/amd64 amd64/include arm/arm arm/include arm64/include cddl/dev/dtrace/aarch64 cddl/dev/dtrace/amd64 cddl/dev/dtrace/arm cddl/dev/dtrace/i386 cddl/dev/dtrace...
Message-ID:  <CAD44qMX52th62zEy9KupzRiSaxWAoBpSLSbEA%2Bydop9wxSis4w@mail.gmail.com>
In-Reply-To: <3233183.B722KJrnTC@ralph.baldwin.cx>
References:  <201704090200.v39203Vf072867@repo.freebsd.org> <0da40261-7829-8d63-c4aa-775a028367a2@FreeBSD.org> <3233183.B722KJrnTC@ralph.baldwin.cx>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Apr 10, 2017 at 1:43 PM, John Baldwin <jhb@freebsd.org> wrote:

> On Monday, April 10, 2017 01:23:04 PM Jung-uk Kim wrote:
> > On 04/08/2017 22:00, Patrick Kelsey wrote:
> > > Author: pkelsey
> > > Date: Sun Apr  9 02:00:03 2017
> > > New Revision: 316648
> > > URL: https://svnweb.freebsd.org/changeset/base/316648
> > >
> > > Log:
> > >   Corrected misspelled versions of rendezvous.
> > >
> > >   The MFC will include a compat definition of
> smp_no_rendevous_barrier()
> > >   that calls smp_no_rendezvous_barrier().
> > >
> > >   Reviewed by:      gnn, kib
> > >   MFC after:        1 week
> > >   Differential Revision:    https://reviews.freebsd.org/D10313
> > ...
> >
> > We knew about the problem but we didn't fix it because it breaks KPI.
> > For example, sysutils/virtualbox-ose-kmod.  If you really want to MFC
> > this change, you have to implement shims.
>
> Also, the function isn't actually called, but is only used in comparisons
> in smp_rendezvous_action().  To do a compat shim you will need to either
> change these comparisons to compare against both function pointers or
> define the alternate symbol as an alias of the existing function.  That
> only helps the KBI though.  For the KPI would just use a #define to point
> to the new name.
>

That's a good point about the comparisons in smp_rendezvous_action() - if I
had managed to miss that detail all the way through the compat shim
implementation, it would have littered pointless empty function invocations
and atomic increments into all the uses of smp_rendezvous() that used
smp_no_rendezvous_barrier for at least one of the stages.

I don't think we have an established place to define machine-independent
symbol aliases.  Approaching that through linker scripts would require
spamming a PROVIDE() statement into each of the arch-specific scripts.
Since this is a function, I think a better way than the symbol alias +
#define approach would be to just define a function pointer called
smp_no_rendevous_barrier that gets statically initialized to
smp_no_rendezvous_barrier.  In that case, the extern decl takes care of the
KPI, the corresponding symbol definition takes care of the KBI, and it has
a minimal, MI, code footprint.


>
> Also, as Jung-uk notes, this already breaks virtualbox on HEAD, so you will
> need to patch the port now, not only if you MFC.


Either that, or I relax the goal of purging it entirely and put the compat
shim in current also to sidestep the port-patching issue.

-Patrick



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAD44qMX52th62zEy9KupzRiSaxWAoBpSLSbEA%2Bydop9wxSis4w>