Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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

parent 7d594322
Loading
Loading
Loading
Loading
+22 −56
Original line number Diff line number Diff line
/*
 * 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,18 +207,17 @@ int sclp_sdias_copy(void *dest, int start_blk, int nr_blks)
	}

	switch (sdias_evbuf.event_status) {
		case EVSTATE_ALL_STORED:
	case SDIAS_EVSTATE_ALL_STORED:
		TRACE("all stored\n");
		break;
		case EVSTATE_PART_STORED:
	case SDIAS_EVSTATE_PART_STORED:
		TRACE("part stored: %i\n", sdias_evbuf.blk_cnt);
		break;
		case EVSTATE_NO_DATA:
	case SDIAS_EVSTATE_NO_DATA:
		TRACE("no data\n");
		/* fall through */
	default:
			pr_err("Error from SCLP while copying hsa. "
			       "Event status = %x\n",
		pr_err("Error from SCLP while copying hsa. Event status = %x\n",
		       sdias_evbuf.event_status);
		rc = -EIO;
	}
+46 −0
Original line number Diff line number Diff line
/*
 * 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 */