Commit 1a38045b authored by Dan Williams's avatar Dan Williams

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: default avatarDan Williams <dan.j.williams@intel.com>
parent d9c37390
...@@ -94,7 +94,6 @@ void isci_port_init( ...@@ -94,7 +94,6 @@ void isci_port_init(
INIT_LIST_HEAD(&isci_port->remote_dev_list); INIT_LIST_HEAD(&isci_port->remote_dev_list);
INIT_LIST_HEAD(&isci_port->domain_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); spin_lock_init(&isci_port->state_lock);
init_completion(&isci_port->start_complete); init_completion(&isci_port->start_complete);
isci_port->isci_host = isci_host; isci_port->isci_host = isci_host;
......
...@@ -90,7 +90,6 @@ struct isci_port { ...@@ -90,7 +90,6 @@ struct isci_port {
struct isci_host *isci_host; struct isci_host *isci_host;
struct asd_sas_port sas_port; struct asd_sas_port sas_port;
struct list_head remote_dev_list; struct list_head remote_dev_list;
spinlock_t remote_device_lock;
spinlock_t state_lock; spinlock_t state_lock;
struct list_head domain_dev_list; struct list_head domain_dev_list;
struct completion start_complete; struct completion start_complete;
......
...@@ -287,16 +287,13 @@ isci_remote_device_alloc(struct isci_host *ihost, struct isci_port *iport) ...@@ -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) void isci_remote_device_ready(struct isci_remote_device *idev)
{ {
struct isci_host *ihost = idev->isci_port->isci_host; struct isci_host *ihost = idev->isci_port->isci_host;
unsigned long flags;
dev_dbg(&ihost->pdev->dev, 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); isci_remote_device_change_state(idev, isci_ready_for_io);
if (test_and_clear_bit(IDEV_START_PENDING, &idev->flags)) if (test_and_clear_bit(IDEV_START_PENDING, &idev->flags))
wake_up(&ihost->eventq); 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) ...@@ -432,7 +429,6 @@ void isci_remote_device_gone(struct domain_device *dev)
*/ */
int isci_remote_device_found(struct domain_device *domain_dev) int isci_remote_device_found(struct domain_device *domain_dev)
{ {
unsigned long flags;
struct isci_host *isci_host; struct isci_host *isci_host;
struct isci_port *isci_port; struct isci_port *isci_port;
struct isci_phy *isci_phy; struct isci_phy *isci_phy;
...@@ -474,12 +470,12 @@ int isci_remote_device_found(struct domain_device *domain_dev) ...@@ -474,12 +470,12 @@ int isci_remote_device_found(struct domain_device *domain_dev)
isci_remote_device_change_state(isci_device, isci_starting); 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); list_add_tail(&isci_device->node, &isci_port->remote_dev_list);
set_bit(IDEV_START_PENDING, &isci_device->flags); set_bit(IDEV_START_PENDING, &isci_device->flags);
status = isci_remote_device_construct(isci_port, isci_device); 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, dev_dbg(&isci_host->pdev->dev,
"%s: isci_device = %p\n", "%s: isci_device = %p\n",
...@@ -487,12 +483,12 @@ int isci_remote_device_found(struct domain_device *domain_dev) ...@@ -487,12 +483,12 @@ int isci_remote_device_found(struct domain_device *domain_dev)
if (status != SCI_SUCCESS) { 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_remote_device_deconstruct(
isci_host, isci_host,
isci_device isci_device
); );
spin_unlock_irqrestore(&isci_port->remote_device_lock, flags); spin_unlock_irq(&isci_host->scic_lock);
return -ENODEV; return -ENODEV;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment