Date: Fri, 08 Jan 2016 20:53:38 -0800 From: Cy Schubert <Cy.Schubert@komquats.com> To: Adrian Chadd <adrian.chadd@gmail.com> Cc: Jeremie Le Hen <jlh@freebsd.org>, Ryan Stone <rysto32@gmail.com>, FreeBSD Current <freebsd-current@freebsd.org>, =?UTF-8?B?SmVhbi1Tw6liYXN0aWVuIFDDqWRyb24=?= <dumbbell@freebsd.org> Subject: Re: Panic from vesa_configure() Message-ID: <201601090453.u094rcKk002334@slippy.cwsent.com> In-Reply-To: Message from Cy Schubert <Cy.Schubert@komquats.com> of "Fri, 08 Jan 2016 20:49:39 -0800."
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multipart MIME message. --==_Exmh_1452315207_930470 Content-Type: text/plain; charset=us-ascii Cy Schubert writes: > In message <201601080107.u0817kDw078603@slippy.cwsent.com>, Cy Schubert > writes: > > In message <CAJ-VmonGOs2f+rzciEcV=VuaNrZt0hqNePQx4LZDWu6BxuR9NQ@mail.gmail. > c > > om> > > , Adrian Chadd writes: > > > Ok, > > > > > > So try adding this check: > > > > > > vmbuf = x86bios_alloc(&offs, sizeof(*buf), M_WAITOK); > > > if (vmbuf == NULL) { > > > printf("%s: x86bios_alloc failed!\n", __func__); > > > goto fail; > > > } > > > > > > ... that call shouldn't be failing, but if it's truely failing on the > > > bcopy(), the only reason is because vmbuf is NULL. > > > > Thanks. I'll try this. > > > > vesa.c hasn't changed for a while so I suspect the root cuase may be > > somewhere else (we're probably treating the symptom here). Nice thing about > > > using the same mobo and cpu combination on all my machines (except > > laptops), failures are completely reproducible. Might be a good idea to put > > > in a dtrace probe too. > > Hi Adrian, > > Your patch fixed the issue. I've included a dtrace probe. I suspect the > error may be BIOS specific and the dtrace probe should help in tracking it > down. Does this look good to commit? A bit of multitasking going on here. I should have included the patch. :~ --==_Exmh_1452315207_930470 Content-Type: text/plain ; name="vesa.c.diff"; charset=us-ascii Content-Description: vesa.c.diff Content-Disposition: attachment; filename="vesa.c.diff" Index: vesa.c =================================================================== --- vesa.c (revision 293386) +++ vesa.c (working copy) @@ -819,6 +819,11 @@ regs.R_AX = 0x4f00; vmbuf = x86bios_alloc(&offs, sizeof(*buf), M_WAITOK); + if (vmbuf == NULL) { + printf("%s: x86bios_alloc failed!\n", __func__); + DTRACE_PROBE1(x86bios_alloc_failed, int, vmbuf); + goto fail; + } regs.R_ES = X86BIOS_PHYSTOSEG(offs); regs.R_DI = X86BIOS_PHYSTOOFF(offs); --==_Exmh_1452315207_930470 Content-Type: text/plain; charset=us-ascii Cheers, Cy Schubert <Cy.Schubert@komquats.com> or <Cy.Schubert@cschubert.com> FreeBSD UNIX: <cy@FreeBSD.org> Web: http://www.FreeBSD.org The need of the many outweighs the greed of the few. --==_Exmh_1452315207_930470--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201601090453.u094rcKk002334>