From: Corey Bryant <coreyb@linux.vnet.ibm.com>
To: Stefan Berger <stefanb@linux.vnet.ibm.com>
Cc: mst@redhat.com, qemu-devel@nongnu.org, anthony@codemonkey.ws,
andreas.niederl@iaik.tugraz.at
Subject: Re: [Qemu-devel] [PATCH V20 3/8] Add a debug register
Date: Fri, 01 Feb 2013 12:07:40 -0500 [thread overview]
Message-ID: <510BF65C.7020307@linux.vnet.ibm.com> (raw)
In-Reply-To: <1358524968-22297-4-git-send-email-stefanb@linux.vnet.ibm.com>
On 01/18/2013 11:02 AM, Stefan Berger wrote:
> This patch uses the possibility to add a vendor-specific register and
> adds a debug register useful for dumping the TIS's internal state. This
> register is only active in a debug build (#define DEBUG_TIS).
>
> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
> ---
> hw/tpm_tis.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 70 insertions(+)
>
> diff --git a/hw/tpm_tis.c b/hw/tpm_tis.c
> index 3ed813d..f71192e 100644
> --- a/hw/tpm_tis.c
> +++ b/hw/tpm_tis.c
> @@ -52,6 +52,9 @@
> #define TPM_TIS_REG_DID_VID 0xf00
> #define TPM_TIS_REG_RID 0xf04
>
> +/* vendor-specific registers */
> +#define TPM_TIS_REG_DEBUG 0xf90
> +
> #define TPM_TIS_STS_VALID (1 << 7)
> #define TPM_TIS_STS_COMMAND_READY (1 << 6)
> #define TPM_TIS_STS_TPM_GO (1 << 5)
> @@ -105,6 +108,11 @@
>
> #define TPM_TIS_NO_DATA_BYTE 0xff
>
> +/* local prototypes */
> +
> +static uint64_t tpm_tis_mmio_read(void *opaque, hwaddr addr,
> + unsigned size);
> +
> /* utility functions */
>
> static uint8_t tpm_tis_locality_from_addr(hwaddr addr)
> @@ -346,6 +354,63 @@ static uint32_t tpm_tis_data_read(TPMState *s, uint8_t locty)
> return ret;
> }
>
> +#ifdef DEBUG_TIS
> +static void tpm_tis_dump_state(void *opaque, hwaddr addr)
> +{
> + static const unsigned regs[] = {
> + TPM_TIS_REG_ACCESS,
> + TPM_TIS_REG_INT_ENABLE,
> + TPM_TIS_REG_INT_VECTOR,
> + TPM_TIS_REG_INT_STATUS,
> + TPM_TIS_REG_INTF_CAPABILITY,
> + TPM_TIS_REG_STS,
> + TPM_TIS_REG_DID_VID,
> + TPM_TIS_REG_RID,
> + 0xfff};
> + int idx;
> + uint8_t locty = tpm_tis_locality_from_addr(addr);
> + hwaddr base = addr & ~0xfff;
> + TPMState *s = opaque;
> + TPMTISEmuState *tis = &s->s.tis;
> +
> + dprintf("tpm_tis: active locality : %d\n"
> + "tpm_tis: state of locality %d : %d\n"
> + "tpm_tis: register dump:\n",
> + tis->active_locty,
> + locty, tis->loc[locty].state);
> +
> + for (idx = 0; regs[idx] != 0xfff; idx++) {
> + dprintf("tpm_tis: 0x%04x : 0x%08x\n", regs[idx],
> + (uint32_t)tpm_tis_mmio_read(opaque, base + regs[idx], 4));
> + }
> +
> + dprintf("tpm_tis: read offset : %d\n"
> + "tpm_tis: result buffer : ",
> + tis->loc[locty].r_offset);
> + for (idx = 0;
> + idx < tpm_tis_get_size_from_buffer(&tis->loc[locty].r_buffer);
> + idx++) {
> + dprintf("%c%02x%s",
> + tis->loc[locty].r_offset == idx ? '>' : ' ',
> + tis->loc[locty].r_buffer.buffer[idx],
> + ((idx & 0xf) == 0xf) ? "\ntpm_tis: " : "");
> + }
> + dprintf("\n"
> + "tpm_tis: write offset : %d\n"
> + "tpm_tis: request buffer: ",
> + tis->loc[locty].w_offset);
> + for (idx = 0;
> + idx < tpm_tis_get_size_from_buffer(&tis->loc[locty].w_buffer);
> + idx++) {
> + dprintf("%c%02x%s",
> + tis->loc[locty].w_offset == idx ? '>' : ' ',
> + tis->loc[locty].w_buffer.buffer[idx],
> + ((idx & 0xf) == 0xf) ? "\ntpm_tis: " : "");
> + }
> + dprintf("\n");
> +}
> +#endif
> +
> /*
> * Read a register of the TIS interface
> * See specs pages 33-63 for description of the registers
> @@ -425,6 +490,11 @@ static uint64_t tpm_tis_mmio_read(void *opaque, hwaddr addr,
> case TPM_TIS_REG_RID:
> val = TPM_TIS_TPM_RID;
> break;
> +#ifdef DEBUG_TIS
> + case TPM_TIS_REG_DEBUG:
> + tpm_tis_dump_state(opaque, addr);
> + break;
> +#endif
> }
>
> if (shift) {
>
Reviewed-by: Corey Bryant <coreyb@linux.vnet.ibm.com>
--
Regards,
Corey Bryant
next prev parent reply other threads:[~2013-02-01 17:08 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-18 16:02 [Qemu-devel] [PATCH V20 0/8] Qemu Trusted Platform Module (TPM) integration Stefan Berger
2013-01-18 16:02 ` [Qemu-devel] [PATCH V20 1/8] Support for TPM command line options Stefan Berger
2013-02-01 15:33 ` Corey Bryant
2013-01-18 16:02 ` [Qemu-devel] [PATCH V20 2/8] Add TPM (frontend) hardware interface (TPM TIS) to QEMU Stefan Berger
2013-02-01 17:02 ` Corey Bryant
2013-01-18 16:02 ` [Qemu-devel] [PATCH V20 3/8] Add a debug register Stefan Berger
2013-02-01 17:07 ` Corey Bryant [this message]
2013-01-18 16:02 ` [Qemu-devel] [PATCH V20 4/8] Build the TPM frontend code Stefan Berger
2013-02-01 17:08 ` Corey Bryant
2013-01-18 16:02 ` [Qemu-devel] [PATCH V20 5/8] Add a TPM Passthrough backend driver implementation Stefan Berger
2013-01-19 9:18 ` Blue Swirl
2013-01-19 14:29 ` Stefan Berger
2013-02-01 19:03 ` Corey Bryant
2013-01-18 16:02 ` [Qemu-devel] [PATCH V20 6/8] Add support for cancelling of a TPM command Stefan Berger
2013-01-18 16:02 ` [Qemu-devel] [PATCH V20 7/8] Introduce --enable-tpm-passthrough configure option Stefan Berger
2013-02-01 19:21 ` Corey Bryant
2013-01-18 16:02 ` [Qemu-devel] [PATCH V20 8/8] Add fd parameter for TPM passthrough driver Stefan Berger
[not found] ` <50F991FE.3000901@redhat.com>
2013-01-19 0:14 ` Stefan Berger
2013-01-19 0:55 ` Stefan Berger
2013-01-19 15:31 ` Eric Blake
2013-01-19 18:37 ` Stefan Berger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=510BF65C.7020307@linux.vnet.ibm.com \
--to=coreyb@linux.vnet.ibm.com \
--cc=andreas.niederl@iaik.tugraz.at \
--cc=anthony@codemonkey.ws \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanb@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).