Skip to content

Commit

Permalink
[SCSI] mpt2sas : Device removal algorithm in interrupt context only
Browse files Browse the repository at this point in the history
external host not connecting after controller reboot: The
problem is : devices are not coming back after having the cable
disconnected then reconnected. The problem is because the
driver/firmware device removal handshake is failing. Due to this failure,
the controller firmware is not sending out device add events when the target
is reconnected. This is root caused to a race in the driver/firmware device
removal algorithm. There is duplicate code in both interrupt and user
context; where target reset is being issue from user context path while
sas_iounit_control(OP_REMOVE) is being sent from interrupt context. An
active target_reset will fail the OP_REMOVE. To fix this problem, the
duplicate code has been removed from user context path.

Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
  • Loading branch information
Kashyap, Desai authored and James Bottomley committed Apr 11, 2010
1 parent 4095605 commit 1278b11
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 195 deletions.
11 changes: 0 additions & 11 deletions drivers/scsi/mpt2sas/mpt2sas_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -259,16 +259,6 @@ struct _internal_cmd {
u16 smid;
};

/*
* SAS Topology Structures
*/

#define MPTSAS_STATE_TR_SEND 0x0001
#define MPTSAS_STATE_TR_COMPLETE 0x0002
#define MPTSAS_STATE_CNTRL_SEND 0x0004
#define MPTSAS_STATE_CNTRL_COMPLETE 0x0008

#define MPT2SAS_REQ_SAS_CNTRL 0x0010

/**
* struct _sas_device - attached device information
Expand Down Expand Up @@ -306,7 +296,6 @@ struct _sas_device {
u16 slot;
u8 hidden_raid_component;
u8 responding;
u16 state;
};

/**
Expand Down
Loading

0 comments on commit 1278b11

Please sign in to comment.