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

« back to all changes in this revision

Viewing changes to .pc/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