~ubuntu-branches/ubuntu/trusty/qemu/trusty

« back to all changes in this revision

Viewing changes to .pc/ubuntu/CVE-2013-4377.patch/hw/virtio/virtio-pci.h

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2014-02-04 12:13:08 UTC
  • mfrom: (10.1.45 sid)
  • Revision ID: package-import@ubuntu.com-20140204121308-1xq92lrfs75agw2g
Tags: 1.7.0+dfsg-3ubuntu1~ppa1
* Merge 1.7.0+dfsg-3 from debian.  Remaining changes:
  - debian/patches/ubuntu:
    * expose-vmx_qemu64cpu.patch
    * linaro (omap3) and arm64 patches
    * ubuntu/target-ppc-add-stubs-for-kvm-breakpoints: fix FTBFS
      on ppc
    * ubuntu/CVE-2013-4377.patch: fix denial of service via virtio
  - debian/qemu-system-x86.modprobe: set kvm_intel nested=1 options
  - debian/control:
    * add arm64 to Architectures
    * add qemu-common and qemu-system-aarch64 packages
  - debian/qemu-system-common.install: add debian/tmp/usr/lib
  - debian/qemu-system-common.preinst: add kvm group
  - debian/qemu-system-common.postinst: remove acl placed by udev,
    and add udevadm trigger.
  - qemu-system-x86.links: add eepro100.rom, remove pxe-virtio,
    pxe-e1000 and pxe-rtl8139.
  - add qemu-system-x86.qemu-kvm.upstart and .default
  - qemu-user-static.postinst-in: remove arm64 binfmt
  - debian/rules:
    * allow parallel build
    * add aarch64 to system_targets and sys_systems
    * add qemu-kvm-spice links
    * install qemu-system-x86.modprobe
  - add debian/qemu-system-common.links for OVMF.fd link
* Remove kvm-img, kvm-nbd, kvm-ifup and kvm-ifdown symlinks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Virtio PCI Bindings
 
3
 *
 
4
 * Copyright IBM, Corp. 2007
 
5
 * Copyright (c) 2009 CodeSourcery
 
6
 *
 
7
 * Authors:
 
8
 *  Anthony Liguori   <aliguori@us.ibm.com>
 
9
 *  Paul Brook        <paul@codesourcery.com>
 
10
 *
 
11
 * This work is licensed under the terms of the GNU GPL, version 2.  See
 
12
 * the COPYING file in the top-level directory.
 
13
 */
 
14
 
 
15
#ifndef QEMU_VIRTIO_PCI_H
 
16
#define QEMU_VIRTIO_PCI_H
 
17
 
 
18
#include "hw/pci/msi.h"
 
19
#include "hw/virtio/virtio-blk.h"
 
20
#include "hw/virtio/virtio-net.h"
 
21
#include "hw/virtio/virtio-rng.h"
 
22
#include "hw/virtio/virtio-serial.h"
 
23
#include "hw/virtio/virtio-scsi.h"
 
24
#include "hw/virtio/virtio-balloon.h"
 
25
#include "hw/virtio/virtio-bus.h"
 
26
#include "hw/virtio/virtio-9p.h"
 
27
#ifdef CONFIG_VIRTFS
 
28
#include "hw/9pfs/virtio-9p.h"
 
29
#endif
 
30
#ifdef CONFIG_VHOST_SCSI
 
31
#include "hw/virtio/vhost-scsi.h"
 
32
#endif
 
33
 
 
34
typedef struct VirtIOPCIProxy VirtIOPCIProxy;
 
35
typedef struct VirtIOBlkPCI VirtIOBlkPCI;
 
36
typedef struct VirtIOSCSIPCI VirtIOSCSIPCI;
 
37
typedef struct VirtIOBalloonPCI VirtIOBalloonPCI;
 
38
typedef struct VirtIOSerialPCI VirtIOSerialPCI;
 
39
typedef struct VirtIONetPCI VirtIONetPCI;
 
40
typedef struct VHostSCSIPCI VHostSCSIPCI;
 
41
typedef struct VirtIORngPCI VirtIORngPCI;
 
42
 
 
43
/* virtio-pci-bus */
 
