API change for bus_dma

Justin T. Gibbs gibbs at scsiguy.com
Sun Jun 29 09:57:38 PDT 2003


>> Again, what we want to achieve is as few lock acquires and releases
>> in the common case as possible.  For architectures like x86, the only
>> data structure that needs to be locked for the common case of no deferral
>> and no bounce page allocations is the tag (it will soon hold the S/G list
>> passed to the callback).  Other implementations may need to acquire other
>> locks, but using the client's lock still removes one lock acquire and
>> release in each invocation that is not deferred.
>> 
>> --
>> Justin
> 
> This is becoming wonderfully complex.  What is the purpose of storing
> the S/G list in the tag?  Are we going to enforce a 1:1 relationship
> between tags and maps?  That would really suck for the aac(4) driver.

No.  We are going to enforce only one callback invocation at a time
per tag.  The S/G list is only persistent for the lifetime of the
callback.

The reason for the change is to avoid using the stack for large S/G
lists.

--
Justin



More information about the freebsd-arch mailing list