Many struct file_operations in the kernel can be "const". Marking them const
moves these to the .rodata section, which avoids false sharing with potential
dirty data. In addition it'll catch accidental writes at compile time to
these shared resources.
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Since my commit 8252bbb136 in 2.6.20-rc1,
host devices have a dummy driver attached. Alas the driver was not
registered before use if ieee1394 was loaded with disable_nodemgr=1.
This resulted in non-functional FireWire drivers or kernel lockup.
http://bugzilla.kernel.org/show_bug.cgi?id=7942
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This together with the phys_to_virt fix in lib/swiotlb.c::swiotlb_sync_sg
fixes video1394 DMA on machines with DMA bounce buffers, especially Intel
x86-64 machines with > 3GB RAM.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: David Moore <dcm@acm.org>
Tested-by: Nicolas Turro <Nicolas.Turro@inrialpes.fr>
Unloading the low-level driver module of a FireWire host can lead to
all sorts of trouble if a raw1394 userspace client is using the host.
Just disallow it by incrementing the LLD's module reference count on
a RAW1394_REQ_SET_CARD write operation. Decrement it when the file
is closed.
This feature wouldn't be relevant if "modprobe -r video1394" or
"modprobe -r dv1394" didn't automatically unload ohci1394 too.
http://bugzilla.kernel.org/show_bug.cgi?id=7701
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Dan Dennedy <dan@dennedy.org>
Fix NULL pointer dereference on hot ejection of a FireWire card while
dv1394 was loaded. http://bugzilla.kernel.org/show_bug.cgi?id=7121
I did not test card ejection with open /dev/dv1394 files yet.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
The old setting is copy & waste from usb-storage and doesn't apply to
sbp2. There is only 4-byte alignment required for everything, except
for S/G table elements which have to be 8-byte aligned according to the
SBP-2 spec. (They happen to be ____cacheline_aligned in our
implementation. Whether that's good is another question.)
We now simply don't tune block queue alignment at all. The default
alignment would surely never become anything else than a multiple of 4,
else tons of calls to blk_queue_dma_alignment would have to be added
everywhere in drivers/...
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
hpsb_host.config_roms is a bitfield of which only one bit is currently
used. hpsb_host.update_config_rom is only a Boolean. Neither one is
accessed in hot code paths or with alignment requirements.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
After PM suspend + resume, the local configuration ROM was not restored.
This prevented remote nodes from recognizing the resuming machine.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
The whole ROM area which is covered by the crc_length field of the ROM
header was fetched before the info_length field was checked for correct
general ROM format. This might be wasteful or even dangerous with nodes
with minimal ROM, nonstandard ROM, or corrupt ROM.
Perform this check at the earliest opportunity.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This patch contains the scheduled IEEE1394_OUI_DB removal.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Update: Also remove drivers/ieee1394/.gitignore.
Remove now unused struct members in drivers/ieee1394/nodemgr.h.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This patch contains the scheduled IEEE1394_EXPORT_FULL_API removal.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Update: Pull proper portion of feature-removal-schedule.txt.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Pull this define out of drivers/ieee1394/ohci1394.c and rename to match
other PCI class defines.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This patch applies a little change in csr1212.c to fix iSight (firewire
digital camera) related issues (but maybe other firewire devices could
also need such modification)
The actual implementation of the "csr1212_key_id_type_map" table doesn't
support some node types used by the iSight for the audio unit. This
limit makes the csr scanning routine to never see the audio unit node ,
and consequently the iSight driver probe() routine to be never called
and there is no way to hook an isight device when it is inserted.
Signed-off-by: Andrea Guzzo <xant@xant.net>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Since commit 98e238cd42 in Linux 2.6.19,
"ieee1394: sbp2: don't prefer MODE SENSE 10", some FireWire DVD-ROMs and
DVD-RWs were mistaken as CD-ROM because sr_mod now sent MODE SENSE 6.
The MMC command set includes only MODE SENSE 10.
http://bugzilla.kernel.org/show_bug.cgi?id=7800
This fix lets sbp2 switch scsi_device.use_10_for_rw on for MMC LUs.
This should rather be done in the command set driver sr_mod, not in the
sbp2 transport driver, and an according patch will follow for a next
Linux release.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Need to use a PCI device, not a FireWire host device. Problem found by
Andreas Schwab, mistake pointed out by Benjamin Herrenschmidt.
http://ozlabs.org/pipermail/linuxppc-dev/2006-December/029595.html
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Tested-by: Andreas Schwab <schwab@suse.de>
Delete some incorrect code, left over from the initial driver submission
in March 2001.
SBP-2 targets should provide sense data via the SBP-2 status block
(autosense). We have to pass the REQUEST_SENSE command through to
targets which don't implement autosense, if there are any, and to
accomodate application clients which use this command.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Follow-up to patch "Consolidate driver registering":
Since I plan the lifetime of Linux 2.6.20 to be the deprecation phase
of CONFIG_IEEE1394_EXPORT_FULL_API, it seems fair to keep all previously
exported symbols available with this option until this phase is over.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This patch consolidates some bookkeeping for driver registering. It
closely models what pci_register_driver() does. The main addition is
that the owner of the driver is set, so we get a proper symlink
for /sys/bus/ieee1394/driver/*/module.
Also moves setting of name and bus type into nodemgr. Because of this,
we can remove the EXPORT_SYMBOL for ieee1394_bus_type, since it's now
only used in ieee1394.ko.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
If "modprobe ohci1394" was quickly followed by "modprobe -r ohci1394",
say with 1 second pause in between, the modprobe -r got stuck in
uninterruptible sleep in kthread_stop. At the same time the knodemgrd
slept uninterruptibly in bus_rescan_devices_helper. That's because
driver_detach took the semaphore of the PCI device and
bus_rescan_devices_helper wanted to take the semaphore of the FireWire
host device's parent, which is the same semaphore. This was a regression
since Linux 2.6.16, commit bf74ad5bc4,
"Hold the device's parent's lock during probe and remove".
The fix (or workaround) adds a dummy driver to the hpsb_host device. Now
bus_rescan_devices_helper won't scan the host device anymore. This
doesn't hurt since we have no drivers which will bind to these devices
and it is unlikely that there will ever be such a driver. The dummy
driver is befittingly presented as a representation of ieee1394 itself.
Fixes: http://bugzilla.kernel.org/show_bug.cgi?id=6706
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
A signed single-bit bitfield doesn't make much sense. Make it unsigned.
Signed-off-by: Luca Tettamanti <kronos.it@gmail.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
There is no manpower available to reform oui.db into a library for use
in more kernel subsystems. The low ratio of usefulness to size and the
occasional need to update oui.db from IEEE's official list suggest to
drop oui.db. I plan to make a userspace script available which
translates the remaining numeric sysfs attributes to names of
organizations.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Known to be affected:
- libdc1394: prefers video1394 for now, old-style raw1394 support might
be dropped eventually
- OpenH323 PWLib, AVC video input module: uses libraw1394's old API
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Fixes http://bugzilla.kernel.org/show_bug.cgi?id=7431
iBook G3 threw a machine check exception and put the display backlight
to full brightness after ohci1394 was unloaded and reloaded.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
"struct scsi_id_instance_data" represents a logical unit.
Rename it to "struct sbp2_lu", and "scsi_id" to "lu".
Rename some other variables too.
Wrap almost all lines after at most 80 columns.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Prepend sbp2*_ to anything globally defined in sbp2.c except for some
macros. Strip sbp2_ from names of struct members.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This work is not delayed.
Also bring the code format in a state which reduces my work to merge
pending sbp2 patchs.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>