* [PATCH 1/7] kvm tools: add HOME env var to hostfs
@ 2012-08-30 7:36 Sasha Levin
2012-08-30 7:36 ` [PATCH 2/7] kvm tools: clean garbage from ioeventfd code Sasha Levin
` (6 more replies)
0 siblings, 7 replies; 17+ messages in thread
From: Sasha Levin @ 2012-08-30 7:36 UTC (permalink / raw)
To: penberg; +Cc: asias.hejun, mingo, gorcunov, kvm, Sasha Levin
Add a HOME env var when booting a hostfs guest. This will point out to a home
dir within the given guest name.
This will make several apps happier when being run under hostfs.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
---
tools/kvm/guest/init.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tools/kvm/guest/init.c b/tools/kvm/guest/init.c
index e1f377f..9655bdf 100644
--- a/tools/kvm/guest/init.c
+++ b/tools/kvm/guest/init.c
@@ -12,7 +12,10 @@
static int run_process(char *filename)
{
char *new_argv[] = { filename, NULL };
- char *new_env[] = { "TERM=linux", "DISPLAY=192.168.33.1:0", NULL };
+ char *new_env[] = { "TERM=linux", "DISPLAY=192.168.33.1:0",
+ "HOME=/virt/home", NULL };
+
+ mkdir("/virt/home", 0755);
return execve(filename, new_argv, new_env);
}
--
1.7.12
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/7] kvm tools: clean garbage from ioeventfd code
2012-08-30 7:36 [PATCH 1/7] kvm tools: add HOME env var to hostfs Sasha Levin
@ 2012-08-30 7:36 ` Sasha Levin
2012-08-30 7:36 ` [PATCH 3/7] kvm tools: Use the new KVM_SIGNAL_MSI ioctl to inject interrupts directly Sasha Levin
` (5 subsequent siblings)
6 siblings, 0 replies; 17+ messages in thread
From: Sasha Levin @ 2012-08-30 7:36 UTC (permalink / raw)
To: penberg; +Cc: asias.hejun, mingo, gorcunov, kvm, Sasha Levin
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
---
tools/kvm/ioeventfd.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/tools/kvm/ioeventfd.c b/tools/kvm/ioeventfd.c
index 226876f..742b008 100644
--- a/tools/kvm/ioeventfd.c
+++ b/tools/kvm/ioeventfd.c
@@ -44,7 +44,6 @@ static void *ioeventfd__thread(void *param)
}
done:
- tmp = 1;
tmp = write(epoll_stop_fd, &tmp, sizeof(tmp));
return NULL;
--
1.7.12
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 3/7] kvm tools: Use the new KVM_SIGNAL_MSI ioctl to inject interrupts directly.
2012-08-30 7:36 [PATCH 1/7] kvm tools: add HOME env var to hostfs Sasha Levin
2012-08-30 7:36 ` [PATCH 2/7] kvm tools: clean garbage from ioeventfd code Sasha Levin
@ 2012-08-30 7:36 ` Sasha Levin
2012-08-30 7:36 ` [PATCH 4/7] kvm tools: fix warnings in virtio-blk Sasha Levin
` (4 subsequent siblings)
6 siblings, 0 replies; 17+ messages in thread
From: Sasha Levin @ 2012-08-30 7:36 UTC (permalink / raw)
To: penberg; +Cc: asias.hejun, mingo, gorcunov, kvm, Sasha Levin
We still create GSIs and keep them for two reasons:
- They're required by virtio-* devices.
- There's not much overhead since we just create them when starting the
guest, they don't use anything when the guest is running.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
---
tools/kvm/include/kvm/virtio-pci.h | 3 +++
tools/kvm/virtio/pci.c | 25 +++++++++++++++++++++++--
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/tools/kvm/include/kvm/virtio-pci.h b/tools/kvm/include/kvm/virtio-pci.h
index 9e036b2..44130e0c 100644
--- a/tools/kvm/include/kvm/virtio-pci.h
+++ b/tools/kvm/include/kvm/virtio-pci.h
@@ -15,6 +15,8 @@ struct virtio_pci_ioevent_param {
u32 vq;
};
+#define VIRTIO_PCI_F_SIGNAL_MSI (1 << 0)
+
struct virtio_pci {
struct pci_device_header pci_hdr;
void *dev;
@@ -22,6 +24,7 @@ struct virtio_pci {
u16 base_addr;
u8 status;
u8 isr;
+ u32 features;
/* MSI-X */
u16 config_vector;
diff --git a/tools/kvm/virtio/pci.c b/tools/kvm/virtio/pci.c
index f17cd8a..4dc7916 100644
--- a/tools/kvm/virtio/pci.c
+++ b/tools/kvm/virtio/pci.c
@@ -7,6 +7,7 @@
#include "kvm/virtio.h"
#include "kvm/ioeventfd.h"
+#include <sys/ioctl.h>
#include <linux/virtio_pci.h>
#include <linux/byteorder.h>
#include <string.h>
@@ -236,6 +237,17 @@ static void virtio_pci__mmio_callback(u64 addr, u8 *data, u32 len, u8 is_write,
memcpy(data, table + addr - offset, len);
}
+static void virtio_pci__signal_msi(struct kvm *kvm, struct virtio_pci *vpci, int vec)
+{
+ struct kvm_msi msi = {
+ .address_lo = vpci->msix_table[vec].msg.address_lo,
+ .address_hi = vpci->msix_table[vec].msg.address_hi,
+ .data = vpci->msix_table[vec].msg.data,
+ };
+
+ ioctl(kvm->vm_fd, KVM_SIGNAL_MSI, &msi);
+}
+
int virtio_pci__signal_vq(struct kvm *kvm, struct virtio_device *vdev, u32 vq)
{
struct virtio_pci *vpci = vdev->virtio;
@@ -249,7 +261,10 @@ int virtio_pci__signal_vq(struct kvm *kvm, struct virtio_device *vdev, u32 vq)
return 0;
}
- kvm__irq_trigger(kvm, vpci->gsis[vq]);
+ if (vpci->features & VIRTIO_PCI_F_SIGNAL_MSI)
+ virtio_pci__signal_msi(kvm, vpci, vpci->vq_vector[vq]);
+ else
+ kvm__irq_trigger(kvm, vpci->gsis[vq]);
} else {
vpci->isr = VIRTIO_IRQ_HIGH;
kvm__irq_trigger(kvm, vpci->pci_hdr.irq_line);
@@ -270,7 +285,10 @@ int virtio_pci__signal_config(struct kvm *kvm, struct virtio_device *vdev)
return 0;
}
- kvm__irq_trigger(kvm, vpci->config_gsi);
+ if (vpci->features & VIRTIO_PCI_F_SIGNAL_MSI)
+ virtio_pci__signal_msi(kvm, vpci, vpci->vq_vector[vpci->config_vector]);
+ else
+ kvm__irq_trigger(kvm, vpci->config_gsi);
} else {
vpci->isr = VIRTIO_PCI_ISR_CONFIG;
kvm__irq_trigger(kvm, vpci->pci_hdr.irq_line);
@@ -347,6 +365,9 @@ int virtio_pci__init(struct kvm *kvm, void *dev, struct virtio_device *vdev,
if (r < 0)
goto free_mmio;
+ if (kvm__supports_extension(kvm, KVM_CAP_SIGNAL_MSI))
+ vpci->features |= VIRTIO_PCI_F_SIGNAL_MSI;
+
vpci->pci_hdr.irq_pin = pin;
vpci->pci_hdr.irq_line = line;
r = pci__register(&vpci->pci_hdr, ndev);
--
1.7.12
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 4/7] kvm tools: fix warnings in virtio-blk
2012-08-30 7:36 [PATCH 1/7] kvm tools: add HOME env var to hostfs Sasha Levin
2012-08-30 7:36 ` [PATCH 2/7] kvm tools: clean garbage from ioeventfd code Sasha Levin
2012-08-30 7:36 ` [PATCH 3/7] kvm tools: Use the new KVM_SIGNAL_MSI ioctl to inject interrupts directly Sasha Levin
@ 2012-08-30 7:36 ` Sasha Levin
2012-08-30 7:36 ` [PATCH 5/7] kvm tools: enable LTO Sasha Levin
` (3 subsequent siblings)
6 siblings, 0 replies; 17+ messages in thread
From: Sasha Levin @ 2012-08-30 7:36 UTC (permalink / raw)
To: penberg; +Cc: asias.hejun, mingo, gorcunov, kvm, Sasha Levin
Fix up warnings related to not checking return value of read/write by actually
handling errors there.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
---
tools/kvm/virtio/blk.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/tools/kvm/virtio/blk.c b/tools/kvm/virtio/blk.c
index 740442a..d988365 100644
--- a/tools/kvm/virtio/blk.c
+++ b/tools/kvm/virtio/blk.c
@@ -184,9 +184,12 @@ static void *virtio_blk_thread(void *dev)
{
struct blk_dev *bdev = dev;
u64 data;
+ int r;
while (1) {
- read(bdev->io_efd, &data, sizeof(u64));
+ r = read(bdev->io_efd, &data, sizeof(u64));
+ if (r < 0)
+ continue;
virtio_blk_do_io(bdev->kvm, &bdev->vqs[0], bdev);
}
@@ -198,8 +201,11 @@ static int notify_vq(struct kvm *kvm, void *dev, u32 vq)
{
struct blk_dev *bdev = dev;
u64 data = 1;
+ int r;
- write(bdev->io_efd, &data, sizeof(data));
+ r = write(bdev->io_efd, &data, sizeof(data));
+ if (r < 0)
+ return r;
return 0;
}
--
1.7.12
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 5/7] kvm tools: enable LTO
2012-08-30 7:36 [PATCH 1/7] kvm tools: add HOME env var to hostfs Sasha Levin
` (2 preceding siblings ...)
2012-08-30 7:36 ` [PATCH 4/7] kvm tools: fix warnings in virtio-blk Sasha Levin
@ 2012-08-30 7:36 ` Sasha Levin
2012-08-30 8:01 ` Pekka Enberg
2012-08-30 7:36 ` [PATCH 6/7] kvm tools: 9p don't nuke fids on attach Sasha Levin
` (2 subsequent siblings)
6 siblings, 1 reply; 17+ messages in thread
From: Sasha Levin @ 2012-08-30 7:36 UTC (permalink / raw)
To: penberg; +Cc: asias.hejun, mingo, gorcunov, kvm, Sasha Levin
Build with -flto set, which should enable link-time-optimizations.
I'm not sure if it provides a significant performance increase, but
it's probably just worth it for catching issues which it may cause.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
---
tools/kvm/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/kvm/Makefile b/tools/kvm/Makefile
index 8aa0125..0e2fa66 100644
--- a/tools/kvm/Makefile
+++ b/tools/kvm/Makefile
@@ -243,7 +243,7 @@ DEFINES += -DKVMTOOLS_VERSION='"$(KVMTOOLS_VERSION)"'
DEFINES += -DBUILD_ARCH='"$(ARCH)"'
KVM_INCLUDE := include
-CFLAGS += $(CPPFLAGS) $(DEFINES) -I$(KVM_INCLUDE) -I$(ARCH_INCLUDE) -I$(KINCL_PATH)/include -I$(KINCL_PATH)/arch/$(ARCH)/include/ -O2 -fno-strict-aliasing -g
+CFLAGS += $(CPPFLAGS) $(DEFINES) -I$(KVM_INCLUDE) -I$(ARCH_INCLUDE) -I$(KINCL_PATH)/include -I$(KINCL_PATH)/arch/$(ARCH)/include/ -O2 -fno-strict-aliasing -g -flto
WARNINGS += -Wall
WARNINGS += -Wcast-align
--
1.7.12
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 6/7] kvm tools: 9p don't nuke fids on attach
2012-08-30 7:36 [PATCH 1/7] kvm tools: add HOME env var to hostfs Sasha Levin
` (3 preceding siblings ...)
2012-08-30 7:36 ` [PATCH 5/7] kvm tools: enable LTO Sasha Levin
@ 2012-08-30 7:36 ` Sasha Levin
2012-08-30 7:36 ` [PATCH 7/7] kvm tools: simplify virtio config handling Sasha Levin
2012-08-30 7:50 ` [PATCH 1/7] kvm tools: add HOME env var to hostfs Cyrill Gorcunov
6 siblings, 0 replies; 17+ messages in thread
From: Sasha Levin @ 2012-08-30 7:36 UTC (permalink / raw)
To: penberg; +Cc: asias.hejun, mingo, gorcunov, kvm, Sasha Levin
We're not supposed to kill all fids when a new attach request
arrives. This used to cause issues when the guest would send
multiple attach requests.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
---
tools/kvm/virtio/9p.c | 22 ----------------------
1 file changed, 22 deletions(-)
diff --git a/tools/kvm/virtio/9p.c b/tools/kvm/virtio/9p.c
index 27ef57b..d668106 100644
--- a/tools/kvm/virtio/9p.c
+++ b/tools/kvm/virtio/9p.c
@@ -117,26 +117,6 @@ static void close_fid(struct p9_dev *p9dev, u32 fid)
free(pfid);
}
-static void clear_all_fids(struct p9_dev *p9dev)
-{
- struct rb_node *node = rb_first(&p9dev->fids);
-
- while (node) {
- struct p9_fid *fid = rb_entry(node, struct p9_fid, node);
-
- if (fid->fd > 0)
- close(fid->fd);
-
- if (fid->dir)
- closedir(fid->dir);
-
- rb_erase(&fid->node, &p9dev->fids);
- free(fid);
-
- node = rb_first(&p9dev->fids);
- }
-}
-
static void virtio_p9_set_reply_header(struct p9_pdu *pdu, u32 size)
{
u8 cmd;
@@ -443,8 +423,6 @@ static void virtio_p9_attach(struct p9_dev *p9dev,
free(uname);
free(aname);
- clear_all_fids(p9dev);
-
if (lstat(p9dev->root_dir, &st) < 0)
goto err_out;
--
1.7.12
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 7/7] kvm tools: simplify virtio config handling
2012-08-30 7:36 [PATCH 1/7] kvm tools: add HOME env var to hostfs Sasha Levin
` (4 preceding siblings ...)
2012-08-30 7:36 ` [PATCH 6/7] kvm tools: 9p don't nuke fids on attach Sasha Levin
@ 2012-08-30 7:36 ` Sasha Levin
2012-08-30 7:50 ` [PATCH 1/7] kvm tools: add HOME env var to hostfs Cyrill Gorcunov
6 siblings, 0 replies; 17+ messages in thread
From: Sasha Levin @ 2012-08-30 7:36 UTC (permalink / raw)
To: penberg; +Cc: asias.hejun, mingo, gorcunov, kvm, Sasha Levin
Instead of a get/set for config values, just request the address of the
config region, and handle that by simply reading directly from that region.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
---
tools/kvm/include/kvm/virtio.h | 3 +--
tools/kvm/virtio/9p.c | 12 ++----------
tools/kvm/virtio/balloon.c | 12 ++----------
tools/kvm/virtio/blk.c | 12 ++----------
tools/kvm/virtio/console.c | 12 ++----------
tools/kvm/virtio/mmio.c | 6 +++---
tools/kvm/virtio/net.c | 12 ++----------
tools/kvm/virtio/pci.c | 4 ++--
tools/kvm/virtio/rng.c | 8 +-------
tools/kvm/virtio/scsi.c | 12 ++----------
10 files changed, 19 insertions(+), 74 deletions(-)
diff --git a/tools/kvm/include/kvm/virtio.h b/tools/kvm/include/kvm/virtio.h
index 71b6bad..5dc2544 100644
--- a/tools/kvm/include/kvm/virtio.h
+++ b/tools/kvm/include/kvm/virtio.h
@@ -78,8 +78,7 @@ struct virtio_device {
};
struct virtio_ops {
- void (*set_config)(struct kvm *kvm, void *dev, u8 data, u32 offset);
- u8 (*get_config)(struct kvm *kvm, void *dev, u32 offset);
+ u8 *(*get_config)(struct kvm *kvm, void *dev);
u32 (*get_host_features)(struct kvm *kvm, void *dev);
void (*set_guest_features)(struct kvm *kvm, void *dev, u32 features);
int (*init_vq)(struct kvm *kvm, void *dev, u32 vq, u32 pfn);
diff --git a/tools/kvm/virtio/9p.c b/tools/kvm/virtio/9p.c
index d668106..c3f5280 100644
--- a/tools/kvm/virtio/9p.c
+++ b/tools/kvm/virtio/9p.c
@@ -1250,18 +1250,11 @@ static void virtio_p9_do_io(struct kvm *kvm, void *param)
}
}
-static void set_config(struct kvm *kvm, void *dev, u8 data, u32 offset)
+static u8 *get_config(struct kvm *kvm, void *dev)
{
struct p9_dev *p9dev = dev;
- ((u8 *)(p9dev->config))[offset] = data;
-}
-
-static u8 get_config(struct kvm *kvm, void *dev, u32 offset)
-{
- struct p9_dev *p9dev = dev;
-
- return ((u8 *)(p9dev->config))[offset];
+ return ((u8 *)(p9dev->config));
}
static u32 get_host_features(struct kvm *kvm, void *dev)
@@ -1323,7 +1316,6 @@ static int get_size_vq(struct kvm *kvm, void *dev, u32 vq)
}
struct virtio_ops p9_dev_virtio_ops = (struct virtio_ops) {
- .set_config = set_config,
.get_config = get_config,
.get_host_features = get_host_features,
.set_guest_features = set_guest_features,
diff --git a/tools/kvm/virtio/balloon.c b/tools/kvm/virtio/balloon.c
index a838ff4..ea64fd4 100644
--- a/tools/kvm/virtio/balloon.c
+++ b/tools/kvm/virtio/balloon.c
@@ -175,18 +175,11 @@ static void handle_mem(int fd, u32 type, u32 len, u8 *msg)
bdev.vdev.ops->signal_config(kvm, &bdev.vdev);
}
-static void set_config(struct kvm *kvm, void *dev, u8 data, u32 offset)
+static u8 *get_config(struct kvm *kvm, void *dev)
{
struct bln_dev *bdev = dev;
- ((u8 *)(&bdev->config))[offset] = data;
-}
-
-static u8 get_config(struct kvm *kvm, void *dev, u32 offset)
-{
- struct bln_dev *bdev = dev;
-
- return ((u8 *)(&bdev->config))[offset];
+ return ((u8 *)(&bdev->config));
}
static u32 get_host_features(struct kvm *kvm, void *dev)
@@ -241,7 +234,6 @@ static int get_size_vq(struct kvm *kvm, void *dev, u32 vq)
}
struct virtio_ops bln_dev_virtio_ops = (struct virtio_ops) {
- .set_config = set_config,
.get_config = get_config,
.get_host_features = get_host_features,
.set_guest_features = set_guest_features,
diff --git a/tools/kvm/virtio/blk.c b/tools/kvm/virtio/blk.c
index d988365..98f17a2 100644
--- a/tools/kvm/virtio/blk.c
+++ b/tools/kvm/virtio/blk.c
@@ -134,18 +134,11 @@ static void virtio_blk_do_io(struct kvm *kvm, struct virt_queue *vq, struct blk_
}
}
-static void set_config(struct kvm *kvm, void *dev, u8 data, u32 offset)
+static u8 *get_config(struct kvm *kvm, void *dev)
{
struct blk_dev *bdev = dev;
- ((u8 *)(&bdev->blk_config))[offset] = data;
-}
-
-static u8 get_config(struct kvm *kvm, void *dev, u32 offset)
-{
- struct blk_dev *bdev = dev;
-
- return ((u8 *)(&bdev->blk_config))[offset];
+ return ((u8 *)(&bdev->blk_config));
}
static u32 get_host_features(struct kvm *kvm, void *dev)
@@ -230,7 +223,6 @@ static int set_size_vq(struct kvm *kvm, void *dev, u32 vq, int size)
}
static struct virtio_ops blk_dev_virtio_ops = (struct virtio_ops) {
- .set_config = set_config,
.get_config = get_config,
.get_host_features = get_host_features,
.set_guest_features = set_guest_features,
diff --git a/tools/kvm/virtio/console.c b/tools/kvm/virtio/console.c
index 4bb1365..e925a54 100644
--- a/tools/kvm/virtio/console.c
+++ b/tools/kvm/virtio/console.c
@@ -105,18 +105,11 @@ static void virtio_console_handle_callback(struct kvm *kvm, void *param)
}
-static void set_config(struct kvm *kvm, void *dev, u8 data, u32 offset)
+static u8 *get_config(struct kvm *kvm, void *dev)
{
struct con_dev *cdev = dev;
- ((u8 *)(&cdev->config))[offset] = data;
-}
-
-static u8 get_config(struct kvm *kvm, void *dev, u32 offset)
-{
- struct con_dev *cdev = dev;
-
- return ((u8 *)(&cdev->config))[offset];
+ return ((u8 *)(&cdev->config));
}
static u32 get_host_features(struct kvm *kvm, void *dev)
@@ -174,7 +167,6 @@ static int get_size_vq(struct kvm *kvm, void *dev, u32 vq)
}
static struct virtio_ops con_dev_virtio_ops = (struct virtio_ops) {
- .set_config = set_config,
.get_config = get_config,
.get_host_features = get_host_features,
.set_guest_features = set_guest_features,
diff --git a/tools/kvm/virtio/mmio.c b/tools/kvm/virtio/mmio.c
index 1cf0815..5971922 100644
--- a/tools/kvm/virtio/mmio.c
+++ b/tools/kvm/virtio/mmio.c
@@ -94,11 +94,11 @@ static void virtio_mmio_device_specific(u64 addr, u8 *data, u32 len,
for (i = 0; i < len; i++) {
if (is_write)
- vdev->ops->set_config(vmmio->kvm, vmmio->dev,
- *(u8 *)data + i, addr + i);
+ vdev->ops->get_config(vmmio->kvm, vmmio->dev)[addr + i] =
+ *(u8 *)data + i;
else
data[i] = vdev->ops->get_config(vmmio->kvm,
- vmmio->dev, addr + i);
+ vmmio->dev)[addr + i];
}
}
diff --git a/tools/kvm/virtio/net.c b/tools/kvm/virtio/net.c
index 8f3735b..25bc3a4 100644
--- a/tools/kvm/virtio/net.c
+++ b/tools/kvm/virtio/net.c
@@ -290,18 +290,11 @@ static struct net_dev_operations uip_ops = {
.tx = uip_ops_tx,
};
-static void set_config(struct kvm *kvm, void *dev, u8 data, u32 offset)
+static u8 *get_config(struct kvm *kvm, void *dev)
{
struct net_dev *ndev = dev;
- ((u8 *)(&ndev->config))[offset] = data;
-}
-
-static u8 get_config(struct kvm *kvm, void *dev, u32 offset)
-{
- struct net_dev *ndev = dev;
-
- return ((u8 *)(&ndev->config))[offset];
+ return ((u8 *)(&ndev->config));
}
static u32 get_host_features(struct kvm *kvm, void *dev)
@@ -448,7 +441,6 @@ static int set_size_vq(struct kvm *kvm, void *dev, u32 vq, int size)
}
static struct virtio_ops net_dev_virtio_ops = (struct virtio_ops) {
- .set_config = set_config,
.get_config = get_config,
.get_host_features = get_host_features,
.set_guest_features = set_guest_features,
diff --git a/tools/kvm/virtio/pci.c b/tools/kvm/virtio/pci.c
index 4dc7916..81f95ae 100644
--- a/tools/kvm/virtio/pci.c
+++ b/tools/kvm/virtio/pci.c
@@ -86,7 +86,7 @@ static bool virtio_pci__specific_io_in(struct kvm *kvm, struct virtio_device *vd
} else if (type == VIRTIO_PCI_O_CONFIG) {
u8 cfg;
- cfg = vdev->ops->get_config(kvm, vpci->dev, config_offset);
+ cfg = vdev->ops->get_config(kvm, vpci->dev)[config_offset];
ioport__write8(data, cfg);
return true;
}
@@ -164,7 +164,7 @@ static bool virtio_pci__specific_io_out(struct kvm *kvm, struct virtio_device *v
return true;
} else if (type == VIRTIO_PCI_O_CONFIG) {
- vdev->ops->set_config(kvm, vpci->dev, *(u8 *)data, config_offset);
+ vdev->ops->get_config(kvm, vpci->dev)[config_offset] = *(u8 *)data;
return true;
}
diff --git a/tools/kvm/virtio/rng.c b/tools/kvm/virtio/rng.c
index 5aa632d..2b1ab39 100644
--- a/tools/kvm/virtio/rng.c
+++ b/tools/kvm/virtio/rng.c
@@ -41,12 +41,7 @@ struct rng_dev {
static LIST_HEAD(rdevs);
static int compat_id = -1;
-static void set_config(struct kvm *kvm, void *dev, u8 data, u32 offset)
-{
- /* Unused */
-}
-
-static u8 get_config(struct kvm *kvm, void *dev, u32 offset)
+static u8 *get_config(struct kvm *kvm, void *dev)
{
/* Unused */
return 0;
@@ -138,7 +133,6 @@ static int get_size_vq(struct kvm *kvm, void *dev, u32 vq)
}
static struct virtio_ops rng_dev_virtio_ops = (struct virtio_ops) {
- .set_config = set_config,
.get_config = get_config,
.get_host_features = get_host_features,
.set_guest_features = set_guest_features,
diff --git a/tools/kvm/virtio/scsi.c b/tools/kvm/virtio/scsi.c
index 8276fb0..c445f08 100644
--- a/tools/kvm/virtio/scsi.c
+++ b/tools/kvm/virtio/scsi.c
@@ -29,18 +29,11 @@ struct scsi_dev {
struct kvm *kvm;
};
-static void set_config(struct kvm *kvm, void *dev, u8 data, u32 offset)
+static u8 *get_config(struct kvm *kvm, void *dev)
{
struct scsi_dev *sdev = dev;
- ((u8 *)(&sdev->config))[offset] = data;
-}
-
-static u8 get_config(struct kvm *kvm, void *dev, u32 offset)
-{
- struct scsi_dev *sdev = dev;
-
- return ((u8 *)(&sdev->config))[offset];
+ return ((u8 *)(&sdev->config));
}
static u32 get_host_features(struct kvm *kvm, void *dev)
@@ -174,7 +167,6 @@ static int set_size_vq(struct kvm *kvm, void *dev, u32 vq, int size)
}
static struct virtio_ops scsi_dev_virtio_ops = (struct virtio_ops) {
- .set_config = set_config,
.get_config = get_config,
.get_host_features = get_host_features,
.set_guest_features = set_guest_features,
--
1.7.12
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 1/7] kvm tools: add HOME env var to hostfs
2012-08-30 7:36 [PATCH 1/7] kvm tools: add HOME env var to hostfs Sasha Levin
` (5 preceding siblings ...)
2012-08-30 7:36 ` [PATCH 7/7] kvm tools: simplify virtio config handling Sasha Levin
@ 2012-08-30 7:50 ` Cyrill Gorcunov
2012-08-30 9:44 ` Sasha Levin
6 siblings, 1 reply; 17+ messages in thread
From: Cyrill Gorcunov @ 2012-08-30 7:50 UTC (permalink / raw)
To: Sasha Levin; +Cc: penberg, asias.hejun, mingo, kvm
On Thu, Aug 30, 2012 at 09:36:37AM +0200, Sasha Levin wrote:
> + char *new_env[] = { "TERM=linux", "DISPLAY=192.168.33.1:0",
> + "HOME=/virt/home", NULL };
> +
> + mkdir("/virt/home", 0755);
Please add check for mkdir error code. Frankly, this is a bad habbit
to assume that mkdir never fails (this could be done on top of this
series I think but should not be leaved without attention).
Cyrill
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 5/7] kvm tools: enable LTO
2012-08-30 7:36 ` [PATCH 5/7] kvm tools: enable LTO Sasha Levin
@ 2012-08-30 8:01 ` Pekka Enberg
2012-08-30 8:16 ` Ingo Molnar
0 siblings, 1 reply; 17+ messages in thread
From: Pekka Enberg @ 2012-08-30 8:01 UTC (permalink / raw)
To: Sasha Levin; +Cc: asias.hejun, mingo, gorcunov, kvm
On Thu, Aug 30, 2012 at 10:36 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> Build with -flto set, which should enable link-time-optimizations.
>
> I'm not sure if it provides a significant performance increase, but
> it's probably just worth it for catching issues which it may cause.
>
> Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
Ingo, any objections to this?
> ---
> tools/kvm/Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/kvm/Makefile b/tools/kvm/Makefile
> index 8aa0125..0e2fa66 100644
> --- a/tools/kvm/Makefile
> +++ b/tools/kvm/Makefile
> @@ -243,7 +243,7 @@ DEFINES += -DKVMTOOLS_VERSION='"$(KVMTOOLS_VERSION)"'
> DEFINES += -DBUILD_ARCH='"$(ARCH)"'
>
> KVM_INCLUDE := include
> -CFLAGS += $(CPPFLAGS) $(DEFINES) -I$(KVM_INCLUDE) -I$(ARCH_INCLUDE) -I$(KINCL_PATH)/include -I$(KINCL_PATH)/arch/$(ARCH)/include/ -O2 -fno-strict-aliasing -g
> +CFLAGS += $(CPPFLAGS) $(DEFINES) -I$(KVM_INCLUDE) -I$(ARCH_INCLUDE) -I$(KINCL_PATH)/include -I$(KINCL_PATH)/arch/$(ARCH)/include/ -O2 -fno-strict-aliasing -g -flto
>
> WARNINGS += -Wall
> WARNINGS += -Wcast-align
> --
> 1.7.12
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 5/7] kvm tools: enable LTO
2012-08-30 8:01 ` Pekka Enberg
@ 2012-08-30 8:16 ` Ingo Molnar
2012-08-30 8:22 ` Cyrill Gorcunov
0 siblings, 1 reply; 17+ messages in thread
From: Ingo Molnar @ 2012-08-30 8:16 UTC (permalink / raw)
To: Pekka Enberg; +Cc: Sasha Levin, asias.hejun, mingo, gorcunov, kvm
* Pekka Enberg <penberg@kernel.org> wrote:
> On Thu, Aug 30, 2012 at 10:36 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> > Build with -flto set, which should enable link-time-optimizations.
> >
> > I'm not sure if it provides a significant performance increase, but
> > it's probably just worth it for catching issues which it may cause.
> >
> > Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
>
> Ingo, any objections to this?
No objections if you can live with a 2x-4x increase in build
time - at worst it might cause funnies with the BIOS linker
script and such.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 5/7] kvm tools: enable LTO
2012-08-30 8:16 ` Ingo Molnar
@ 2012-08-30 8:22 ` Cyrill Gorcunov
2012-08-30 8:33 ` Sasha Levin
2012-08-30 9:12 ` Pekka Enberg
0 siblings, 2 replies; 17+ messages in thread
From: Cyrill Gorcunov @ 2012-08-30 8:22 UTC (permalink / raw)
To: Pekka Enberg; +Cc: Ingo Molnar, Sasha Levin, asias.hejun, mingo, kvm
On Thu, Aug 30, 2012 at 10:16:54AM +0200, Ingo Molnar wrote:
>
> * Pekka Enberg <penberg@kernel.org> wrote:
>
> > On Thu, Aug 30, 2012 at 10:36 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
> > > Build with -flto set, which should enable link-time-optimizations.
> > >
> > > I'm not sure if it provides a significant performance increase, but
> > > it's probably just worth it for catching issues which it may cause.
> > >
> > > Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
> >
> > Ingo, any objections to this?
>
> No objections if you can live with a 2x-4x increase in build
> time - at worst it might cause funnies with the BIOS linker
> script and such.
Maybe we could enable it via some make option?
Say make LTO=1 or something?
Cyrill
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 5/7] kvm tools: enable LTO
2012-08-30 8:22 ` Cyrill Gorcunov
@ 2012-08-30 8:33 ` Sasha Levin
2012-08-30 8:35 ` Cyrill Gorcunov
2012-08-30 9:12 ` Pekka Enberg
1 sibling, 1 reply; 17+ messages in thread
From: Sasha Levin @ 2012-08-30 8:33 UTC (permalink / raw)
To: Cyrill Gorcunov; +Cc: Pekka Enberg, Ingo Molnar, asias.hejun, mingo, kvm
On 08/30/2012 10:22 AM, Cyrill Gorcunov wrote:
> On Thu, Aug 30, 2012 at 10:16:54AM +0200, Ingo Molnar wrote:
>>
>> * Pekka Enberg <penberg@kernel.org> wrote:
>>
>>> On Thu, Aug 30, 2012 at 10:36 AM, Sasha Levin <levinsasha928@gmail.com> wrote:
>>>> Build with -flto set, which should enable link-time-optimizations.
>>>>
>>>> I'm not sure if it provides a significant performance increase, but
>>>> it's probably just worth it for catching issues which it may cause.
>>>>
>>>> Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
>>>
>>> Ingo, any objections to this?
>>
>> No objections if you can live with a 2x-4x increase in build
>> time - at worst it might cause funnies with the BIOS linker
>> script and such.
>
> Maybe we could enable it via some make option?
> Say make LTO=1 or something?
Build time went from 6 sec to 14, I don't think it's that significant...
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 5/7] kvm tools: enable LTO
2012-08-30 8:33 ` Sasha Levin
@ 2012-08-30 8:35 ` Cyrill Gorcunov
0 siblings, 0 replies; 17+ messages in thread
From: Cyrill Gorcunov @ 2012-08-30 8:35 UTC (permalink / raw)
To: Sasha Levin; +Cc: Pekka Enberg, Ingo Molnar, asias.hejun, mingo, kvm
On Thu, Aug 30, 2012 at 10:33:21AM +0200, Sasha Levin wrote:
> >>>
> >>> Ingo, any objections to this?
> >>
> >> No objections if you can live with a 2x-4x increase in build
> >> time - at worst it might cause funnies with the BIOS linker
> >> script and such.
> >
> > Maybe we could enable it via some make option?
> > Say make LTO=1 or something?
>
> Build time went from 6 sec to 14, I don't think it's that significant...
At moment. But I bet lkvm will grow with time and build time increase
as well. Still if you think we better stick with LTO, no problem,
lets do it then ;)
Cyrill
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 5/7] kvm tools: enable LTO
2012-08-30 8:22 ` Cyrill Gorcunov
2012-08-30 8:33 ` Sasha Levin
@ 2012-08-30 9:12 ` Pekka Enberg
1 sibling, 0 replies; 17+ messages in thread
From: Pekka Enberg @ 2012-08-30 9:12 UTC (permalink / raw)
To: Cyrill Gorcunov; +Cc: Ingo Molnar, Sasha Levin, asias.hejun, mingo, kvm
On Thu, Aug 30, 2012 at 11:22 AM, Cyrill Gorcunov <gorcunov@openvz.org> wrote:
> Maybe we could enable it via some make option?
> Say make LTO=1 or something?
That is not going to help much in catching LTO issues early.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/7] kvm tools: add HOME env var to hostfs
2012-08-30 7:50 ` [PATCH 1/7] kvm tools: add HOME env var to hostfs Cyrill Gorcunov
@ 2012-08-30 9:44 ` Sasha Levin
2012-08-30 9:48 ` Pekka Enberg
0 siblings, 1 reply; 17+ messages in thread
From: Sasha Levin @ 2012-08-30 9:44 UTC (permalink / raw)
To: Cyrill Gorcunov; +Cc: penberg, asias.hejun, mingo, kvm
On 08/30/2012 09:50 AM, Cyrill Gorcunov wrote:
> On Thu, Aug 30, 2012 at 09:36:37AM +0200, Sasha Levin wrote:
>> + char *new_env[] = { "TERM=linux", "DISPLAY=192.168.33.1:0",
>> + "HOME=/virt/home", NULL };
>> +
>> + mkdir("/virt/home", 0755);
>
> Please add check for mkdir error code. Frankly, this is a bad habbit
> to assume that mkdir never fails (this could be done on top of this
> series I think but should not be leaved without attention).
This is actually supposed to fail most of the times, since it runs as part of
the init :)
There's not much we can do if it fails though, and even at that point - this
failure isn't serious enough to even justify any further action on our end.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/7] kvm tools: add HOME env var to hostfs
2012-08-30 9:44 ` Sasha Levin
@ 2012-08-30 9:48 ` Pekka Enberg
2012-08-30 9:51 ` Sasha Levin
0 siblings, 1 reply; 17+ messages in thread
From: Pekka Enberg @ 2012-08-30 9:48 UTC (permalink / raw)
To: Sasha Levin; +Cc: Cyrill Gorcunov, asias.hejun, mingo, kvm
On Thu, Aug 30, 2012 at 12:44 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> On 08/30/2012 09:50 AM, Cyrill Gorcunov wrote:
>> On Thu, Aug 30, 2012 at 09:36:37AM +0200, Sasha Levin wrote:
>>> + char *new_env[] = { "TERM=linux", "DISPLAY=192.168.33.1:0",
>>> + "HOME=/virt/home", NULL };
>>> +
>>> + mkdir("/virt/home", 0755);
>>
>> Please add check for mkdir error code. Frankly, this is a bad habbit
>> to assume that mkdir never fails (this could be done on top of this
>> series I think but should not be leaved without attention).
>
> This is actually supposed to fail most of the times, since it runs as part of
> the init :)
You could check for errno == EEXISTS, no?
On Thu, Aug 30, 2012 at 12:44 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
> There's not much we can do if it fails though, and even at that point - this
> failure isn't serious enough to even justify any further action on our end.
I'm pretty sure users would appreciate a friendly warning explaining
that we are not running in "normal state".
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/7] kvm tools: add HOME env var to hostfs
2012-08-30 9:48 ` Pekka Enberg
@ 2012-08-30 9:51 ` Sasha Levin
0 siblings, 0 replies; 17+ messages in thread
From: Sasha Levin @ 2012-08-30 9:51 UTC (permalink / raw)
To: Pekka Enberg; +Cc: Cyrill Gorcunov, asias.hejun, mingo, kvm
On 08/30/2012 11:48 AM, Pekka Enberg wrote:
> On Thu, Aug 30, 2012 at 12:44 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
>> On 08/30/2012 09:50 AM, Cyrill Gorcunov wrote:
>>> On Thu, Aug 30, 2012 at 09:36:37AM +0200, Sasha Levin wrote:
>>>> + char *new_env[] = { "TERM=linux", "DISPLAY=192.168.33.1:0",
>>>> + "HOME=/virt/home", NULL };
>>>> +
>>>> + mkdir("/virt/home", 0755);
>>>
>>> Please add check for mkdir error code. Frankly, this is a bad habbit
>>> to assume that mkdir never fails (this could be done on top of this
>>> series I think but should not be leaved without attention).
>>
>> This is actually supposed to fail most of the times, since it runs as part of
>> the init :)
>
> You could check for errno == EEXISTS, no?
>
> On Thu, Aug 30, 2012 at 12:44 PM, Sasha Levin <levinsasha928@gmail.com> wrote:
>> There's not much we can do if it fails though, and even at that point - this
>> failure isn't serious enough to even justify any further action on our end.
>
> I'm pretty sure users would appreciate a friendly warning explaining
> that we are not running in "normal state".
This is how we ran up until now :)
I'm going to move that from init.c into the setup itself then.
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2012-08-30 9:50 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-30 7:36 [PATCH 1/7] kvm tools: add HOME env var to hostfs Sasha Levin
2012-08-30 7:36 ` [PATCH 2/7] kvm tools: clean garbage from ioeventfd code Sasha Levin
2012-08-30 7:36 ` [PATCH 3/7] kvm tools: Use the new KVM_SIGNAL_MSI ioctl to inject interrupts directly Sasha Levin
2012-08-30 7:36 ` [PATCH 4/7] kvm tools: fix warnings in virtio-blk Sasha Levin
2012-08-30 7:36 ` [PATCH 5/7] kvm tools: enable LTO Sasha Levin
2012-08-30 8:01 ` Pekka Enberg
2012-08-30 8:16 ` Ingo Molnar
2012-08-30 8:22 ` Cyrill Gorcunov
2012-08-30 8:33 ` Sasha Levin
2012-08-30 8:35 ` Cyrill Gorcunov
2012-08-30 9:12 ` Pekka Enberg
2012-08-30 7:36 ` [PATCH 6/7] kvm tools: 9p don't nuke fids on attach Sasha Levin
2012-08-30 7:36 ` [PATCH 7/7] kvm tools: simplify virtio config handling Sasha Levin
2012-08-30 7:50 ` [PATCH 1/7] kvm tools: add HOME env var to hostfs Cyrill Gorcunov
2012-08-30 9:44 ` Sasha Levin
2012-08-30 9:48 ` Pekka Enberg
2012-08-30 9:51 ` Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).