* [GIT PATCH] SCSI updates for 2.6.25
@ 2008-04-18 17:41 James Bottomley
2008-04-19 15:19 ` Ingo Molnar
0 siblings, 1 reply; 16+ messages in thread
From: James Bottomley @ 2008-04-18 17:41 UTC (permalink / raw)
To: Andrew Morton, Linus Torvalds; +Cc: linux-scsi, linux-kernel
This is the first piece of our merge for the merge window. I have a bit
of other stuff with dependent patches, and I'm sure there will be
something else crawling out of the woodwork.
It's the usual grab bag of driver updates and mid-layer changes.
There's no new stand out features in this one.
The patch is available here:
master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
The short change log is:
Adrian Bunk (5):
qla1280: remove version check
sun3_scsi_vme: add MODULE_LICENSE
st: rename flush_write_buffer()
aic94xx: cleanups
make scsi_end_bidi_request() static
Al Viro (1):
libsas: fix endianness bug in sas_ata
Andi Kleen (1):
Remove random noop unchecked_isa_dma users
Andrew Vasquez (15):
qla2xxx: Update version number to 8.02.01-k1.
qla2xxx: Remove unused member (dma_handle) from srb_t structure.
qla2xxx: Add midlayer target/device reset support.
qla2xxx: Check alternate 'reason' code during GPSC status handling.
qla2xxx: Add Flash Descriptor Table layout support.
qla2xxx: Use PCI-SIG nomenclature for PCIe bandwidth units.
qla2xxx: Cruft cleanup of functions and structures.
qla2xxx: Add hardware trace-logging support.
qla2xxx: Add FC-transport Asynchronous Event Notification support.
qla2xxx: Simplify interrupt handler locking.
qla2xxx: Use an rport's scsi_target_id member consistently throughout driv
qla2xxx: Remove unused and obsolete #define's.
qla2xxx: Add support for host supported speeds FC transport attribute.
qla2xxx: Update copyright banner.
qla2xxx: Update firmware filenames for new ISP parts.
Boaz Harrosh (4):
iscsi: bidi support for iscsi_tcp
iscsi: bidi support at the generic libiscsi level
iscsi: extended cdb support
gdth: remove command accessors
Christof Schmitt (5):
zfcp: Fix error handling for blocked unit for send FCP command
zfcp: Remove zfcp_erp_wait from slave destory handler to fix deadlock
zfcp: Move DBF definitions to private header file
zfcp: Fix handling for boxed port after physical close
zfcp: convert zfcp to use target reset and device reset handler
Darrick J. Wong (2):
aic94xx: Use sas_request_addr() to provide SAS WWN if the adapter lacks on
libsas: Provide a transport-level facility to request SAS addrs
David C Somayajulu (1):
qla4xxx: fix scsi command completion, lun reset and target reset code
Denis Cheng (2):
hosts.c: removed one unneeded shost->active_mode assignment
3w-9xxx, 3w-xxxx: memset not needed in probe
FUJITA Tomonori (40):
bsg: no need to set BSG_F_BLOCK bit in bsg_complete_all_commands
bsg: remove minor in struct bsg_device
bsg: use better helper list functions
bsg: replace kobject_get with blk_get_queue
bsg: takes a ref to struct device in fops->open
tgt: use KMEM_CACHE macro
scsi_debug: remove unnecessary function declarations
scsi_debug: support large non-fake virtual disk
scsi_debug: remove the duplicated code in resp_read and resp_write
scsi_debug: sweep up sdebug_capacity calculation
scsi_debug: remove unnecessary sdebug_store_size
scsi_debug: fix lba and data length calculation bugs
ps3rom: use scsi_build_sense_buffer
stex: use scsi_build_sense_buffer
libata: use scsi_build_sense_buffer
scsi_debug: use scsi_build_sense_buffer
add scsi_build_sense_buffer helper function
scsi_debug: remove unnecessary function declarations
scsi_debug: use list_for_each_entry_safe
scsi_debug: remove unnecessary condition test in devInfoReg
scsi_debug: create new scsi_debug devices at a single place
scsi_debug: remove temporary hack around sscanf for negative values
3w-9xxx: use sg buffer copy helper functions
3w-xxxx: use sg buffer copy helper functions
stex: use sg buffer copy helper functions
aacraid: use sg buffer copy helper functions
ips: use sg buffer copy helper funcitons
simscsi: use sg buffer copy helper funcitons
ps3rom: use sg buffer copy helper funcitons
scsi_debug: use sg buffer copy helper functions
scsi: add wrapper functions for sg buffer copy helper functions
block: add sg buffer copy helper functions
aic79xx: fix IOMMU mapping failure handling
aic7xxx: fix IOMMU mapping failure handling
scsi_debug: use shost_priv macro
scsi_debug: remove unnecessary checking
scsi_debug: remove scsi_debug.h
scsi_debug: stop including drivers/scsi/scsi.h
aacraid: READ_CAPACITY_16 shouldn't trust allocation length in cdb
ips: sg chaining support to the path to non I/O commands
Geert Uytterhoeven (1):
ps3rom: Simplify fill_from_dev_buffer()
Grant Grundler (1):
initio: fix big endian problems for auto request sense
Harihara Kadayam (1):
qla2xxx: Add ISP84XX support.
Harvey Harrison (1):
ch: fix sparse shadowed variable warnings
James Bottomley (9):
ips: remove spurious cpu_to_leX on outX statements
libsas: fix missing inlines in header file
transport_class: BUG if we can't release the attribute container
fix barrier failure issue
hptiop: fix header.context usage
wd33c93: fix up cut and paste error
mpt fusion: fix up msi_enable in mpt_suspend
export command allocation and freeing functions independently of the host
consolidate command allocation in a single place
James Smart (4):
lpfc 8.2.6 : Update lpfc driver version to 8.2.6
lpfc 8.2.6 : Miscellaneous Fixes
lpfc 8.2.6 : PCI Parity and EEH handling fixes
lpfc 8.2.6 : Multiple discovery fixes
Jeff Garzik (2):
gdth: convert to PCI hotplug API
gdth: PCI probe cleanups, prep for PCI hotplug API conversion
Kai Makisara (2):
st: show options currently set in sysfs
st: add option to use SILI in variable block reads
Marcin Slusarz (1):
aacraid, ips: leX_add_cpu conversion
Mark Salyzyn (1):
aacraid: Fix down_interruptible() to check the return value
Martin Peschke (21):
zfcp: fix 31 bit compile warnings
zfcp: fix compiler warning caused by poking inside new semaphore (linux-ne
zfcp: Add docbook comments to debug trace.
zfcp: Cleanup line breaks in debug trace.
zfcp: Shorten excessive names in debug trace.
zfcp: Simplify zfcp_dbf_tag and related functions in debug trace.
zfcp: Simplify usage of hex dump output function for debug trace.
zfcp: Remove obsolete output function from debug trace.
zfcp: Cleanup debug trace view functions.
zfcp: simplify zfcp_dbf_timestamp()
zfcp: Remove obsolete erp_dbf trace
zfcp: Add trace records for recovery actions.
zfcp: Trace all triggers of error recovery activity
zfcp: Add traces for state changes.
zfcp: Add trace records for recovery thread and its queues
zfcp: Register new recovery trace.
zfcp: Introduce printf helper functions for debug trace.
zfcp: Add qtcb dump to hba debug trace
zfcp: Remove qtcb dump to kernel log
zfcp: Clean up _zfcp_san_dbf_event_common_els
zfcp: Introduce a helper function that dumps hex data to a zfcp trace.
Matthew Wilcox (1):
BusLogic: make FlashPoint support x86-32 only
Matthias Kaehlcke (1):
mpt fusion: convert inactive_list_mutex to a mutex
Michael Reed (1):
mptsas: do not use ioc->handle to locate hba portinfo structure
Mike Christie (2):
qla4xxx: Add target reset functionality
scsi_error: add target reset handler
Paul Bolle (1):
aacraid: Do not describe check_reset parameter with its value
Prakash, Sathya (1):
mpt fusion: Enable MSI by default for SAS controllers
Ravi Anand (1):
qla2xxx: Assign mailbox command timeout values in a consistent manner.
Roel Kluin (1):
aic7xxx: Test opcode, not definition in aicasm:type_check()
Seokmann Ju (4):
qla2xxx: Correct vport configuration-change handling.
qla2xxx: Use proper HA during asynchrounous event handling.
qla2xxx: Check DFLG_NO_CABLE only on physical port.
qla2xxx: Consistently access the physical HA port.
Thomas Bogendoerfer (1):
WD33C93: let platform stub override no_sync/fast/dma_mode
bo yang (3):
megaraid_sas: Add the new controller(1078DE) support to the driver
megaraid_sas: Fix the frame count calculation
megaraid_sas: rollback the sense info implementation
and the diffstat:
Documentation/scsi/st.txt | 12
arch/ia64/hp/sim/simscsi.c | 23
block/bsg.c | 52 -
drivers/ata/libata-scsi.c | 6
drivers/base/transport_class.c | 3
drivers/message/fusion/mptbase.c | 29
drivers/message/fusion/mptbase.h | 5
drivers/message/fusion/mptsas.c | 22
drivers/message/fusion/mptscsih.c | 8
drivers/s390/scsi/zfcp_aux.c | 33
drivers/s390/scsi/zfcp_ccw.c | 24
drivers/s390/scsi/zfcp_dbf.c | 1281 ++++++++++++++++++------------
drivers/s390/scsi/zfcp_dbf.h | 228 +++++
drivers/s390/scsi/zfcp_def.h | 169 ---
drivers/s390/scsi/zfcp_erp.c | 688 +++++-----------
drivers/s390/scsi/zfcp_ext.h | 59 -
drivers/s390/scsi/zfcp_fsf.c | 397 ++-------
drivers/s390/scsi/zfcp_qdio.c | 7
drivers/s390/scsi/zfcp_scsi.c | 69 -
drivers/s390/scsi/zfcp_sysfs_adapter.c | 11
drivers/s390/scsi/zfcp_sysfs_port.c | 9
drivers/s390/scsi/zfcp_sysfs_unit.c | 5
drivers/scsi/3w-9xxx.c | 23
drivers/scsi/3w-xxxx.c | 14
drivers/scsi/BusLogic.c | 5
drivers/scsi/BusLogic.h | 21
drivers/scsi/FlashPoint.c | 6
drivers/scsi/Kconfig | 14
drivers/scsi/a2091.c | 3
drivers/scsi/a3000.c | 3
drivers/scsi/aacraid/aachba.c | 69 -
drivers/scsi/aacraid/commsup.c | 10
drivers/scsi/aic7xxx/aic79xx_osm.c | 7
drivers/scsi/aic7xxx/aic7xxx_osm.c | 10
drivers/scsi/aic7xxx/aicasm/aicasm_gram.y | 2
drivers/scsi/aic94xx/aic94xx.h | 16
drivers/scsi/aic94xx/aic94xx_dev.c | 8
drivers/scsi/aic94xx/aic94xx_dump.c | 10
drivers/scsi/aic94xx/aic94xx_dump.h | 9
drivers/scsi/aic94xx/aic94xx_hwi.c | 44 -
drivers/scsi/aic94xx/aic94xx_hwi.h | 2
drivers/scsi/aic94xx/aic94xx_init.c | 10
drivers/scsi/aic94xx/aic94xx_reg.c | 53 -
drivers/scsi/aic94xx/aic94xx_scb.c | 33
drivers/scsi/aic94xx/aic94xx_sds.c | 4
drivers/scsi/aic94xx/aic94xx_seq.c | 31
drivers/scsi/aic94xx/aic94xx_seq.h | 4
drivers/scsi/aic94xx/aic94xx_task.c | 12
drivers/scsi/aic94xx/aic94xx_tmf.c | 2
drivers/scsi/arm/acornscsi.c | 1
drivers/scsi/arm/cumana_1.c | 1
drivers/scsi/ch.c | 33
drivers/scsi/dc395x.c | 1
drivers/scsi/eata_pio.c | 2
drivers/scsi/gdth.c | 320 +++----
drivers/scsi/gdth.h | 2
drivers/scsi/gvp11.c | 3
drivers/scsi/hosts.c | 1
drivers/scsi/hptiop.c | 7
drivers/scsi/initio.c | 9
drivers/scsi/ips.c | 89 --
drivers/scsi/iscsi_tcp.c | 31
drivers/scsi/libiscsi.c | 140 ++-
drivers/scsi/libsas/sas_ata.c | 2
drivers/scsi/libsas/sas_scsi_host.c | 41
drivers/scsi/lpfc/lpfc.h | 5
drivers/scsi/lpfc/lpfc_attr.c | 10
drivers/scsi/lpfc/lpfc_ct.c | 48 -
drivers/scsi/lpfc/lpfc_debugfs.c | 2
drivers/scsi/lpfc/lpfc_els.c | 121 +-
drivers/scsi/lpfc/lpfc_hbadisc.c | 73 -
drivers/scsi/lpfc/lpfc_init.c | 98 +-
drivers/scsi/lpfc/lpfc_nportdisc.c | 40
drivers/scsi/lpfc/lpfc_scsi.c | 34
drivers/scsi/lpfc/lpfc_sli.c | 112 +-
drivers/scsi/lpfc/lpfc_version.h | 2
drivers/scsi/lpfc/lpfc_vport.c | 3
drivers/scsi/mac_scsi.c | 1
drivers/scsi/megaraid/megaraid_sas.c | 49 -
drivers/scsi/megaraid/megaraid_sas.h | 5
drivers/scsi/mvme147.c | 3
drivers/scsi/ps3rom.c | 101 --
drivers/scsi/qla1280.c | 5
drivers/scsi/qla2xxx/Kconfig | 3
drivers/scsi/qla2xxx/qla_attr.c | 36
drivers/scsi/qla2xxx/qla_dbg.c | 124 --
drivers/scsi/qla2xxx/qla_dbg.h | 23
drivers/scsi/qla2xxx/qla_def.h | 78 +
drivers/scsi/qla2xxx/qla_dfs.c | 2
drivers/scsi/qla2xxx/qla_fw.h | 173 +++-
drivers/scsi/qla2xxx/qla_gbl.h | 33
drivers/scsi/qla2xxx/qla_gs.c | 16
drivers/scsi/qla2xxx/qla_init.c | 192 +++-
drivers/scsi/qla2xxx/qla_inline.h | 87 --
drivers/scsi/qla2xxx/qla_iocb.c | 5
drivers/scsi/qla2xxx/qla_isr.c | 223 ++---
drivers/scsi/qla2xxx/qla_mbx.c | 318 +++++--
drivers/scsi/qla2xxx/qla_mid.c | 30
drivers/scsi/qla2xxx/qla_os.c | 443 +++++-----
drivers/scsi/qla2xxx/qla_settings.h | 16
drivers/scsi/qla2xxx/qla_sup.c | 315 +++++--
drivers/scsi/qla2xxx/qla_version.h | 6
drivers/scsi/qla4xxx/ql4_fw.h | 4
drivers/scsi/qla4xxx/ql4_glbl.h | 4
drivers/scsi/qla4xxx/ql4_iocb.c | 14
drivers/scsi/qla4xxx/ql4_isr.c | 40
drivers/scsi/qla4xxx/ql4_mbx.c | 39
drivers/scsi/qla4xxx/ql4_os.c | 96 +-
drivers/scsi/raid_class.c | 2
drivers/scsi/scsi.c | 229 +++--
drivers/scsi/scsi_debug.c | 1219 ++++++++++++----------------
drivers/scsi/scsi_debug.h | 24
drivers/scsi/scsi_error.c | 150 +++
drivers/scsi/scsi_lib.c | 12
drivers/scsi/scsi_tgt_lib.c | 4
drivers/scsi/sgiwd93.c | 7
drivers/scsi/st.c | 89 +-
drivers/scsi/st.h | 3
drivers/scsi/st_options.h | 6
drivers/scsi/stex.c | 83 -
drivers/scsi/sun3_scsi_vme.c | 1
drivers/scsi/wd33c93.c | 3
include/linux/attribute_container.h | 2
include/linux/mtio.h | 1
include/linux/scatterlist.h | 5
include/linux/transport_class.h | 5
include/scsi/iscsi_proto.h | 6
include/scsi/libsas.h | 2
include/scsi/sas_ata.h | 4
include/scsi/scsi_cmnd.h | 17
include/scsi/scsi_eh.h | 5
include/scsi/scsi_host.h | 1
lib/scatterlist.c | 102 ++
133 files changed, 4873 insertions(+), 4389 deletions(-)
James
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-18 17:41 [GIT PATCH] SCSI updates for 2.6.25 James Bottomley
@ 2008-04-19 15:19 ` Ingo Molnar
2008-04-19 15:54 ` James Bottomley
0 siblings, 1 reply; 16+ messages in thread
From: Ingo Molnar @ 2008-04-19 15:19 UTC (permalink / raw)
To: James Bottomley; +Cc: Andrew Morton, Linus Torvalds, linux-scsi, linux-kernel
* James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
> libsas: Provide a transport-level facility to request SAS addrs
this (or a nearby) commit caused a build regression:
drivers/built-in.o: In function `sas_request_addr':
: undefined reference to `request_firmware'
drivers/built-in.o: In function `sas_request_addr':
: undefined reference to `release_firmware'
config can be found at:
http://redhat.com/~mingo/misc/config-Sat_Apr_19_16_58_35_CEST_2008.bad
... brought to you by x86.git's randconfig build and boot service ;-)
Ingo
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 15:19 ` Ingo Molnar
@ 2008-04-19 15:54 ` James Bottomley
2008-04-19 16:42 ` Ingo Molnar
2008-04-19 17:05 ` Adrian Bunk
0 siblings, 2 replies; 16+ messages in thread
From: James Bottomley @ 2008-04-19 15:54 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andrew Morton, Linus Torvalds, linux-scsi, linux-kernel, Greg KH
On Sat, 2008-04-19 at 17:19 +0200, Ingo Molnar wrote:
> * James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
>
> > libsas: Provide a transport-level facility to request SAS addrs
>
> this (or a nearby) commit caused a build regression:
>
> drivers/built-in.o: In function `sas_request_addr':
> : undefined reference to `request_firmware'
> drivers/built-in.o: In function `sas_request_addr':
> : undefined reference to `release_firmware'
>
> config can be found at:
>
> http://redhat.com/~mingo/misc/config-Sat_Apr_19_16_58_35_CEST_2008.bad
>
> ... brought to you by x86.git's randconfig build and boot service ;-)
This one's fun. The root cause is
CONFIG_SCSI_SAS_LIBSAS=y
CONFIG_FW_LOADER=m
The problem is that libsas doesn't depend on the FW loader and doesn't
want to. It just wants to use it if it's available. The definitions in
include/linux/firmware.h have stubs to facilitate this.
However, CONFIG_FW_LOADER=m defeats the stubs.
This is a bit nasty to fix; however, I think this patch does. I've also
put a large comment in to explain what's going on.
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
---
diff --git a/include/linux/firmware.h b/include/linux/firmware.h
index 4d10c73..01e39a1 100644
--- a/include/linux/firmware.h
+++ b/include/linux/firmware.h
@@ -13,7 +13,16 @@ struct firmware {
struct device;
-#if defined(CONFIG_FW_LOADER) || defined(CONFIG_FW_LOADER_MODULE)
+
+/*
+ * This is very subtle. If the Firmware loader is built in then the
+ * request/release calls can be accessed by anything. If it's built
+ * as a module then only other modules can access it. The check on
+ * MODULE specifically fixes the case where the firmware loader is
+ * built as a module, but a built in kernel component tries to use the
+ * request/release functions.
+ */
+#if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE))
int request_firmware(const struct firmware **fw, const char *name,
struct device *device);
int request_firmware_nowait(
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 15:54 ` James Bottomley
@ 2008-04-19 16:42 ` Ingo Molnar
2008-04-19 17:05 ` Adrian Bunk
1 sibling, 0 replies; 16+ messages in thread
From: Ingo Molnar @ 2008-04-19 16:42 UTC (permalink / raw)
To: James Bottomley
Cc: Andrew Morton, Linus Torvalds, linux-scsi, linux-kernel, Greg KH
* James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
> > drivers/built-in.o: In function `sas_request_addr':
> > : undefined reference to `release_firmware'
> >
> > config can be found at:
> >
> > http://redhat.com/~mingo/misc/config-Sat_Apr_19_16_58_35_CEST_2008.bad
> >
> > ... brought to you by x86.git's randconfig build and boot service ;-)
>
> This one's fun. The root cause is
>
> CONFIG_SCSI_SAS_LIBSAS=y
> CONFIG_FW_LOADER=m
>
> The problem is that libsas doesn't depend on the FW loader and doesn't
> want to. It just wants to use it if it's available. The definitions
> in include/linux/firmware.h have stubs to facilitate this.
>
> However, CONFIG_FW_LOADER=m defeats the stubs.
>
> This is a bit nasty to fix; however, I think this patch does. I've
> also put a large comment in to explain what's going on.
>
> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
thanks James - your fix works fine here.
Tested-by: Ingo Molnar <mingo@elte.hu>
Ingo
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 15:54 ` James Bottomley
2008-04-19 16:42 ` Ingo Molnar
@ 2008-04-19 17:05 ` Adrian Bunk
2008-04-19 17:34 ` James Bottomley
1 sibling, 1 reply; 16+ messages in thread
From: Adrian Bunk @ 2008-04-19 17:05 UTC (permalink / raw)
To: James Bottomley
Cc: Ingo Molnar, Andrew Morton, Linus Torvalds, linux-scsi,
linux-kernel, Greg KH
On Sat, Apr 19, 2008 at 10:54:44AM -0500, James Bottomley wrote:
>
> On Sat, 2008-04-19 at 17:19 +0200, Ingo Molnar wrote:
> > * James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
> >
> > > libsas: Provide a transport-level facility to request SAS addrs
> >
> > this (or a nearby) commit caused a build regression:
> >
> > drivers/built-in.o: In function `sas_request_addr':
> > : undefined reference to `request_firmware'
> > drivers/built-in.o: In function `sas_request_addr':
> > : undefined reference to `release_firmware'
> >
> > config can be found at:
> >
> > http://redhat.com/~mingo/misc/config-Sat_Apr_19_16_58_35_CEST_2008.bad
> >
> > ... brought to you by x86.git's randconfig build and boot service ;-)
>
> This one's fun. The root cause is
>
> CONFIG_SCSI_SAS_LIBSAS=y
> CONFIG_FW_LOADER=m
>
> The problem is that libsas doesn't depend on the FW loader and doesn't
> want to. It just wants to use it if it's available. The definitions in
> include/linux/firmware.h have stubs to facilitate this.
>
> However, CONFIG_FW_LOADER=m defeats the stubs.
>
> This is a bit nasty to fix; however, I think this patch does. I've also
> put a large comment in to explain what's going on.
>...
Your patch fixes the build error, but I'm not sure whether it's the
correct fix:
CONFIG_SCSI_SAS_LIBSAS=y, CONFIG_FW_LOADER=m, CONFIG_SCSI_AIC94XX=m
will now pass all randconfig tests, but the effects of the
"select FW_LOADER" in the SCSI_AIC94XX driver would be lost in this
configuration, and we might get bug reports like "driver works built-in
but fails with 'No SAS Address provided for %s\n' when built modular."
IMHO SCSI_SAS_LIBSAS should simply select FW_LOADER.
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 17:05 ` Adrian Bunk
@ 2008-04-19 17:34 ` James Bottomley
2008-04-19 20:14 ` Linus Torvalds
0 siblings, 1 reply; 16+ messages in thread
From: James Bottomley @ 2008-04-19 17:34 UTC (permalink / raw)
To: Adrian Bunk
Cc: Ingo Molnar, Andrew Morton, Linus Torvalds, linux-scsi,
linux-kernel, Greg KH
On Sat, 2008-04-19 at 20:05 +0300, Adrian Bunk wrote:
> On Sat, Apr 19, 2008 at 10:54:44AM -0500, James Bottomley wrote:
> >
> > On Sat, 2008-04-19 at 17:19 +0200, Ingo Molnar wrote:
> > > * James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
> > >
> > > > libsas: Provide a transport-level facility to request SAS addrs
> > >
> > > this (or a nearby) commit caused a build regression:
> > >
> > > drivers/built-in.o: In function `sas_request_addr':
> > > : undefined reference to `request_firmware'
> > > drivers/built-in.o: In function `sas_request_addr':
> > > : undefined reference to `release_firmware'
> > >
> > > config can be found at:
> > >
> > > http://redhat.com/~mingo/misc/config-Sat_Apr_19_16_58_35_CEST_2008.bad
> > >
> > > ... brought to you by x86.git's randconfig build and boot service ;-)
> >
> > This one's fun. The root cause is
> >
> > CONFIG_SCSI_SAS_LIBSAS=y
> > CONFIG_FW_LOADER=m
> >
> > The problem is that libsas doesn't depend on the FW loader and doesn't
> > want to. It just wants to use it if it's available. The definitions in
> > include/linux/firmware.h have stubs to facilitate this.
> >
> > However, CONFIG_FW_LOADER=m defeats the stubs.
> >
> > This is a bit nasty to fix; however, I think this patch does. I've also
> > put a large comment in to explain what's going on.
> >...
>
> Your patch fixes the build error, but I'm not sure whether it's the
> correct fix:
>
> CONFIG_SCSI_SAS_LIBSAS=y, CONFIG_FW_LOADER=m, CONFIG_SCSI_AIC94XX=m
> will now pass all randconfig tests, but the effects of the
> "select FW_LOADER" in the SCSI_AIC94XX driver would be lost in this
> configuration, and we might get bug reports like "driver works built-in
> but fails with 'No SAS Address provided for %s\n' when built modular."
>
> IMHO SCSI_SAS_LIBSAS should simply select FW_LOADER.
Well, we already had this argument on linux-scsi when the interface was
first proposed: Apart from select being very nasty and should only be
sparingly used, this interface is really only provided for specific OS
defined cases. It's users are expected to know the pitfalls and the
dangers (it's only for boards with no fw in either pre-test or embedded
situations), so the casual user should never have to use it.
Even if I changed it to select, a user could still defeat it by making
CONFIG_SCSI_AIC94XX=y (because now the initialisation is before early
boot userland, so the request always fails).
James
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 17:34 ` James Bottomley
@ 2008-04-19 20:14 ` Linus Torvalds
2008-04-19 20:45 ` Matthew Wilcox
2008-04-19 22:27 ` James Bottomley
0 siblings, 2 replies; 16+ messages in thread
From: Linus Torvalds @ 2008-04-19 20:14 UTC (permalink / raw)
To: James Bottomley
Cc: Adrian Bunk, Ingo Molnar, Andrew Morton, linux-scsi,
linux-kernel, Greg KH
On Sat, 19 Apr 2008, James Bottomley wrote:
>
> Well, we already had this argument on linux-scsi when the interface was
> first proposed: Apart from select being very nasty and should only be
> sparingly used
I'm still not understanding people who say that.
Yes, select has problems, in that it doesn't guarantee dependencies.
But that said, select is a whole lot better than having simply *different*
behaviour (or build errors) depending on totally unrelated config options.
So people: stop this total *idiocy* with "select is bad". It's not. The
lack of select is *much* worse.
If you want LIBSAS to have two different modes, how about just making that
explicit in the configuration, ie using something like
config LIBSAS_SET_ADDR
bool "Provide user-settable SAS address"
depends on SCSI_SAS_LIBSAS
help
This allows a runtime "firmware" loader that loads the
SAS address
config LIBSAS_SET_ADDR_FWLOAD
tristate
depends on SCSI_SAS_LIBSAS && LIBSAS_SET_ADDR
default y
select FW_LOADER
and now you have the explicit option to turn it on or off - and FW_LOADER
is loaded appropriately.
> Even if I changed it to select, a user could still defeat it by making
> CONFIG_SCSI_AIC94XX=y (because now the initialisation is before early
> boot userland, so the request always fails).
Not true. That's why we have initrd and ramdisks etc.
Not that any normal people will ever care about LIBSAS, but anyway.. The
ones that do care about these kinds of things are probably happy to have
special initrd images.
Linus
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 20:14 ` Linus Torvalds
@ 2008-04-19 20:45 ` Matthew Wilcox
2008-04-20 14:09 ` Stefan Richter
2008-04-28 21:00 ` Sam Ravnborg
2008-04-19 22:27 ` James Bottomley
1 sibling, 2 replies; 16+ messages in thread
From: Matthew Wilcox @ 2008-04-19 20:45 UTC (permalink / raw)
To: Linus Torvalds
Cc: James Bottomley, Adrian Bunk, Ingo Molnar, Andrew Morton,
linux-scsi, linux-kernel, Greg KH
On Sat, Apr 19, 2008 at 01:14:23PM -0700, Linus Torvalds wrote:
> So people: stop this total *idiocy* with "select is bad". It's not. The
> lack of select is *much* worse.
Could we consider applying this patch then?
----
'select' not Considered Evil
While select should be used with care, it is not actually evil.
Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt
index 649cb87..dacfcf2 100644
--- a/Documentation/kbuild/kconfig-language.txt
+++ b/Documentation/kbuild/kconfig-language.txt
@@ -104,9 +104,9 @@ applicable everywhere (see syntax).
Reverse dependencies can only be used with boolean or tristate
symbols.
Note:
- select is evil.... select will by brute force set a symbol
- equal to 'y' without visiting the dependencies. So abusing
- select you are able to select a symbol FOO even if FOO depends
+ select should be used with care. It can set a symbol
+ without visiting the dependencies. By abusing select you are
+ able to select a symbol FOO even if FOO depends
on BAR that is not set. In general use select only for
non-visible symbols (no prompts anywhere) and for symbols with
no dependencies. That will limit the usefulness but on the
--
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 20:14 ` Linus Torvalds
2008-04-19 20:45 ` Matthew Wilcox
@ 2008-04-19 22:27 ` James Bottomley
2008-04-19 23:14 ` Matthew Wilcox
2008-04-21 12:51 ` Ingo Molnar
1 sibling, 2 replies; 16+ messages in thread
From: James Bottomley @ 2008-04-19 22:27 UTC (permalink / raw)
To: Linus Torvalds
Cc: Adrian Bunk, Ingo Molnar, Andrew Morton, linux-scsi,
linux-kernel, Greg KH
On Sat, 2008-04-19 at 13:14 -0700, Linus Torvalds wrote:
> On Sat, 19 Apr 2008, James Bottomley wrote:
> >
> > Well, we already had this argument on linux-scsi when the interface was
> > first proposed: Apart from select being very nasty and should only be
> > sparingly used
>
> I'm still not understanding people who say that.
Well, I can ... even though SCSI is one of the major users of select in
the tree.
The argument goes that abuse of select is very easy to do ... just over
select on a lot of options. The result is pieces of the kernel get
built in and you have a devil of a time trying to work out how to get
them to be turned off (this is annoying when you get bugs that say
without feature X enabled, Y bug happens).
Conversely depends has the opposite problem: config options disappear
for no readily apparent reason (at least until you read the Kconfig
file, then it becomes apparent).
What I try to do in SCSI is sort our Kconfig features into primary and
subsidiary, so primary features (like HBA drivers) are allowed to select
subsidiary features (like transport classes). However, for most other
cases, we use depends instead.
> Yes, select has problems, in that it doesn't guarantee dependencies.
Yes, over use of select trips across this fairly quickly.
> But that said, select is a whole lot better than having simply *different*
> behaviour (or build errors) depending on totally unrelated config options.
>
> So people: stop this total *idiocy* with "select is bad". It's not. The
> lack of select is *much* worse.
>
> If you want LIBSAS to have two different modes, how about just making that
> explicit in the configuration, ie using something like
>
> config LIBSAS_SET_ADDR
> bool "Provide user-settable SAS address"
> depends on SCSI_SAS_LIBSAS
> help
> This allows a runtime "firmware" loader that loads the
> SAS address
>
> config LIBSAS_SET_ADDR_FWLOAD
> tristate
> depends on SCSI_SAS_LIBSAS && LIBSAS_SET_ADDR
> default y
> select FW_LOADER
Yes, that works for libsas ... but what do we do about the prototypes in
firmware.h ... just take away the stub and force everything relying on
it to break so we can put in a Kconfig sequence like the above?
> and now you have the explicit option to turn it on or off - and FW_LOADER
> is loaded appropriately.
>
> > Even if I changed it to select, a user could still defeat it by making
> > CONFIG_SCSI_AIC94XX=y (because now the initialisation is before early
> > boot userland, so the request always fails).
>
> Not true. That's why we have initrd and ramdisks etc.
They don't currently seem to work for compiled in drivers ... we have
the same issue with drivers that actually need firmware (like aic94xx or
qla2xxx): no-one seems to have figured out how to provide it for them;
it seems the device is already initialised and has failed to find its
firmware before the initrd/initramfs is running.
> Not that any normal people will ever care about LIBSAS, but anyway.. The
> ones that do care about these kinds of things are probably happy to have
> special initrd images.
Right ... that's more or less my argument about how far do we really
need to go to make Kconfig foolproof.
James
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 22:27 ` James Bottomley
@ 2008-04-19 23:14 ` Matthew Wilcox
2008-04-21 12:51 ` Ingo Molnar
1 sibling, 0 replies; 16+ messages in thread
From: Matthew Wilcox @ 2008-04-19 23:14 UTC (permalink / raw)
To: James Bottomley
Cc: Linus Torvalds, Adrian Bunk, Ingo Molnar, Andrew Morton,
linux-scsi, linux-kernel, Greg KH
On Sat, Apr 19, 2008 at 05:27:56PM -0500, James Bottomley wrote:
> > Not true. That's why we have initrd and ramdisks etc.
>
> They don't currently seem to work for compiled in drivers ... we have
> the same issue with drivers that actually need firmware (like aic94xx or
> qla2xxx): no-one seems to have figured out how to provide it for them;
> it seems the device is already initialised and has failed to find its
> firmware before the initrd/initramfs is running.
WorksForMe ... or it did a few months ago. I can re-test it with a
modern kernel ... wonder which machine I had that needed it ...
--
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 20:45 ` Matthew Wilcox
@ 2008-04-20 14:09 ` Stefan Richter
2008-04-20 19:56 ` Matthew Wilcox
2008-04-28 21:00 ` Sam Ravnborg
1 sibling, 1 reply; 16+ messages in thread
From: Stefan Richter @ 2008-04-20 14:09 UTC (permalink / raw)
To: Matthew Wilcox
Cc: Linus Torvalds, James Bottomley, Adrian Bunk, Ingo Molnar,
Andrew Morton, linux-scsi, linux-kernel, Greg KH
Matthew Wilcox wrote:
> --- a/Documentation/kbuild/kconfig-language.txt
> +++ b/Documentation/kbuild/kconfig-language.txt
> @@ -104,9 +104,9 @@ applicable everywhere (see syntax).
> Reverse dependencies can only be used with boolean or tristate
> symbols.
> Note:
> - select is evil.... select will by brute force set a symbol
> - equal to 'y' without visiting the dependencies. So abusing
> - select you are able to select a symbol FOO even if FOO depends
> + select should be used with care. It can set a symbol
> + without visiting the dependencies. By abusing select you are
> + able to select a symbol FOO even if FOO depends
> on BAR that is not set. In general use select only for
> non-visible symbols (no prompts anywhere) and for symbols with
> no dependencies. That will limit the usefulness but on the
"It can set a symbol without visiting the dependencies." = imprecise
"select will by brute force set a symbol [...] without visiting the
dependencies." = clear. So why not leave this portion of the text as it is.
Maybe change
"equal to 'y'"
to
"equal to 'y' or 'm'"
or to
""
to make it entirely correct.
--
Stefan Richter
-=====-==--- -=-- =-=--
http://arcgraph.de/sr/
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-20 14:09 ` Stefan Richter
@ 2008-04-20 19:56 ` Matthew Wilcox
2008-04-20 20:14 ` Stefan Richter
0 siblings, 1 reply; 16+ messages in thread
From: Matthew Wilcox @ 2008-04-20 19:56 UTC (permalink / raw)
To: Stefan Richter
Cc: Linus Torvalds, James Bottomley, Adrian Bunk, Ingo Molnar,
Andrew Morton, linux-scsi, linux-kernel, Greg KH
On Sun, Apr 20, 2008 at 04:09:27PM +0200, Stefan Richter wrote:
> Matthew Wilcox wrote:
> >--- a/Documentation/kbuild/kconfig-language.txt
> >+++ b/Documentation/kbuild/kconfig-language.txt
> > Note:
> >- select is evil.... select will by brute force set a symbol
> >- equal to 'y' without visiting the dependencies. So abusing
> >- select you are able to select a symbol FOO even if FOO depends
> >+ select should be used with care. It can set a symbol
> >+ without visiting the dependencies. By abusing select you are
> >+ able to select a symbol FOO even if FOO depends
> > on BAR that is not set. In general use select only for
> > non-visible symbols (no prompts anywhere) and for symbols with
> > no dependencies. That will limit the usefulness but on the
>
> "It can set a symbol without visiting the dependencies." = imprecise
>
> "select will by brute force set a symbol [...] without visiting the
> dependencies." = clear. So why not leave this portion of the text as it is.
"brute force" is pejorative, not clear. I'm not really interested in
bikeshedding this issue.
> Maybe change
> "equal to 'y'"
> to
> "equal to 'y' or 'm'"
> or to
> ""
> to make it entirely correct.
> --
> Stefan Richter
> -=====-==--- -=-- =-=--
> http://arcgraph.de/sr/
--
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-20 19:56 ` Matthew Wilcox
@ 2008-04-20 20:14 ` Stefan Richter
0 siblings, 0 replies; 16+ messages in thread
From: Stefan Richter @ 2008-04-20 20:14 UTC (permalink / raw)
To: Matthew Wilcox
Cc: Linus Torvalds, James Bottomley, Adrian Bunk, Ingo Molnar,
Andrew Morton, linux-scsi, linux-kernel, Greg KH
Matthew Wilcox wrote:
>>> - select is evil.... select will by brute force set a symbol
...
>>> + select should be used with care. It can set a symbol
...
> I'm not really interested in bikeshedding this issue.
At least don't replace "will" by "can".
--
Stefan Richter
-=====-==--- -=-- =-=--
http://arcgraph.de/sr/
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 22:27 ` James Bottomley
2008-04-19 23:14 ` Matthew Wilcox
@ 2008-04-21 12:51 ` Ingo Molnar
1 sibling, 0 replies; 16+ messages in thread
From: Ingo Molnar @ 2008-04-21 12:51 UTC (permalink / raw)
To: James Bottomley
Cc: Linus Torvalds, Adrian Bunk, Andrew Morton, linux-scsi,
linux-kernel, Greg KH
* James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
> On Sat, 2008-04-19 at 13:14 -0700, Linus Torvalds wrote:
> > On Sat, 19 Apr 2008, James Bottomley wrote:
> > >
> > > Well, we already had this argument on linux-scsi when the interface was
> > > first proposed: Apart from select being very nasty and should only be
> > > sparingly used
> >
> > I'm still not understanding people who say that.
>
> Well, I can ... even though SCSI is one of the major users of select
> in the tree.
you are handling it well then :) I tend to be amongst the first ones to
notice select trouble (randconfig is quite sensitive to it) and by far
the leading area of failure "in practice" is video drivers and sound
modules. Networking is an occasional blip on the radar (but that's
really just due to its sheer natural size and complexity) and i dont
remember any deep SCSI trouble there ever.
pie-in-the-sky: a fundamentally simpler Kconfig space would be nice,
with strict hierarchies and where enabling a lower component
automatically selects all the upper components as well. The Kconfig
language should detect loops in hierarchies. (it already does so in a
number of situations)
i.e. we should only describe what depends on what - and the rest would
be figured out automatically. In that sense "select" should be a _user
action_ that would never pop up in the language at all - and the
"selection" would all trickle through automatically via the 'depends on'
links without having to mention it in the Kconfig language.
whenever due to a selection that a user made something becomes
unavailable, the kconfig tool/GUI should warn about that with an extra
confirmation step. I.e. it should all really be analogous to normal
user-space package management which has its own dependency resolution
process.
Ingo
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-19 20:45 ` Matthew Wilcox
2008-04-20 14:09 ` Stefan Richter
@ 2008-04-28 21:00 ` Sam Ravnborg
2008-04-28 21:01 ` Matthew Wilcox
1 sibling, 1 reply; 16+ messages in thread
From: Sam Ravnborg @ 2008-04-28 21:00 UTC (permalink / raw)
To: Matthew Wilcox
Cc: Linus Torvalds, James Bottomley, Adrian Bunk, Ingo Molnar,
Andrew Morton, linux-scsi, linux-kernel, Greg KH
On Sat, Apr 19, 2008 at 02:45:11PM -0600, Matthew Wilcox wrote:
> On Sat, Apr 19, 2008 at 01:14:23PM -0700, Linus Torvalds wrote:
> > So people: stop this total *idiocy* with "select is bad". It's not. The
> > lack of select is *much* worse.
>
> Could we consider applying this patch then?
I applied the following.
Sam
commit dfecbec8b54038ef02835d2f8181e1f44bd080d2
Author: Matthew Wilcox <matthew@wil.cx>
Date: Sat Apr 19 14:45:11 2008 -0600
kconifg: 'select' considered less evil
While select should be used with care, it is not actually evil.
Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt
index 649cb87..00b950d 100644
--- a/Documentation/kbuild/kconfig-language.txt
+++ b/Documentation/kbuild/kconfig-language.txt
@@ -104,14 +104,15 @@ applicable everywhere (see syntax).
Reverse dependencies can only be used with boolean or tristate
symbols.
Note:
- select is evil.... select will by brute force set a symbol
- equal to 'y' without visiting the dependencies. So abusing
- select you are able to select a symbol FOO even if FOO depends
- on BAR that is not set. In general use select only for
- non-visible symbols (no prompts anywhere) and for symbols with
- no dependencies. That will limit the usefulness but on the
- other hand avoid the illegal configurations all over. kconfig
- should one day warn about such things.
+ select should be used with care. select will force
+ a symbol to a value without visiting the dependencies.
+ By abusing select you are able to select a symbol FOO even
+ if FOO depends on BAR that is not set.
+ In general use select only for non-visible symbols
+ (no prompts anywhere) and for symbols with no dependencies.
+ That will limit the usefulness but on the other hand avoid
+ the illegal configurations all over.
+ kconfig should one day warn about such things.
- numerical ranges: "range" <symbol> <symbol> ["if" <expr>]
This allows to limit the range of possible input values for int
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [GIT PATCH] SCSI updates for 2.6.25
2008-04-28 21:00 ` Sam Ravnborg
@ 2008-04-28 21:01 ` Matthew Wilcox
0 siblings, 0 replies; 16+ messages in thread
From: Matthew Wilcox @ 2008-04-28 21:01 UTC (permalink / raw)
To: Sam Ravnborg
Cc: Linus Torvalds, James Bottomley, Adrian Bunk, Ingo Molnar,
Andrew Morton, linux-scsi, linux-kernel, Greg KH
On Mon, Apr 28, 2008 at 11:00:34PM +0200, Sam Ravnborg wrote:
> On Sat, Apr 19, 2008 at 02:45:11PM -0600, Matthew Wilcox wrote:
> > On Sat, Apr 19, 2008 at 01:14:23PM -0700, Linus Torvalds wrote:
> > > So people: stop this total *idiocy* with "select is bad". It's not. The
> > > lack of select is *much* worse.
> >
> > Could we consider applying this patch then?
>
> I applied the following.
Reads much better. Thanks!
--
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2008-04-28 21:01 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-04-18 17:41 [GIT PATCH] SCSI updates for 2.6.25 James Bottomley
2008-04-19 15:19 ` Ingo Molnar
2008-04-19 15:54 ` James Bottomley
2008-04-19 16:42 ` Ingo Molnar
2008-04-19 17:05 ` Adrian Bunk
2008-04-19 17:34 ` James Bottomley
2008-04-19 20:14 ` Linus Torvalds
2008-04-19 20:45 ` Matthew Wilcox
2008-04-20 14:09 ` Stefan Richter
2008-04-20 19:56 ` Matthew Wilcox
2008-04-20 20:14 ` Stefan Richter
2008-04-28 21:00 ` Sam Ravnborg
2008-04-28 21:01 ` Matthew Wilcox
2008-04-19 22:27 ` James Bottomley
2008-04-19 23:14 ` Matthew Wilcox
2008-04-21 12:51 ` Ingo Molnar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).