Current 8/27/2004, DVD problems
J.R. Oldroyd
fbsd at opal.com
Tue Aug 31 16:35:55 PDT 2004
Afraid not.
Just to confirm since my line numbers seem to be a few off yours...
I have:
__FBSDID("$FreeBSD: src/sys/dev/ata/ata-lowlevel.c,v 1.46 2004/08/27 22:14:45 sos Exp $");
And after adding the extra call to ata_wait() there are now TWO ata_wait()s:
int
ata_generic_command(struct ata_device *atadev, u_int8_t command,
u_int64_t lba, u_int16_t count, u_int16_t feature)
{
if (atadebug)
ata_prtdev(atadev, "ata_command: addr=%04lx, command=%02x, "
"lba=%jd, count=%d, feature=%d\n",
rman_get_start(atadev->channel->r_io[ATA_DATA].res),
command, (intmax_t)lba, count, feature);
/* ready to issue command ? */
if (ata_wait(atadev, 0) < 0) {
ata_prtdev(atadev, "timeout waiting for ready command=%02x\n", command);
return -1;
}
/* select device */
ATA_IDX_OUTB(atadev->channel, ATA_DRIVE, ATA_D_IBM | atadev->unit);
/* ready to issue command ? */
if (ata_wait(atadev, 0) < 0) {
ata_prtdev(atadev, "timeout sending command=%02x\n", command);
return -1;
}
/* enable interrupt */
ATA_IDX_OUTB(atadev->channel, ATA_ALTSTAT, ATA_A_4BIT);
Same result. Hangs at the CD probe with a normal boot. Hangs also
in verbose mode with a disc in. Does boot in verbose mode with no
disc in.
-jr
On Aug 31, 22:23, Søren Schmidt wrote:
> J.R. Oldroyd wrote:
> >Some follow-up.
> >
> >Similar to other folks with this problem, the system will boot in
> >verbose mode. However, ONLY with no medium. If medium is present,
> >it still hangs. If the tray is empty, it will boot in either DMA or
> >PIO mode. And if I then insert a disc, I can read it OK.
>
> Hmm does the attached patch change behavior in any way ?
>
> -Søren
> Index: ata-lowlevel.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/dev/ata/ata-lowlevel.c,v
> retrieving revision 1.44
> diff -u -r1.44 ata-lowlevel.c
> --- ata-lowlevel.c 16 Aug 2004 09:32:35 -0000 1.44
> +++ ata-lowlevel.c 24 Aug 2004 07:25:32 -0000
> @@ -721,6 +721,12 @@
> rman_get_start(atadev->channel->r_io[ATA_DATA].res),
> command, (intmax_t)lba, count, feature);
>
> + /* ready to issue command ? */
> + if (ata_wait(atadev, 0) < 0) {
> + ata_prtdev(atadev, "timeout waiting for ready command=%02x\n", command);
> + return -1;
> + }
> +
> /* select device */
> ATA_IDX_OUTB(atadev->channel, ATA_DRIVE, ATA_D_IBM | atadev->unit);
>
More information about the freebsd-current
mailing list