Commit f8049e3e authored by Michael Holzheu's avatar Michael Holzheu Committed by Martin Schwidefsky

s390/sclp: Move declarations for sclp_sdias into separate header file

Reviewed-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMichael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 7d594322
/* /*
* 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 * Author(s): Michael Holzheu
*/ */
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <asm/debug.h> #include <asm/debug.h>
#include <asm/ipl.h> #include <asm/ipl.h>
#include "sclp_sdias.h"
#include "sclp.h" #include "sclp.h"
#include "sclp_rw.h" #include "sclp_rw.h"
...@@ -22,46 +23,12 @@ ...@@ -22,46 +23,12 @@
#define SDIAS_RETRIES 300 #define SDIAS_RETRIES 300
#define SDIAS_SLEEP_TICKS 50 #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 debug_info *sdias_dbf;
static struct sclp_register sclp_sdias_register = { static struct sclp_register sclp_sdias_register = {
.send_mask = EVTYP_SDIAS_MASK, .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_sccb sccb __attribute__((aligned(4096)));
static struct sdias_evbuf sdias_evbuf; static struct sdias_evbuf sdias_evbuf;
...@@ -148,8 +115,8 @@ int sclp_sdias_blk_count(void) ...@@ -148,8 +115,8 @@ int sclp_sdias_blk_count(void)
sccb.hdr.length = sizeof(sccb); sccb.hdr.length = sizeof(sccb);
sccb.evbuf.hdr.length = sizeof(struct sdias_evbuf); sccb.evbuf.hdr.length = sizeof(struct sdias_evbuf);
sccb.evbuf.hdr.type = EVTYP_SDIAS; sccb.evbuf.hdr.type = EVTYP_SDIAS;
sccb.evbuf.event_qual = EQ_SIZE; sccb.evbuf.event_qual = SDIAS_EQ_SIZE;
sccb.evbuf.data_id = DI_FCP_DUMP; sccb.evbuf.data_id = SDIAS_DI_FCP_DUMP;
sccb.evbuf.event_id = 4712; sccb.evbuf.event_id = 4712;
sccb.evbuf.dbs = 1; sccb.evbuf.dbs = 1;
...@@ -208,13 +175,13 @@ int sclp_sdias_copy(void *dest, int start_blk, int nr_blks) ...@@ -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.length = sizeof(struct sdias_evbuf);
sccb.evbuf.hdr.type = EVTYP_SDIAS; sccb.evbuf.hdr.type = EVTYP_SDIAS;
sccb.evbuf.hdr.flags = 0; sccb.evbuf.hdr.flags = 0;
sccb.evbuf.event_qual = EQ_STORE_DATA; sccb.evbuf.event_qual = SDIAS_EQ_STORE_DATA;
sccb.evbuf.data_id = DI_FCP_DUMP; sccb.evbuf.data_id = SDIAS_DI_FCP_DUMP;
sccb.evbuf.event_id = 4712; sccb.evbuf.event_id = 4712;
#ifdef CONFIG_64BIT #ifdef CONFIG_64BIT
sccb.evbuf.asa_size = ASA_SIZE_64; sccb.evbuf.asa_size = SDIAS_ASA_SIZE_64;
#else #else
sccb.evbuf.asa_size = ASA_SIZE_32; sccb.evbuf.asa_size = SDIAS_ASA_SIZE_32;
#endif #endif
sccb.evbuf.event_status = 0; sccb.evbuf.event_status = 0;
sccb.evbuf.blk_cnt = nr_blks; sccb.evbuf.blk_cnt = nr_blks;
...@@ -240,20 +207,19 @@ int sclp_sdias_copy(void *dest, int start_blk, int nr_blks) ...@@ -240,20 +207,19 @@ int sclp_sdias_copy(void *dest, int start_blk, int nr_blks)
} }
switch (sdias_evbuf.event_status) { switch (sdias_evbuf.event_status) {
case EVSTATE_ALL_STORED: case SDIAS_EVSTATE_ALL_STORED:
TRACE("all stored\n"); TRACE("all stored\n");
break; break;
case EVSTATE_PART_STORED: case SDIAS_EVSTATE_PART_STORED:
TRACE("part stored: %i\n", sdias_evbuf.blk_cnt); TRACE("part stored: %i\n", sdias_evbuf.blk_cnt);
break; break;
case EVSTATE_NO_DATA: case SDIAS_EVSTATE_NO_DATA:
TRACE("no data\n"); TRACE("no data\n");
/* fall through */ /* fall through */
default: default:
pr_err("Error from SCLP while copying hsa. " pr_err("Error from SCLP while copying hsa. Event status = %x\n",
"Event status = %x\n", sdias_evbuf.event_status);
sdias_evbuf.event_status); rc = -EIO;
rc = -EIO;
} }
out: out:
mutex_unlock(&sdias_mutex); mutex_unlock(&sdias_mutex);
......
/*
* SCLP "store data in absolute storage"
*
* Copyright IBM Corp. 2003, 2013
*/
#ifndef SCLP_SDIAS_H
#define SCLP_SDIAS_H
#include "sclp.h"
#define SDIAS_EQ_STORE_DATA 0x0
#define SDIAS_EQ_SIZE 0x1
#define SDIAS_DI_FCP_DUMP 0x0
#define SDIAS_ASA_SIZE_32 0x0
#define SDIAS_ASA_SIZE_64 0x1
#define SDIAS_EVSTATE_ALL_STORED 0x0
#define SDIAS_EVSTATE_NO_DATA 0x3
#define SDIAS_EVSTATE_PART_STORED 0x10
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;
} __packed;
struct sdias_sccb {
struct sccb_header hdr;
struct sdias_evbuf evbuf;
} __packed;
#endif /* SCLP_SDIAS_H */
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