updating from r231158 to 234465: mounting from ufs:/dev/ad4s1a
failed with error 19
John Baldwin
jhb at freebsd.org
Thu May 3 18:46:22 UTC 2012
On Thursday, May 03, 2012 11:35:19 am Anton Shterenlikht wrote:
> On Tue, May 01, 2012 at 12:35:26PM +0100, Anton Shterenlikht wrote:
> > On Mon, Apr 30, 2012 at 08:43:14AM -0400, John Baldwin wrote:
> > > >
> > > > I also see:
> > > >
> > > > ata0: stat0=0x00 err=0x01 lsb=0x14 msb=0exb
> > > > ata0: stat1=0x00 err=0x00 lsb=0x00 msb=0x00
> > > > ata0: reset tp2 stat0=00 stat1=00 devices=0x10000
> > >
> > > Hmmm, I don't know how to grok these lines, but does your disk work at
all now
> > > with any kernel? It may be that your disk has died (or a cable, etc.)
and it
> > > just happened to coincide with your upgrade?
> >
> > I reverted back to r231158, built world and generic
> > kernel (minus all modules, i.e. "option MODULES_OVERRIDE=").
> > This works, see the verbose boot dmesg at the end.
> >
> > I think I'll just do a binary search.
>
> I traced it to r233677.
> The only change from 233676 to 233677 is
> in /sys/dev/pci/pci.c
>
> My kernel is GENERIC with no modules
> and with various bits removed, e.g. all raid devices
> and PCI network devices, which I definitely
> haven't got on this laptop.
>
> Below is the verbose boot with r233676.
> Apparently at the beginning there's also
> the previous unsuccessful boot with r233677.
> Is this a new feature? I didn't know the
> previous dmesg is preserved after a reboot.
> Anyway, you can see clearly the error with r233677.
>
> I guess this is something to do with
> ata -> ada change?
I don't think so.
Please try just this change:
Index: pci.c
===================================================================
--- pci.c (revision 234928)
+++ pci.c (working copy)
@@ -2822,10 +2822,14 @@ pci_add_map(device_t bus, device_t dev, int reg, s
* from the parent.
*/
resource_list_delete(rl, type, reg);
- } else {
+ start = 0;
+ device_printf(bus,
+ "pci%d:%d:%d:%d bar %#x failed to allocate",
+ pci_get_domain(dev), pci_get_bus(dev), pci_get_slot(dev),
+ pci_get_function(dev), reg);
+ } else
start = rman_get_start(res);
- pci_write_bar(dev, pm, start);
- }
+ pci_write_bar(dev, pm, start);
return (barlen);
}
--
John Baldwin
More information about the freebsd-current
mailing list