i386/73706: ATA_IDENTIFY timed out under FreeBSD 5.3
Jonas Davidsson
aphex at bredband.net
Wed Dec 8 08:10:30 PST 2004
The following reply was made to PR i386/73706; it has been noted by GNATS.
From: Jonas Davidsson <aphex at bredband.net>
To: Maxim Frolov <mfr at compumatica.de>
Cc: freebsd-gnats-submit at FreeBSD.org
Subject: Re: i386/73706: ATA_IDENTIFY timed out under FreeBSD 5.3
Date: Wed, 08 Dec 2004 17:05:16 +0100
RELENG_5_3-p2 looks like this:
if (cfg->intpin > 0 && PCI_INTERRUPT_VALID(cfg->intline)) {
#if defined(__ia64__) || defined(__i386__) || defined(__amd64__)
/*
* Try to re-route interrupts. Sometimes the BIOS or
* firmware may leave bogus values in these registers.
* If the re-route fails, then just stick with what we
* have.
*/
irq = PCI_ASSIGN_INTERRUPT(bus, dev);
if (PCI_INTERRUPT_VALID(irq)) {
pci_write_config(dev, PCIR_INTLINE, irq, 1);
cfg->intline = irq;
} else
#endif
irq = cfg->intline;
resource_list_add(rl, SYS_RES_IRQ, 0, irq, irq, 1);
}
Do you mean to comment out everything between "#if defined" and "#endif"?
This would leave
if (cfg->intpin > 0 && PCI_INTERRUPT_VALID(cfg->intline)) {
irq = cfg->intline;
resource_list_add(rl, SYS_RES_IRQ, 0, irq, irq, 1);
}
active. Just checking to make sure, will try this tonight.
Maxim Frolov wrote:
> I found a workaround (or solution) for the problem:
>
> In file sys/dev/pci/pci.c:
>
> If the following block is commented out, ATA devices on primary controller are
> working:
>
> #if 0
> #if defined(__ia64__) || defined(__i386__) || defined(__amd64__) || \
> defined(__arm__)
> /*
> * Try to re-route interrupts. Sometimes the BIOS or
> * firmware may leave bogus values in these registers.
> * If the re-route fails, then just stick with what we
> * have.
> */
> irq = PCI_ASSIGN_INTERRUPT(bus, dev);
> if (PCI_INTERRUPT_VALID(irq)) {
> pci_write_config(dev, PCIR_INTLINE, irq, 1);
> cfg->intline = irq;
> } else
> #endif
> #endif
>
>
>
>
More information about the freebsd-i386
mailing list