Current-Users archive

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

Re: USB problems after memory upgrade

> >> How hard would it be to provide a kernel option to specifically
> >> allocate the highest possibly memory locations for devices, to try to
> >> flush out such issues?
> >
> > bus_dmatag_subregion(9) is an API to handle such issue,
> > as it was introduced for bce(4) that could not xfer to >1GB RAM.
> As I understand it, its possible that there may be similar >2GB, >4GB
> etc issues lurking in other drivers, which would only trigger if they
> happen to be allocated memory over such a boundary.
> I was wondering how hard it would be to have a kernel option which
> would force all memory to be allocated from as high an address as
> possible, to try to deterministically trigger such issues, so they
> could be more easily found and corrected.

I'm not sure if I understand your point correctly, but such restriction
is caused by DMA hardware implementation on bus or each device.
I don't think we can handle it by a kernel option.

All memory for DMA xfers must be handled by bus_dmamem_alloc(9)
and bus_dmamap_load(9) so that actuall DMA xfers are done against
safe address range specified in bus_dmatag passed from a parent bus
or specified by bus_dmatag_subregion(9) per device basis.

All necessary xfers between DMA buffer and actuall target xfer regions
are handled by bus_dmamap_sync(9), as done on ISA bounce buffer ops.
Izumi Tsutsui

Home | Main Index | Thread Index | Old Index