11 Dec, 2009
8 commits
-
Add more data to printk's, add some spaces around arithmetic ops and
improve comments.Signed-off-by: Jack Wang
Signed-off-by: James Bottomley -
Signed-off-by: Jack Wang
Signed-off-by: James Bottomley -
Signed-off-by: Jack Wang
Signed-off-by: James Bottomley -
Signed-off-by: Jack Wang
Signed-off-by: James Bottomley -
Signed-off-by: Jack Wang
Signed-off-by: James Bottomley -
Signed-off-by: Jack Wang
Signed-off-by: James Bottomley -
Signed-off-by: Jack Wang
Signed-off-by: James Bottomley -
Enhance error handle for IO patch, when the port is down, fast return phy
down for task.Signed-off-by: Jack Wang
Signed-off-by: James Bottomley
10 Dec, 2009
32 commits
-
This patch fix for sata IO circular lock dependency. When we call task_done
for SATA IO, we have got pm8001_ha->lock ,and in sas_ata_task_done, it will
get (dev->sata_dev.ap->lock. then cause circular lock dependency .So we
should drop pm8001_ha->lock when we call task_done for SATA task.Signed-off-by: Jack Wang
Signed-off-by: Lindar Liu
Signed-off-by: James Bottomley -
This driver supports a subset of HP Smart Array Controllers.
It is a SCSI alternative to the cciss driver.[akpm@linux-foundation.org: avoid helpful cleanup patches]
[achiang@hp.com: make device attrs static]
[akpm@linux-foundation.org: msleep() does set_current_state() itself]
Signed-off-by: Stephen M. Cameron
Signed-off-by: Mike Miller
Signed-off-by: Alex Chiang
Signed-off-by: Andrew Morton
Signed-off-by: James Bottomley -
Signed-off-by: Karen Xie
Signed-off-by: James Bottomley -
Removed duplicate function call and not-so-useful comment line
Signed-off-by: Anil Veerabhadrappa
Reviewed-by: Mike Christie
Signed-off-by: James Bottomley -
Due to typo error driver was failing TMF Abort Task request when
ctask->sc != NULL. Fixed code to fail TMF ABORT Task request only when
ctask->sc == NULL. Clear age component (19 most significant bits) of
reference ITT carried in iSCSI TMF PDU. Age component is internal to
initiator side and only lower bits of ITT as defined by ISCSI_ITT_MASK
is is sent on wire. Retrieve LUN directly from the ref_sc and update
SQ wqe as per chip HSI (Host Software Interface) specificationSigned-off-by: Anil Veerabhadrappa
Reviewed-by: Mike Christie
Signed-off-by: James Bottomley -
Only affects 5771x (10G chipsets) devices
This is an optimized CQ arming algoritm which takes into account the
number of outstanding tasksSigned-off-by: Anil Veerabhadrappa
Signed-off-by: James Bottomley -
This issue was discovered during 10G iscsi testing
Default value of 'sq_size' module parameter is '0' which means driver
should use predefined SQ queue size when setting up iscsi connection.roundup_pow_of_two(0) results in '1' and forces driver to setup
connections with send queue size of '1' and results in lower
performance as wellSigned-off-by: Anil Veerabhadrappa
Reviewed-by: Mike Christie
Signed-off-by: James Bottomley -
Signed-off-by: Anil Veerabhadrappa
Reviewed-by: Mike Christie
Signed-off-by: James Bottomley -
After commits c82f63e411f1b58427c103bd95af2863b1c96dd1 (PCI: check saved
state before restore) and 4b77b0a2ba27d64f58f16d8d4d48d8319dda36ff (PCI:
Clear saved_state after the state has been restored) PCI drivers are
prevented from restoring the device standard configuration registers
twice in a row. These changes introduced a regression on ipr EEH
recovery.The ipr device driver saves the PCI state only during the device probe
and restores it on ipr_reset_restore_cfg_space() during IOA resets. This
behavior is causing the EEH recovery to fail after the second error
detected, since the registers are not being restored.One possible solution would be saving the registers after restoring
them. The problem with this approach is that while recovering from an
EEH error if pci_save_state() results in an EEH error, the adapter/slot
will be reset, and end up back in ipr_reset_restore_cfg_space(), but it
won't have a valid saved state to restore, so pci_restore_state() will
fail.The following patch introduces a workaround for this problem, hacking
around the PCI API by setting pdev->state_saved = true before we do the
restore. It fixes the EEH regression and prevents that we hit another
EEH error during EEH recovery.[jejb: fix is a hack ... Jesse and Rafael will fix properly]
Signed-off-by: Kleber Sacilotto de Souza
Acked-by: Brian King
Cc: Jesse Barnes
Cc: stable@kernel.org
Signed-off-by: James Bottomley -
If the LLD wants its own WWNN/WWPN to be used, it should implement the
netdev_ops.ndo_fcoe_get_wwn(). If that is the case, we query the LLD and use
the queried WWNN/WWPN from the LLD.Signed-off-by: Yi Zou
Signed-off-by: Robert Love
Signed-off-by: James Bottomley -
Powerpc 44x uses 36 bit real address while the real address defined in
MPT Fusion driver is of type 32 bit. This causes ioremap to fail and
driver fails to initialize. This fix changes the data types
representing the real address from unsigned long 32-bit types to
resource_size_t which is 64-bit. The driver has been tested, the disks
get discovered correctly and can do IO.[jejb: added printk fix for resource_size_t object]
Signed-off-by: Pravin Bathija
Acked-by: "Desai, Kashyap"
Signed-off-by: James Bottomley -
Signed-off-by: Giridhar Malavali
Signed-off-by: James Bottomley -
Fix to accommodate a hardware bug in multiqueue mode that does not
work properly when acknowledgement of MSIX Interrupts is disabled.Signed-off-by: Anirban Chakraborty
Signed-off-by: Giridhar Malavali
Signed-off-by: James Bottomley -
Removed the module parameters ql2xqfulltracking and ql2xqfullrampup
since the queue depth ramp up/down functionality is moved to scsi-ml.Signed-off-by: Giridhar Malavali
Signed-off-by: James Bottomley -
Fix crash in qla2x00_fdmi_register() due to the dpc
thread executing before the scsi host has been fully
added.Unable to handle kernel NULL pointer dereference (address 00000000000001d0)
qla2xxx_7_dpc[4140]: Oops 8813272891392 [1]Call Trace:
[] show_stack+0x50/0xa0
sp=e00000b07c59f930 bsp=e00000b07c591400
[] show_regs+0x820/0x860
sp=e00000b07c59fb00 bsp=e00000b07c5913a0
[] die+0x1a0/0x2e0
sp=e00000b07c59fb00 bsp=e00000b07c591360
[] ia64_do_page_fault+0x8c0/0x9e0
sp=e00000b07c59fb00 bsp=e00000b07c591310
[] ia64_native_leave_kernel+0x0/0x270
sp=e00000b07c59fb90 bsp=e00000b07c591310
[] qla2x00_fdmi_register+0x850/0xbe0 [qla2xxx]
sp=e00000b07c59fd60 bsp=e00000b07c591290
[] qla2x00_configure_loop+0x1930/0x34c0 [qla2xxx]
sp=e00000b07c59fd60 bsp=e00000b07c591128
[] qla2x00_loop_resync+0x1b0/0x2e0 [qla2xxx]
sp=e00000b07c59fdf0 bsp=e00000b07c5910c0
[] qla2x00_do_dpc+0x9a0/0xce0 [qla2xxx]
sp=e00000b07c59fdf0 bsp=e00000b07c590fa0
[] kthread+0x110/0x140
sp=e00000b07c59fe00 bsp=e00000b07c590f68
[] kernel_thread_helper+0xd0/0x100
sp=e00000b07c59fe30 bsp=e00000b07c590f40
[] start_kernel_thread+0x20/0x40
sp=e00000b07c59fe30 bsp=e00000b07c590f40crash> dis a000000207197350
0xa000000207197350 : [MMI] ld1 r45=[r14];;
crash> scsi_qla_host.host 0xe00000b058c73ff8
host = 0xe00000b058c73be0,
crash> Scsi_Host.shost_data 0xe00000b058c73be0
shost_data = 0x0, <<<<<<<<<<<The fc_transport fc_* workqueue threads have yet to be created.
crash> ps | grep _7
3891 2 2 e00000b075c80000 IN 0.0 0 0 [scsi_eh_7]
4140 2 3 e00000b07c590000 RU 0.0 0 0 [qla2xxx_7_dpc]The thread creating adding the Scsi_Host is blocked due to other
activity in sysfs.crash> bt 3762
PID: 3762 TASK: e00000b071e70000 CPU: 3 COMMAND: "modprobe"
#0 [BSP:e00000b071e71548] schedule at a000000100727e00
#1 [BSP:e00000b071e714c8] __mutex_lock_slowpath at a0000001007295a0
#2 [BSP:e00000b071e714a8] mutex_lock at a000000100729830
#3 [BSP:e00000b071e71478] sysfs_addrm_start at a0000001002584f0
#4 [BSP:e00000b071e71440] create_dir at a000000100259350
#5 [BSP:e00000b071e71410] sysfs_create_subdir at a000000100259510
#6 [BSP:e00000b071e713b0] internal_create_group at a00000010025c880
#7 [BSP:e00000b071e71388] sysfs_create_group at a00000010025cc50
#8 [BSP:e00000b071e71368] dpm_sysfs_add at a000000100425050
#9 [BSP:e00000b071e71310] device_add at a000000100417d90
#10 [BSP:e00000b071e712d8] scsi_add_host at a00000010045a380
#11 [BSP:e00000b071e71268] qla2x00_probe_one at a0000002071be950
#12 [BSP:e00000b071e71248] local_pci_probe at a00000010032e490
#13 [BSP:e00000b071e71218] pci_device_probe at a00000010032ecd0
#14 [BSP:e00000b071e711d8] driver_probe_device at a00000010041d480
#15 [BSP:e00000b071e711a8] __driver_attach at a00000010041d6e0
#16 [BSP:e00000b071e71170] bus_for_each_dev at a00000010041c240
#17 [BSP:e00000b071e71150] driver_attach at a00000010041d0a0
#18 [BSP:e00000b071e71108] bus_add_driver at a00000010041b080
#19 [BSP:e00000b071e710c0] driver_register at a00000010041dea0
#20 [BSP:e00000b071e71088] __pci_register_driver at a00000010032f610
#21 [BSP:e00000b071e71058] (unknown) at a000000207200270
#22 [BSP:e00000b071e71018] do_one_initcall at a00000010000a9c0
#23 [BSP:e00000b071e70f98] sys_init_module at a0000001000fef00
#24 [BSP:e00000b071e70f98] ia64_ret_from_syscall at a00000010000c740So, it appears that qla2xxx dpc thread is moving forward before the
scsi host has been completely added.This patch moves the setting of the init_done (and online) flag to
after the call to scsi_add_host() to hold off the dpc thread.Found via large lun count testing using 2.6.31.
Signed-off-by: Michael Reed
Acked-by: Giridhar Malavali
Cc: stable@kernel.org
Signed-off-by: James Bottomley -
So libosd has decided to sacrifice some code simplicity for the sake of
a clean API. One of these things is the possibility for users to call
osd_end_request, in any condition at any state. This opens up some
problems with calling blk_put_request when out-side of the completion
callback but calling __blk_put_request when detecting a from-completion
state.The current hack was working just fine until exofs decided to operate on
all devices in parallel and wait for the sum of the requests, before
deallocating all osd-requests at once. There are two new possible cases
1. All request in a group are deallocated as part of the last request's
async-done, request_queue is locked.
2. All request in a group where executed asynchronously, but
de-allocation was delayed to after the async-done, in the context of
another thread. Async execution but request_queue is not locked.The solution I chose was to separate the deallocation of the osd_request
which has the information users need, from the deallocation of the
internal(2) requests which impose the locking problem. The internal
block-requests are freed unconditionally inside the async-done-callback,
when we know the queue is always locked. If at osd_end_request time we
still have a bock-request, then we know it did not come from within an
async-done-callback and we can call the regular blk_put_request.The internal requests were used for carrying error information after
execution. This information is now copied to osd_request members for
later analysis by user code.The external API and behaviour was unchanged, except now it really
supports what was previously advertised.Reported-by: Vineet Agarwal
Signed-off-by: Boaz Harrosh
Cc: Stable Tree
Signed-off-by: James Bottomley -
On the large servers, I/O port resource may not be assigned to all
the PCI devices since it is limited (to 64KB on Intel Architecture[1])
and it may also be fragmented (I/O base register of PCI-to-PCI bridge
will usually be aligned to a 4KB boundary[2]).
If no I/O port resource is assigned to devices, those devices do not
work.[1] Some machines support 64KB I/O port space per PCI segment.
[2] Some P2P bridges support optional 1KB aligned I/O base.Therefore, I made a patch for MegaRAID SAS driver to make PCI legacy
I/O port free. I have also tested the patch and it had no problem.The way to make PCI legacy I/O port free is the same as Fusion-MPT
driver's and it has been merged into 2.6.30.4.This has already been fixed in e1000 and lpfc.
As a result of the above, the driver can handle its device even when
there are a huge number of PCI devices being used on the system and no
I/O port region assigned to the device.Signed-off-by: Noriyuki Fujii
Acked-by: "Yang, Bo"
Signed-off-by: James Bottomley -
A thin provisioned device may temporarily be out of sufficient
allocation units to fulfill a write request. In that case it will
return a space allocation in progress error. Wait a bit and retry the
write.Signed-off-by: Martin K. Petersen
Signed-off-by: James Bottomley -
Implement a function for handling discard requests that sends either
WRITE SAME(16) or UNMAP(10) depending on parameters indicated by the
device in the block limits VPD.Extract unmap constraints and report them to the block layer.
Based in part by a patch by Christoph Hellwig .
Signed-off-by: Martin K. Petersen
Signed-off-by: James Bottomley -
Based on patch originally by Jeff Mahoney
enclosure_status is expected to be a NULL terminated array of strings
but isn't actually NULL terminated. When writing an invalid value to
/sys/class/enclosure/.../.../status, it goes off the end of the array
and Oopses.Fix by making the assumption true and adding NULL at the end.
Reported-by: Artur Wojcik
Signed-off-by: James Bottomley -
dio transfer always resets mdata->page_order to zero. It breaks
high-order pages previously allocated for non-dio transfer.This patches adds reserved_page_order to st_buffer structure to save
page order for non-dio transfer.http://bugzilla.kernel.org/show_bug.cgi?id=14563
When enlarge_buffer() allocates 524288 from 0, st uses six-order page
allocation. So mdata->page_order is 6 and frp_seg is 2.After that, if st uses dio, sgl_map_user_pages() sets
mdata->page_order to 0 for st_do_scsi(). After that, when we call
normalize_buffer(), it frees only free frp_seg * PAGE_SIZE (2 * 4096)
though we should free frp_seg * PAGE_SIZE << 6 (2 * 4096 << 6). So we
see buffer_size is set to 516096 (524288 - 8192).Reported-by: Joachim Breuer
Tested-by: Joachim Breuer
Acked-by: Kai Makisara
Signed-off-by: FUJITA Tomonori
Cc: stable@kernel.org
Signed-off-by: James Bottomley -
This patch allows for future addition of various async messages
from the chip. This ensures that the driver won't hit a BUG_ON if
the Firmware used is newer than inbox driver and so is using
latest async messages.Signed-off-by: Jayamohan Kallickal
Reviewed-by: Mike Christie
Signed-off-by: James Bottomley -
This is support for Adaptec ASC-1045/1405 SAS/SATA HBA on mvsas, which
is based on Marvell 88SE6440 chipset.Signed-off-by: Srinivas
Cc: Andy Yan
Signed-off-by: James Bottomley -
PMC-Sierra mgmt application uses SMI-S model. According to SMI-S, the
object model exposed by the SMI-S provider should show an StoragePool
which contains member disks of a RAID Virtual disk and StorageVolume
based on the StoragePool. But according to SMI-S, there is a possibility
where StoragePool is created but StorageVolume is not yet created. To
satisfy this scenario, we are trying a hidden RAID Virtual disk. The
hidden RAID virtual disk will not be exposed to OS. Once a StorageVolume
is created for this RAID virtual disk it is exposed.Signed-off-by: Anil Ravindranath
Signed-off-by: James Bottomley -
If transport_class_register fails we should unregister any
registered classes, or we will leak memory or other
resources.I did a quick modprobe of scsi_transport_fc to test the
patch.Signed-off-by: Mike Christie
Cc: Stable Tree
Signed-off-by: James Bottomley -
Internal command scsih_cmds init is included in mpt2sas_base_attach.
Signed-off-by: Kashyap Desai
Cc: Stable Tree
Signed-off-by: James Bottomley -
This patch adds two new IBM storage devices which can use rdac device handlers.
Signed-off-by: Babu Moger
Signed-off-by: James Bottomley -
In testing 2.6.31 on one of our ia64 platforms I've encountered a hang
due to the driver using hardware ATEs which are a limited resource.
This is because the driver does not set the dma consistent mask to
64 bits.Signed-off-by: Michael Reed
Acked-by: James Smart
Signed-off-by: James Bottomley -
* 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
ACPICA: Update version to 20091112.
ACPICA: Add additional module-level code support
ACPICA: Deploy new create integer interface where appropriate
ACPICA: New internal utility function to create Integer objects
ACPICA: Add repair for predefined methods that must return sorted lists
ACPICA: Fix possible fault if return Package objects contain NULL elements
ACPICA: Add post-order callback to acpi_walk_namespace
ACPICA: Change package length error message to an info message
ACPICA: Reduce severity of predefined repair messages, Warning to Info
ACPICA: Update version to 20091013
ACPICA: Fix possible memory leak for Scope ASL operator
ACPICA: Remove possibility of executing _REG methods twice
ACPICA: Add repair for bad _MAT buffers
ACPICA: Add repair for bad _BIF/_BIX packages -
* 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: (41 commits)
hwmon: (adt7475) Add VID support for the ADT7476
hwmon: (adt7475) Add an entry in MAINTAINERS
hwmon: (adt7475) Add support for the ADT7476
hwmon: (adt7475) Voltage attenuators can be bypassed
hwmon: (adt7475) Print device information on probe
hwmon: (adt7475) Handle alternative pin functions
hwmon: (adt7475) Move sysfs files removal to a separate function
hwmon: (adt7475) Add support for the ADT7490
hwmon: (adt7475) Improve device detection
hwmon: (adt7475) Add missing static marker
hwmon: (adt7475) Rework voltage inputs handling
hwmon: (adt7475) Implement pwm_use_point2_pwm_at_crit
hwmon: (adt7475) New documentation
hwmon: (adt7475) Add support for the ADT7473
hwmon: (f71882fg) Add support for the f71889fg (version 2)
hwmon: (f71882fg) Fix sysfs file removal
hwmon: (f71882fg) Cleanup sysfs attr creation 2/2
hwmon: (f71882fg) Cleanup sysfs attr creation 1/2
hwmon: (thmc50) Stop using I2C_CLIENT_MODULE_PARM
hwmon: Add Freescale MC13783 ADC driver
... -
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
ALSA: ice1724 - aureon - modify WM8770 Master & DAC volume
ALSA: hda/realtek: quirk for D945GCLF2 mainboard
ALSA: hda - Terradici HDA controllers does not support 64-bit mode
ALSA: document: Add direct git link to grub hda-analyzer
ALSA: radio/sound/miro: fix build, cleanup depends/selects
ALSA: hda - Generalize EAPD inversion check in patch_analog.c
ASoC: Wrong variable returned on error
ALSA: snd-usb-us122l: add product IDs of US-122MKII and US-144MKII
ALSA: hda - Exclude unusable ADCs for ALC88x
ALSA: hda - Add missing Line-Out and PCM switches as slave
ALSA: hda - iMac 9,1 sound patch.
ALSA: opti93x: set MC indirect registers base from PnP data -
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (51 commits)
Input: appletouch - give up maintainership
Input: dm355evm_kbd - switch to using sparse keymap library
Input: wistron_btns - switch to using sparse keymap library
Input: add generic support for sparse keymaps
Input: fix memory leak in force feedback core
Input: wistron - remove identification strings from DMI table
Input: psmouse - remove identification strings from DMI tables
Input: atkbd - remove identification strings from DMI table
Input: i8042 - remove identification strings from DMI tables
DMI: allow omitting ident strings in DMI tables
Input: psmouse - do not carry DMI data around
Input: matrix-keypad - switch to using dev_pm_ops
Input: keyboard - fix lack of locking when traversing handler->h_list
Input: gpio_keys - scan gpio state at probe and resume time
Input: keyboard - add locking around event handling
Input: usbtouchscreen - add support for ET&T TC5UH touchscreen controller
Input: xpad - add two new Xbox 360 devices
Input: polled device - do not start polling if interval is zero
Input: polled device - schedule first poll immediately
Input: add S3C24XX touchscreen driver
...