Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
cbbe4f50
Q
qemu
项目概览
openeuler
/
qemu
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
cbbe4f50
编写于
2月 16, 2015
作者:
M
Michael S. Tsirkin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
virtio-pci: use standard headers
Drop duplicate code. Signed-off-by:
N
Michael S. Tsirkin
<
mst@redhat.com
>
上级
aa2e69fe
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
5 addition
and
49 deletion
+5
-49
hw/virtio/virtio-pci.c
hw/virtio/virtio-pci.c
+5
-49
未找到文件。
hw/virtio/virtio-pci.c
浏览文件 @
cbbe4f50
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
#include <inttypes.h>
#include <inttypes.h>
#include "standard-headers/linux/virtio_pci.h"
#include "hw/virtio/virtio.h"
#include "hw/virtio/virtio.h"
#include "hw/virtio/virtio-blk.h"
#include "hw/virtio/virtio-blk.h"
#include "hw/virtio/virtio-net.h"
#include "hw/virtio/virtio-net.h"
...
@@ -35,56 +36,11 @@
...
@@ -35,56 +36,11 @@
#include "hw/virtio/virtio-bus.h"
#include "hw/virtio/virtio-bus.h"
#include "qapi/visitor.h"
#include "qapi/visitor.h"
/* from Linux's linux/virtio_pci.h */
#define VIRTIO_PCI_REGION_SIZE(dev) VIRTIO_PCI_CONFIG_OFF(msix_present(dev))
/* A 32-bit r/o bitmask of the features supported by the host */
#define VIRTIO_PCI_HOST_FEATURES 0
/* A 32-bit r/w bitmask of features activated by the guest */
#define VIRTIO_PCI_GUEST_FEATURES 4
/* A 32-bit r/w PFN for the currently selected queue */
#define VIRTIO_PCI_QUEUE_PFN 8
/* A 16-bit r/o queue size for the currently selected queue */
#define VIRTIO_PCI_QUEUE_NUM 12
/* A 16-bit r/w queue selector */
#define VIRTIO_PCI_QUEUE_SEL 14
/* A 16-bit r/w queue notifier */
#define VIRTIO_PCI_QUEUE_NOTIFY 16
/* An 8-bit device status register. */
#define VIRTIO_PCI_STATUS 18
/* An 8-bit r/o interrupt status register. Reading the value will return the
* current contents of the ISR and will also clear it. This is effectively
* a read-and-acknowledge. */
#define VIRTIO_PCI_ISR 19
/* MSI-X registers: only enabled if MSI-X is enabled. */
/* A 16-bit vector for configuration changes. */
#define VIRTIO_MSI_CONFIG_VECTOR 20
/* A 16-bit vector for selected queue notifications. */
#define VIRTIO_MSI_QUEUE_VECTOR 22
/* Config space size */
#define VIRTIO_PCI_CONFIG_NOMSI 20
#define VIRTIO_PCI_CONFIG_MSI 24
#define VIRTIO_PCI_REGION_SIZE(dev) (msix_present(dev) ? \
VIRTIO_PCI_CONFIG_MSI : \
VIRTIO_PCI_CONFIG_NOMSI)
/* The remaining space is defined by each driver as the per-driver
/* The remaining space is defined by each driver as the per-driver
* configuration space */
* configuration space */
#define VIRTIO_PCI_CONFIG(dev) (msix_enabled(dev) ? \
#define VIRTIO_PCI_CONFIG_SIZE(dev) VIRTIO_PCI_CONFIG_OFF(msix_enabled(dev))
VIRTIO_PCI_CONFIG_MSI : \
VIRTIO_PCI_CONFIG_NOMSI)
/* How many bits to shift physical queue address written to QUEUE_PFN.
* 12 is historical, and due to x86 page size. */
#define VIRTIO_PCI_QUEUE_ADDR_SHIFT 12
static
void
virtio_pci_bus_new
(
VirtioBusState
*
bus
,
size_t
bus_size
,
static
void
virtio_pci_bus_new
(
VirtioBusState
*
bus
,
size_t
bus_size
,
VirtIOPCIProxy
*
dev
);
VirtIOPCIProxy
*
dev
);
...
@@ -392,7 +348,7 @@ static uint64_t virtio_pci_config_read(void *opaque, hwaddr addr,
...
@@ -392,7 +348,7 @@ static uint64_t virtio_pci_config_read(void *opaque, hwaddr addr,
{
{
VirtIOPCIProxy
*
proxy
=
opaque
;
VirtIOPCIProxy
*
proxy
=
opaque
;
VirtIODevice
*
vdev
=
virtio_bus_get_device
(
&
proxy
->
bus
);
VirtIODevice
*
vdev
=
virtio_bus_get_device
(
&
proxy
->
bus
);
uint32_t
config
=
VIRTIO_PCI_CONFIG
(
&
proxy
->
pci_dev
);
uint32_t
config
=
VIRTIO_PCI_CONFIG
_SIZE
(
&
proxy
->
pci_dev
);
uint64_t
val
=
0
;
uint64_t
val
=
0
;
if
(
addr
<
config
)
{
if
(
addr
<
config
)
{
return
virtio_ioport_read
(
proxy
,
addr
);
return
virtio_ioport_read
(
proxy
,
addr
);
...
@@ -423,7 +379,7 @@ static void virtio_pci_config_write(void *opaque, hwaddr addr,
...
@@ -423,7 +379,7 @@ static void virtio_pci_config_write(void *opaque, hwaddr addr,
uint64_t
val
,
unsigned
size
)
uint64_t
val
,
unsigned
size
)
{
{
VirtIOPCIProxy
*
proxy
=
opaque
;
VirtIOPCIProxy
*
proxy
=
opaque
;
uint32_t
config
=
VIRTIO_PCI_CONFIG
(
&
proxy
->
pci_dev
);
uint32_t
config
=
VIRTIO_PCI_CONFIG
_SIZE
(
&
proxy
->
pci_dev
);
VirtIODevice
*
vdev
=
virtio_bus_get_device
(
&
proxy
->
bus
);
VirtIODevice
*
vdev
=
virtio_bus_get_device
(
&
proxy
->
bus
);
if
(
addr
<
config
)
{
if
(
addr
<
config
)
{
virtio_ioport_write
(
proxy
,
addr
,
val
);
virtio_ioport_write
(
proxy
,
addr
,
val
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录