[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V9 2/5] Add TPM (frontend) hardware interface (T
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] [PATCH V9 2/5] Add TPM (frontend) hardware interface (TPM TIS) to Qemu |
Date: |
Mon, 26 Sep 2011 22:09:05 +0300 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Mon, Sep 26, 2011 at 12:35:11PM -0400, Stefan Berger wrote:
> +static int tpm_tis_init(ISADevice *dev)
> +{
> + TPMState *s = DO_UPCAST(TPMState, busdev, dev);
> + TPMTISState *tis = &s->s.tis;
> + int iomemtype, rc;
> +
> + qemu_mutex_init(&s->state_lock);
> + qemu_cond_init(&s->from_tpm_cond);
> + qemu_cond_init(&s->to_tpm_cond);
> +
> + s->be_driver = qemu_find_tpm(s->backend);
> + if (!s->be_driver) {
> + fprintf(stderr,
> + "tpm_tis: backend driver with id %s could not be found.n\n",
> + s->backend);
error_report?
> + return -1;
> + }
> +
> + if (s->be_driver->ops->init(s->be_driver, s, tpm_tis_receive_cb)) {
> + goto err_exit;
> + }
> +
> + isa_init_irq(dev, &tis->irq, tis->irq_num);
> +
> + iomemtype = cpu_register_io_memory(tpm_tis_readfn, tpm_tis_writefn, s,
> + DEVICE_LITTLE_ENDIAN);
A bit of a strange name for a var - it's not a type, is it?
> + cpu_register_physical_memory(TPM_TIS_ADDR_BASE,
> + 0x1000 * TPM_TIS_NUM_LOCALITIES,
> + iomemtype);
I think memory_region_init_io are supposed to be used for new devices
from now on... Right, Avi?
> +
> + rc = tpm_tis_do_startup_tpm(s);
> + if (rc != 0) {
> + goto err_exit;
> + }
> +
> + return 0;
> +
> + err_exit:
Missing cleanup?
> + return -1;
> +}
> +
> +static const VMStateDescription vmstate_tpm_tis = {
> + .name = "tpm",
> + .unmigratable = 1,
> +};
> +
> +static ISADeviceInfo tpm_tis_device_info = {
> + .init = tpm_tis_init,
> + .qdev.name = "tpm-tis",
> + .qdev.size = sizeof(TPMState),
> + .qdev.vmsd = &vmstate_tpm_tis,
> + .qdev.reset = tpm_tis_reset,
> + .qdev.props = (Property[]) {
> + DEFINE_PROP_UINT32("irq", TPMState,
> + s.tis.irq_num, TPM_TIS_IRQ),
> + DEFINE_PROP_STRING("tpmdev", TPMState, backend),
> + DEFINE_PROP_END_OF_LIST(),
> + },
> +};
> +
> +static void tpm_tis_register_device(void)
> +{
> + isa_qdev_register(&tpm_tis_device_info);
> +}
> +
> +device_init(tpm_tis_register_device)