diff options
author | Dan Williams <dan.j.williams@intel.com> | 2011-03-03 18:01:43 -0800 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2011-07-03 03:55:29 -0700 |
commit | 1a38045ba88ed3bee6c57444670fb639c8b61be7 (patch) | |
tree | 9a1fc0caf72e2cd8f236e1675e2918fc6498b5c9 | |
parent | d9c37390c4f02153188a64a7a89fa6798dc3ffc2 (diff) | |
download | blackbird-op-linux-1a38045ba88ed3bee6c57444670fb639c8b61be7.tar.gz blackbird-op-linux-1a38045ba88ed3bee6c57444670fb639c8b61be7.zip |
isci: replace remote_device_lock with scic_lock
The remote_device_lock is currently used to protect a controller global
resource (RNCs), but the remote_device_lock is per-port.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | drivers/scsi/isci/port.c | 1 | ||||
-rw-r--r-- | drivers/scsi/isci/port.h | 1 | ||||
-rw-r--r-- | drivers/scsi/isci/remote_device.c | 14 |
3 files changed, 5 insertions, 11 deletions
diff --git a/drivers/scsi/isci/port.c b/drivers/scsi/isci/port.c index 30da3ec703e3..a5b2565ac5af 100644 --- a/drivers/scsi/isci/port.c +++ b/drivers/scsi/isci/port.c @@ -94,7 +94,6 @@ void isci_port_init( INIT_LIST_HEAD(&isci_port->remote_dev_list); INIT_LIST_HEAD(&isci_port->domain_dev_list); - spin_lock_init(&isci_port->remote_device_lock); spin_lock_init(&isci_port->state_lock); init_completion(&isci_port->start_complete); isci_port->isci_host = isci_host; diff --git a/drivers/scsi/isci/port.h b/drivers/scsi/isci/port.h index b864d70363e7..b7a7dd7dca69 100644 --- a/drivers/scsi/isci/port.h +++ b/drivers/scsi/isci/port.h @@ -90,7 +90,6 @@ struct isci_port { struct isci_host *isci_host; struct asd_sas_port sas_port; struct list_head remote_dev_list; - spinlock_t remote_device_lock; spinlock_t state_lock; struct list_head domain_dev_list; struct completion start_complete; diff --git a/drivers/scsi/isci/remote_device.c b/drivers/scsi/isci/remote_device.c index 48556e47bb9d..1dae2184b9e9 100644 --- a/drivers/scsi/isci/remote_device.c +++ b/drivers/scsi/isci/remote_device.c @@ -287,16 +287,13 @@ isci_remote_device_alloc(struct isci_host *ihost, struct isci_port *iport) void isci_remote_device_ready(struct isci_remote_device *idev) { struct isci_host *ihost = idev->isci_port->isci_host; - unsigned long flags; dev_dbg(&ihost->pdev->dev, - "%s: isci_device = %p\n", __func__, idev); + "%s: idev = %p\n", __func__, idev); - spin_lock_irqsave(&idev->isci_port->remote_device_lock, flags); isci_remote_device_change_state(idev, isci_ready_for_io); if (test_and_clear_bit(IDEV_START_PENDING, &idev->flags)) wake_up(&ihost->eventq); - spin_unlock_irqrestore(&idev->isci_port->remote_device_lock, flags); } /** @@ -432,7 +429,6 @@ void isci_remote_device_gone(struct domain_device *dev) */ int isci_remote_device_found(struct domain_device *domain_dev) { - unsigned long flags; struct isci_host *isci_host; struct isci_port *isci_port; struct isci_phy *isci_phy; @@ -474,12 +470,12 @@ int isci_remote_device_found(struct domain_device *domain_dev) isci_remote_device_change_state(isci_device, isci_starting); - spin_lock_irqsave(&isci_port->remote_device_lock, flags); + spin_lock_irq(&isci_host->scic_lock); list_add_tail(&isci_device->node, &isci_port->remote_dev_list); set_bit(IDEV_START_PENDING, &isci_device->flags); status = isci_remote_device_construct(isci_port, isci_device); - spin_unlock_irqrestore(&isci_port->remote_device_lock, flags); + spin_unlock_irq(&isci_host->scic_lock); dev_dbg(&isci_host->pdev->dev, "%s: isci_device = %p\n", @@ -487,12 +483,12 @@ int isci_remote_device_found(struct domain_device *domain_dev) if (status != SCI_SUCCESS) { - spin_lock_irqsave(&isci_port->remote_device_lock, flags); + spin_lock_irq(&isci_host->scic_lock); isci_remote_device_deconstruct( isci_host, isci_device ); - spin_unlock_irqrestore(&isci_port->remote_device_lock, flags); + spin_unlock_irq(&isci_host->scic_lock); return -ENODEV; } |