44
 
 
45
typedef struct VirtioBusState VirtioPCIBusState;
 
46
typedef struct VirtioBusClass VirtioPCIBusClass;
 
47
 
 
48
#define TYPE_VIRTIO_PCI_BUS "virtio-pci-bus"
 
49
#define VIRTIO_PCI_BUS(obj) \
 
50
        OBJECT_CHECK(VirtioPCIBusState, (obj), TYPE_VIRTIO_PCI_BUS)
 
51
#define VIRTIO_PCI_BUS_GET_CLASS(obj) \
 
52
        OBJECT_GET_CLASS(VirtioPCIBusClass, obj, TYPE_VIRTIO_PCI_BUS)
 
53
#define VIRTIO_PCI_BUS_CLASS(klass) \
 
54
        OBJECT_CLASS_CHECK(VirtioPCIBusClass, klass, TYPE_VIRTIO_PCI_BUS)
 
55
 
 
56
/* Performance improves when virtqueue kick processing is decoupled from the
 
57
 * vcpu thread using ioeventfd for some devices. */
 
58
#define VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT 1
 
59
#define VIRTIO_PCI_FLAG_USE_IOEVENTFD   (1 << VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT)
 
60
 
 
61
typedef struct {
 
62
    MSIMessage msg;
 
63
    int virq;
 
64
    unsigned int users;
 
65
} VirtIOIRQFD;
 
66
 
 
67
/*
 
68
 * virtio-pci: This is the PCIDevice which has a virtio-pci-bus.
 
69
 */
 
70
#define TYPE_VIRTIO_PCI "virtio-pci"
 
71
#define VIRTIO_PCI_GET_CLASS(obj) \
 
72
        OBJECT_GET_CLASS(VirtioPCIClass, obj, TYPE_VIRTIO_PCI)
 
73
#define VIRTIO_PCI_CLASS(klass) \
 
74
        OBJECT_CLASS_CHECK(VirtioPCIClass, klass, TYPE_VIRTIO_PCI)
 
75
#define VIRTIO_PCI(obj) \
 
76
        OBJECT_CHECK(VirtIOPCIProxy, (obj), TYPE_VIRTIO_PCI)
 
77
 
 
78
typedef struct VirtioPCIClass {
 
79
    PCIDeviceClass parent_class;
 
80
    int (*init)(VirtIOPCIProxy *vpci_dev);
 
81
} VirtioPCIClass;
 
82
 
 
83
struct VirtIOPCIProxy {
 
84
    PCIDevice pci_dev;
 
85
    VirtIODevice *vdev;
 
86
    MemoryRegion bar;
 
87
    uint32_t flags;
 
88
    uint32_t class_code;
 
89
    uint32_t nvectors;
 
90
    uint32_t host_features;
 
91
    bool ioeventfd_disabled;
 
92
    bool ioeventfd_started;
 
93
    VirtIOIRQFD *vector_irqfd;
 
94
    int nvqs_with_notifiers;
 
95
    VirtioBusState bus;
 
96
};
 
97
 
 
98
 
 
99
/*
 
100
 * virtio-scsi-pci: This extends VirtioPCIProxy.
 
101
 */
 
102
#define TYPE_VIRTIO_SCSI_PCI "virtio-scsi-pci"
 
103
#define VIRTIO_SCSI_PCI(obj) \
 
104
        OBJECT_CHECK(VirtIOSCSIPCI, (obj), TYPE_VIRTIO_SCSI_PCI)
 
105
 
 
106
struct VirtIOSCSIPCI {
 
107
    VirtIOPCIProxy parent_obj;
 
108
    VirtIOSCSI vdev;
 
109
};
 
110
 
 
111
#ifdef CONFIG_VHOST_SCSI
 
112
/*
 
113
 * vhost-scsi-pci: This extends VirtioPCIProxy.
 
114
 */
 
115
#define TYPE_VHOST_SCSI_PCI "vhost-scsi-pci"
 
116
#define VHOST_SCSI_PCI(obj) \
 
117
        OBJECT_CHECK(VHostSCSIPCI, (obj), TYPE_VHOST_SCSI_PCI)
 
