* [Qemu-devel] [PATCH 0/2] tpm: A fix and a cleanup @ 2018-02-01 23:23 Stefan Berger 2018-02-01 23:23 ` [Qemu-devel] [PATCH 1/2] tpm: Split off tpm_crb_reset function Stefan Berger 2018-02-01 23:23 ` [Qemu-devel] [PATCH 2/2] tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions Stefan Berger 0 siblings, 2 replies; 5+ messages in thread From: Stefan Berger @ 2018-02-01 23:23 UTC (permalink / raw) To: qemu-devel; +Cc: stefanb, marcandre.lureau The following two patches fix the resetting of the CRB interface and wrap calls to st{w,l}_be_p in tpm_cmd_set_XYZ functions. Stefan Stefan Berger (2): tpm: Split off tpm_crb_reset function tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions hw/tpm/tpm_crb.c | 6 ++++++ hw/tpm/tpm_util.c | 6 +++--- hw/tpm/tpm_util.h | 15 +++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) -- 2.5.5 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 1/2] tpm: Split off tpm_crb_reset function 2018-02-01 23:23 [Qemu-devel] [PATCH 0/2] tpm: A fix and a cleanup Stefan Berger @ 2018-02-01 23:23 ` Stefan Berger 2018-02-02 0:59 ` Stefan Berger 2018-02-01 23:23 ` [Qemu-devel] [PATCH 2/2] tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions Stefan Berger 1 sibling, 1 reply; 5+ messages in thread From: Stefan Berger @ 2018-02-01 23:23 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. Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> --- hw/tpm/tpm_crb.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/tpm/tpm_crb.c b/hw/tpm/tpm_crb.c index 687d255..624e2e9 100644 --- a/hw/tpm/tpm_crb.c +++ b/hw/tpm/tpm_crb.c @@ -232,6 +232,11 @@ static void tpm_crb_realize(DeviceState *dev, Error **errp) TPM_CRB_ADDR_BASE, &s->mmio); memory_region_add_subregion(get_system_memory(), TPM_CRB_ADDR_BASE + sizeof(s->regs), &s->cmdmem); +} + +static void tpm_crb_reset(DeviceState *dev) +{ + CRBState *s = CRB(dev); tpm_backend_reset(s->tpmbe); @@ -274,6 +279,7 @@ static void tpm_crb_class_init(ObjectClass *klass, void *data) dc->realize = tpm_crb_realize; dc->props = tpm_crb_properties; + dc->reset = tpm_crb_reset; dc->vmsd = &vmstate_tpm_crb; dc->user_creatable = true; tc->model = TPM_MODEL_TPM_CRB; -- 2.5.5 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] tpm: Split off tpm_crb_reset function 2018-02-01 23:23 ` [Qemu-devel] [PATCH 1/2] tpm: Split off tpm_crb_reset function Stefan Berger @ 2018-02-02 0:59 ` Stefan Berger 0 siblings, 0 replies; 5+ messages in thread From: Stefan Berger @ 2018-02-02 0:59 UTC (permalink / raw) To: qemu-devel; +Cc: marcandre.lureau On 02/01/2018 06:23 PM, Stefan Berger wrote: > Split off the tpm_crb_reset function part from tpm_crb_realize > that we need to run every time the machine resets. > > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com> > --- > hw/tpm/tpm_crb.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/hw/tpm/tpm_crb.c b/hw/tpm/tpm_crb.c > index 687d255..624e2e9 100644 > --- a/hw/tpm/tpm_crb.c > +++ b/hw/tpm/tpm_crb.c > @@ -232,6 +232,11 @@ static void tpm_crb_realize(DeviceState *dev, Error **errp) > TPM_CRB_ADDR_BASE, &s->mmio); > memory_region_add_subregion(get_system_memory(), > TPM_CRB_ADDR_BASE + sizeof(s->regs), &s->cmdmem); > +} > + > +static void tpm_crb_reset(DeviceState *dev) > +{ > + CRBState *s = CRB(dev); > > tpm_backend_reset(s->tpmbe); > > @@ -274,6 +279,7 @@ static void tpm_crb_class_init(ObjectClass *klass, void *data) > > dc->realize = tpm_crb_realize; > dc->props = tpm_crb_properties; > + dc->reset = tpm_crb_reset; > dc->vmsd = &vmstate_tpm_crb; > dc->user_creatable = true; > tc->model = TPM_MODEL_TPM_CRB; So this splt-off unfortunately causes the tpm-crb-test to fail since the reset function is not called. I wonder how to trigger that? Do we need to call tpm_crb_reset now from tpm_crb_realize just to make the tests work ? Or is there a function we can call in the test case to trigger the device reset ? ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 2/2] tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions 2018-02-01 23:23 [Qemu-devel] [PATCH 0/2] tpm: A fix and a cleanup Stefan Berger 2018-02-01 23:23 ` [Qemu-devel] [PATCH 1/2] tpm: Split off tpm_crb_reset function Stefan Berger @ 2018-02-01 23:23 ` Stefan Berger 2018-02-02 9:32 ` Marc-Andre Lureau 1 sibling, 1 reply; 5+ messages in thread From: Stefan Berger @ 2018-02-01 23:23 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> --- 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] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions 2018-02-01 23:23 ` [Qemu-devel] [PATCH 2/2] tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions Stefan Berger @ 2018-02-02 9:32 ` Marc-Andre Lureau 0 siblings, 0 replies; 5+ messages in thread From: Marc-Andre Lureau @ 2018-02-02 9:32 UTC (permalink / raw) To: Stefan Berger; +Cc: qemu-devel, marcandre Hi On Fri, Feb 2, 2018 at 12:23 AM, Stefan Berger <stefanb@linux.vnet.ibm.com> wrote: > Wrap the calls to stl_be_p and stw_be_p in tpm_cmd_set_XYZ functions > that are similar to existing getters. why not, Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.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 [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-02-02 15:38 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-02-01 23:23 [Qemu-devel] [PATCH 0/2] tpm: A fix and a cleanup Stefan Berger 2018-02-01 23:23 ` [Qemu-devel] [PATCH 1/2] tpm: Split off tpm_crb_reset function Stefan Berger 2018-02-02 0:59 ` Stefan Berger 2018-02-01 23:23 ` [Qemu-devel] [PATCH 2/2] tpm: wrap stX_be_p in tpm_cmd_set_XYZ functions Stefan Berger 2018-02-02 9:32 ` Marc-Andre Lureau
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).