brintos

brintos / linux-shallow public Read only

0
0
Text · 1.5 KiB · b02cfea Raw
52 lines · c
1/* SPDX-License-Identifier: MIT */2/*3 * ioreq.h: I/O request definitions for device models4 * 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      111#define IOREQ_WRITE     012 13#define STATE_IOREQ_NONE        014#define STATE_IOREQ_READY       115#define STATE_IOREQ_INPROCESS   216#define STATE_IORESP_READY      317 18#define IOREQ_TYPE_PIO          0 /* pio */19#define IOREQ_TYPE_COPY         1 /* mmio ops */20#define IOREQ_TYPE_PCI_CONFIG   221#define IOREQ_TYPE_TIMEOFFSET   722#define IOREQ_TYPE_INVALIDATE   8 /* mapcache */23 24/*25 * VMExit dispatcher should cooperate with instruction decoder to26 * prepare this structure and notify service OS and DM by sending27 * virq.28 *29 * For I/O type IOREQ_TYPE_PCI_CONFIG, the physical address is formatted30 * as follows:31 *32 * 63....48|47..40|39..35|34..32|31........033 * SEGMENT |BUS   |DEV   |FN    |OFFSET34 */35struct 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 paddr44				 * 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