118
 
 
119
struct VHostSCSIPCI {
 
120
    VirtIOPCIProxy parent_obj;
 
121
    VHostSCSI vdev;
 
122
};
 
123
#endif
 
124
 
 
125
/*
 
126
 * virtio-blk-pci: This extends VirtioPCIProxy.
 
127
 */
 
128
#define TYPE_VIRTIO_BLK_PCI "virtio-blk-pci"
 
129
#define VIRTIO_BLK_PCI(obj) \
 
130
        OBJECT_CHECK(VirtIOBlkPCI, (obj), TYPE_VIRTIO_BLK_PCI)
 
131
 
 
132
struct VirtIOBlkPCI {
 
133
    VirtIOPCIProxy parent_obj;
 
134
    VirtIOBlock vdev;
 
135
    VirtIOBlkConf blk;
 
136
};
 
137
 
 
138
/*
 
139
 * virtio-balloon-pci: This extends VirtioPCIProxy.
 
140
 */
 
141
#define TYPE_VIRTIO_BALLOON_PCI "virtio-balloon-pci"
 
142
#define VIRTIO_BALLOON_PCI(obj) \
 
143
        OBJECT_CHECK(VirtIOBalloonPCI, (obj), TYPE_VIRTIO_BALLOON_PCI)
 
144
 
 
145
struct VirtIOBalloonPCI {
 
146
    VirtIOPCIProxy parent_obj;
 
147
    VirtIOBalloon vdev;
 
148
};
 
149
 
 
150
/*
 
151
 * virtio-serial-pci: This extends VirtioPCIProxy.
 
152
 */
 
153
#define TYPE_VIRTIO_SERIAL_PCI "virtio-serial-pci"
 
154
#define VIRTIO_SERIAL_PCI(obj) \
 
155
        OBJECT_CHECK(VirtIOSerialPCI, (obj), TYPE_VIRTIO_SERIAL_PCI)
 
156
 
 
157
struct VirtIOSerialPCI {
 
158
    VirtIOPCIProxy parent_obj;
 
159
    VirtIOSerial vdev;
 
160
};
 
161
 
 
162
/*
 
163
 * virtio-net-pci: This extends VirtioPCIProxy.
 
164
 */
 
165
#define TYPE_VIRTIO_NET_PCI "virtio-net-pci"
 
166
#define VIRTIO_NET_PCI(obj) \
 
167
        OBJECT_CHECK(VirtIONetPCI, (obj), TYPE_VIRTIO_NET_PCI)
 
168
 
 
169
struct VirtIONetPCI {
 
170
    VirtIOPCIProxy parent_obj;
 
171
    VirtIONet vdev;
 
172
};
 
173
 
 
174
/*
 
175
 * virtio-9p-pci: This extends VirtioPCIProxy.
 
176
 */
 
177
 
 
178
#ifdef CONFIG_VIRTFS
 
179
 
 
180
#define TYPE_VIRTIO_9P_PCI "virtio-9p-pci"
 
181
#define VIRTIO_9P_PCI(obj) \
 
182
        OBJECT_CHECK(V9fsPCIState, (obj), TYPE_VIRTIO_9P_PCI)
 
183
 
 
184
typedef struct V9fsPCIState {
 
185
    VirtIOPCIProxy parent_obj;
 
186
    V9fsState vdev;
 
187
} V9fsPCIState;
 
188
 
 
189
#endif
 
190
 
 
191
/*
 
192
 * virtio-rng-pci: This extends VirtioPCIProxy.
 
193
 */
 
194
#define TYPE_VIRTIO_RNG_PCI "virtio-rng-pci"
 
195
#define VIRTIO_RNG_PCI(obj) \
 
196
        OBJECT_CHECK(VirtIORngPCI, (obj), TYPE_VIRTIO_RNG_PCI)
 
197
 
 
198
struct VirtIORngPCI {
 
199
    VirtIOPCIProxy parent_obj;
 
200
    VirtIORNG vdev;
 
201
};
 
202
 
 
203
/* Virtio ABI version, if we increment this, we break the guest driver. */
 
204
#define VIRTIO_PCI_ABI_VERSION          0
 
205
 
 
206
#endif