s390x: chsc nt2 events are pci-only

The nt2 event class is pci-only - don't look for events if pci is
not in the active cpu model.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
Cornelia Huck 2017-07-06 16:40:21 +02:00
parent 5838d65770
commit 1c5deaec77
4 changed files with 22 additions and 6 deletions

View File

@ -47,7 +47,7 @@ S390pciState *s390_get_phb(void)
return phb; return phb;
} }
int chsc_sei_nt2_get_event(void *res) int pci_chsc_sei_nt2_get_event(void *res)
{ {
ChscSeiNt2Res *nt2_res = (ChscSeiNt2Res *)res; ChscSeiNt2Res *nt2_res = (ChscSeiNt2Res *)res;
PciCcdfAvail *accdf; PciCcdfAvail *accdf;
@ -87,7 +87,7 @@ int chsc_sei_nt2_get_event(void *res)
return rc; return rc;
} }
int chsc_sei_nt2_have_event(void) int pci_chsc_sei_nt2_have_event(void)
{ {
S390pciState *s = s390_get_phb(); S390pciState *s = s390_get_phb();

View File

@ -319,8 +319,8 @@ typedef struct S390pciState {
} S390pciState; } S390pciState;
S390pciState *s390_get_phb(void); S390pciState *s390_get_phb(void);
int chsc_sei_nt2_get_event(void *res); int pci_chsc_sei_nt2_get_event(void *res);
int chsc_sei_nt2_have_event(void); int pci_chsc_sei_nt2_have_event(void);
void s390_pci_sclp_configure(SCCB *sccb); void s390_pci_sclp_configure(SCCB *sccb);
void s390_pci_sclp_deconfigure(SCCB *sccb); void s390_pci_sclp_deconfigure(SCCB *sccb);
void s390_pci_iommu_enable(S390PCIIOMMU *iommu); void s390_pci_iommu_enable(S390PCIIOMMU *iommu);

View File

@ -7,12 +7,12 @@
#include "s390-pci-bus.h" #include "s390-pci-bus.h"
/* target/s390x/ioinst.c */ /* target/s390x/ioinst.c */
int chsc_sei_nt2_get_event(void *res) int pci_chsc_sei_nt2_get_event(void *res)
{ {
return 1; return 1;
} }
int chsc_sei_nt2_have_event(void) int pci_chsc_sei_nt2_have_event(void)
{ {
return 0; return 0;
} }

View File

@ -599,6 +599,22 @@ static int chsc_sei_nt0_have_event(void)
return 0; return 0;
} }
static int chsc_sei_nt2_get_event(void *res)
{
if (s390_has_feat(S390_FEAT_ZPCI)) {
return pci_chsc_sei_nt2_get_event(res);
}
return 1;
}
static int chsc_sei_nt2_have_event(void)
{
if (s390_has_feat(S390_FEAT_ZPCI)) {
return pci_chsc_sei_nt2_have_event();
}
return 0;
}
#define CHSC_SEI_NT0 (1ULL << 63) #define CHSC_SEI_NT0 (1ULL << 63)
#define CHSC_SEI_NT2 (1ULL << 61) #define CHSC_SEI_NT2 (1ULL << 61)
static void ioinst_handle_chsc_sei(ChscReq *req, ChscResp *res) static void ioinst_handle_chsc_sei(ChscReq *req, ChscResp *res)