NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/50804: Nouveau console doesn't come up on Dell laptop



On Sat, Feb 20, 2016 at 09:07:47AM -0700, Roy Bixler wrote:
> On Sat, Feb 20, 2016 at 03:55:01PM +0000, Taylor R Campbell wrote:
> > The following reply was made to PR kern/50804; it has been noted by GNATS.
> > 
> > From: Taylor R Campbell <riastradh%NetBSD.org@localhost>
> > To: Roy Bixler <rcbixler%nyx.net@localhost>
> > Cc: gnats-bugs%NetBSD.org@localhost
> > Subject: Re: kern/50804: Nouveau console doesn't come up on Dell laptop
> > Date: Sat, 20 Feb 2016 15:51:17 +0000
> > 
> >     Date: Sat, 20 Feb 2016 08:45:45 -0700
> >     From: Roy Bixler <rcbixler%nyx.net@localhost>
> >  
> >     On Mon, Feb 15, 2016 at 08:41:48PM +0000, Taylor R Campbell wrote:
> >     > Another change that might be worthwhile to test would be to add
> >     > 
> >     > #include <ddb/ddb.h>
> >     > 
> >     > 	if (bpa/size covers the nvidia bar)
> >     > 		db_stack_trace_print(
> >     > 		    (db_expr_t)(intptr_t)__builtin_frame_address(0),
> >     > 		    true, 65535, "", printf);
> >     > 
> >     > to bus_space_map in sys/arch/x86/x86/bus_space.c, so that you can see
> >     > who is trying to map this bus space, in case someone else has already
> >     > mapped it.  (You'll need to fill in what the relevant BAR's address
> >     > and size actually are, unless you want to increase MSGBUFSIZE and wade
> >     > through a stack trace for every bus space mapping in the system.)
> >  
> >     The thought occurred to me before, so since you agree, I'll give it a
> >     go.
> >  
> >  Since bus_space_map is apparently failing with EAGAIN, that is
> >  definitely worth a try -- EAGAIN means someone else has already mapped
> >  some part of the region.
> 
> Just one thing here -- I took your latest version and added the debugging
> line back in to replay the bus_space_map parameters.  Here's the result:
> 
> drm kern info: nouveau  [  DEVICE][nouveau0] BOOT0  : 0x042c00a1
> drm kern info: nouveau  [  DEVICE][nouveau0] Chipset: NV42 (NV42)
> drm kern info: nouveau  [  DEVICE][nouveau0] Family : NV40
> drm kern info: nouveau  [   VBIOS][nouveau0] checking PRAMIN for image...
> drm kern info: nouveau  [   VBIOS][nouveau0] ... appears to be valid
> drm kern info: nouveau  [   VBIOS][nouveau0] using image from PRAMIN
> drm kern info: nouveau  [   VBIOS][nouveau0] BIT signature found
> drm kern info: nouveau  [   VBIOS][nouveau0] version 05.41.02.29.a3
> drm kern info: nouveau  [     PFB][nouveau0] RAM type: DDR1
> drm kern info: nouveau  [     PFB][nouveau0] RAM size: 256 MiB
> drm kern info: nouveau  [     PFB][nouveau0]    ZCOMP: 189440 tags
> drm kern error: nouveau E[ INSTMEM][nouveau0] bar = 2, iomemt=c1136740, iomemsz=0, start=0
> drm kern error: nouveau E[ INSTMEM][nouveau0] unable to map PRAMIN BAR: 35
> drm kern error: nouveau E[  DEVICE][nouveau0] failed to create 0x1000400c, -14
> drm kern error: nouveau E[     DRM] failed to create 0x80000080, -14
> nouveau0: unable to attach drm: 14
> 
> So, the size and start of 0 definitely seem wrong.  I suppose I'll try
> my experiment with bar = 1.

I added a comparison of bpa == c0000000 to bus_space_map and it didn't
trigger until I set bar = 1 in nouveau_subdev_instmem_nv40.c:

drm kern info: nouveau  [  DEVICE][nouveau0] BOOT0  : 0x042c00a1
drm kern info: nouveau  [  DEVICE][nouveau0] Chipset: NV42 (NV42)
drm kern info: nouveau  [  DEVICE][nouveau0] Family : NV40
drm kern info: nouveau  [   VBIOS][nouveau0] checking PRAMIN for image...
drm kern info: nouveau  [   VBIOS][nouveau0] ... appears to be valid
drm kern info: nouveau  [   VBIOS][nouveau0] using image from PRAMIN
drm kern info: nouveau  [   VBIOS][nouveau0] BIT signature found
drm kern info: nouveau  [   VBIOS][nouveau0] version 05.41.02.29.a3
drm kern info: nouveau  [     PFB][nouveau0] RAM type: DDR1
drm kern info: nouveau  [     PFB][nouveau0] RAM size: 256 MiB
drm kern info: nouveau  [     PFB][nouveau0]    ZCOMP: 189440 tags
?(c287480c,0,c11caa44,0,c,da9fdd6c,c0fad4c8,c29cebec,c,c287495c) at c0b9c737
uvm_fault(0xc12a1560, 0xb0cbf000, 1) -> 0xe
fatal page fault in supervisor mode
trap type 6 code 0 eip c013e358 cs 8 eflags 10246 cr2 b0cbff50 ilevel 0 esp c0b1679a
curlwp 0xc287d2a0 pid 0 lid 47 lowest kstack 0xda9fb2c0
kernel: supervisor trap page fault, code=0
Stopped in pid 0.47 (system) at c013e358:       movl    0(%ecx),%eax
db{0}> 

-- 
Roy Bixler <rcbixler%nyx.net@localhost>
"The fundamental principle of science, the definition almost, is this: the
sole test of the validity of any idea is experiment."
-- Richard P. Feynman



Home | Main Index | Thread Index | Old Index