Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/xen/interface/hvm/ioreq.h
26298 views
1
/* SPDX-License-Identifier: MIT */
2
/*
3
* ioreq.h: I/O request definitions for device models
4
* Copyright (c) 2004, Intel Corporation.
5
*/
6
7
#ifndef __XEN_PUBLIC_HVM_IOREQ_H__
8
#define __XEN_PUBLIC_HVM_IOREQ_H__
9
10
#define IOREQ_READ 1
11
#define IOREQ_WRITE 0
12
13
#define STATE_IOREQ_NONE 0
14
#define STATE_IOREQ_READY 1
15
#define STATE_IOREQ_INPROCESS 2
16
#define STATE_IORESP_READY 3
17
18
#define IOREQ_TYPE_PIO 0 /* pio */
19
#define IOREQ_TYPE_COPY 1 /* mmio ops */
20
#define IOREQ_TYPE_PCI_CONFIG 2
21
#define IOREQ_TYPE_TIMEOFFSET 7
22
#define IOREQ_TYPE_INVALIDATE 8 /* mapcache */
23
24
/*
25
* VMExit dispatcher should cooperate with instruction decoder to
26
* prepare this structure and notify service OS and DM by sending
27
* virq.
28
*
29
* For I/O type IOREQ_TYPE_PCI_CONFIG, the physical address is formatted
30
* as follows:
31
*
32
* 63....48|47..40|39..35|34..32|31........0
33
* SEGMENT |BUS |DEV |FN |OFFSET
34
*/
35
struct ioreq {
36
uint64_t addr; /* physical address */
37
uint64_t data; /* data (or paddr of data) */
38
uint32_t count; /* for rep prefixes */
39
uint32_t size; /* size in bytes */
40
uint32_t vp_eport; /* evtchn for notifications to/from device model */
41
uint16_t _pad0;
42
uint8_t state:4;
43
uint8_t data_is_ptr:1; /* if 1, data above is the guest paddr
44
* of the real data to use. */
45
uint8_t dir:1; /* 1=read, 0=write */
46
uint8_t df:1;
47
uint8_t _pad1:1;
48
uint8_t type; /* I/O type */
49
};
50
51
#endif /* __XEN_PUBLIC_HVM_IOREQ_H__ */
52
53