svn commit: r354095 - in head/sys: amd64/amd64 amd64/include kern
Antoine Brodin
antoine at freebsd.org
Sat Oct 26 17:49:52 UTC 2019
On Sat, Oct 26, 2019 at 3:01 PM Konstantin Belousov <kostikbel at gmail.com> wrote:
> On Sat, Oct 26, 2019 at 02:16:19PM +0200, Antoine Brodin wrote:
> > On Sat, Oct 26, 2019 at 10:27 AM Konstantin Belousov
> > <kostikbel at gmail.com> wrote:
> > > On Sat, Oct 26, 2019 at 08:24:09AM +0200, Antoine Brodin wrote:
> > > > On Fri, Oct 25, 2019 at 10:09 PM Konstantin Belousov <kib at freebsd.org> wrote:
> > > > >
> > > > > Author: kib
> > > > > Date: Fri Oct 25 20:09:42 2019
> > > > > New Revision: 354095
> > > > > URL: https://svnweb.freebsd.org/changeset/base/354095
> > > > >
> > > > > Log:
> > > > > amd64: move pcb out of kstack to struct thread.
> > > > >
> > > > > This saves 320 bytes of the precious stack space.
> > > > >
> > > > > The only negative aspect of the change I can think of is that the
> > > > > struct thread increased by 320 bytes obviously, and that 320 bytes are
> > > > > not swapped out anymore. I believe the freed stack space is much more
> > > > > important than that. Also, current struct thread size is 1392 bytes
> > > > > on amd64, so UMA will allocate two thread structures per (4KB) slab,
> > > > > which leaves a space for pcb without increasing zone memory use.
> > > > >
> > > > > Reviewed by: alc, markj
> > > > > Tested by: pho
> > > > > Sponsored by: The FreeBSD Foundation
> > > > > MFC after: 2 weeks
> > > > > Differential revision: https://reviews.freebsd.org/D22138
> > > >
> > > > Hi,
> > > >
> > > > It seems that this breaks at least some versions of gcc:
> > > >
> > > > In file included from /usr/include/sys/proc.h:75,
> > > > from /usr/include/sys/user.h:51,
> > > > from ./md-unwind-support.h:34,
> > > > from
> > > > /wrkdirs/usr/ports/lang/gcc10-devel/work/gcc-10-20191020/libgcc/unwind-dw2.c:412:
> > > > /usr/include/machine/proc.h:76:13: error: field 'md_pcb' has incomplete type
> > > > 76 | struct pcb md_pcb;
> > > > | ^~~~~~
> > > >
> > >
> > > It is very strange. Are gcc 9 or 8 affected ?
> >
> > gcc 8 and 9 are affected too.
> Then this is a completely different cause then I guessed below, and I think
> I know why. All of 8/9/10 gcc ports have support for multiarch, and the
> error must happen for gcc or xgcc invocation with -m32, am I right ?
>
> If yes, please try the patch at the end of the message instead.
>
> diff --git a/sys/amd64/include/pcb.h b/sys/amd64/include/pcb.h
> index 44e34fa5c83..8800b355c9a 100644
> --- a/sys/amd64/include/pcb.h
> +++ b/sys/amd64/include/pcb.h
> @@ -116,6 +116,10 @@ struct susppcb {
> /* fpu context for suspend/resume */
> void *sp_fpususpend;
> };
> +#else /* 32bit */
> +struct pcb {
> + uint64_t pcb_dummy[40];
> +};
> #endif
>
> #ifdef _KERNEL
Hi,
It builds fine with this patch.
Antoine
More information about the svn-src-all
mailing list