linux-kernel-test/drivers/ieee1394
Stefan Richter fd2f3bddae ieee1394: replace vmalloc by kmalloc in csr1212
The biggest chunk ever allocated by CSR1212_MALLOC is 1024 Bytes +
sizeof(struct csr1212_csr_rom_cache) big.  Most of the time much
smaller data structures are allocated.  Therefore vmalloc is a waste.

The one exception is csr1212_append_new_cache() which is called to
append a chunk of CSR1212_EXTENDED_ROM_SIZE + sizeof(struct
csr1212_csr_rom_cache) if the currently allocated ROM cache is too
small.  CSR1212_EXTENDED_ROM_SIZE is generously defined as 256 kBytes.
In SVN commit 1220, Steve Kinneberg lowered this to 2 kBytes in the
config_rom_2.4 branch.  This same commit also switched CSR1212_MALLOC
from kmalloc to vmalloc in the SVN trunk branch:

> r1220 | kberg | 2004-05-31 01:51:44 +0200 (Mon, 31 May 2004) | 13 lines
>
> CSR1212 Extended ROM bug fixes:
> trunk line changes:
>   - Use vmalloc instead of kmalloc
>   - Change delayed_reset_bus() to operate in a work_queue instead of a
>     timer interrupt.
>   - Fix hpsb_allocate_and_register_addrspace() to not allocate space
>     on top of already allocated space.
>   - Fix problems in csr1212.c filling ConfigROM images when extend
>     ROMs are present.
> config-rom-2.4 changes:
>   - Changed extended rom allocation from 256K to 8K.
(It was actually 2 kB, not 8 kB.)
>   - Fix hpsb_allocate_and_register_addrspace() to not allocate space
>     on top of already allocated space.
>   - Fix problems in csr1212.c filling ConfigROM images when extend
>     ROMs are present.

I am now setting CSR1212_EXTENDED_ROM_SIZE to 2 kB minus the overhead of
struct csr1212_csr_rom_cache.  Note, this code path is not used by the
in-kernel drivers though.  raw1394 could trigger it, but the respective
libraw1394 functions don't exist yet.

Furthermore, userspace programs can replace the entire local ROM via
raw1394.  If kmalloc does not fulfill their needs --- well, tough luck.
I decree that nobody needs such huge extended ROMs.  (Extended ROMs are
defined by IEEE 1212 clause 7.7.18.  The spec does not impose
practically relevant restrictions on the size of extended ROM chunks.)

Another potentially demanding use of CSR1212_MALLOC is if external
FireWire devices come with Extended ROM entries.  If they are too big
for kmalloc (or have been too big for vmalloc) we just fail to read
their ROM.  This is quite unlikely though, to my knowledge.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
2007-04-30 00:00:28 +02:00
..
config_roms.c ieee1394: stricter error checks in csr1212 2007-04-30 00:00:28 +02:00
config_roms.h ieee1394: small header cleanup 2007-04-30 00:00:28 +02:00
csr1212.c ieee1394: replace vmalloc by kmalloc in csr1212 2007-04-30 00:00:28 +02:00
csr1212.h ieee1394: replace vmalloc by kmalloc in csr1212 2007-04-30 00:00:28 +02:00
csr.c ieee1394: usecs_to_jiffies takes unsigned int argument 2006-12-07 21:29:08 +01:00
csr.h [PATCH] ieee1394: clean up declarations of hpsb_*_config_rom 2006-07-03 12:02:31 -04:00
dma.c ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
dma.h ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
dv1394-private.h [PATCH] ieee1394: dv1394: sem2mutex conversion 2006-07-03 12:02:32 -04:00
dv1394.c ieee1394: change deprecation status of dv1394 2007-04-09 18:52:27 +02:00
dv1394.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
eth1394.c [SK_BUFF]: Introduce ip_hdr(), remove skb->nh.iph 2007-04-25 22:25:10 -07:00
eth1394.h ieee1394: small header cleanup 2007-04-30 00:00:28 +02:00
highlevel.c ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
highlevel.h ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
hosts.c ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
hosts.h ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
ieee1394_core.c ieee1394: de-inline some functions 2007-04-30 00:00:28 +02:00
ieee1394_core.h ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
ieee1394_hotplug.h [PATCH] ieee1394: remove redundant code from ieee1394_hotplug.h 2006-07-03 12:02:30 -04:00
ieee1394_transactions.c ieee1394: drop csr1212's support for external compilation 2007-04-30 00:00:28 +02:00
ieee1394_transactions.h ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
ieee1394_types.h ieee1394: safer definition of empty macros 2006-09-17 19:31:20 +02:00
ieee1394-ioctl.h ieee1394: cycle timer read extension for raw1394 2007-02-17 14:39:33 +01:00
ieee1394.h [PATCH] ieee1394: coding style and comment fixes in midlayer header files 2006-07-03 12:02:28 -04:00
iso.c ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
iso.h ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
Kconfig ieee1394: change deprecation status of dv1394 2007-04-09 18:52:27 +02:00
Makefile the scheduled IEEE1394_OUI_DB removal 2007-02-08 20:57:43 +01:00
nodemgr.c ieee1394: drop csr1212's support for external compilation 2007-04-30 00:00:28 +02:00
nodemgr.h ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
ohci1394.c ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
ohci1394.h ieee1394: move some comments from declaration to definition 2007-04-30 00:00:28 +02:00
pcilynx.c i2c: Declare more i2c_adapter parent devices 2007-02-13 22:09:03 +01:00
pcilynx.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
raw1394-private.h ieee1394: raw1394: add comments on lock usage 2006-12-07 21:28:06 +01:00
raw1394.c Merge branch 'for-linus' of ssh://master.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2007-02-19 13:07:19 -08:00
raw1394.h ieee1394: cycle timer read extension for raw1394 2007-02-17 14:39:33 +01:00
sbp2.c ieee1394: sbp2: include fixes 2007-04-30 00:00:27 +02:00
sbp2.h ieee1394: sbp2: remove unnecessary alignments of struct members 2007-04-30 00:00:27 +02:00
video1394.c [PATCH] mark struct file_operations const 3 2007-02-12 09:48:45 -08:00
video1394.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00