Lines Matching +full:max +full:- +full:len

12  * COPYING file in the top-level directory.
17 #include "qemu/error-report.h"
19 #include "hw/qdev-properties.h"
39 /* 0x81-0x83: CRQ message response */
41 uint16_t len; /* len of TPM request; len of TPM response */ member
96 tpm_util_show_buffer(s->buffer, s->be_buffer_size, "To TPM"); in tpm_spapr_tpm_send()
98 s->state = SPAPR_VTPM_STATE_EXECUTION; in tpm_spapr_tpm_send()
99 s->cmd = (TPMBackendCmd) { in tpm_spapr_tpm_send()
101 .in = s->buffer, in tpm_spapr_tpm_send()
102 .in_len = MIN(tpm_cmd_get_size(s->buffer), s->be_buffer_size), in tpm_spapr_tpm_send()
103 .out = s->buffer, in tpm_spapr_tpm_send()
104 .out_len = s->be_buffer_size, in tpm_spapr_tpm_send()
107 tpm_backend_deliver_request(s->be_driver, &s->cmd); in tpm_spapr_tpm_send()
114 /* a max. of be_buffer_size bytes can be transported */ in tpm_spapr_process_cmd()
115 rc = spapr_vio_dma_read(&s->vdev, dataptr, in tpm_spapr_process_cmd()
116 s->buffer, s->be_buffer_size); in tpm_spapr_process_cmd()
135 TpmCrq *crq = &s->crq; /* requests only */ in tpm_spapr_do_crq()
169 if (s->state == SPAPR_VTPM_STATE_EXECUTION) { in tpm_spapr_do_crq()
174 rc = tpm_spapr_process_cmd(s, be32_to_cpu(crq->data)); in tpm_spapr_do_crq()
177 crq->valid = be16_to_cpu(0); in tpm_spapr_do_crq()
181 local_crq.len = cpu_to_be16(0); in tpm_spapr_do_crq()
188 trace_tpm_spapr_do_crq_tpm_get_rtce_buffer_size(s->be_buffer_size); in tpm_spapr_do_crq()
192 local_crq.len = cpu_to_be16(s->be_buffer_size); in tpm_spapr_do_crq()
199 local_crq.len = cpu_to_be16(0); in tpm_spapr_do_crq()
200 switch (s->be_tpm_version) { in tpm_spapr_do_crq()
223 trace_tpm_spapr_do_crq_unknown_msg_type(crq->msg); in tpm_spapr_do_crq()
236 TpmCrq *crq = &s->crq; in tpm_spapr_request_completed()
237 uint32_t len; in tpm_spapr_request_completed() local
240 s->state = SPAPR_VTPM_STATE_COMPLETION; in tpm_spapr_request_completed()
242 /* a max. of be_buffer_size bytes can be transported */ in tpm_spapr_request_completed()
243 len = MIN(tpm_cmd_get_size(s->buffer), s->be_buffer_size); in tpm_spapr_request_completed()
246 trace_tpm_spapr_caught_response(len); in tpm_spapr_request_completed()
248 s->numbytes = len; in tpm_spapr_request_completed()
252 rc = spapr_vio_dma_write(&s->vdev, be32_to_cpu(crq->data), in tpm_spapr_request_completed()
253 s->buffer, len); in tpm_spapr_request_completed()
255 tpm_util_show_buffer(s->buffer, len, "From TPM"); in tpm_spapr_request_completed()
257 crq->valid = SPAPR_VTPM_MSG_RESULT; in tpm_spapr_request_completed()
259 crq->msg = SPAPR_VTPM_TPM_COMMAND | SPAPR_VTPM_MSG_RESULT; in tpm_spapr_request_completed()
260 crq->len = cpu_to_be16(len); in tpm_spapr_request_completed()
263 crq->msg = SPAPR_VTPM_VTPM_ERROR; in tpm_spapr_request_completed()
264 crq->len = cpu_to_be16(0); in tpm_spapr_request_completed()
265 crq->data = cpu_to_be32(SPAPR_VTPM_ERR_COPY_OUT_FAILED); in tpm_spapr_request_completed()
268 rc = spapr_tpm_send_crq(&s->vdev, crq); in tpm_spapr_request_completed()
276 return tpm_backend_startup_tpm(s->be_driver, buffersize); in tpm_spapr_do_startup_tpm()
283 switch (s->be_tpm_version) { in tpm_spapr_get_dt_compatible()
297 s->state = SPAPR_VTPM_STATE_NONE; in tpm_spapr_reset()
298 s->numbytes = 0; in tpm_spapr_reset()
300 s->be_tpm_version = tpm_backend_get_tpm_version(s->be_driver); in tpm_spapr_reset()
302 s->be_buffer_size = MIN(tpm_backend_get_buffer_size(s->be_driver), in tpm_spapr_reset()
305 tpm_backend_reset(s->be_driver); in tpm_spapr_reset()
307 if (tpm_spapr_do_startup_tpm(s, s->be_buffer_size) < 0) { in tpm_spapr_reset()
316 if (tpm_backend_had_startup_error(s->be_driver)) { in tpm_spapr_get_version()
320 return tpm_backend_get_tpm_version(s->be_driver); in tpm_spapr_get_version()
329 tpm_backend_finish_sync(s->be_driver); in tpm_spapr_pre_save()
341 if (s->numbytes) { in tpm_spapr_post_load()
345 s->numbytes = 0; in tpm_spapr_post_load()
352 .name = "tpm-spapr",
381 dev->crq.SendFunc = tpm_spapr_do_crq; in tpm_spapr_realizefn()
383 if (!s->be_driver) { in tpm_spapr_realizefn()
387 s->buffer = g_malloc(TPM_SPAPR_BUFFER_MAX); in tpm_spapr_realizefn()
396 k->realize = tpm_spapr_realizefn; in tpm_spapr_class_init()
397 k->reset = tpm_spapr_reset; in tpm_spapr_class_init()
398 k->dt_name = "vtpm"; in tpm_spapr_class_init()
399 k->dt_type = "IBM,vtpm"; in tpm_spapr_class_init()
400 k->get_dt_compatible = tpm_spapr_get_dt_compatible; in tpm_spapr_class_init()
401 k->signal_mask = 0x00000001; in tpm_spapr_class_init()
402 set_bit(DEVICE_CATEGORY_MISC, dc->categories); in tpm_spapr_class_init()
404 k->rtce_window_size = 0x10000000; in tpm_spapr_class_init()
405 dc->vmsd = &vmstate_spapr_vtpm; in tpm_spapr_class_init()
407 tc->model = TPM_MODEL_TPM_SPAPR; in tpm_spapr_class_init()
408 tc->get_version = tpm_spapr_get_version; in tpm_spapr_class_init()
409 tc->request_completed = tpm_spapr_request_completed; in tpm_spapr_class_init()