Aspeed XDMA Engine Driver Interfaces (PCI communications with host)

Eddie James eajames at linux.vnet.ibm.com
Tue Jan 29 08:50:57 AEDT 2019


Hi,

I'm working on a driver for the XDMA engine to enable DMA operations 
between the host and the BMC. I thought I'd get up a proposal for the 
interfaces to get some feedback.

Driver provides one or two simple read/write file handles under /dev/, 
depending on whether or not we're restricted to using the VGA memory only.

/dev/xdma:

     seek: user sets the host DMA address

     write: user provides the BMC address and specifies the operation 
type ("upstream", meaning from the BMC to the host, or "downstream", 
meaning from the host to the BMC). If we're using only VGA memory, the 
BMC address can be skipped, as it will always be from/to the VGA space.

     read: the syscall blocks or returns EAGAIN until the operation is 
complete

If we only use VGA memory, we need another device to interact with that 
memory space easily, as well as prevent multiple users overwriting each 
others data. VGA memory space is configurable by HW strap on the Aspeed 
between 8 and 64MB, but is 16MB by default.

/dev/xdma-buffer:

     open/close: lock access to the memory

     read/write: read or write the VGA memory

Locking access in this way is quite a limitation, but I'm not sure how 
else to guarantee user's data is OK...

Suggestions are very welcome, on all aspects of the design.

Thanks,

Eddie



More information about the openbmc mailing list