diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-04-22 09:13:54 -0400 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-05-10 16:53:44 -0400 |
commit | f30e6d3e419bfb5540fa82ba7eca01d578556e6b (patch) | |
tree | e4d6e7bad161a76b09557bf7513358ae1ce8f7fb /sound/firewire/cmp.c | |
parent | 020abf03cd659388f94cb328e1e1df0656e0d7ff (diff) |
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 da28947e7e36
"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>
Diffstat (limited to 'sound/firewire/cmp.c')
-rw-r--r-- | sound/firewire/cmp.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sound/firewire/cmp.c b/sound/firewire/cmp.c index 4a37f3a6fab9..14cacbc655dd 100644 --- a/sound/firewire/cmp.c +++ b/sound/firewire/cmp.c | |||
@@ -49,10 +49,9 @@ static int pcr_modify(struct cmp_connection *c, | |||
49 | enum bus_reset_handling bus_reset_handling) | 49 | enum bus_reset_handling bus_reset_handling) |
50 | { | 50 | { |
51 | struct fw_device *device = fw_parent_device(c->resources.unit); | 51 | struct fw_device *device = fw_parent_device(c->resources.unit); |
52 | __be32 *buffer = c->resources.buffer; | ||
53 | int generation = c->resources.generation; | 52 | int generation = c->resources.generation; |
54 | int rcode, errors = 0; | 53 | int rcode, errors = 0; |
55 | __be32 old_arg; | 54 | __be32 old_arg, buffer[2]; |
56 | int err; | 55 | int err; |
57 | 56 | ||
58 | buffer[0] = c->last_pcr_value; | 57 | buffer[0] = c->last_pcr_value; |