s390/zfcp: remove pm support from zfcp driver
As part of removing the power management support from s390 arch, remove PM callbacks from the scsi/zfcp driver. Signed-off-by: Vineeth Vijayan <vneethv@linux.ibm.com> Reviewed-by: Steffen Maier <maier@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
Родитель
8cb4c20f32
Коммит
5db44cfe2e
|
@ -193,30 +193,6 @@ static int zfcp_ccw_set_online(struct ccw_device *cdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* zfcp_ccw_offline_sync - shut down adapter and wait for it to finish
|
||||
* @cdev: pointer to belonging ccw device
|
||||
* @set: Status flags to set.
|
||||
* @tag: s390dbf trace record tag
|
||||
*
|
||||
* This function gets called by the common i/o layer and sets an adapter
|
||||
* into state offline.
|
||||
*/
|
||||
static int zfcp_ccw_offline_sync(struct ccw_device *cdev, int set, char *tag)
|
||||
{
|
||||
struct zfcp_adapter *adapter = zfcp_ccw_adapter_by_cdev(cdev);
|
||||
|
||||
if (!adapter)
|
||||
return 0;
|
||||
|
||||
zfcp_erp_set_adapter_status(adapter, set);
|
||||
zfcp_erp_adapter_shutdown(adapter, 0, tag);
|
||||
zfcp_erp_wait(adapter);
|
||||
|
||||
zfcp_ccw_adapter_put(adapter);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* zfcp_ccw_set_offline - set_offline function of zfcp driver
|
||||
* @cdev: pointer to belonging ccw device
|
||||
|
@ -226,7 +202,17 @@ static int zfcp_ccw_offline_sync(struct ccw_device *cdev, int set, char *tag)
|
|||
*/
|
||||
static int zfcp_ccw_set_offline(struct ccw_device *cdev)
|
||||
{
|
||||
return zfcp_ccw_offline_sync(cdev, 0, "ccsoff1");
|
||||
struct zfcp_adapter *adapter = zfcp_ccw_adapter_by_cdev(cdev);
|
||||
|
||||
if (!adapter)
|
||||
return 0;
|
||||
|
||||
zfcp_erp_set_adapter_status(adapter, 0);
|
||||
zfcp_erp_adapter_shutdown(adapter, 0, "ccsoff1");
|
||||
zfcp_erp_wait(adapter);
|
||||
|
||||
zfcp_ccw_adapter_put(adapter);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -246,11 +232,6 @@ static int zfcp_ccw_notify(struct ccw_device *cdev, int event)
|
|||
|
||||
switch (event) {
|
||||
case CIO_GONE:
|
||||
if (atomic_read(&adapter->status) &
|
||||
ZFCP_STATUS_ADAPTER_SUSPENDED) { /* notification ignore */
|
||||
zfcp_dbf_hba_basic("ccnigo1", adapter);
|
||||
break;
|
||||
}
|
||||
dev_warn(&cdev->dev, "The FCP device has been detached\n");
|
||||
zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti1");
|
||||
break;
|
||||
|
@ -260,11 +241,6 @@ static int zfcp_ccw_notify(struct ccw_device *cdev, int event)
|
|||
zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti2");
|
||||
break;
|
||||
case CIO_OPER:
|
||||
if (atomic_read(&adapter->status) &
|
||||
ZFCP_STATUS_ADAPTER_SUSPENDED) { /* notification ignore */
|
||||
zfcp_dbf_hba_basic("ccniop1", adapter);
|
||||
break;
|
||||
}
|
||||
dev_info(&cdev->dev, "The FCP device is operational again\n");
|
||||
zfcp_erp_set_adapter_status(adapter,
|
||||
ZFCP_STATUS_COMMON_RUNNING);
|
||||
|
@ -300,28 +276,6 @@ static void zfcp_ccw_shutdown(struct ccw_device *cdev)
|
|||
zfcp_ccw_adapter_put(adapter);
|
||||
}
|
||||
|
||||
static int zfcp_ccw_suspend(struct ccw_device *cdev)
|
||||
{
|
||||
zfcp_ccw_offline_sync(cdev, ZFCP_STATUS_ADAPTER_SUSPENDED, "ccsusp1");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int zfcp_ccw_thaw(struct ccw_device *cdev)
|
||||
{
|
||||
/* trace records for thaw and final shutdown during suspend
|
||||
can only be found in system dump until the end of suspend
|
||||
but not after resume because it's based on the memory image
|
||||
right after the very first suspend (freeze) callback */
|
||||
zfcp_ccw_activate(cdev, 0, "ccthaw1");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int zfcp_ccw_resume(struct ccw_device *cdev)
|
||||
{
|
||||
zfcp_ccw_activate(cdev, ZFCP_STATUS_ADAPTER_SUSPENDED, "ccresu1");
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct ccw_driver zfcp_ccw_driver = {
|
||||
.driver = {
|
||||
.owner = THIS_MODULE,
|
||||
|
@ -334,7 +288,4 @@ struct ccw_driver zfcp_ccw_driver = {
|
|||
.set_offline = zfcp_ccw_set_offline,
|
||||
.notify = zfcp_ccw_notify,
|
||||
.shutdown = zfcp_ccw_shutdown,
|
||||
.freeze = zfcp_ccw_suspend,
|
||||
.thaw = zfcp_ccw_thaw,
|
||||
.restore = zfcp_ccw_resume,
|
||||
};
|
||||
|
|
|
@ -263,31 +263,6 @@ void zfcp_dbf_hba_def_err(struct zfcp_adapter *adapter, u64 req_id, u16 scount,
|
|||
spin_unlock_irqrestore(&dbf->pay_lock, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* zfcp_dbf_hba_basic - trace event for basic adapter events
|
||||
* @tag: identifier for event
|
||||
* @adapter: pointer to struct zfcp_adapter
|
||||
*/
|
||||
void zfcp_dbf_hba_basic(char *tag, struct zfcp_adapter *adapter)
|
||||
{
|
||||
struct zfcp_dbf *dbf = adapter->dbf;
|
||||
struct zfcp_dbf_hba *rec = &dbf->hba_buf;
|
||||
static int const level = 1;
|
||||
unsigned long flags;
|
||||
|
||||
if (unlikely(!debug_level_enabled(dbf->hba, level)))
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&dbf->hba_lock, flags);
|
||||
memset(rec, 0, sizeof(*rec));
|
||||
|
||||
memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN);
|
||||
rec->id = ZFCP_DBF_HBA_BASIC;
|
||||
|
||||
debug_event(dbf->hba, level, rec, sizeof(*rec));
|
||||
spin_unlock_irqrestore(&dbf->hba_lock, flags);
|
||||
}
|
||||
|
||||
static void zfcp_dbf_set_common(struct zfcp_dbf_rec *rec,
|
||||
struct zfcp_adapter *adapter,
|
||||
struct zfcp_port *port,
|
||||
|
|
|
@ -70,7 +70,6 @@
|
|||
#define ZFCP_STATUS_ADAPTER_SIOSL_ISSUED 0x00000004
|
||||
#define ZFCP_STATUS_ADAPTER_XCONFIG_OK 0x00000008
|
||||
#define ZFCP_STATUS_ADAPTER_HOST_CON_INIT 0x00000010
|
||||
#define ZFCP_STATUS_ADAPTER_SUSPENDED 0x00000040
|
||||
#define ZFCP_STATUS_ADAPTER_ERP_PENDING 0x00000100
|
||||
#define ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED 0x00000200
|
||||
#define ZFCP_STATUS_ADAPTER_DATA_DIV_ENABLED 0x00000400
|
||||
|
|
|
@ -49,7 +49,6 @@ extern void zfcp_dbf_hba_fsf_fces(char *tag, const struct zfcp_fsf_req *req,
|
|||
u32 fc_security_new);
|
||||
extern void zfcp_dbf_hba_bit_err(char *, struct zfcp_fsf_req *);
|
||||
extern void zfcp_dbf_hba_def_err(struct zfcp_adapter *, u64, u16, void **);
|
||||
extern void zfcp_dbf_hba_basic(char *, struct zfcp_adapter *);
|
||||
extern void zfcp_dbf_san_req(char *, struct zfcp_fsf_req *, u32);
|
||||
extern void zfcp_dbf_san_res(char *, struct zfcp_fsf_req *);
|
||||
extern void zfcp_dbf_san_in_els(char *, struct zfcp_fsf_req *);
|
||||
|
|
Загрузка…
Ссылка в новой задаче