* [Qemu-devel] [PATCH 0/4] tpm: A fix and cleanups @ 2018-02-02 14:44 Stefan Berger 2018-02-02 14:44 ` [Qemu-devel] [PATCH 1/4] tpm: Split off tpm_crb_reset function Stefan Berger ` (3 more replies) 0 siblings, 4 replies; 8+ messages in thread From: Stefan Berger @ 2018-02-02 14:44 UTC (permalink / raw) To: qemu-devel; +Cc: stefanb, marcandre.lureau The following patches fix the resetting of the CRB interface and wrap calls to st{w,l}_be_p in tpm_cmd_set_XYZ functions. We also clean up a one-liner in the TIS. Stefan Stefan Berger (4): tpm: Split off tpm_crb_reset function tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions MAINTAINERS: add pointer to tpm-next repository tpm: tis: move one-line function into caller MAINTAINERS | 1 + hw/tpm/tpm_crb.c | 48 ++++++++++++++++++++++++++++-------------------- hw/tpm/tpm_tis.c | 7 +------ hw/tpm/tpm_util.c | 6 +++--- hw/tpm/tpm_util.h | 15 +++++++++++++++ 5 files changed, 48 insertions(+), 29 deletions(-) -- 2.5.5 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 1/4] tpm: Split off tpm_crb_reset function 2018-02-02 14:44 [Qemu-devel] [PATCH 0/4] tpm: A fix and cleanups Stefan Berger @ 2018-02-02 14:44 ` Stefan Berger 2018-02-03 13:10 ` Marc-Andre Lureau 2018-02-02 14:44 ` [Qemu-devel] [PATCH 2/4] tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions Stefan Berger ` (2 subsequent siblings) 3 siblings, 1 reply; 8+ messages in thread From: Stefan Berger @ 2018-02-02 14:44 UTC (permalink / raw) To: qemu-devel; +Cc: stefanb, marcandre.lureau Split off the tpm_crb_reset function part from tpm_crb_realize that we need to run every time the machine resets. Also register our reset function with the system since TYPE_DEVICE seems to not get a reset otherwise. Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> --- v1->v2: register reset function with qemu_register_reset since TYPE_DEVICE seems to not get a reset otherwise --- hw/tpm/tpm_crb.c | 48 ++++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/hw/tpm/tpm_crb.c b/hw/tpm/tpm_crb.c index 687d255..b5b8256 100644 --- a/hw/tpm/tpm_crb.c +++ b/hw/tpm/tpm_crb.c @@ -26,6 +26,7 @@ #include "hw/acpi/tpm.h" #include "migration/vmstate.h" #include "sysemu/tpm_backend.h" +#include "sysemu/reset.h" #include "tpm_int.h" #include "tpm_util.h" @@ -210,29 +211,10 @@ static Property tpm_crb_properties[] = { DEFINE_PROP_END_OF_LIST(), }; -static void tpm_crb_realize(DeviceState *dev, Error **errp) +static void tpm_crb_reset(void *dev) { CRBState *s = CRB(dev); - if (!tpm_find()) { - error_setg(errp, "at most one TPM device is permitted"); - return; - } - if (!s->tpmbe) { - error_setg(errp, "'tpmdev' property is required"); - return; - } - - memory_region_init_io(&s->mmio, OBJECT(s), &tpm_crb_memory_ops, s, - "tpm-crb-mmio", sizeof(s->regs)); - memory_region_init_ram(&s->cmdmem, OBJECT(s), - "tpm-crb-cmd", CRB_CTRL_CMD_SIZE, errp); - - memory_region_add_subregion(get_system_memory(), - TPM_CRB_ADDR_BASE, &s->mmio); - memory_region_add_subregion(get_system_memory(), - TPM_CRB_ADDR_BASE + sizeof(s->regs), &s->cmdmem); - tpm_backend_reset(s->tpmbe); ARRAY_FIELD_DP32(s->regs, CRB_INTF_ID, @@ -267,6 +249,32 @@ static void tpm_crb_realize(DeviceState *dev, Error **errp) tpm_backend_startup_tpm(s->tpmbe, s->be_buffer_size); } +static void tpm_crb_realize(DeviceState *dev, Error **errp) +{ + CRBState *s = CRB(dev); + + if (!tpm_find()) { + error_setg(errp, "at most one TPM device is permitted"); + return; + } + if (!s->tpmbe) { + error_setg(errp, "'tpmdev' property is required"); + return; + } + + memory_region_init_io(&s->mmio, OBJECT(s), &tpm_crb_memory_ops, s, + "tpm-crb-mmio", sizeof(s->regs)); + memory_region_init_ram(&s->cmdmem, OBJECT(s), + "tpm-crb-cmd", CRB_CTRL_CMD_SIZE, errp); + + memory_region_add_subregion(get_system_memory(), + TPM_CRB_ADDR_BASE, &s->mmio); + memory_region_add_subregion(get_system_memory(), + TPM_CRB_ADDR_BASE + sizeof(s->regs), &s->cmdmem); + + qemu_register_reset(tpm_crb_reset, dev); +} + static void tpm_crb_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); -- 2.5.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH 1/4] tpm: Split off tpm_crb_reset function 2018-02-02 14:44 ` [Qemu-devel] [PATCH 1/4] tpm: Split off tpm_crb_reset function Stefan Berger @ 2018-02-03 13:10 ` Marc-Andre Lureau 0 siblings, 0 replies; 8+ messages in thread From: Marc-Andre Lureau @ 2018-02-03 13:10 UTC (permalink / raw) To: Stefan Berger; +Cc: qemu-devel, marcandre On Fri, Feb 2, 2018 at 3:44 PM, Stefan Berger <stefanb@linux.vnet.ibm.com> wrote: > Split off the tpm_crb_reset function part from tpm_crb_realize > that we need to run every time the machine resets. > > Also register our reset function with the system since TYPE_DEVICE > seems to not get a reset otherwise. > > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > > --- > v1->v2: register reset function with qemu_register_reset since > TYPE_DEVICE seems to not get a reset otherwise > --- > hw/tpm/tpm_crb.c | 48 ++++++++++++++++++++++++++++-------------------- > 1 file changed, 28 insertions(+), 20 deletions(-) > > diff --git a/hw/tpm/tpm_crb.c b/hw/tpm/tpm_crb.c > index 687d255..b5b8256 100644 > --- a/hw/tpm/tpm_crb.c > +++ b/hw/tpm/tpm_crb.c > @@ -26,6 +26,7 @@ > #include "hw/acpi/tpm.h" > #include "migration/vmstate.h" > #include "sysemu/tpm_backend.h" > +#include "sysemu/reset.h" > #include "tpm_int.h" > #include "tpm_util.h" > > @@ -210,29 +211,10 @@ static Property tpm_crb_properties[] = { > DEFINE_PROP_END_OF_LIST(), > }; > > -static void tpm_crb_realize(DeviceState *dev, Error **errp) > +static void tpm_crb_reset(void *dev) > { > CRBState *s = CRB(dev); > > - if (!tpm_find()) { > - error_setg(errp, "at most one TPM device is permitted"); > - return; > - } > - if (!s->tpmbe) { > - error_setg(errp, "'tpmdev' property is required"); > - return; > - } > - > - memory_region_init_io(&s->mmio, OBJECT(s), &tpm_crb_memory_ops, s, > - "tpm-crb-mmio", sizeof(s->regs)); > - memory_region_init_ram(&s->cmdmem, OBJECT(s), > - "tpm-crb-cmd", CRB_CTRL_CMD_SIZE, errp); > - > - memory_region_add_subregion(get_system_memory(), > - TPM_CRB_ADDR_BASE, &s->mmio); > - memory_region_add_subregion(get_system_memory(), > - TPM_CRB_ADDR_BASE + sizeof(s->regs), &s->cmdmem); > - > tpm_backend_reset(s->tpmbe); > > ARRAY_FIELD_DP32(s->regs, CRB_INTF_ID, > @@ -267,6 +249,32 @@ static void tpm_crb_realize(DeviceState *dev, Error **errp) > tpm_backend_startup_tpm(s->tpmbe, s->be_buffer_size); > } > > +static void tpm_crb_realize(DeviceState *dev, Error **errp) > +{ > + CRBState *s = CRB(dev); > + > + if (!tpm_find()) { > + error_setg(errp, "at most one TPM device is permitted"); > + return; > + } > + if (!s->tpmbe) { > + error_setg(errp, "'tpmdev' property is required"); > + return; > + } > + > + memory_region_init_io(&s->mmio, OBJECT(s), &tpm_crb_memory_ops, s, > + "tpm-crb-mmio", sizeof(s->regs)); > + memory_region_init_ram(&s->cmdmem, OBJECT(s), > + "tpm-crb-cmd", CRB_CTRL_CMD_SIZE, errp); > + > + memory_region_add_subregion(get_system_memory(), > + TPM_CRB_ADDR_BASE, &s->mmio); > + memory_region_add_subregion(get_system_memory(), > + TPM_CRB_ADDR_BASE + sizeof(s->regs), &s->cmdmem); > + > + qemu_register_reset(tpm_crb_reset, dev); > +} > + > static void tpm_crb_class_init(ObjectClass *klass, void *data) > { > DeviceClass *dc = DEVICE_CLASS(klass); > -- > 2.5.5 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 2/4] tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions 2018-02-02 14:44 [Qemu-devel] [PATCH 0/4] tpm: A fix and cleanups Stefan Berger 2018-02-02 14:44 ` [Qemu-devel] [PATCH 1/4] tpm: Split off tpm_crb_reset function Stefan Berger @ 2018-02-02 14:44 ` Stefan Berger 2018-02-02 14:44 ` [Qemu-devel] [PATCH 3/4] MAINTAINERS: add pointer to tpm-next repository Stefan Berger 2018-02-02 14:44 ` [Qemu-devel] [PATCH 4/4] tpm: tis: move one-line function into caller Stefan Berger 3 siblings, 0 replies; 8+ messages in thread From: Stefan Berger @ 2018-02-02 14:44 UTC (permalink / raw) To: qemu-devel; +Cc: stefanb, marcandre.lureau Wrap the calls to stl_be_p and stw_be_p in tpm_cmd_set_XYZ functions that are similar to existing getters. Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- hw/tpm/tpm_util.c | 6 +++--- hw/tpm/tpm_util.h | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/hw/tpm/tpm_util.c b/hw/tpm/tpm_util.c index 8abde59..2de52a0 100644 --- a/hw/tpm/tpm_util.c +++ b/hw/tpm/tpm_util.c @@ -106,9 +106,9 @@ const PropertyInfo qdev_prop_tpm = { void tpm_util_write_fatal_error_response(uint8_t *out, uint32_t out_len) { if (out_len >= sizeof(struct tpm_resp_hdr)) { - stw_be_p(out, TPM_TAG_RSP_COMMAND); - stl_be_p(out + 2, sizeof(struct tpm_resp_hdr)); - stl_be_p(out + 6, TPM_FAIL); + tpm_cmd_set_tag(out, TPM_TAG_RSP_COMMAND); + tpm_cmd_set_size(out, sizeof(struct tpm_resp_hdr)); + tpm_cmd_set_error(out, TPM_FAIL); } } diff --git a/hw/tpm/tpm_util.h b/hw/tpm/tpm_util.h index f003d15..f397ac2 100644 --- a/hw/tpm/tpm_util.h +++ b/hw/tpm/tpm_util.h @@ -36,11 +36,21 @@ static inline uint16_t tpm_cmd_get_tag(const void *b) return lduw_be_p(b); } +static inline void tpm_cmd_set_tag(void *b, uint16_t tag) +{ + stw_be_p(b, tag); +} + static inline uint32_t tpm_cmd_get_size(const void *b) { return ldl_be_p(b + 2); } +static inline void tpm_cmd_set_size(void *b, uint32_t size) +{ + stl_be_p(b + 2, size); +} + static inline uint32_t tpm_cmd_get_ordinal(const void *b) { return ldl_be_p(b + 6); @@ -51,6 +61,11 @@ static inline uint32_t tpm_cmd_get_errcode(const void *b) return ldl_be_p(b + 6); } +static inline void tpm_cmd_set_error(void *b, uint32_t error) +{ + stl_be_p(b + 6, error); +} + int tpm_util_get_buffer_size(int tpm_fd, TPMVersion tpm_version, size_t *buffersize); -- 2.5.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 3/4] MAINTAINERS: add pointer to tpm-next repository 2018-02-02 14:44 [Qemu-devel] [PATCH 0/4] tpm: A fix and cleanups Stefan Berger 2018-02-02 14:44 ` [Qemu-devel] [PATCH 1/4] tpm: Split off tpm_crb_reset function Stefan Berger 2018-02-02 14:44 ` [Qemu-devel] [PATCH 2/4] tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions Stefan Berger @ 2018-02-02 14:44 ` Stefan Berger 2018-02-02 15:09 ` Eric Blake 2018-02-03 13:11 ` Marc-Andre Lureau 2018-02-02 14:44 ` [Qemu-devel] [PATCH 4/4] tpm: tis: move one-line function into caller Stefan Berger 3 siblings, 2 replies; 8+ messages in thread From: Stefan Berger @ 2018-02-02 14:44 UTC (permalink / raw) To: qemu-devel; +Cc: stefanb, marcandre.lureau Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index f8deaf6..d352d16 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1593,6 +1593,7 @@ F: include/hw/acpi/tpm.h F: include/sysemu/tpm* F: qapi/tpm.json F: backends/tpm.c +T: git git://github.com/stefanberger/qemu-tpm.git tpm-next Checkpatch S: Odd Fixes -- 2.5.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH 3/4] MAINTAINERS: add pointer to tpm-next repository 2018-02-02 14:44 ` [Qemu-devel] [PATCH 3/4] MAINTAINERS: add pointer to tpm-next repository Stefan Berger @ 2018-02-02 15:09 ` Eric Blake 2018-02-03 13:11 ` Marc-Andre Lureau 1 sibling, 0 replies; 8+ messages in thread From: Eric Blake @ 2018-02-02 15:09 UTC (permalink / raw) To: Stefan Berger, qemu-devel; +Cc: marcandre.lureau [-- Attachment #1: Type: text/plain, Size: 697 bytes --] On 02/02/2018 08:44 AM, Stefan Berger wrote: > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> > --- > MAINTAINERS | 1 + > 1 file changed, 1 insertion(+) Reviewed-by: Eric Blake <eblake@redhat.com> > > diff --git a/MAINTAINERS b/MAINTAINERS > index f8deaf6..d352d16 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1593,6 +1593,7 @@ F: include/hw/acpi/tpm.h > F: include/sysemu/tpm* > F: qapi/tpm.json > F: backends/tpm.c > +T: git git://github.com/stefanberger/qemu-tpm.git tpm-next > > Checkpatch > S: Odd Fixes > -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 619 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH 3/4] MAINTAINERS: add pointer to tpm-next repository 2018-02-02 14:44 ` [Qemu-devel] [PATCH 3/4] MAINTAINERS: add pointer to tpm-next repository Stefan Berger 2018-02-02 15:09 ` Eric Blake @ 2018-02-03 13:11 ` Marc-Andre Lureau 1 sibling, 0 replies; 8+ messages in thread From: Marc-Andre Lureau @ 2018-02-03 13:11 UTC (permalink / raw) To: Stefan Berger; +Cc: qemu-devel, marcandre On Fri, Feb 2, 2018 at 3:44 PM, Stefan Berger <stefanb@linux.vnet.ibm.com> wrote: > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > MAINTAINERS | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/MAINTAINERS b/MAINTAINERS > index f8deaf6..d352d16 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1593,6 +1593,7 @@ F: include/hw/acpi/tpm.h > F: include/sysemu/tpm* > F: qapi/tpm.json > F: backends/tpm.c > +T: git git://github.com/stefanberger/qemu-tpm.git tpm-next > > Checkpatch > S: Odd Fixes > -- > 2.5.5 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 4/4] tpm: tis: move one-line function into caller 2018-02-02 14:44 [Qemu-devel] [PATCH 0/4] tpm: A fix and cleanups Stefan Berger ` (2 preceding siblings ...) 2018-02-02 14:44 ` [Qemu-devel] [PATCH 3/4] MAINTAINERS: add pointer to tpm-next repository Stefan Berger @ 2018-02-02 14:44 ` Stefan Berger 3 siblings, 0 replies; 8+ messages in thread From: Stefan Berger @ 2018-02-02 14:44 UTC (permalink / raw) To: qemu-devel; +Cc: stefanb, marcandre.lureau Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> --- hw/tpm/tpm_tis.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c index 08f41d2..f81168a 100644 --- a/hw/tpm/tpm_tis.c +++ b/hw/tpm/tpm_tis.c @@ -946,11 +946,6 @@ static const MemoryRegionOps tpm_tis_memory_ops = { }, }; -static int tpm_tis_do_startup_tpm(TPMState *s, size_t buffersize) -{ - return tpm_backend_startup_tpm(s->be_driver, buffersize); -} - /* * Get the TPMVersion of the backend device being used */ @@ -1005,7 +1000,7 @@ static void tpm_tis_reset(DeviceState *dev) s->rw_offset = 0; } - tpm_tis_do_startup_tpm(s, s->be_buffer_size); + tpm_backend_startup_tpm(s->be_driver, s->be_buffer_size); } static const VMStateDescription vmstate_tpm_tis = { -- 2.5.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2018-02-03 13:11 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-02-02 14:44 [Qemu-devel] [PATCH 0/4] tpm: A fix and cleanups Stefan Berger 2018-02-02 14:44 ` [Qemu-devel] [PATCH 1/4] tpm: Split off tpm_crb_reset function Stefan Berger 2018-02-03 13:10 ` Marc-Andre Lureau 2018-02-02 14:44 ` [Qemu-devel] [PATCH 2/4] tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions Stefan Berger 2018-02-02 14:44 ` [Qemu-devel] [PATCH 3/4] MAINTAINERS: add pointer to tpm-next repository Stefan Berger 2018-02-02 15:09 ` Eric Blake 2018-02-03 13:11 ` Marc-Andre Lureau 2018-02-02 14:44 ` [Qemu-devel] [PATCH 4/4] tpm: tis: move one-line function into caller Stefan Berger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).