aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>2014-10-14 06:11:02 -0400
committerChristian Borntraeger <borntraeger@de.ibm.com>2015-01-23 07:25:35 -0500
commitd614be05c8b73033fa141c2f4559c117578b9171 (patch)
tree626955f3dc327e7f7454210741b16948a8b5af94
parenta3a9c59a683658d881aa2695be2aa875598f2712 (diff)
s390/sclp: introduce check for the SIGP Interpretation Facility
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>
-rw-r--r--arch/s390/include/asm/sclp.h4
-rw-r--r--drivers/s390/char/sclp_early.c8
2 files changed, 11 insertions, 1 deletions
diff --git a/arch/s390/include/asm/sclp.h b/arch/s390/include/asm/sclp.h
index 1aba89b53cb9..425e6cc240ff 100644
--- a/arch/s390/include/asm/sclp.h
+++ b/arch/s390/include/asm/sclp.h
@@ -31,7 +31,8 @@ struct sclp_cpu_entry {
31 u8 reserved0[2]; 31 u8 reserved0[2];
32 u8 : 3; 32 u8 : 3;
33 u8 siif : 1; 33 u8 siif : 1;
34 u8 : 4; 34 u8 sigpif : 1;
35 u8 : 3;
35 u8 reserved2[10]; 36 u8 reserved2[10];
36 u8 type; 37 u8 type;
37 u8 reserved1; 38 u8 reserved1;
@@ -66,6 +67,7 @@ int memcpy_hsa(void *dest, unsigned long src, size_t count, int mode);
66unsigned long sclp_get_hsa_size(void); 67unsigned long sclp_get_hsa_size(void);
67void sclp_early_detect(void); 68void sclp_early_detect(void);
68int sclp_has_siif(void); 69int sclp_has_siif(void);
70int sclp_has_sigpif(void);
69unsigned int sclp_get_ibc(void); 71unsigned int sclp_get_ibc(void);
70 72
71#endif /* _ASM_S390_SCLP_H */ 73#endif /* _ASM_S390_SCLP_H */
diff --git a/drivers/s390/char/sclp_early.c b/drivers/s390/char/sclp_early.c
index 5bd6cb145a87..b8a5bf5f1f3d 100644
--- a/drivers/s390/char/sclp_early.c
+++ b/drivers/s390/char/sclp_early.c
@@ -49,6 +49,7 @@ static unsigned long sclp_hsa_size;
49static unsigned int sclp_max_cpu; 49static unsigned int sclp_max_cpu;
50static struct sclp_ipl_info sclp_ipl_info; 50static struct sclp_ipl_info sclp_ipl_info;
51static unsigned char sclp_siif; 51static unsigned char sclp_siif;
52static unsigned char sclp_sigpif;
52static u32 sclp_ibc; 53static u32 sclp_ibc;
53 54
54u64 sclp_facilities; 55u64 sclp_facilities;
@@ -131,6 +132,7 @@ static void __init sclp_facilities_detect(struct read_info_sccb *sccb)
131 if (boot_cpu_address != cpue->address) 132 if (boot_cpu_address != cpue->address)
132 continue; 133 continue;
133 sclp_siif = cpue->siif; 134 sclp_siif = cpue->siif;
135 sclp_sigpif = cpue->sigpif;
134 break; 136 break;
135 } 137 }
136 138
@@ -172,6 +174,12 @@ int sclp_has_siif(void)
172} 174}
173EXPORT_SYMBOL(sclp_has_siif); 175EXPORT_SYMBOL(sclp_has_siif);
174 176
177int sclp_has_sigpif(void)
178{
179 return sclp_sigpif;
180}
181EXPORT_SYMBOL(sclp_has_sigpif);
182
175unsigned int sclp_get_ibc(void) 183unsigned int sclp_get_ibc(void)
176{ 184{
177 return sclp_ibc; 185 return sclp_ibc;