From: David Hildenbrand <david@redhat.com>
To: kvm@vger.kernel.org
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
"Radim Krčmář" <rkrcmar@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Cornelia Huck" <cohuck@redhat.com>,
"Christian Borntraeger" <borntraeger@de.ibm.com>,
"David Hildenbrand" <david@redhat.com>
Subject: [PATCH kvm-unit-tests v3 04/11] s390x: add missing sclp definitions from QEMU
Date: Tue, 13 Feb 2018 17:23:14 +0100 [thread overview]
Message-ID: <20180213162321.20522-5-david@redhat.com> (raw)
In-Reply-To: <20180213162321.20522-1-david@redhat.com>
Copy all missing definitions from QEMU (include/hw/s390x/sclp.h).
We cannot simply replace the file, as some ASCII definitions are missing
in the QEMU file (defined somewhere else in QEMU).
Convert QEMU_PACKED accordingly and copy the copyright statement.
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
---
lib/s390x/sclp.h | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 106 insertions(+), 1 deletion(-)
diff --git a/lib/s390x/sclp.h b/lib/s390x/sclp.h
index 3f4c138..a1d0a5e 100644
--- a/lib/s390x/sclp.h
+++ b/lib/s390x/sclp.h
@@ -1,8 +1,13 @@
/*
- * SCLP ASCII access driver
+ * SCLP definitions
*
+ * Based on the file pc-bios/s390-ccw/sclp.h from QEMU
* Copyright (c) 2013 Alexander Graf <agraf@suse.de>
*
+ * and based on the file include/hw/s390x/sclp.h from QEMU
+ * Copyright IBM, Corp. 2012
+ * Author: Christian Borntraeger <borntraeger@de.ibm.com>
+ *
* This work is licensed under the terms of the GNU GPL, version 2 or (at
* your option) any later version. See the COPYING file in the top-level
* directory.
@@ -11,21 +16,51 @@
#ifndef SCLP_H
#define SCLP_H
+#define SCLP_CMD_CODE_MASK 0xffff00ff
+
/* SCLP command codes */
#define SCLP_CMDW_READ_SCP_INFO 0x00020001
#define SCLP_CMDW_READ_SCP_INFO_FORCED 0x00120001
+#define SCLP_READ_STORAGE_ELEMENT_INFO 0x00040001
+#define SCLP_ATTACH_STORAGE_ELEMENT 0x00080001
+#define SCLP_ASSIGN_STORAGE 0x000D0001
#define SCLP_CMD_READ_EVENT_DATA 0x00770005
#define SCLP_CMD_WRITE_EVENT_DATA 0x00760005
#define SCLP_CMD_READ_EVENT_DATA 0x00770005
#define SCLP_CMD_WRITE_EVENT_DATA 0x00760005
#define SCLP_CMD_WRITE_EVENT_MASK 0x00780005
+/* SCLP Memory hotplug codes */
+#define SCLP_FC_ASSIGN_ATTACH_READ_STOR 0xE00000000000ULL
+#define SCLP_STARTING_SUBINCREMENT_ID 0x10001
+#define SCLP_INCREMENT_UNIT 0x10000
+#define MAX_AVAIL_SLOTS 32
+#define MAX_STORAGE_INCREMENTS 1020
+
+/* CPU hotplug SCLP codes */
+#define SCLP_HAS_CPU_INFO 0x0C00000000000000ULL
+#define SCLP_CMDW_READ_CPU_INFO 0x00010001
+#define SCLP_CMDW_CONFIGURE_CPU 0x00110001
+#define SCLP_CMDW_DECONFIGURE_CPU 0x00100001
+
+/* SCLP PCI codes */
+#define SCLP_HAS_IOA_RECONFIG 0x0000000040000000ULL
+#define SCLP_CMDW_CONFIGURE_IOA 0x001a0001
+#define SCLP_CMDW_DECONFIGURE_IOA 0x001b0001
+#define SCLP_RECONFIG_PCI_ATYPE 2
+
/* SCLP response codes */
#define SCLP_RC_NORMAL_READ_COMPLETION 0x0010
#define SCLP_RC_NORMAL_COMPLETION 0x0020
+#define SCLP_RC_SCCB_BOUNDARY_VIOLATION 0x0100
+#define SCLP_RC_NO_ACTION_REQUIRED 0x0120
#define SCLP_RC_INVALID_SCLP_COMMAND 0x01f0
#define SCLP_RC_CONTAINED_EQUIPMENT_CHECK 0x0340
#define SCLP_RC_INSUFFICIENT_SCCB_LENGTH 0x0300
+#define SCLP_RC_STANDBY_READ_COMPLETION 0x0410
+#define SCLP_RC_ADAPTER_IN_RESERVED_STATE 0x05f0
+#define SCLP_RC_ADAPTER_TYPE_NOT_RECOGNIZED 0x06f0
+#define SCLP_RC_ADAPTER_ID_NOT_RECOGNIZED 0x09f0
#define SCLP_RC_INVALID_FUNCTION 0x40f0
#define SCLP_RC_NO_EVENT_BUFFERS_STORED 0x60f0
#define SCLP_RC_INVALID_SELECTION_MASK 0x70f0
@@ -50,13 +85,83 @@ typedef struct SCCBHeader {
} __attribute__((packed)) SCCBHeader;
#define SCCB_DATA_LEN (SCCB_SIZE - sizeof(SCCBHeader))
+#define SCCB_CPU_FEATURE_LEN 6
+
+/* CPU information */
+typedef struct CPUEntry {
+ uint8_t address;
+ uint8_t reserved0;
+ uint8_t features[SCCB_CPU_FEATURE_LEN];
+ uint8_t reserved2[6];
+ uint8_t type;
+ uint8_t reserved1;
+} __attribute__((packed)) CPUEntry;
typedef struct ReadInfo {
SCCBHeader h;
uint16_t rnmax;
uint8_t rnsize;
+ uint8_t _reserved1[16 - 11]; /* 11-15 */
+ uint16_t entries_cpu; /* 16-17 */
+ uint16_t offset_cpu; /* 18-19 */
+ uint8_t _reserved2[24 - 20]; /* 20-23 */
+ uint8_t loadparm[8]; /* 24-31 */
+ uint8_t _reserved3[48 - 32]; /* 32-47 */
+ uint64_t facilities; /* 48-55 */
+ uint8_t _reserved0[76 - 56]; /* 56-75 */
+ uint32_t ibc_val;
+ uint8_t conf_char[99 - 80]; /* 80-98 */
+ uint8_t mha_pow;
+ uint32_t rnsize2;
+ uint64_t rnmax2;
+ uint8_t _reserved6[116 - 112]; /* 112-115 */
+ uint8_t conf_char_ext[120 - 116]; /* 116-119 */
+ uint16_t highest_cpu;
+ uint8_t _reserved5[124 - 122]; /* 122-123 */
+ uint32_t hmfai;
+ struct CPUEntry entries[0];
} __attribute__((packed)) ReadInfo;
+typedef struct ReadCpuInfo {
+ SCCBHeader h;
+ uint16_t nr_configured; /* 8-9 */
+ uint16_t offset_configured; /* 10-11 */
+ uint16_t nr_standby; /* 12-13 */
+ uint16_t offset_standby; /* 14-15 */
+ uint8_t reserved0[24-16]; /* 16-23 */
+ struct CPUEntry entries[0];
+} __attribute__((packed)) ReadCpuInfo;
+
+typedef struct ReadStorageElementInfo {
+ SCCBHeader h;
+ uint16_t max_id;
+ uint16_t assigned;
+ uint16_t standby;
+ uint8_t _reserved0[16 - 14]; /* 14-15 */
+ uint32_t entries[0];
+} __attribute__((packed)) ReadStorageElementInfo;
+
+typedef struct AttachStorageElement {
+ SCCBHeader h;
+ uint8_t _reserved0[10 - 8]; /* 8-9 */
+ uint16_t assigned;
+ uint8_t _reserved1[16 - 12]; /* 12-15 */
+ uint32_t entries[0];
+} __attribute__((packed)) AttachStorageElement;
+
+typedef struct AssignStorage {
+ SCCBHeader h;
+ uint16_t rn;
+} __attribute__((packed)) AssignStorage;
+
+typedef struct IoaCfgSccb {
+ SCCBHeader header;
+ uint8_t atype;
+ uint8_t reserved1;
+ uint16_t reserved2;
+ uint32_t aid;
+} __attribute__((packed)) IoaCfgSccb;
+
typedef struct SCCB {
SCCBHeader h;
char data[SCCB_DATA_LEN];
--
2.14.3
next prev parent reply other threads:[~2018-02-13 16:23 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-13 16:23 [PATCH kvm-unit-tests v3 00/11] s390x: vmalloc support David Hildenbrand
2018-02-13 16:23 ` [PATCH kvm-unit-tests v3 01/11] s390x: fix TEST BLOCK tests David Hildenbrand
2018-02-13 16:23 ` [PATCH kvm-unit-tests v3 02/11] s390x: use highest addresses for PGM_ADDRESSING errors David Hildenbrand
2018-02-13 16:23 ` [PATCH kvm-unit-tests v3 03/11] s390x: set initital stack pointer to stackptr, not stacktop David Hildenbrand
2018-02-13 16:23 ` David Hildenbrand [this message]
2018-02-13 16:23 ` [PATCH kvm-unit-tests v3 05/11] s390x: rename sclp_setup() to sclp_ascii_setup() David Hildenbrand
2018-02-13 16:23 ` [PATCH kvm-unit-tests v3 06/11] s390x: detect installed memory David Hildenbrand
2018-02-13 16:23 ` [PATCH kvm-unit-tests v3 07/11] s390x: initialize the physical allocator David Hildenbrand
2018-02-14 12:05 ` Thomas Huth
2018-02-14 12:22 ` David Hildenbrand
2018-02-13 16:23 ` [PATCH kvm-unit-tests v3 08/11] s390x: add vmalloc support David Hildenbrand
2018-02-13 16:23 ` [PATCH kvm-unit-tests v3 09/11] s390x: enable DAT in PGM interrupt handler David Hildenbrand
2018-02-13 16:23 ` [PATCH kvm-unit-tests v3 10/11] s390x: add test for (v)malloc David Hildenbrand
2018-02-13 16:23 ` [PATCH kvm-unit-tests v3 11/11] s390x: add sieve test David Hildenbrand
2018-02-13 16:26 ` Christian Borntraeger
2018-02-13 16:44 ` Paolo Bonzini
2018-02-13 17:02 ` David Hildenbrand
2018-02-13 17:08 ` David Hildenbrand
2018-02-14 11:51 ` Paolo Bonzini
2018-02-14 12:56 ` David Hildenbrand
2018-02-14 13:15 ` David Hildenbrand
2018-02-13 17:09 ` David Hildenbrand
2018-02-14 11:52 ` [PATCH kvm-unit-tests v3 00/11] s390x: vmalloc support Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180213162321.20522-5-david@redhat.com \
--to=david@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.