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

virtio_mmio.h (4969B)


      1/*
      2 * Virtio platform device driver
      3 *
      4 * Copyright 2011, ARM Ltd.
      5 *
      6 * Based on Virtio PCI driver by Anthony Liguori, copyright IBM Corp. 2007
      7 *
      8 * This header is BSD licensed so anyone can use the definitions to implement
      9 * compatible drivers/servers.
     10 *
     11 * Redistribution and use in source and binary forms, with or without
     12 * modification, are permitted provided that the following conditions
     13 * are met:
     14 * 1. Redistributions of source code must retain the above copyright
     15 *    notice, this list of conditions and the following disclaimer.
     16 * 2. Redistributions in binary form must reproduce the above copyright
     17 *    notice, this list of conditions and the following disclaimer in the
     18 *    documentation and/or other materials provided with the distribution.
     19 * 3. Neither the name of IBM nor the names of its contributors
     20 *    may be used to endorse or promote products derived from this software
     21 *    without specific prior written permission.
     22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
     23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     25 * ARE DISCLAIMED.  IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
     26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     32 * SUCH DAMAGE.
     33 */
     34
     35#ifndef _LINUX_VIRTIO_MMIO_H
     36#define _LINUX_VIRTIO_MMIO_H
     37
     38/*
     39 * Control registers
     40 */
     41
     42/* Magic value ("virt" string) - Read Only */
     43#define VIRTIO_MMIO_MAGIC_VALUE		0x000
     44
     45/* Virtio device version - Read Only */
     46#define VIRTIO_MMIO_VERSION		0x004
     47
     48/* Virtio device ID - Read Only */
     49#define VIRTIO_MMIO_DEVICE_ID		0x008
     50
     51/* Virtio vendor ID - Read Only */
     52#define VIRTIO_MMIO_VENDOR_ID		0x00c
     53
     54/* Bitmask of the features supported by the device (host)
     55 * (32 bits per set) - Read Only */
     56#define VIRTIO_MMIO_DEVICE_FEATURES	0x010
     57
     58/* Device (host) features set selector - Write Only */
     59#define VIRTIO_MMIO_DEVICE_FEATURES_SEL	0x014
     60
     61/* Bitmask of features activated by the driver (guest)
     62 * (32 bits per set) - Write Only */
     63#define VIRTIO_MMIO_DRIVER_FEATURES	0x020
     64
     65/* Activated features set selector - Write Only */
     66#define VIRTIO_MMIO_DRIVER_FEATURES_SEL	0x024
     67
     68
     69#ifndef VIRTIO_MMIO_NO_LEGACY /* LEGACY DEVICES ONLY! */
     70
     71/* Guest's memory page size in bytes - Write Only */
     72#define VIRTIO_MMIO_GUEST_PAGE_SIZE	0x028
     73
     74#endif
     75
     76
     77/* Queue selector - Write Only */
     78#define VIRTIO_MMIO_QUEUE_SEL		0x030
     79
     80/* Maximum size of the currently selected queue - Read Only */
     81#define VIRTIO_MMIO_QUEUE_NUM_MAX	0x034
     82
     83/* Queue size for the currently selected queue - Write Only */
     84#define VIRTIO_MMIO_QUEUE_NUM		0x038
     85
     86
     87#ifndef VIRTIO_MMIO_NO_LEGACY /* LEGACY DEVICES ONLY! */
     88
     89/* Used Ring alignment for the currently selected queue - Write Only */
     90#define VIRTIO_MMIO_QUEUE_ALIGN		0x03c
     91
     92/* Guest's PFN for the currently selected queue - Read Write */
     93#define VIRTIO_MMIO_QUEUE_PFN		0x040
     94
     95#endif
     96
     97
     98/* Ready bit for the currently selected queue - Read Write */
     99#define VIRTIO_MMIO_QUEUE_READY		0x044
    100
    101/* Queue notifier - Write Only */
    102#define VIRTIO_MMIO_QUEUE_NOTIFY	0x050
    103
    104/* Interrupt status - Read Only */
    105#define VIRTIO_MMIO_INTERRUPT_STATUS	0x060
    106
    107/* Interrupt acknowledge - Write Only */
    108#define VIRTIO_MMIO_INTERRUPT_ACK	0x064
    109
    110/* Device status register - Read Write */
    111#define VIRTIO_MMIO_STATUS		0x070
    112
    113/* Selected queue's Descriptor Table address, 64 bits in two halves */
    114#define VIRTIO_MMIO_QUEUE_DESC_LOW	0x080
    115#define VIRTIO_MMIO_QUEUE_DESC_HIGH	0x084
    116
    117/* Selected queue's Available Ring address, 64 bits in two halves */
    118#define VIRTIO_MMIO_QUEUE_AVAIL_LOW	0x090
    119#define VIRTIO_MMIO_QUEUE_AVAIL_HIGH	0x094
    120
    121/* Selected queue's Used Ring address, 64 bits in two halves */
    122#define VIRTIO_MMIO_QUEUE_USED_LOW	0x0a0
    123#define VIRTIO_MMIO_QUEUE_USED_HIGH	0x0a4
    124
    125/* Shared memory region id */
    126#define VIRTIO_MMIO_SHM_SEL             0x0ac
    127
    128/* Shared memory region length, 64 bits in two halves */
    129#define VIRTIO_MMIO_SHM_LEN_LOW         0x0b0
    130#define VIRTIO_MMIO_SHM_LEN_HIGH        0x0b4
    131
    132/* Shared memory region base address, 64 bits in two halves */
    133#define VIRTIO_MMIO_SHM_BASE_LOW        0x0b8
    134#define VIRTIO_MMIO_SHM_BASE_HIGH       0x0bc
    135
    136/* Configuration atomicity value */
    137#define VIRTIO_MMIO_CONFIG_GENERATION	0x0fc
    138
    139/* The config space is defined by each driver as
    140 * the per-driver configuration space - Read Write */
    141#define VIRTIO_MMIO_CONFIG		0x100
    142
    143
    144
    145/*
    146 * Interrupt flags (re: interrupt status & acknowledge registers)
    147 */
    148
    149#define VIRTIO_MMIO_INT_VRING		(1 << 0)
    150#define VIRTIO_MMIO_INT_CONFIG		(1 << 1)
    151
    152#endif