diff options
Diffstat (limited to 'drivers/s390/char/sclp_sdias.c')
| -rw-r--r-- | drivers/s390/char/sclp_sdias.c | 78 | 
1 files changed, 22 insertions, 56 deletions
diff --git a/drivers/s390/char/sclp_sdias.c b/drivers/s390/char/sclp_sdias.c index b1032931a1c..561a0414b35 100644 --- a/drivers/s390/char/sclp_sdias.c +++ b/drivers/s390/char/sclp_sdias.c @@ -1,7 +1,7 @@  /* - * Sclp "store data in absolut storage" + * SCLP "store data in absolute storage"   * - * Copyright IBM Corp. 2003, 2007 + * Copyright IBM Corp. 2003, 2013   * Author(s): Michael Holzheu   */ @@ -14,6 +14,7 @@  #include <asm/debug.h>  #include <asm/ipl.h> +#include "sclp_sdias.h"  #include "sclp.h"  #include "sclp_rw.h" @@ -22,46 +23,12 @@  #define SDIAS_RETRIES 300  #define SDIAS_SLEEP_TICKS 50 -#define EQ_STORE_DATA	0x0 -#define EQ_SIZE		0x1 -#define DI_FCP_DUMP	0x0 -#define ASA_SIZE_32	0x0 -#define ASA_SIZE_64	0x1 -#define EVSTATE_ALL_STORED	0x0 -#define EVSTATE_NO_DATA		0x3 -#define EVSTATE_PART_STORED	0x10 -  static struct debug_info *sdias_dbf;  static struct sclp_register sclp_sdias_register = {  	.send_mask = EVTYP_SDIAS_MASK,  }; -struct sdias_evbuf { -	struct	evbuf_header hdr; -	u8	event_qual; -	u8	data_id; -	u64	reserved2; -	u32	event_id; -	u16	reserved3; -	u8	asa_size; -	u8	event_status; -	u32	reserved4; -	u32	blk_cnt; -	u64	asa; -	u32	reserved5; -	u32	fbn; -	u32	reserved6; -	u32	lbn; -	u16	reserved7; -	u16	dbs; -} __attribute__((packed)); - -struct sdias_sccb { -	struct sccb_header  hdr; -	struct sdias_evbuf  evbuf; -} __attribute__((packed)); -  static struct sdias_sccb sccb __attribute__((aligned(4096)));  static struct sdias_evbuf sdias_evbuf; @@ -148,8 +115,8 @@ int sclp_sdias_blk_count(void)  	sccb.hdr.length = sizeof(sccb);  	sccb.evbuf.hdr.length = sizeof(struct sdias_evbuf);  	sccb.evbuf.hdr.type = EVTYP_SDIAS; -	sccb.evbuf.event_qual = EQ_SIZE; -	sccb.evbuf.data_id = DI_FCP_DUMP; +	sccb.evbuf.event_qual = SDIAS_EQ_SIZE; +	sccb.evbuf.data_id = SDIAS_DI_FCP_DUMP;  	sccb.evbuf.event_id = 4712;  	sccb.evbuf.dbs = 1; @@ -208,13 +175,13 @@ int sclp_sdias_copy(void *dest, int start_blk, int nr_blks)  	sccb.evbuf.hdr.length = sizeof(struct sdias_evbuf);  	sccb.evbuf.hdr.type = EVTYP_SDIAS;  	sccb.evbuf.hdr.flags = 0; -	sccb.evbuf.event_qual = EQ_STORE_DATA; -	sccb.evbuf.data_id = DI_FCP_DUMP; +	sccb.evbuf.event_qual = SDIAS_EQ_STORE_DATA; +	sccb.evbuf.data_id = SDIAS_DI_FCP_DUMP;  	sccb.evbuf.event_id = 4712;  #ifdef CONFIG_64BIT -	sccb.evbuf.asa_size = ASA_SIZE_64; +	sccb.evbuf.asa_size = SDIAS_ASA_SIZE_64;  #else -	sccb.evbuf.asa_size = ASA_SIZE_32; +	sccb.evbuf.asa_size = SDIAS_ASA_SIZE_32;  #endif  	sccb.evbuf.event_status = 0;  	sccb.evbuf.blk_cnt = nr_blks; @@ -240,20 +207,19 @@ int sclp_sdias_copy(void *dest, int start_blk, int nr_blks)  	}  	switch (sdias_evbuf.event_status) { -		case EVSTATE_ALL_STORED: -			TRACE("all stored\n"); -			break; -		case EVSTATE_PART_STORED: -			TRACE("part stored: %i\n", sdias_evbuf.blk_cnt); -			break; -		case EVSTATE_NO_DATA: -			TRACE("no data\n"); -			/* fall through */ -		default: -			pr_err("Error from SCLP while copying hsa. " -			       "Event status = %x\n", -			       sdias_evbuf.event_status); -			rc = -EIO; +	case SDIAS_EVSTATE_ALL_STORED: +		TRACE("all stored\n"); +		break; +	case SDIAS_EVSTATE_PART_STORED: +		TRACE("part stored: %i\n", sdias_evbuf.blk_cnt); +		break; +	case SDIAS_EVSTATE_NO_DATA: +		TRACE("no data\n"); +		/* fall through */ +	default: +		pr_err("Error from SCLP while copying hsa. Event status = %x\n", +		       sdias_evbuf.event_status); +		rc = -EIO;  	}  out:  	mutex_unlock(&sdias_mutex);  | 
