[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC][patch 1/6] s390: cio: chsc function to register GIB
From: |
frank . blaschka |
Subject: |
[Qemu-devel] [RFC][patch 1/6] s390: cio: chsc function to register GIB |
Date: |
Thu, 04 Sep 2014 12:52:24 +0200 |
User-agent: |
quilt/0.61-1 |
From: Frank Blaschka <address@hidden>
This patch provides a new chsc function to register/unregister
a GIB (Guest Information Block).
Signed-off-by: Frank Blaschka <address@hidden>
---
arch/s390/include/asm/cio.h | 1
drivers/s390/cio/chsc.c | 50 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+)
--- a/arch/s390/include/asm/cio.h
+++ b/arch/s390/include/asm/cio.h
@@ -311,5 +311,6 @@ extern int cio_get_iplinfo(struct cio_ip
/* Function from drivers/s390/cio/chsc.c */
int chsc_sstpc(void *page, unsigned int op, u16 ctrl);
int chsc_sstpi(void *page, void *result, size_t size);
+int chsc_sgib(u32 gibo);
#endif
--- a/drivers/s390/cio/chsc.c
+++ b/drivers/s390/cio/chsc.c
@@ -1188,6 +1188,56 @@ out:
EXPORT_SYMBOL_GPL(chsc_siosl);
/**
+ * chsc_sgib() - register guest information block
+ * @gibo: guest information block
+ *
+ * gibo must be allocated in low memory
+ *
+ * Returns 0 on success.
+ */
+int chsc_sgib(u32 gibo)
+{
+ struct {
+ struct chsc_header request;
+ u16 operation_code;
+ u16 : 16;
+ u32 : 4;
+ u32 fmt : 4;
+ u32 : 24;
+ u32 : 32;
+ u32 : 32;
+ u32 gibo;
+ u64 : 64;
+ u32 : 16;
+ u32 aix : 8;
+ u32 : 8;
+ u32 reserved[1007];
+ struct chsc_header response;
+ } __packed *scssc;
+ unsigned long flags;
+ int rc;
+
+ spin_lock_irqsave(&chsc_page_lock, flags);
+ memset(chsc_page, 0, PAGE_SIZE);
+ scssc = chsc_page;
+
+ scssc->request.length = 0x0fe0;
+ scssc->request.code = 0x0021;
+ scssc->operation_code = 1;
+ scssc->gibo = gibo;
+
+ rc = chsc(scssc);
+ if (rc)
+ rc = -EIO;
+ else
+ rc = chsc_error_from_response(scssc->response.code);
+
+ spin_unlock_irqrestore(&chsc_page_lock, flags);
+ return rc;
+}
+EXPORT_SYMBOL_GPL(chsc_sgib);
+
+/**
* chsc_scm_info() - store SCM information (SSI)
* @scm_area: request and response block for SSI
* @token: continuation token
[Qemu-devel] [RFC][patch 1/6] s390: cio: chsc function to register GIB,
frank . blaschka <=
[Qemu-devel] [RFC][patch 4/6] KVM: s390: Add PCI pass-through support, frank . blaschka, 2014/09/04
[Qemu-devel] [RFC][patch 2/6] s390: pci: export pci functions for pass-through usage, frank . blaschka, 2014/09/04
[Qemu-devel] [RFC][patch 3/6] KVM: s390: Add GISA support, frank . blaschka, 2014/09/04
[Qemu-devel] [RFC][patch 6/6] s390: Add PCI pass-through device support, frank . blaschka, 2014/09/04
[Qemu-devel] [RFC][patch 5/6] s390: Add PCI bus support, frank . blaschka, 2014/09/04
Re: [Qemu-devel] [RFC][patch 0/6] pci pass-through support for qemu/KVM on s390, Alexander Graf, 2014/09/05