Gasket is Google's name for the layer their accelerator drivers share:
Google ASIC Software, Kernel Extensions, and Tools. The chips differ,
but they present the same shape to the host. A control register BAR
with a few windows user space may map, an on-chip page table the host
fills in so the device can reach host memory, and a block of MSI-X
vectors.
Details
amd64 only for now, and host mappings are refused under KMSAN.
only the m2 cards were tested.
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 76842 Build 73725: arc lint + arc unit
Event Timeline
Interesting! A lot of this is mmap / dmabuf style stuff. I don't want to block landing this on waiting for freebsd native dmabuf, but i wonder if this would be another user of native freebsd dmabuf at some point.
| share/man/man4/gasket.4 | ||
|---|---|---|
| 54 | heh update email address | |
| sys/dev/gasket/gasket.h | ||
| 95 | do we need bus_* barriers anywhere? this may be mostly fine on x86 but eg arm/riscv it may need explicit barriers? | |
| sys/dev/gasket/gasket_core.c | ||
| 737 | so are all of these devices fine with 64 bit DMA? | |
| 872 | This means the consumer needs to do two mmaps, right? One for data and one for control/registers, so the correct memory attributes are used? | |
| 1010 | I think this function in particular deserves a doxygen style comment on what it does and entry/exit values. | |
| sys/dev/gasket/gasket_if.m | ||
| 57 | I think all of the methods here deserve documenting what they do, even if it is brief. | |