Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 08 Apr 1999 13:29:33 -0600
From:      Wes Peters <wes@softweyr.com>
To:        Nate Williams <nate@mt.sri.com>
Cc:        Roger Hardiman <roger@cs.strath.ac.uk>, hackers@FreeBSD.ORG, multimedia@FreeBSD.ORG
Subject:   Re: Bt848 corruption since upgrading to 3.1. Has DMA code changed?
Message-ID:  <370D039D.FC2D907A@softweyr.com>
References:  <370CB2DC.709E7CEA@cs.strath.ac.uk> <370CAA37.3645E2B9@softweyr.com> <370CD277.E9A64E04@cs.strath.ac.uk> <199904081837.MAA28461@mt.sri.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Nate Williams wrote:
> 
> > > Does the driver explicitly turn on PCI bus mastering on the card?  The
> > > PCI initialization code no longer does this.  This change bit the fxp
> > > driver on some machines where the BIOS doesn't initialize bus mastering
> > > on the card.
> >
> > The driver has this code which enables the Bus Mastering.
> > It was added back in the days of 3.0-current (about 12 months ago) when
> > the driver
> > was common to 2.2.x and 3.x. That is why there is a #if around the code.

Actually the #if is unnecessary, it only saves you the pci_conf_read and
pci_conf_write, which are small potatoes in an attach routine.  Worst case,
you're turning on a bit that was already turned on.

> >   #if __FreeBSD__ > 2
> >         fun = pci_conf_read(tag, PCI_COMMAND_STATUS_REG);
> >         pci_conf_write(tag, PCI_COMMAND_STATUS_REG, fun | 4);
> >   #endif
> 
> Other than using a magic number of 4, that's almost the same as what's
> used in the fxp code.  However, that also enables adds 0x2, which has
> another meaning.

The correct name for "4" here would be PCIM_CMD_BUSMASTEREN.

> (It should be updated to not use the magic numbers, and instead use the
> constants supplied in <pci/pcireg.h>, but that's a minor issue).

Unless you're trying to maintain that and don't know to look in pcireg.h
for the bit definitions.  Magic numbers BAD!

Other than that, I have no help to offer.  Do you know for sure where it
dies?  I tracked down the problem in fxp with some simple printfs, and
then several someones on -hackers pointed out the fix.

-- 
       "Where am I, and what am I doing in this handbasket?"

Wes Peters                                                 Softweyr LLC
http://www.softweyr.com/~softweyr                      wes@softweyr.com


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-multimedia" in the body of the message




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