Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

re: CVS commit: src/sys/dev/pci



On Mon, 12 Dec 2011, matthew green wrote:

> > On Mon, Dec 12, 2011 at 03:54:57PM +1100, matthew green wrote:
> > > 
> > > > On Mon, Dec 12, 2011 at 02:44:15AM +0000, Jonathan A. Kollasch wrote:
> > > > > Module Name:  src
> > > > > Committed By: jakllsch
> > > > > Date:         Mon Dec 12 02:44:15 UTC 2011
> > > > > 
> > > > > Modified Files:
> > > > >       src/sys/dev/pci: if_sip.c
> > > > > 
> > > > > Log Message:
> > > > > Using BUS_DMA_NOCACHE for bus_dmamem_map() causes issues on (at 
> > > > > least) sparc64.
> > > > 
> > > > What kind of issues?
> > > 
> > > this is maping normal memory uncached.  attempting to access this
> > > mapping causes data faults.
> > 
> > Jonathan, please add some explanation to the commit message.
> > 
> > Isn't this just covering a bug in the sparc64 bus_dma(9) implementation?
> 
> that's what i have been wondering since writing the above.
> 
> eeh, should we turn off CP/CV and E bits for ram BUS_DMA_NOCACHE
> addresses, instead of device memory?

Hm.  Let me look at that commit....  (cvsweb is slooooo today...)  

Let's see... BUS_DMA_NOCACHE went into the man page in 2003 based on an 
x86 machine specific bit...  It was added to the sparc64 bus_dma.h at the 
same time...  Replacing an existing MD BUS_DMA_NOCACHE that was added to 
in 2000...

I can't figure out what the happened in x86 land... it seems to have moved 
across half a dozen files.

So...  The original BUS_DMA_NOCACHE for sparc64 had different semantics.  
It was supposed to be used for memory that is attached to the system 
through an I/O bus, such as the framebuffer on a PCI I/O card.

The options are:

1)  Remove the inherently MD BUS_DMA_NOCACHE flag from the man page so 
it's not used by people who don't understand why it's needed.

2)  Properly define the semantics of BUS_DMA_NOCACHE so people know when 
it needs to be used.

3)  Redefine that bit for sparc64.

Eduardo



Home | Main Index | Thread Index | Old Index