[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v1 2/8] tpm: Extend TPMIfClass with get_irqnum() function
From: |
Stefan Berger |
Subject: |
[PULL v1 2/8] tpm: Extend TPMIfClass with get_irqnum() function |
Date: |
Thu, 25 Jun 2020 09:23:19 -0400 |
Implement get_irqnum() as part of the TPMIfClass to get the assigned IRQ
number or TPM_IRQ_DISABLED (~0) in case IRQs cannot be used.
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20200617142305.1198672-3-stefanb@linux.vnet.ibm.com
---
hw/tpm/tpm_tis_isa.c | 9 +++++++++
hw/tpm/tpm_tis_sysbus.c | 9 +++++++++
include/sysemu/tpm.h | 12 ++++++++++++
3 files changed, 30 insertions(+)
diff --git a/hw/tpm/tpm_tis_isa.c b/hw/tpm/tpm_tis_isa.c
index 5faf6231c0..bacc4447b5 100644
--- a/hw/tpm/tpm_tis_isa.c
+++ b/hw/tpm/tpm_tis_isa.c
@@ -81,6 +81,14 @@ static enum TPMVersion tpm_tis_isa_get_tpm_version(TPMIf *ti)
return tpm_tis_get_tpm_version(s);
}
+static int8_t tpm_tis_isa_get_irqnum(TPMIf *ti)
+{
+ TPMStateISA *isadev = TPM_TIS_ISA(ti);
+ TPMState *s = &isadev->state;
+
+ return s->irq_num;
+}
+
static void tpm_tis_isa_reset(DeviceState *dev)
{
TPMStateISA *isadev = TPM_TIS_ISA(dev);
@@ -149,6 +157,7 @@ static void tpm_tis_isa_class_init(ObjectClass *klass, void
*data)
dc->reset = tpm_tis_isa_reset;
tc->request_completed = tpm_tis_isa_request_completed;
tc->get_version = tpm_tis_isa_get_tpm_version;
+ tc->get_irqnum = tpm_tis_isa_get_irqnum;
}
static const TypeInfo tpm_tis_isa_info = {
diff --git a/hw/tpm/tpm_tis_sysbus.c b/hw/tpm/tpm_tis_sysbus.c
index 4a3bc70625..879a5788de 100644
--- a/hw/tpm/tpm_tis_sysbus.c
+++ b/hw/tpm/tpm_tis_sysbus.c
@@ -81,6 +81,14 @@ static enum TPMVersion tpm_tis_sysbus_get_tpm_version(TPMIf
*ti)
return tpm_tis_get_tpm_version(s);
}
+static int8_t tpm_tis_sysbus_get_irqnum(TPMIf *ti)
+{
+ TPMStateSysBus *sbdev = TPM_TIS_SYSBUS(ti);
+ TPMState *s = &sbdev->state;
+
+ return s->irq_num;
+}
+
static void tpm_tis_sysbus_reset(DeviceState *dev)
{
TPMStateSysBus *sbdev = TPM_TIS_SYSBUS(dev);
@@ -138,6 +146,7 @@ static void tpm_tis_sysbus_class_init(ObjectClass *klass,
void *data)
dc->reset = tpm_tis_sysbus_reset;
tc->request_completed = tpm_tis_sysbus_request_completed;
tc->get_version = tpm_tis_sysbus_get_tpm_version;
+ tc->get_irqnum = tpm_tis_sysbus_get_irqnum;
}
static const TypeInfo tpm_tis_sysbus_info = {
diff --git a/include/sysemu/tpm.h b/include/sysemu/tpm.h
index 03fb25941c..39c3c9c0f2 100644
--- a/include/sysemu/tpm.h
+++ b/include/sysemu/tpm.h
@@ -25,6 +25,8 @@ typedef enum TPMVersion {
TPM_VERSION_2_0 = 2,
} TPMVersion;
+#define TPM_IRQ_DISABLED (~0)
+
#define TYPE_TPM_IF "tpm-if"
#define TPM_IF_CLASS(klass) \
OBJECT_CLASS_CHECK(TPMIfClass, (klass), TYPE_TPM_IF)
@@ -41,6 +43,7 @@ typedef struct TPMIfClass {
enum TpmModel model;
void (*request_completed)(TPMIf *obj, int ret);
enum TPMVersion (*get_version)(TPMIf *obj);
+ int8_t (*get_irqnum)(TPMIf *obj);
} TPMIfClass;
#define TYPE_TPM_TIS_ISA "tpm-tis"
@@ -74,4 +77,13 @@ static inline TPMVersion tpm_get_version(TPMIf *ti)
return TPM_IF_GET_CLASS(ti)->get_version(ti);
}
+static inline int8_t tpm_get_irqnum(TPMIf *ti)
+{
+ if (!ti || !TPM_IF_GET_CLASS(ti)->get_irqnum) {
+ return TPM_IRQ_DISABLED;
+ }
+
+ return TPM_IF_GET_CLASS(ti)->get_irqnum(ti);
+}
+
#endif /* QEMU_TPM_H */
--
2.24.1
- [PULL v1 0/8] Merge tpm 2020/06/25 v1, Stefan Berger, 2020/06/25
- [PULL v1 2/8] tpm: Extend TPMIfClass with get_irqnum() function,
Stefan Berger <=
- [PULL v1 4/8] tpm: Split TPM_TIS_IRQ into TPM_TIS_ISA_IRQ and TPM_TIS_SYSBUS_IRQ, Stefan Berger, 2020/06/25
- [PULL v1 6/8] tests: Add updated DSDT, Stefan Berger, 2020/06/25
- [PULL v1 5/8] acpi: Enable TPM IRQ, Stefan Berger, 2020/06/25
- [PULL v1 3/8] tests: Temporarily ignore DSDT table differences, Stefan Berger, 2020/06/25
- [PULL v1 8/8] tpm: Disable interrupt support for TIS on sysbus, Stefan Berger, 2020/06/25
- [PULL v1 7/8] tpm: Guard irq related ops in case interrupts are disabled, Stefan Berger, 2020/06/25
- [PULL v1 1/8] tpm_tis: Allow lowering of IRQ also when locality is not active, Stefan Berger, 2020/06/25
- Re: [PULL v1 0/8] Merge tpm 2020/06/25 v1, Stefan Berger, 2020/06/25