Skip site navigation (1)Skip section navigation (2)
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>