From owner-freebsd-bugs Mon Mar 19 13: 0: 7 2001 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 79F6237B725 for ; Mon, 19 Mar 2001 13:00:04 -0800 (PST) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.11.1/8.11.1) id f2JL04694182; Mon, 19 Mar 2001 13:00:04 -0800 (PST) (envelope-from gnats) Date: Mon, 19 Mar 2001 13:00:04 -0800 (PST) Message-Id: <200103192100.f2JL04694182@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: Soren Schmidt Subject: Re: kern/25370: ATA subsystem in 4.x fails to recognize some ATA CD-ROMs Reply-To: Soren Schmidt Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The following reply was made to PR kern/25370; it has been noted by GNATS. From: Soren Schmidt To: matt@gsicomp.on.ca (Matthew Emmerton) Cc: freebsd-gnats-submit@FreeBSD.org, sos@FreeBSD.org Subject: Re: kern/25370: ATA subsystem in 4.x fails to recognize some ATA CD-ROMs Date: Mon, 19 Mar 2001 21:56:20 +0100 (CET) It seems Matthew Emmerton wrote: > After considerable time learning the ata code, I've created an updated patch > which should fix the problem. > > > --- sys/dev/ata/atapi-all.c.orig Mon Mar 19 14:48:51 2001 > +++ sys/dev/ata/atapi-all.c Mon Mar 19 14:49:00 2001 > @@ -391,7 +391,7 @@ > atapi_read(request, length); > else > atapi_write(request, length); > - /* FALLTHROUGH */ > + return ATA_OP_CONTINUES; > > case ATAPI_P_ABORT: > case ATAPI_P_DONE: > > boot output: > (null): MODE_SENSE_BIG command timeout - resetting > ata0: resetting devices .. done > (null): MODE_SENSE_BIG DONEDRQ > (null): read data overrun 65526/1 > (null): MODE_SENSE_BIG command timeout - resetting > ata0: resetting devices .. done > (null): read data overrun 29/0 > acd0: CDROM at ata0-slave using BIOSPIO Hmm, well it still sortof fails, and it breaks devices that actually use ATAPI_P_DONEDRQ (which by the way is another abuse of the spec), since it is meant for devices that return the DONE part of the protocol together with the last part of the data. Now if you return ATA_OP_CONTINUES the driver will wait for a new interrupt which wont occur.. -Søren To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message