Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.5.6.
 1/******************************************************************************
 2 * tpmif.h
 3 *
 4 * TPM I/O interface for Xen guest OSes, v2
 5 *
 6 * This file is in the public domain.
 7 *
 8 */
 9
10#ifndef __XEN_PUBLIC_IO_TPMIF_H__
11#define __XEN_PUBLIC_IO_TPMIF_H__
12
13/*
14 * Xenbus state machine
15 *
16 * Device open:
17 *   1. Both ends start in XenbusStateInitialising
18 *   2. Backend transitions to InitWait (frontend does not wait on this step)
19 *   3. Frontend populates ring-ref, event-channel, feature-protocol-v2
20 *   4. Frontend transitions to Initialised
21 *   5. Backend maps grant and event channel, verifies feature-protocol-v2
22 *   6. Backend transitions to Connected
23 *   7. Frontend verifies feature-protocol-v2, transitions to Connected
24 *
25 * Device close:
26 *   1. State is changed to XenbusStateClosing
27 *   2. Frontend transitions to Closed
28 *   3. Backend unmaps grant and event, changes state to InitWait
29 */
30
31enum vtpm_shared_page_state {
32	VTPM_STATE_IDLE,         /* no contents / vTPM idle / cancel complete */
33	VTPM_STATE_SUBMIT,       /* request ready / vTPM working */
34	VTPM_STATE_FINISH,       /* response ready / vTPM idle */
35	VTPM_STATE_CANCEL,       /* cancel requested / vTPM working */
36};
37/* The backend should only change state to IDLE or FINISH, while the
38 * frontend should only change to SUBMIT or CANCEL. */
39
40
41struct vtpm_shared_page {
42	uint32_t length;         /* request/response length in bytes */
43
44	uint8_t state;           /* enum vtpm_shared_page_state */
45	uint8_t locality;        /* for the current request */
46	uint8_t pad;
47
48	uint8_t nr_extra_pages;  /* extra pages for long packets; may be zero */
49	uint32_t extra_pages[]; /* grant IDs; length in nr_extra_pages */
50};
51
52#endif