s390/sclp: introduce check for the SIGP Interpretation Facility
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>
Tue, 14 Oct 2014 10:11:02 +0000 (12:11 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Fri, 23 Jan 2015 12:25:35 +0000 (13:25 +0100)
This patch introduces the infrastructure to check whether the SIGP
Interpretation Facility is installed on all VCPUs in the configuration.

Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
arch/s390/include/asm/sclp.h
drivers/s390/char/sclp_early.c

index 1aba89b53cb9e1e8614524c8786a7dced2960278..425e6cc240ffd348eb472bffb3dba4684b53bdeb 100644 (file)
@@ -31,7 +31,8 @@ struct sclp_cpu_entry {
        u8 reserved0[2];
        u8 : 3;
        u8 siif : 1;
-       u8 : 4;
+       u8 sigpif : 1;
+       u8 : 3;
        u8 reserved2[10];
        u8 type;
        u8 reserved1;
@@ -66,6 +67,7 @@ int memcpy_hsa(void *dest, unsigned long src, size_t count, int mode);
 unsigned long sclp_get_hsa_size(void);
 void sclp_early_detect(void);
 int sclp_has_siif(void);
+int sclp_has_sigpif(void);
 unsigned int sclp_get_ibc(void);
 
 #endif /* _ASM_S390_SCLP_H */
index 5bd6cb145a87d4bfd4e11f7ca139bac1f7ec51e3..b8a5bf5f1f3dc844899d24c6763a280a66ab12fc 100644 (file)
@@ -49,6 +49,7 @@ static unsigned long sclp_hsa_size;
 static unsigned int sclp_max_cpu;
 static struct sclp_ipl_info sclp_ipl_info;
 static unsigned char sclp_siif;
+static unsigned char sclp_sigpif;
 static u32 sclp_ibc;
 
 u64 sclp_facilities;
@@ -131,6 +132,7 @@ static void __init sclp_facilities_detect(struct read_info_sccb *sccb)
                if (boot_cpu_address != cpue->address)
                        continue;
                sclp_siif = cpue->siif;
+               sclp_sigpif = cpue->sigpif;
                break;
        }
 
@@ -172,6 +174,12 @@ int sclp_has_siif(void)
 }
 EXPORT_SYMBOL(sclp_has_siif);
 
+int sclp_has_sigpif(void)
+{
+       return sclp_sigpif;
+}
+EXPORT_SYMBOL(sclp_has_sigpif);
+
 unsigned int sclp_get_ibc(void)
 {
        return sclp_ibc;