Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Mar 2012 12:43:48 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-stable@freebsd.org, lausts@acm.org
Cc:        Eivind Evensen <eivinde@terraplane.org>
Subject:   Re: Floppy disks don't work with FreeBSD 9.0
Message-ID:  <201203301243.48914.jhb@freebsd.org>
In-Reply-To: <4F7334F1.5214.1516AE@lausts.acm.org>
References:  <4F64608B.27301.3724F1@lausts.acm.org> <20120327195758.GA78507@klump.hjerdalen.lokalnett> <4F7334F1.5214.1516AE@lausts.acm.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, March 28, 2012 3:57:37 pm Thomas Laus wrote:
> > Hi.
> > 
> > I'm a bit short on free machines, so the closest I can get right now
> > is my everyday machine running from sources cvsupped from
> > RELENG_8 3.rd of March:
> > 
> I 'csuped' to FreeBSD 9.0-STABLE today and still had the same problem.  This 
> computer has normal floppy disk operation when using FreeBSD 8.3-RC1 and 
> doesn't have any fd functionality with FreeBSD 9.0-STABLE.  I entered a 
> Problem Report in the system today.
> 
> Thanks for all of the help, we'll let the development team take if from 
here.

I just fixed a bug in HEAD yesterday where bounce buffers for ISA DMA were 
broken in 9.  Can you try that change out?

Author: jhb
Date: Thu Mar 29 18:58:02 2012
New Revision: 233675
URL: http://svn.freebsd.org/changeset/base/233675

Log:
  Restore proper use of bounce buffers for ISA DMA.  When locking was
  added, the call to pmap_kextract() was moved up, and as a result the
  code never updated the physical address to use for DMA if a bounce
  buffer was used.  Restore the earlier location of pmap_kextract() so
  it takes bounce buffers into account.
  
  Tested by:    kargl
  MFC after:    1 week

Modified:
  head/sys/x86/isa/isa_dma.c

Modified: head/sys/x86/isa/isa_dma.c
==============================================================================
--- head/sys/x86/isa/isa_dma.c  Thu Mar 29 17:50:01 2012        (r233674)
+++ head/sys/x86/isa/isa_dma.c  Thu Mar 29 18:58:02 2012        (r233675)
@@ -237,8 +237,6 @@ isa_dmastart(int flags, caddr_t addr, u_
        caddr_t newaddr;
        int dma_range_checked;
 
-       /* translate to physical */
-       phys = pmap_extract(kernel_pmap, (vm_offset_t)addr);
        dma_range_checked = isa_dmarangecheck(addr, nbytes, chan);
 
 #ifdef DIAGNOSTIC
@@ -281,6 +279,9 @@ isa_dmastart(int flags, caddr_t addr, u_
                addr = newaddr;
        }
 
+       /* translate to physical */
+       phys = pmap_extract(kernel_pmap, (vm_offset_t)addr);
+
        if (flags & ISADMA_RAW) {
            dma_auto_mode |= (1 << chan);
        } else { 

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201203301243.48914.jhb>