Re: PPPoE panic on Octeon

2019-11-20 Thread Visa Hankala
On Wed, Nov 20, 2019 at 11:04:15AM -, Miod Vallat wrote: > Index: sys/arch/mips64/mips64/vm_machdep.c > === > RCS file: /OpenBSD/src/sys/arch/mips64/mips64/vm_machdep.c,v > retrieving revision 1.37 > diff -u -p -r1.37 vm_machdep.c

Re: PPPoE panic on Octeon

2019-11-20 Thread Miod Vallat
> > Indeed. And the kernel makes sure to use 16 byte alignment, so there > > must be a bug creeping somewhere which causes a wrong offset to be > > applied... > > > > > Ah, so somewhere in the varargs it misses to take current alignment into > consideration? No, the stack at some point becomes

Re: PPPoE panic on Octeon

2019-11-20 Thread Miod Vallat
This should solve the problem. Index: sys/arch/mips64/mips64/vm_machdep.c === RCS file: /OpenBSD/src/sys/arch/mips64/mips64/vm_machdep.c,v retrieving revision 1.37 diff -u -p -r1.37 vm_machdep.c ---

Re: PPPoE panic on Octeon

2019-11-20 Thread Miod Vallat
> > For some reason, clang assumes the stack is aligned on a 16 byte > > boundary, as for the first iteration v0 is computed as (v1 or 8), > > while further iterations use (v1 plus 8). > > > I guess it defaults to 16 for N64? > https://reviews.llvm.org/D35874 Indeed. And the kernel makes sure

Re: PPPoE panic on Octeon

2019-11-20 Thread Janne Johansson
Den ons 20 nov. 2019 kl 11:09 skrev Miod Vallat : > > > For some reason, clang assumes the stack is aligned on a 16 byte > > > boundary, as for the first iteration v0 is computed as (v1 or 8), > > > while further iterations use (v1 plus 8). > > > > > > I guess it defaults to 16 for N64? > >

Re: PPPoE panic on Octeon

2019-11-20 Thread Janne Johansson
Den ons 20 nov. 2019 kl 09:21 skrev Miod Vallat : > > The code generated by clang for sppp_auth_send() is incorrect. > > Because the variadic part handling in sppp_auth_send() consumes > arguments in pairs, clang uses two registers to point to the pair, v1 > pointing to the first argument (the

Re: PPPoE panic on Octeon

2019-11-20 Thread Miod Vallat
The code generated by clang for sppp_auth_send() is incorrect. Because the variadic part handling in sppp_auth_send() consumes arguments in pairs, clang uses two registers to point to the pair, v1 pointing to the first argument (the size) and v0 to the second argument (the pointer). For some

PPPoE panic on Octeon

2019-11-19 Thread Aaron Bieber
Hi, PPPoE on octeon seems to have a bug that causes a panic. The following config is enough to hit it my USG-PRO-4: # /etc/hostname.pppoe0 inet 0.0.0.0 255.255.255.255 NONE \ pppoedev cnmac1 authproto chap \ description test \ up To test this I have cnmac1