firewire: octlet AT payloads can be stack-allocated
We do not need slab allocations anymore in order to satisfy
streaming DMA mapping constraints, thanks to commit da28947e7e
"firewire: ohci: avoid separate DMA mapping for small AT payloads".
(Besides, the slab-allocated buffers that firewire-core, firewire-sbp2,
and firedtv used to provide for 8-byte write and lock requests were
still not fully portable since they crossed cacheline boundaries or
shared a cacheline with unrelated CPU-accessed data. snd-firewire-lib
got this aspect right by using an extra kmalloc/ kfree just for the
8-byte transaction buffer.)
This change replaces kmalloc'ed lock transaction scratch buffers in
firewire-core, firedtv, and snd-firewire-lib by local stack allocations.
Perhaps the most notable result of the change is simpler locking because
there is no need to serialize usages of preallocated per-device buffers
anymore. Also, allocations and deallocations are simpler.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Acked-by: Clemens Ladisch <clemens@ladisch.de>
This commit is contained in:
@@ -49,10 +49,9 @@ static int pcr_modify(struct cmp_connection *c,
|
||||
enum bus_reset_handling bus_reset_handling)
|
||||
{
|
||||
struct fw_device *device = fw_parent_device(c->resources.unit);
|
||||
__be32 *buffer = c->resources.buffer;
|
||||
int generation = c->resources.generation;
|
||||
int rcode, errors = 0;
|
||||
__be32 old_arg;
|
||||
__be32 old_arg, buffer[2];
|
||||
int err;
|
||||
|
||||
buffer[0] = c->last_pcr_value;
|
||||
|
Reference in New Issue
Block a user