NetBSD-Bugs archive

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

Re: kern/50453: "no console" panic after pci ext. conf change



The following reply was made to PR kern/50453; it has been noted by GNATS.

From: Patrick Welche <prlw1%cam.ac.uk@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: kern/50453: "no console" panic after pci ext. conf change
Date: Fri, 22 Jan 2016 14:39:24 +0000

 The EAGAIN is coming from bus_space_map - with the little patch below
 I see:
 
 agp0: Try bus_space_map again
 agp0: bus_space_map returned error = 35 (addr = e0000001)
 agp0: can't set up chipset flush page: 35
 
 Another work-around is to keep acpi but build a kernel with
 
   options 	NO_PCI_EXTENDED_CONFIG
 
 
 
 Index: sys/dev/pci/agp_i810.c
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/pci/agp_i810.c,v
 retrieving revision 1.121
 diff -u -p -r1.121 agp_i810.c
 --- sys/dev/pci/agp_i810.c	21 Oct 2015 15:37:35 -0000	1.121
 +++ sys/dev/pci/agp_i810.c	22 Jan 2016 14:38:29 -0000
 @@ -706,15 +706,27 @@ agp_i810_setup_chipset_flush_page(struct
  		/* BIOS allocated it for us.  Use that.  */
  		error = bus_space_map(isc->flush_bst, addr & ~1, PAGE_SIZE, 0,
  		    &isc->flush_bsh);
 -		if (error)
 +		if (error == EAGAIN) {
 +			aprint_debug_dev(sc->as_dev, "Try bus_space_map again\n");
 +			error = bus_space_map(isc->flush_bst, addr & ~1,
 +			    PAGE_SIZE, 0, &isc->flush_bsh);
 +		}
 +		if (error) {
 +			aprint_debug_dev(sc->as_dev, "bus_space_map returned "
 +			    "error = %d (addr = %"PRIx64")\n", error,
 +			    (uint64_t)addr);
  			return error;
 +		}
  	} else {
  		/* None allocated.  Allocate one.  */
  		error = bus_space_alloc(isc->flush_bst, minaddr, maxaddr,
  		    PAGE_SIZE, PAGE_SIZE, 0, 0,
  		    &isc->flush_addr, &isc->flush_bsh);
 -		if (error)
 +		if (error) {
 +			aprint_debug_dev(sc->as_dev, "bus_space_alloc returned "
 +			    "error = %d\n", error);
  			return error;
 +		}
  		KASSERT(isc->flush_addr != 0);
  		/* Write it into the PCI config register.  */
  		addr = isc->flush_addr | 1;
 


Home | Main Index | Thread Index | Old Index