Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Feb 2010 00:28:30 +0000
From:      Rui Paulo <rpaulo@freebsd.org>
To:        M. Warner Losh <imp@bsdimp.com>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: kdump on ARM
Message-ID:  <987A4BCD-03A9-49ED-9E2E-AA4C2C6CA345@freebsd.org>
In-Reply-To: <20100217.121545.260300876949842220.imp@bsdimp.com>
References:  <6c36ec371002170654n5e441c6eib9a8c9aad61c1e87@mail.gmail.com> <20100217.094559.29593248078653355.imp@bsdimp.com> <6c36ec371002171047m13544419sf8ca5ad283cdc65@mail.gmail.com> <20100217.121545.260300876949842220.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On 17 Feb 2010, at 19:15, M. Warner Losh wrote:

> In message: =
<6c36ec371002171047m13544419sf8ca5ad283cdc65@mail.gmail.com>
>            batcilla itself <batcilla@gmail.com> writes:
> : 2010/2/17 M. Warner Losh <imp@bsdimp.com>:
> : > In message: =
<6c36ec371002170654n5e441c6eib9a8c9aad61c1e87@mail.gmail.com>
> : >            batcilla itself <batcilla@gmail.com> writes:
> : > : 2010/2/17 Hans Petter Selasky <hselasky@c2i.net>
> : > : >
> : > : > On Wednesday 17 February 2010 15:18:12 Grzegorz Bernacki =
wrote:
> : > : > > Hi,
> : > : > >
> : > : > > I've noticed that kdump on ARM doesn't work properly, it =
generates bus
> : > : > >  error. The problem is that structures dumped into =
ktrace.out are not
> : > : > >  aligned. Processing such a structure causes Aligment Fault. =
One solution
> : > : > >  is to copy structure into local variable and then process =
it, please see
> : > : > >  patch below. But I am not sure if this is the best solution =
and maybe
> : > : > >  someone has a better idea.
> : > : > >
> : > : > > grzesiek
> : > : > >
> : > : > >
> : > : > > diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c
> : > : > > index 386221e..5a15886 100644
> : > : > > --- a/usr.bin/kdump/kdump.c
> : > : > > +++ b/usr.bin/kdump/kdump.c
> : > : > > @@ -1325,6 +1325,10 @@ ktrstat(struct stat *statp)
> : > : > >   void
> : > : > >   ktrstruct(char *buf, size_t buflen)
> : > : > >   {
> : > : > > +#if defined(__arm__)
> : > : > > +       struct stat stat;
> : > : > > +       struct sockaddr sockaddr;
> : > : > > +#endif
> : > : > >          char *name, *data;
> : > : > >          size_t namelen, datalen;
> : > : > >          int i;
> : > : > > @@ -1348,12 +1352,22 @@ ktrstruct(char *buf, size_t buflen)
> : > : > >          if (strcmp(name, "stat") =3D=3D 0) {
> : > : > >                  if (datalen !=3D sizeof(struct stat))
> : > : > >                          goto invalid;
> : > : > > +#if defined(__arm__)
> : > : > > +               memcpy(&stat, data, sizeof(struct stat));
> : > : > > +               ktrstat(&stat);
> : > : > > +#else
> : > : > >                  ktrstat((struct stat *)data);
> : > : > > +#endif
> : > : > >          } else if (strcmp(name, "sockaddr") =3D=3D 0) {
> : > : > >                  if (datalen < sizeof(struct sockaddr) ||
> : > : > >                      datalen !=3D ((struct sockaddr =
*)(data))->sa_len)
> : > : > >                          goto invalid;
> : > : > > +#if defined(__arm__)
> : > : > > +               memcpy(&sockaddr, data, sizeof(struct =
sockaddr));
> : > : > > +               ktrsockaddr(&sockaddr);
> : > : > > +#else
> : > : > >                  ktrsockaddr((struct sockaddr *)data);
> : > : > > +#endif
> : > : > >          } else {
> : > : > >                  printf("unknown structure\n");
> : > : > >          }
> : > : >
> : > : > I think more than ARM is affected by this.
> : > : >
> : > : > --HPS
> : > : ARM affected definitely, just today had that Align error with =
-current
> : > : while tried to use ng_bridge with wlan0
> : >
> : > Where exactly was the error?  Do you have a traceback?
> : It was ARM/Xcale avila custom nanobsd build, error was caused adding
> : wlan0 into ng_bridge, while wlan0 was in tdma master (slot 0) mode,
> : with slot 1 there was no errors. Exact message here:
> :=20
> : Fatal kernel mode data abort: 'Alignment Fault 3'
> : trapframe: 0xc5e38cac
> : FSR=3D00000003, FAR=3Dc10fd1fe, spsr=3D00000013
> : r0 =3Dc0e15080, r1 =3Dc0508288, r2 =3Dc10fd1fe, r3 =3D00000001
> : r4 =3D0000003c, r5 =3Dc0e15080, r6 =3Dc0e15500, r7 =3Dc111a600
> : r8 =3Dc1182a00, r9 =3Dc116dc00, r10=3Dc0e15d80, r11=3D00000001
> : r12=3Dc0e15080, ssp=3Dc5e38cf8, slr=3Dc041cb58, pc =3Dc041ec98
> :=20
> : panic: Fatal abort
> : Uptime: 3h26m17s
> : Cannot dump. Device not defined or unavailable.
> : Automatic reboot in 15 seconds - press a key on the console to abort
> :=20
> : uname: avila ... FreeBSD 9.0-CURRENT #1: Wed Feb 17 12:08:37 UTC =
2010 ... arm
> :=20
> : Not really sure, if this alignment error come from kdump, there is
> : really no dump device in this unit and other debugging facilities =
was
> : turned off to save space.
>=20
> I'd wager that it wasn't caused by kdump, but something in the kernel.

I definitely agree.

--
Rui Paulo




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?987A4BCD-03A9-49ED-9E2E-AA4C2C6CA345>