Index: [thread] [date] [subject] [author]
  From: Brian Julin <bri@forcade.calyx.net>
  To  : ggi-develop@eskimo.com
  Date: Sat, 18 Jul 1998 00:50:34 -0400 (EDT)

DMA BLTs

I got my BLT engine working (on a bumpy bus ride no less) so sometime
soon I'll probably get the overwhelming desire to play with DMA;
If I recall right the current situation with DMA on Linux is as
follows:

1) ISA cards cannot DMA above physical address 16M, VESA not above 64M.
If no method can lock down and return a region in this range a smaller
dedicated bounce-buffer and copy to/from user must be used rather than 
a shared page.

2) Linus has told a developer what to do to his proposed DMA page
request functions to get them included, so there is hope for getting
a page for ISA/VLB.

3) The new kernels have a programmable PCI memory hole manager called
mtrr.

Could any guru answer the following questions or point to
code that would provide samples:

1) If a userspace process passes a pointer to blit from/to,
/dev/graphN can tell whether access to the card is focused on
that app, but can/how can the kernel identify the calling process and
verify the physical region is valid and all permissions are kosher?

2) What's the procedure for translating a processes's userspace address
into physical address so it can be decided whether bounce buffers
are needed?

3) Is there any proposed GGI API for this?  Request a directbuffer
for DMA?  Get, then put a box with a GC flag set?  Both would
have to use shared segments, the former of large size, or opt to be
not very efficient and use bounce buffers.

4) Anyone thought of direct DMA of swapped out user pages to the display
memory via a DMA capable controller on the swap device?  Worth it?

(moan... at least copybox is easy :).

--
Brian S. Julin

Index: [thread] [date] [subject] [author]