cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

goldfish_pipe_qemu.h (2215B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * IMPORTANT: The following constants must match the ones used and defined in
      4 * external/qemu/include/hw/misc/goldfish_pipe.h
      5 */
      6
      7#ifndef GOLDFISH_PIPE_QEMU_H
      8#define GOLDFISH_PIPE_QEMU_H
      9
     10/* List of bitflags returned in status of CMD_POLL command */
     11enum PipePollFlags {
     12	PIPE_POLL_IN	= 1 << 0,
     13	PIPE_POLL_OUT	= 1 << 1,
     14	PIPE_POLL_HUP	= 1 << 2
     15};
     16
     17/* Possible status values used to signal errors */
     18enum PipeErrors {
     19	PIPE_ERROR_INVAL	= -1,
     20	PIPE_ERROR_AGAIN	= -2,
     21	PIPE_ERROR_NOMEM	= -3,
     22	PIPE_ERROR_IO		= -4
     23};
     24
     25/* Bit-flags used to signal events from the emulator */
     26enum PipeWakeFlags {
     27	/* emulator closed pipe */
     28	PIPE_WAKE_CLOSED		= 1 << 0,
     29
     30	/* pipe can now be read from */
     31	PIPE_WAKE_READ			= 1 << 1,
     32
     33	/* pipe can now be written to */
     34	PIPE_WAKE_WRITE			= 1 << 2,
     35
     36	/* unlock this pipe's DMA buffer */
     37	PIPE_WAKE_UNLOCK_DMA		= 1 << 3,
     38
     39	/* unlock DMA buffer of the pipe shared to this pipe */
     40	PIPE_WAKE_UNLOCK_DMA_SHARED	= 1 << 4,
     41};
     42
     43/* Possible pipe closing reasons */
     44enum PipeCloseReason {
     45	/* guest sent a close command */
     46	PIPE_CLOSE_GRACEFUL		= 0,
     47
     48	/* guest rebooted, we're closing the pipes */
     49	PIPE_CLOSE_REBOOT		= 1,
     50
     51	/* close old pipes on snapshot load */
     52	PIPE_CLOSE_LOAD_SNAPSHOT	= 2,
     53
     54	/* some unrecoverable error on the pipe */
     55	PIPE_CLOSE_ERROR		= 3,
     56};
     57
     58/* Bit flags for the 'flags' field */
     59enum PipeFlagsBits {
     60	BIT_CLOSED_ON_HOST = 0,  /* pipe closed by host */
     61	BIT_WAKE_ON_WRITE  = 1,  /* want to be woken on writes */
     62	BIT_WAKE_ON_READ   = 2,  /* want to be woken on reads */
     63};
     64
     65enum PipeRegs {
     66	PIPE_REG_CMD = 0,
     67
     68	PIPE_REG_SIGNAL_BUFFER_HIGH = 4,
     69	PIPE_REG_SIGNAL_BUFFER = 8,
     70	PIPE_REG_SIGNAL_BUFFER_COUNT = 12,
     71
     72	PIPE_REG_OPEN_BUFFER_HIGH = 20,
     73	PIPE_REG_OPEN_BUFFER = 24,
     74
     75	PIPE_REG_VERSION = 36,
     76
     77	PIPE_REG_GET_SIGNALLED = 48,
     78};
     79
     80enum PipeCmdCode {
     81	/* to be used by the pipe device itself */
     82	PIPE_CMD_OPEN		= 1,
     83
     84	PIPE_CMD_CLOSE,
     85	PIPE_CMD_POLL,
     86	PIPE_CMD_WRITE,
     87	PIPE_CMD_WAKE_ON_WRITE,
     88	PIPE_CMD_READ,
     89	PIPE_CMD_WAKE_ON_READ,
     90
     91	/*
     92	 * TODO(zyy): implement a deferred read/write execution to allow
     93	 * parallel processing of pipe operations on the host.
     94	 */
     95	PIPE_CMD_WAKE_ON_DONE_IO,
     96};
     97
     98#endif /* GOLDFISH_PIPE_QEMU_H */