From owner-cvs-sys Fri Nov 15 17:20:08 1996 Return-Path: owner-cvs-sys Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id RAA01818 for cvs-sys-outgoing; Fri, 15 Nov 1996 17:20:08 -0800 (PST) Received: (from gibbs@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id RAA01758; Fri, 15 Nov 1996 17:19:52 -0800 (PST) Date: Fri, 15 Nov 1996 17:19:52 -0800 (PST) From: "Justin T. Gibbs" Message-Id: <199611160119.RAA01758@freefall.freebsd.org> To: CVS-committers, cvs-all, cvs-sys Subject: cvs commit: src/sys/i386/conf GENERIC LINT options.i386 src/sys/dev/aic7xxx aic7xxx.seq aic7xxx_reg.h src/sys/i386/scsi aic7xxx.c src/sys/pci aic7870.c Sender: owner-cvs-sys@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk gibbs 96/11/15 17:19:52 Modified: sys/dev/aic7xxx aic7xxx.seq aic7xxx_reg.h Log: Assert that we have seen an identify or have not disconneccted since the initial selection when entering the status phase. This is the same assertion we use for all the other data transfer phases. Hopefully fix the hangs in the mesgin and mesgout phases that I introduced last week during some code cleanup. I need to get some of these 12MB/s drives so I can reproduce these hangs here... Add a pause disable in the SCB paging case around our manipulation of the QOUTQCNT variable. This is simply extra sanity. Set LASTPHASE to P_BUSFREE once we see a busfree so that the kernel driver can differentiate this from a data out phase. Revision Changes Path 1.49 +13 -11 src/sys/dev/aic7xxx/aic7xxx.seq 1.17 +4 -1 src/sys/dev/aic7xxx/aic7xxx_reg.h Modified: sys/i386/conf GENERIC LINT options.i386 Log: Since there have been so many reports of the Memory Mapped I/O to the aic7xxx cards failing on certain motherboards, reverse the logic used to control this feature. AHC_FORCE_PIO is replaced with AHC_ALLOW_MEMIO. GENERIC no longer needs to specify the AHC_FORCE_PIO option since this is the default. Revision Changes Path 1.78 +1 -4 src/sys/i386/conf/GENERIC 1.295 +5 -5 src/sys/i386/conf/LINT 1.31 +2 -2 src/sys/i386/conf/options.i386 Modified: sys/i386/scsi aic7xxx.c Log: Be even more careful in how we manipulate the QOUTQCNT variable. Now we do reset it from the QOUTCNT register inside a pause/unpause. This now happens once per command complete interrupt in the paging case (one interrupt can be for multiple completed commands). I may introduce a counter and do a lazy update in the future, similar to what is done with the QINCNT. Enhance the QUEUE FULL condition handling so that the number of openings will be reduced. This has become more important now that the driver is faster. This code really belongs in the gerneric SCSI layer, as will be the case once 3.0 gets the code from the 'SCSI' branch. Add some #if 0'd out trace code I've been using to help debug sequencer problems. Fix the SCB paging problem that I was seeing. This was only on my 7850 controller and stems from the fact that its QINFIFO can only handle 3bit SCB identifiers. This means that you can only have 8 transactions open at a time with the current paging scheme to these controllers. The code added to enforce this is generic in that it tests for the number of relevent bits that the QINFIFO can store and adjusts the max accordingly. It may be possible to come up with a scheme that allows for more than 8 commands at a time, but I don't know that it is worth the effort simply to fix a low end card. The aic7880 still can do 255. This problem may be related to what Andrey was seeing since I don't have n aic7770 rev E chip here to test on, but as soon as someone probes one of these cards with this new code, the dmesg output will tell the whole story. Revision Changes Path 1.86 +93 -20 src/sys/i386/scsi/aic7xxx.c Modified: sys/pci aic7870.c Log: AHC_FORCE_PIO -> AHC_ALLOW_MEMIO Revision Changes Path 1.44 +2 -2 src/sys/pci/aic7870.c