Re: [PATCH] vhost-blk: Add vhost-blk support v5

2012-11-19 Thread Asias He
On 11/20/2012 04:26 AM, Michael S. Tsirkin wrote:
> On Mon, Nov 19, 2012 at 04:53:42PM +0800, Asias He wrote:
>> vhost-blk is an in-kernel virito-blk device accelerator.
>>
>> Due to lack of proper in-kernel AIO interface, this version converts
>> guest's I/O request to bio and use submit_bio() to submit I/O directly.
>> So this version any supports raw block device as guest's disk image,
>> e.g. /dev/sda, /dev/ram0. We can add file based image support to
>> vhost-blk once we have in-kernel AIO interface. There are some work in
>> progress for in-kernel AIO interface from Dave Kleikamp and Zach Brown:
>>
>>http://marc.info/?l=linux-fsdevel&m=133312234313122
>>
>> Performance evaluation:
>> -
>> 1) LKVM
>> Fio with libaio ioengine on Fusion IO device using kvm tool
>> IOPS(k)Before   After   Improvement
>> seq-read   107  121 +13.0%
>> seq-write  130  179 +37.6%
>> rnd-read   102  122 +19.6%
>> rnd-write  125  159 +27.0%
>>
>> 2) QEMU
>> Fio with libaio ioengine on Fusion IO device using QEMU
>> IOPS(k)Before   After   Improvement
>> seq-read   76   123 +61.8%
>> seq-write  139  173 +24.4%
>> rnd-read   73   120 +64.3%
>> rnd-write  75   156 +108.0%
> 
> Could you compare with dataplane qemu as well please?


Well, I will try to collect it.

> 
>>
>> Userspace bits:
>> -
>> 1) LKVM
>> The latest vhost-blk userspace bits for kvm tool can be found here:
>> g...@github.com:asias/linux-kvm.git blk.vhost-blk
>>
>> 2) QEMU
>> The latest vhost-blk userspace prototype for QEMU can be found here:
>> g...@github.com:asias/qemu.git blk.vhost-blk
>>
>> Changes in v5:
>> - Do not assume the buffer layout
>> - Fix wakeup race
>>
>> Changes in v4:
>> - Mark req->status as userspace pointer
>> - Use __copy_to_user() instead of copy_to_user() in vhost_blk_set_status()
>> - Add if (need_resched()) schedule() in blk thread
>> - Kill vhost_blk_stop_vq() and move it into vhost_blk_stop()
>> - Use vq_err() instead of pr_warn()
>> - Fail un Unsupported request
>> - Add flush in vhost_blk_set_features()
>>
>> Changes in v3:
>> - Sending REQ_FLUSH bio instead of vfs_fsync, thanks Christoph!
>> - Check file passed by user is a raw block device file
>>
>> Signed-off-by: Asias He 
> 
> Since there are files shared by this and vhost net
> it's easiest for me to merge this all through the
> vhost tree.
> 
> Jens, could you ack this and the bio usage in this driver
> please?
> 
>> ---
>>  drivers/vhost/Kconfig |   1 +
>>  drivers/vhost/Kconfig.blk |  10 +
>>  drivers/vhost/Makefile|   2 +
>>  drivers/vhost/blk.c   | 697 
>> ++
>>  drivers/vhost/blk.h   |   8 +
>>  5 files changed, 718 insertions(+)
>>  create mode 100644 drivers/vhost/Kconfig.blk
>>  create mode 100644 drivers/vhost/blk.c
>>  create mode 100644 drivers/vhost/blk.h
>>
>> diff --git a/drivers/vhost/Kconfig b/drivers/vhost/Kconfig
>> index 202bba6..acd8038 100644
>> --- a/drivers/vhost/Kconfig
>> +++ b/drivers/vhost/Kconfig
>> @@ -11,4 +11,5 @@ config VHOST_NET
>>  
>>  if STAGING
>>  source "drivers/vhost/Kconfig.tcm"
>> +source "drivers/vhost/Kconfig.blk"
>>  endif
>> diff --git a/drivers/vhost/Kconfig.blk b/drivers/vhost/Kconfig.blk
>> new file mode 100644
>> index 000..ff8ab76
>> --- /dev/null
>> +++ b/drivers/vhost/Kconfig.blk
>> @@ -0,0 +1,10 @@
>> +config VHOST_BLK
>> +tristate "Host kernel accelerator for virtio blk (EXPERIMENTAL)"
>> +depends on BLOCK &&  EXPERIMENTAL && m
>> +---help---
>> +  This kernel module can be loaded in host kernel to accelerate
>> +  guest block with virtio_blk. Not to be confused with virtio_blk
>> +  module itself which needs to be loaded in guest kernel.
>> +
>> +  To compile this driver as a module, choose M here: the module will
>> +  be called vhost_blk.
>> diff --git a/drivers/vhost/Makefile b/drivers/vhost/Makefile
>> index a27b053..1a8a4a5 100644
>> --- a/drivers/vhost/Makefile
>> +++ b/drivers/vhost/Makefile
>> @@ -2,3 +2,5 @@ obj-$(CONFIG_VHOST_NET) += vhost_net.o
>>  vhost_net-y := vhost.o net.o
>>  
>>  obj-$(CONFIG_TCM_VHOST) += tcm_vhost.o
>> +obj-$(CONFIG_VHOST_BLK) += vhost_blk.o
>> +vhost_blk-y := blk.o
>> diff --git a/drivers/vhost/blk.c b/drivers/vhost/blk.c
>> new file mode 100644
>> index 000..f0f118a
>> --- /dev/null
>> +++ b/drivers/vhost/blk.c
>> @@ -0,0 +1,697 @@
>> +/*
>> + * Copyright (C) 2011 Taobao, Inc.
>> + * Author: Liu Yuan 
>> + *
>> + * Copyright (C) 2012 Red Hat, Inc.
>> + * Author: Asias He 
>> + *
>> + * This work is licensed under the terms of the GNU GPL, version 2.
>> + *
>> + * virtio-blk server in host kernel.
>> + */
>> +
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +
>> +#include "vhost.c"
>> +#include "vhost.h"
>> +#include "blk.h"
>> +
>> +st

Re: [PATCH 158/493] video: remove use of __devinit

2012-11-19 Thread Jingoo Han
On Tuesday, November 20, 2012 3:22 AM, Bill Pemberton wrote
> 
> CONFIG_HOTPLUG is going away as an option so __devinit is no longer
> needed.
> 
> Signed-off-by: Bill Pemberton 
> Cc: Florian Tobias Schandinat 
> Cc: Jaya Kumar 
> Cc: Paul Mackerras 
> Cc: Benjamin Herrenschmidt 
> Cc: Russell King 
> Cc: Jingoo Han 
> Cc: Ferenc Bakonyi 
> Cc: Antonino Daplas 
> Cc: Maik Broemme 
> Cc: David Brown 
> Cc: Daniel Walker 
> Cc: Bryan Huntsman 
> Cc: Wan ZongShun 
> Cc: Tomi Valkeinen 
> Cc: Geoff Levand 
> Cc: Kristoffer Ericson 
> Cc: Ben Dooks 
> Cc: Kukjin Kim 
> Cc: Thomas Winischhofer 
> Cc: Michal Januszewski 
> Cc: Tony Prisk 
> Cc: linux-fb...@vger.kernel.org
> Cc: linux-arm-ker...@lists.infradead.org
> Cc: linux-ge...@lists.infradead.org
> Cc: linux-nvi...@lists.surfsouth.com
> Cc: linux-arm-...@vger.kernel.org
> Cc: linux-o...@vger.kernel.org
> Cc: linuxppc-...@lists.ozlabs.org
> Cc: cbe-oss-...@lists.ozlabs.org
> Cc: linux-samsung-...@vger.kernel.org
> Cc: xen-de...@lists.xensource.com
> Cc: virtualization@lists.linux-foundation.org
> ---
>  drivers/video/acornfb.c| 14 ++--
>  drivers/video/arcfb.c  |  2 +-
>  drivers/video/arkfb.c  |  2 +-
>  drivers/video/asiliantfb.c |  6 +-
>  drivers/video/aty/aty128fb.c   | 22 +++---
>  drivers/video/aty/atyfb_base.c | 22 +++---
>  drivers/video/aty/mach64_ct.c  |  4 +-
>  drivers/video/aty/mach64_cursor.c  |  2 +-
>  drivers/video/aty/radeon_base.c| 14 ++--
>  drivers/video/aty/radeon_monitor.c | 16 ++---
>  drivers/video/au1100fb.c   |  2 +-
>  drivers/video/au1200fb.c   |  2 +-
>  drivers/video/auo_k1900fb.c|  2 +-
>  drivers/video/auo_k1901fb.c|  2 +-
>  drivers/video/auo_k190x.c  |  2 +-
>  drivers/video/bf537-lq035.c|  6 +-
>  drivers/video/bf54x-lq043fb.c  |  2 +-
>  drivers/video/bfin-lq035q1-fb.c|  6 +-
>  drivers/video/bfin-t350mcqb-fb.c   |  2 +-
>  drivers/video/bfin_adv7393fb.c |  2 +-
>  drivers/video/broadsheetfb.c   |  8 +--
>  drivers/video/bw2.c|  6 +-
>  drivers/video/carminefb.c  |  4 +-
>  drivers/video/cg14.c   |  4 +-
>  drivers/video/cg3.c|  8 +--
>  drivers/video/cg6.c|  8 +--
>  drivers/video/chipsfb.c|  4 +-
>  drivers/video/cirrusfb.c   | 10 +--
>  drivers/video/cobalt_lcdfb.c   |  2 +-
>  drivers/video/console/sticore.c| 47 ++---
>  drivers/video/cyber2000fb.c| 12 ++--
>  drivers/video/da8xx-fb.c   |  2 +-
>  drivers/video/dnfb.c   |  2 +-
>  drivers/video/ep93xx-fb.c  |  4 +-
>  drivers/video/exynos/exynos_dp_core.c  |  2 +-
>  drivers/video/ffb.c|  2 +-
>  drivers/video/fm2fb.c  |  4 +-
>  drivers/video/fsl-diu-fb.c |  4 +-
>  drivers/video/gbefb.c  |  4 +-
>  drivers/video/geode/gx1fb_core.c   |  6 +-
>  drivers/video/geode/gxfb_core.c| 10 +--
>  drivers/video/geode/lxfb_core.c| 10 +--
>  drivers/video/grvga.c  |  4 +-
>  drivers/video/gxt4500.c|  4 +-
>  drivers/video/hecubafb.c   |  2 +-
>  drivers/video/hgafb.c  |  4 +-
>  drivers/video/hitfb.c  |  2 +-
>  drivers/video/hpfb.c   |  4 +-
>  drivers/video/i740fb.c |  4 +-
>  drivers/video/i810/i810_main.c | 26 +++
>  drivers/video/i810/i810_main.h |  2 +-
>  drivers/video/imsttfb.c|  4 +-
>  drivers/video/intelfb/intelfbdrv.c | 16 ++---
>  drivers/video/jz4740_fb.c  |  2 +-
>  drivers/video/kyro/fbdev.c |  2 +-
>  drivers/video/leo.c|  2 +-
>  drivers/video/mb862xx/mb862xxfbdrv.c   |  6 +-
>  drivers/video/mbx/mbxdebugfs.c |  2 +-
>  drivers/video/mbx/mbxfb.c  | 10 +--
>  drivers/video/metronomefb.c| 12 ++--
>  drivers/video/msm/mddi.c   |  6 +-
>  drivers/video/mxsfb.c  |  6 +-
>  drivers/video/neofb.c 

Re: [PATCH] vhost-blk: Add vhost-blk support v5

2012-11-19 Thread Michael S. Tsirkin
On Mon, Nov 19, 2012 at 04:53:42PM +0800, Asias He wrote:
> vhost-blk is an in-kernel virito-blk device accelerator.
> 
> Due to lack of proper in-kernel AIO interface, this version converts
> guest's I/O request to bio and use submit_bio() to submit I/O directly.
> So this version any supports raw block device as guest's disk image,
> e.g. /dev/sda, /dev/ram0. We can add file based image support to
> vhost-blk once we have in-kernel AIO interface. There are some work in
> progress for in-kernel AIO interface from Dave Kleikamp and Zach Brown:
> 
>http://marc.info/?l=linux-fsdevel&m=133312234313122
> 
> Performance evaluation:
> -
> 1) LKVM
> Fio with libaio ioengine on Fusion IO device using kvm tool
> IOPS(k)Before   After   Improvement
> seq-read   107  121 +13.0%
> seq-write  130  179 +37.6%
> rnd-read   102  122 +19.6%
> rnd-write  125  159 +27.0%
> 
> 2) QEMU
> Fio with libaio ioengine on Fusion IO device using QEMU
> IOPS(k)Before   After   Improvement
> seq-read   76   123 +61.8%
> seq-write  139  173 +24.4%
> rnd-read   73   120 +64.3%
> rnd-write  75   156 +108.0%

Could you compare with dataplane qemu as well please?

> 
> Userspace bits:
> -
> 1) LKVM
> The latest vhost-blk userspace bits for kvm tool can be found here:
> g...@github.com:asias/linux-kvm.git blk.vhost-blk
> 
> 2) QEMU
> The latest vhost-blk userspace prototype for QEMU can be found here:
> g...@github.com:asias/qemu.git blk.vhost-blk
> 
> Changes in v5:
> - Do not assume the buffer layout
> - Fix wakeup race
> 
> Changes in v4:
> - Mark req->status as userspace pointer
> - Use __copy_to_user() instead of copy_to_user() in vhost_blk_set_status()
> - Add if (need_resched()) schedule() in blk thread
> - Kill vhost_blk_stop_vq() and move it into vhost_blk_stop()
> - Use vq_err() instead of pr_warn()
> - Fail un Unsupported request
> - Add flush in vhost_blk_set_features()
> 
> Changes in v3:
> - Sending REQ_FLUSH bio instead of vfs_fsync, thanks Christoph!
> - Check file passed by user is a raw block device file
> 
> Signed-off-by: Asias He 

Since there are files shared by this and vhost net
it's easiest for me to merge this all through the
vhost tree.

Jens, could you ack this and the bio usage in this driver
please?

> ---
>  drivers/vhost/Kconfig |   1 +
>  drivers/vhost/Kconfig.blk |  10 +
>  drivers/vhost/Makefile|   2 +
>  drivers/vhost/blk.c   | 697 
> ++
>  drivers/vhost/blk.h   |   8 +
>  5 files changed, 718 insertions(+)
>  create mode 100644 drivers/vhost/Kconfig.blk
>  create mode 100644 drivers/vhost/blk.c
>  create mode 100644 drivers/vhost/blk.h
> 
> diff --git a/drivers/vhost/Kconfig b/drivers/vhost/Kconfig
> index 202bba6..acd8038 100644
> --- a/drivers/vhost/Kconfig
> +++ b/drivers/vhost/Kconfig
> @@ -11,4 +11,5 @@ config VHOST_NET
>  
>  if STAGING
>  source "drivers/vhost/Kconfig.tcm"
> +source "drivers/vhost/Kconfig.blk"
>  endif
> diff --git a/drivers/vhost/Kconfig.blk b/drivers/vhost/Kconfig.blk
> new file mode 100644
> index 000..ff8ab76
> --- /dev/null
> +++ b/drivers/vhost/Kconfig.blk
> @@ -0,0 +1,10 @@
> +config VHOST_BLK
> + tristate "Host kernel accelerator for virtio blk (EXPERIMENTAL)"
> + depends on BLOCK &&  EXPERIMENTAL && m
> + ---help---
> +   This kernel module can be loaded in host kernel to accelerate
> +   guest block with virtio_blk. Not to be confused with virtio_blk
> +   module itself which needs to be loaded in guest kernel.
> +
> +   To compile this driver as a module, choose M here: the module will
> +   be called vhost_blk.
> diff --git a/drivers/vhost/Makefile b/drivers/vhost/Makefile
> index a27b053..1a8a4a5 100644
> --- a/drivers/vhost/Makefile
> +++ b/drivers/vhost/Makefile
> @@ -2,3 +2,5 @@ obj-$(CONFIG_VHOST_NET) += vhost_net.o
>  vhost_net-y := vhost.o net.o
>  
>  obj-$(CONFIG_TCM_VHOST) += tcm_vhost.o
> +obj-$(CONFIG_VHOST_BLK) += vhost_blk.o
> +vhost_blk-y := blk.o
> diff --git a/drivers/vhost/blk.c b/drivers/vhost/blk.c
> new file mode 100644
> index 000..f0f118a
> --- /dev/null
> +++ b/drivers/vhost/blk.c
> @@ -0,0 +1,697 @@
> +/*
> + * Copyright (C) 2011 Taobao, Inc.
> + * Author: Liu Yuan 
> + *
> + * Copyright (C) 2012 Red Hat, Inc.
> + * Author: Asias He 
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2.
> + *
> + * virtio-blk server in host kernel.
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include "vhost.c"
> +#include "vhost.h"
> +#include "blk.h"
> +
> +static DEFINE_IDA(vhost_blk_index_ida);
> +
> +enum {
> + VHOST_BLK_VQ_REQ = 0,
> + VHOST_BLK_VQ_MAX = 1,
> +};
> +
> +struct req_page_list {
> + struct page **pages;
> + int pages_nr;
> +};
> +
> +struct vhost_blk

Re: [PATCH 471/493] net: remove use of __devexit

2012-11-19 Thread Larry Finger

On 11/19/2012 12:27 PM, Bill Pemberton wrote:

CONFIG_HOTPLUG is going away as an option so __devexit is no
longer needed.

Signed-off-by: Bill Pemberton 
Cc: Wolfgang Grandegger 
Cc: Marc Kleine-Budde 
Cc: "Maciej W. Rozycki" 
Cc: Jes Sorensen 
Cc: Samuel Ortiz 
Cc: Rusty Russell 
Cc: "Michael S. Tsirkin" 
Cc: Shreyas Bhatewara 
Cc: "VMware, Inc." 
Cc: Francois Romieu 
Cc: Krzysztof Halasa 
Cc: "John W. Linville" 
Cc: Jiri Slaby 
Cc: Nick Kossifidis 
Cc: "Luis R. Rodriguez" 
Cc: Simon Kelley 
Cc: Stefano Brivio 
Cc: Stanislav Yakovlev 
Cc: Dan Williams 
Cc: Christian Lamparter 
Cc: Herton Ronaldo Krzesinski 
Cc: Hin-Tak Leung 
Cc: Larry Finger 
Cc: Luciano Coelho 
Cc: net...@vger.kernel.org
Cc: linux-...@vger.kernel.org
Cc: linux-hi...@sunsite.dk
Cc: virtualization@lists.linux-foundation.org
Cc: linux-wirel...@vger.kernel.org
Cc: ath5k-de...@lists.ath5k.org
Cc: b43-...@lists.infradead.org
Cc: libertas-...@lists.infradead.org
Cc: xen-de...@lists.xensource.com


ACKed-by: Larry Finger  for the rtl8187 part.


---
  drivers/net/arcnet/com20020-pci.c |  2 +-
  drivers/net/can/at91_can.c|  2 +-
  drivers/net/can/bfin_can.c|  2 +-
  drivers/net/can/c_can/c_can_pci.c |  2 +-
  drivers/net/can/c_can/c_can_platform.c|  2 +-
  drivers/net/can/cc770/cc770_isa.c |  2 +-
  drivers/net/can/cc770/cc770_platform.c|  2 +-
  drivers/net/can/flexcan.c |  4 ++--
  drivers/net/can/janz-ican3.c  |  6 +++---
  drivers/net/can/mcp251x.c |  2 +-
  drivers/net/can/mscan/mpc5xxx_can.c   |  2 +-
  drivers/net/can/pch_can.c |  2 +-
  drivers/net/can/sja1000/kvaser_pci.c  |  2 +-
  drivers/net/can/sja1000/peak_pci.c|  2 +-
  drivers/net/can/sja1000/sja1000_isa.c |  2 +-
  drivers/net/can/sja1000/sja1000_of_platform.c |  2 +-
  drivers/net/can/sja1000/tscan1.c  |  2 +-
  drivers/net/can/softing/softing_cs.c  |  2 +-
  drivers/net/can/softing/softing_main.c|  2 +-
  drivers/net/can/ti_hecc.c |  2 +-
  drivers/net/fddi/defxx.c  | 14 +++---
  drivers/net/fddi/skfp/skfddi.c|  2 +-
  drivers/net/hippi/rrunner.c   |  2 +-
  drivers/net/ieee802154/at86rf230.c|  2 +-
  drivers/net/ieee802154/fakehard.c |  2 +-
  drivers/net/ieee802154/fakelb.c   |  2 +-
  drivers/net/ieee802154/mrf24j40.c |  2 +-
  drivers/net/irda/au1k_ir.c|  2 +-
  drivers/net/irda/bfin_sir.c   |  2 +-
  drivers/net/irda/sh_irda.c|  2 +-
  drivers/net/irda/sh_sir.c |  2 +-
  drivers/net/irda/via-ircc.c   |  4 ++--
  drivers/net/irda/vlsi_ir.c|  2 +-
  drivers/net/phy/mdio-gpio.c   |  4 ++--
  drivers/net/phy/mdio-mux-gpio.c   |  2 +-
  drivers/net/phy/mdio-mux-mmioreg.c|  2 +-
  drivers/net/phy/mdio-octeon.c |  2 +-
  drivers/net/phy/spi_ks8995.c  |  2 +-
  drivers/net/virtio_net.c  |  2 +-
  drivers/net/vmxnet3/vmxnet3_drv.c |  2 +-
  drivers/net/wan/dscc4.c   |  2 +-
  drivers/net/wan/farsync.c |  2 +-
  drivers/net/wan/ixp4xx_hss.c  |  2 +-
  drivers/net/wan/lmc/lmc_main.c|  2 +-
  drivers/net/wireless/adm8211.c|  2 +-
  drivers/net/wireless/airo.c   |  2 +-
  drivers/net/wireless/ath/ath5k/pci.c  |  2 +-
  drivers/net/wireless/atmel_pci.c  |  2 +-
  drivers/net/wireless/b43/pcmcia.c |  2 +-
  drivers/net/wireless/b43/sdio.c   |  2 +-
  drivers/net/wireless/ipw2x00/ipw2100.c|  2 +-
  drivers/net/wireless/ipw2x00/ipw2200.c|  2 +-
  drivers/net/wireless/iwlegacy/3945-mac.c  |  2 +-
  drivers/net/wireless/iwlegacy/4965-mac.c  |  2 +-
  drivers/net/wireless/iwlwifi/pcie/drv.c   |  2 +-
  drivers/net/wireless/libertas/if_spi.c|  2 +-
  drivers/net/wireless/mwl8k.c  |  4 ++--
  drivers/net/wireless/orinoco/orinoco_nortel.c |  2 +-
  drivers/net/wireless/orinoco/orinoco_pci.c|  2 +-
  drivers/net/wireless/orinoco/orinoco_plx.c|  2 +-
  drivers/net/wireless/orinoco/orinoco_tmd.c|  2 +-
  drivers/net/wireless/p54/p54pci.c |  2 +-
  drivers/net/wireless/p54/p54spi.c |  2 +-
  drivers/net/wireless/p54/p54usb.c |  2 +-
  drivers/net/wireless/rtl818x/rtl8180/dev.c|  2 +-
  drivers/net/wireless/rtl818x/rtl8187/dev.c|  2 +-
  drivers/net/wireless/ti/wl1251/sdio.c |  2 +-
  drivers/net/wireless/ti/wl1251/spi.c  |  2 +-
  drivers/net/wireless/ti/wlcore/main.c |  2 +-
  drivers/net/wireless/ti/wlcore/sdio.c |  2 +-
  drivers/net/wireless/ti/

Re: [PATCH 1/1] vhost: Remove duplicate inclusion of linux/vhost.h

2012-11-19 Thread David Miller
From: "Michael S. Tsirkin" 
Date: Mon, 19 Nov 2012 21:49:55 +0200

> On Mon, Nov 19, 2012 at 02:18:13PM -0500, David Miller wrote:
>> From: Sachin Kamat 
>> Date: Mon, 19 Nov 2012 16:58:28 +0530
>> 
>> > linux/vhost.h was included twice.
>> > 
>> > Signed-off-by: Sachin Kamat 
>> 
>> Michael, are you gonna take this?
>> 
>> Thanks.
> 
> Pls pick it up.
> 
> Acked-by: Michael S. Tsirkin 

Applied to net-next, thanks.
___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


Re: [PATCH 1/1] vhost: Remove duplicate inclusion of linux/vhost.h

2012-11-19 Thread Michael S. Tsirkin
On Mon, Nov 19, 2012 at 02:18:13PM -0500, David Miller wrote:
> From: Sachin Kamat 
> Date: Mon, 19 Nov 2012 16:58:28 +0530
> 
> > linux/vhost.h was included twice.
> > 
> > Signed-off-by: Sachin Kamat 
> 
> Michael, are you gonna take this?
> 
> Thanks.

Pls pick it up.

Acked-by: Michael S. Tsirkin 

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


Re: [PATCH 1/1] vhost: Remove duplicate inclusion of linux/vhost.h

2012-11-19 Thread David Miller
From: Sachin Kamat 
Date: Mon, 19 Nov 2012 16:58:28 +0530

> linux/vhost.h was included twice.
> 
> Signed-off-by: Sachin Kamat 

Michael, are you gonna take this?

Thanks.
___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


Re: [rfc net-next v6 2/3] virtio_net: multiqueue support

2012-11-19 Thread Ben Hutchings
On Sun, 2012-11-18 at 11:13 +0200, Michael S. Tsirkin wrote:
> On Sat, Nov 17, 2012 at 12:35:29AM +, Ben Hutchings wrote:
> > On Tue, 2012-11-13 at 08:40 +0200, Michael S. Tsirkin wrote:
> > > On Mon, Nov 05, 2012 at 11:38:39AM +1030, Rusty Russell wrote:
> > > > > @@ -924,11 +1032,10 @@ static void virtnet_get_ringparam(struct 
> > > > > net_device *dev,
> > > > >  {
> > > > >   struct virtnet_info *vi = netdev_priv(dev);
> > > > >  
> > > > > - ring->rx_max_pending = virtqueue_get_vring_size(vi->rvq);
> > > > > - ring->tx_max_pending = virtqueue_get_vring_size(vi->svq);
> > > > > + ring->rx_max_pending = virtqueue_get_vring_size(vi->rq[0].vq);
> > > > > + ring->tx_max_pending = virtqueue_get_vring_size(vi->sq[0].vq);
> > > > >   ring->rx_pending = ring->rx_max_pending;
> > > > >   ring->tx_pending = ring->tx_max_pending;
> > > > > -
> > > > >  }
> > > > 
> > > > This assumes all vqs are the same size.  I think this should probably
> > > > check: for mq mode, use the first vq, otherewise use the 0th.
> > > 
> > > For rx_pending/tx_pending I think what is required here is the
> > > actual number of outstanding buffers.
> > > Dave, Eric - right?
> > > 
> > > So this should be the total over all rings and to be useful,
> > > rx_max_pending/tx_max_pending should be the total too.
> > 
> > So far as I know, all current implementations use the number of
> > descriptors per ring here. virtio_net should be consistent with this.
> > 
> > Ben.
> 
> Problem is, it could in theory be different between rings. I guess we
> could use the maximum.
> 
> What's the right thing to do for rx_pending - I am guessing
> we want the current outstanding packets right?

The 'max_pending' fields are for the maximum ring sizes supported; the
'pending' fields are for the current ring sizes.  The current number of
descriptors pending is not included (would be a bit pointless).

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.



___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH 471/493] net: remove use of __devexit

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devexit is no
longer needed.

Signed-off-by: Bill Pemberton 
Cc: Wolfgang Grandegger  
Cc: Marc Kleine-Budde  
Cc: "Maciej W. Rozycki"  
Cc: Jes Sorensen  
Cc: Samuel Ortiz  
Cc: Rusty Russell  
Cc: "Michael S. Tsirkin"  
Cc: Shreyas Bhatewara  
Cc: "VMware, Inc."  
Cc: Francois Romieu  
Cc: Krzysztof Halasa  
Cc: "John W. Linville"  
Cc: Jiri Slaby  
Cc: Nick Kossifidis  
Cc: "Luis R. Rodriguez"  
Cc: Simon Kelley  
Cc: Stefano Brivio  
Cc: Stanislav Yakovlev  
Cc: Dan Williams  
Cc: Christian Lamparter  
Cc: Herton Ronaldo Krzesinski  
Cc: Hin-Tak Leung  
Cc: Larry Finger  
Cc: Luciano Coelho  
Cc: net...@vger.kernel.org 
Cc: linux-...@vger.kernel.org 
Cc: linux-hi...@sunsite.dk 
Cc: virtualization@lists.linux-foundation.org 
Cc: linux-wirel...@vger.kernel.org 
Cc: ath5k-de...@lists.ath5k.org 
Cc: b43-...@lists.infradead.org 
Cc: libertas-...@lists.infradead.org 
Cc: xen-de...@lists.xensource.com 
---
 drivers/net/arcnet/com20020-pci.c |  2 +-
 drivers/net/can/at91_can.c|  2 +-
 drivers/net/can/bfin_can.c|  2 +-
 drivers/net/can/c_can/c_can_pci.c |  2 +-
 drivers/net/can/c_can/c_can_platform.c|  2 +-
 drivers/net/can/cc770/cc770_isa.c |  2 +-
 drivers/net/can/cc770/cc770_platform.c|  2 +-
 drivers/net/can/flexcan.c |  4 ++--
 drivers/net/can/janz-ican3.c  |  6 +++---
 drivers/net/can/mcp251x.c |  2 +-
 drivers/net/can/mscan/mpc5xxx_can.c   |  2 +-
 drivers/net/can/pch_can.c |  2 +-
 drivers/net/can/sja1000/kvaser_pci.c  |  2 +-
 drivers/net/can/sja1000/peak_pci.c|  2 +-
 drivers/net/can/sja1000/sja1000_isa.c |  2 +-
 drivers/net/can/sja1000/sja1000_of_platform.c |  2 +-
 drivers/net/can/sja1000/tscan1.c  |  2 +-
 drivers/net/can/softing/softing_cs.c  |  2 +-
 drivers/net/can/softing/softing_main.c|  2 +-
 drivers/net/can/ti_hecc.c |  2 +-
 drivers/net/fddi/defxx.c  | 14 +++---
 drivers/net/fddi/skfp/skfddi.c|  2 +-
 drivers/net/hippi/rrunner.c   |  2 +-
 drivers/net/ieee802154/at86rf230.c|  2 +-
 drivers/net/ieee802154/fakehard.c |  2 +-
 drivers/net/ieee802154/fakelb.c   |  2 +-
 drivers/net/ieee802154/mrf24j40.c |  2 +-
 drivers/net/irda/au1k_ir.c|  2 +-
 drivers/net/irda/bfin_sir.c   |  2 +-
 drivers/net/irda/sh_irda.c|  2 +-
 drivers/net/irda/sh_sir.c |  2 +-
 drivers/net/irda/via-ircc.c   |  4 ++--
 drivers/net/irda/vlsi_ir.c|  2 +-
 drivers/net/phy/mdio-gpio.c   |  4 ++--
 drivers/net/phy/mdio-mux-gpio.c   |  2 +-
 drivers/net/phy/mdio-mux-mmioreg.c|  2 +-
 drivers/net/phy/mdio-octeon.c |  2 +-
 drivers/net/phy/spi_ks8995.c  |  2 +-
 drivers/net/virtio_net.c  |  2 +-
 drivers/net/vmxnet3/vmxnet3_drv.c |  2 +-
 drivers/net/wan/dscc4.c   |  2 +-
 drivers/net/wan/farsync.c |  2 +-
 drivers/net/wan/ixp4xx_hss.c  |  2 +-
 drivers/net/wan/lmc/lmc_main.c|  2 +-
 drivers/net/wireless/adm8211.c|  2 +-
 drivers/net/wireless/airo.c   |  2 +-
 drivers/net/wireless/ath/ath5k/pci.c  |  2 +-
 drivers/net/wireless/atmel_pci.c  |  2 +-
 drivers/net/wireless/b43/pcmcia.c |  2 +-
 drivers/net/wireless/b43/sdio.c   |  2 +-
 drivers/net/wireless/ipw2x00/ipw2100.c|  2 +-
 drivers/net/wireless/ipw2x00/ipw2200.c|  2 +-
 drivers/net/wireless/iwlegacy/3945-mac.c  |  2 +-
 drivers/net/wireless/iwlegacy/4965-mac.c  |  2 +-
 drivers/net/wireless/iwlwifi/pcie/drv.c   |  2 +-
 drivers/net/wireless/libertas/if_spi.c|  2 +-
 drivers/net/wireless/mwl8k.c  |  4 ++--
 drivers/net/wireless/orinoco/orinoco_nortel.c |  2 +-
 drivers/net/wireless/orinoco/orinoco_pci.c|  2 +-
 drivers/net/wireless/orinoco/orinoco_plx.c|  2 +-
 drivers/net/wireless/orinoco/orinoco_tmd.c|  2 +-
 drivers/net/wireless/p54/p54pci.c |  2 +-
 drivers/net/wireless/p54/p54spi.c |  2 +-
 drivers/net/wireless/p54/p54usb.c |  2 +-
 drivers/net/wireless/rtl818x/rtl8180/dev.c|  2 +-
 drivers/net/wireless/rtl818x/rtl8187/dev.c|  2 +-
 drivers/net/wireless/ti/wl1251/sdio.c |  2 +-
 drivers/net/wireless/ti/wl1251/spi.c  |  2 +-
 drivers/net/wireless/ti/wlcore/main.c |  2 +-
 drivers/net/wireless/ti/wlcore/sdio.c |  2 +-
 drivers/net/wireless/ti/wlcore/spi.c  |  2 +-
 drivers/net/wireless/ti/wlcore/wlcore.h   |  2 +-
 drivers/net/xen-netfront.c|  2

[PATCH 242/493] pci: remove use of __devinit

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devinit is no longer
needed.

Signed-off-by: Bill Pemberton 
Cc: linux-...@vger.kernel.org 
Cc: xen-de...@lists.xensource.com 
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/pci/ioapic.c   |   2 +-
 drivers/pci/pci.c  |   2 +-
 drivers/pci/pcie/aer/aerdrv.c  |   4 +-
 drivers/pci/pcie/portdrv_pci.c |   2 +-
 drivers/pci/probe.c|  18 +++---
 drivers/pci/quirks.c   | 134 -
 drivers/pci/xen-pcifront.c |  10 +--
 include/linux/pci.h|   2 +-
 8 files changed, 87 insertions(+), 87 deletions(-)

diff --git a/drivers/pci/ioapic.c b/drivers/pci/ioapic.c
index 2b24fb4..4fdc61e 100644
--- a/drivers/pci/ioapic.c
+++ b/drivers/pci/ioapic.c
@@ -27,7 +27,7 @@ struct ioapic {
u32 gsi_base;
 };
 
-static int __devinit ioapic_probe(struct pci_dev *dev, const struct 
pci_device_id *ent)
+static int ioapic_probe(struct pci_dev *dev, const struct pci_device_id *ent)
 {
acpi_handle handle;
acpi_status status;
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index adffc6f..133ffd1 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3867,7 +3867,7 @@ static int __init pci_resource_alignment_sysfs_init(void)
 
 late_initcall(pci_resource_alignment_sysfs_init);
 
-static void __devinit pci_no_domains(void)
+static void pci_no_domains(void)
 {
 #ifdef CONFIG_PCI_DOMAINS
pci_domains_supported = 0;
diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c
index 030cf12..76ef634 100644
--- a/drivers/pci/pcie/aer/aerdrv.c
+++ b/drivers/pci/pcie/aer/aerdrv.c
@@ -41,7 +41,7 @@ MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
 MODULE_LICENSE("GPL");
 
-static int __devinit aer_probe(struct pcie_device *dev);
+static int aer_probe(struct pcie_device *dev);
 static void aer_remove(struct pcie_device *dev);
 static pci_ers_result_t aer_error_detected(struct pci_dev *dev,
enum pci_channel_state error);
@@ -300,7 +300,7 @@ static void aer_remove(struct pcie_device *dev)
  *
  * Invoked when PCI Express bus loads AER service driver.
  */
-static int __devinit aer_probe(struct pcie_device *dev)
+static int aer_probe(struct pcie_device *dev)
 {
int status;
struct aer_rpc *rpc;
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c
index 0761d90..d4824cb 100644
--- a/drivers/pci/pcie/portdrv_pci.c
+++ b/drivers/pci/pcie/portdrv_pci.c
@@ -182,7 +182,7 @@ static const struct pci_device_id 
port_runtime_pm_black_list[] = {
  * this port device.
  *
  */
-static int __devinit pcie_portdrv_probe(struct pci_dev *dev,
+static int pcie_portdrv_probe(struct pci_dev *dev,
const struct pci_device_id *id)
 {
int status;
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 3d17641..edc3d12 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -305,7 +305,7 @@ static void pci_read_bases(struct pci_dev *dev, unsigned 
int howmany, int rom)
}
 }
 
-static void __devinit pci_read_bridge_io(struct pci_bus *child)
+static void pci_read_bridge_io(struct pci_bus *child)
 {
struct pci_dev *dev = child->self;
u8 io_base_lo, io_limit_lo;
@@ -345,7 +345,7 @@ static void __devinit pci_read_bridge_io(struct pci_bus 
*child)
}
 }
 
-static void __devinit pci_read_bridge_mmio(struct pci_bus *child)
+static void pci_read_bridge_mmio(struct pci_bus *child)
 {
struct pci_dev *dev = child->self;
u16 mem_base_lo, mem_limit_lo;
@@ -367,7 +367,7 @@ static void __devinit pci_read_bridge_mmio(struct pci_bus 
*child)
}
 }
 
-static void __devinit pci_read_bridge_mmio_pref(struct pci_bus *child)
+static void pci_read_bridge_mmio_pref(struct pci_bus *child)
 {
struct pci_dev *dev = child->self;
u16 mem_base_lo, mem_limit_lo;
@@ -417,7 +417,7 @@ static void __devinit pci_read_bridge_mmio_pref(struct 
pci_bus *child)
}
 }
 
-void __devinit pci_read_bridge_bases(struct pci_bus *child)
+void pci_read_bridge_bases(struct pci_bus *child)
 {
struct pci_dev *dev = child->self;
struct resource *res;
@@ -705,7 +705,7 @@ static void pci_fixup_parent_subordinate_busnr(struct 
pci_bus *child, int max)
  * them, we proceed to assigning numbers to the remaining buses in
  * order to avoid overlaps between old and new bus numbers.
  */
-int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int 
max, int pass)
+int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int 
pass)
 {
struct pci_bus *child;
int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
@@ -1587,7 +1587,7 @@ void pcie_bus_configure_settings(struct pci_bus *bus, u8 
mpss)
 }
 EXPORT_SYMBOL_GPL(pcie_bus_configure_settings);
 
-unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus)
+unsigned int pci_scan_child_bus(struct pci_bus *bus)
 {

[PATCH 203/493] net: remove use of __devinit

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devinit is no longer
needed.

Signed-off-by: Bill Pemberton 
Cc: "Maciej W. Rozycki"  
Cc: Jes Sorensen  
Cc: Shreyas Bhatewara  
Cc: "VMware, Inc."  
Cc: Francois Romieu  
Cc: Krzysztof Halasa  
Cc: net...@vger.kernel.org 
Cc: linux-hi...@sunsite.dk 
Cc: xen-de...@lists.xensource.com 
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/net/arcnet/com20020-pci.c  |  2 +-
 drivers/net/fddi/defxx.c   | 18 +-
 drivers/net/hippi/rrunner.c|  4 ++--
 drivers/net/ieee802154/at86rf230.c |  2 +-
 drivers/net/ieee802154/fakehard.c  |  2 +-
 drivers/net/ieee802154/fakelb.c|  2 +-
 drivers/net/ieee802154/mrf24j40.c  |  2 +-
 drivers/net/vmxnet3/vmxnet3_drv.c  |  2 +-
 drivers/net/wan/dscc4.c|  2 +-
 drivers/net/wan/farsync.c  |  4 ++--
 drivers/net/wan/hd64570.c  |  4 ++--
 drivers/net/wan/hd64572.c  |  4 ++--
 drivers/net/wan/ixp4xx_hss.c   |  2 +-
 drivers/net/wan/lmc/lmc_main.c |  2 +-
 drivers/net/wan/pc300too.c |  2 +-
 drivers/net/wan/pci200syn.c|  2 +-
 drivers/net/wan/wanxl.c|  2 +-
 drivers/net/xen-netfront.c |  4 ++--
 18 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/drivers/net/arcnet/com20020-pci.c 
b/drivers/net/arcnet/com20020-pci.c
index dcedba8..e80f04b 100644
--- a/drivers/net/arcnet/com20020-pci.c
+++ b/drivers/net/arcnet/com20020-pci.c
@@ -61,7 +61,7 @@ module_param(clockp, int, 0);
 module_param(clockm, int, 0);
 MODULE_LICENSE("GPL");
 
-static int __devinit com20020pci_probe(struct pci_dev *pdev, const struct 
pci_device_id *id)
+static int com20020pci_probe(struct pci_dev *pdev, const struct pci_device_id 
*id)
 {
struct net_device *dev;
struct arcnet_local *lp;
diff --git a/drivers/net/fddi/defxx.c b/drivers/net/fddi/defxx.c
index 538f8bb..13f42cc 100644
--- a/drivers/net/fddi/defxx.c
+++ b/drivers/net/fddi/defxx.c
@@ -515,7 +515,7 @@ static const struct net_device_ops dfx_netdev_ops = {
  *   initialized and the board resources are read and stored in
  *   the device structure.
  */
-static int __devinit dfx_register(struct device *bdev)
+static int dfx_register(struct device *bdev)
 {
static int version_disp;
int dfx_bus_pci = DFX_BUS_PCI(bdev);
@@ -663,7 +663,7 @@ err_out:
  *   enabled yet.
  */
 
-static void __devinit dfx_bus_init(struct net_device *dev)
+static void dfx_bus_init(struct net_device *dev)
 {
DFX_board_t *bp = netdev_priv(dev);
struct device *bdev = bp->bus_dev;
@@ -866,7 +866,7 @@ static void __devexit dfx_bus_uninit(struct net_device *dev)
  *   None
  */
 
-static void __devinit dfx_bus_config_check(DFX_board_t *bp)
+static void dfx_bus_config_check(DFX_board_t *bp)
 {
struct device __maybe_unused *bdev = bp->bus_dev;
int dfx_bus_eisa = DFX_BUS_EISA(bdev);
@@ -962,7 +962,7 @@ static void __devinit dfx_bus_config_check(DFX_board_t *bp)
  *   returning from this routine.
  */
 
-static int __devinit dfx_driver_init(struct net_device *dev,
+static int dfx_driver_init(struct net_device *dev,
 const char *print_name,
 resource_size_t bar_start)
 {
@@ -3619,11 +3619,11 @@ static void __devexit dfx_unregister(struct device 
*bdev)
 }
 
 
-static int __devinit __maybe_unused dfx_dev_register(struct device *);
+static int __maybe_unused dfx_dev_register(struct device *);
 static int __devexit __maybe_unused dfx_dev_unregister(struct device *);
 
 #ifdef CONFIG_PCI
-static int __devinit dfx_pci_register(struct pci_dev *,
+static int dfx_pci_register(struct pci_dev *,
  const struct pci_device_id *);
 static void __devexit dfx_pci_unregister(struct pci_dev *);
 
@@ -3640,7 +3640,7 @@ static struct pci_driver dfx_pci_driver = {
.remove = dfx_pci_unregister,
 };
 
-static __devinit int dfx_pci_register(struct pci_dev *pdev,
+static int dfx_pci_register(struct pci_dev *pdev,
  const struct pci_device_id *ent)
 {
return dfx_register(&pdev->dev);
@@ -3694,7 +3694,7 @@ static struct tc_driver dfx_tc_driver = {
 };
 #endif /* CONFIG_TC */
 
-static int __devinit __maybe_unused dfx_dev_register(struct device *dev)
+static int __maybe_unused dfx_dev_register(struct device *dev)
 {
int status;
 
@@ -3712,7 +3712,7 @@ static int __devexit __maybe_unused 
dfx_dev_unregister(struct device *dev)
 }
 
 
-static int __devinit dfx_init(void)
+static int dfx_init(void)
 {
int status;
 
diff --git a/drivers/net/hippi/rrunner.c b/drivers/net/hippi/rrunner.c
index 4802b46..164d845 100644
--- a/drivers/net/hippi/rrunner.c
+++ b/drivers/net/hippi/rrunner.c
@@ -88,7 +88,7 @@ static const struct net_device_ops rr_netdev_ops = {
  * stack will need to know about I/O vectors or something similar.
  */
 
-static int __devinit rr_init_one(struct pci_dev *pdev,
+static int rr_init_one

[PATCH 222/493] char: remove use of __devinit

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devinit is no longer
needed.

Signed-off-by: Bill Pemberton 
Cc: Geoff Levand  
Cc: Mattia Dongili  
Cc: Amit Shah  
Cc: openipmi-develo...@lists.sourceforge.net 
Cc: linuxppc-...@lists.ozlabs.org 
Cc: cbe-oss-...@lists.ozlabs.org 
Cc: platform-driver-...@vger.kernel.org 
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/char/ipmi/ipmi_si_intf.c   | 24 
 drivers/char/ps3flash.c|  2 +-
 drivers/char/sonypi.c  | 10 +-
 drivers/char/tb0219.c  |  2 +-
 drivers/char/virtio_console.c  |  2 +-
 drivers/char/xilinx_hwicap/xilinx_hwicap.c |  6 +++---
 6 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index b1e0356..29b6bad 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -1836,7 +1836,7 @@ static int hotmod_handler(const char *val, struct 
kernel_param *kp)
return rv;
 }
 
-static int __devinit hardcode_find_bmc(void)
+static int hardcode_find_bmc(void)
 {
int ret = -ENODEV;
int i;
@@ -2023,7 +2023,7 @@ struct SPMITable {
s8  spmi_id[1]; /* A '\0' terminated array starts here. */
 };
 
-static int __devinit try_init_spmi(struct SPMITable *spmi)
+static int try_init_spmi(struct SPMITable *spmi)
 {
struct smi_info  *info;
 
@@ -2106,7 +2106,7 @@ static int __devinit try_init_spmi(struct SPMITable *spmi)
return 0;
 }
 
-static void __devinit spmi_find_bmc(void)
+static void spmi_find_bmc(void)
 {
acpi_status  status;
struct SPMITable *spmi;
@@ -2128,7 +2128,7 @@ static void __devinit spmi_find_bmc(void)
}
 }
 
-static int __devinit ipmi_pnp_probe(struct pnp_dev *dev,
+static int ipmi_pnp_probe(struct pnp_dev *dev,
const struct pnp_device_id *dev_id)
 {
struct acpi_device *acpi_dev;
@@ -2258,7 +2258,7 @@ struct dmi_ipmi_data {
u8  slave_addr;
 };
 
-static int __devinit decode_dmi(const struct dmi_header *dm,
+static int decode_dmi(const struct dmi_header *dm,
struct dmi_ipmi_data *dmi)
 {
const u8*data = (const u8 *)dm;
@@ -2320,7 +2320,7 @@ static int __devinit decode_dmi(const struct dmi_header 
*dm,
return 0;
 }
 
-static void __devinit try_init_dmi(struct dmi_ipmi_data *ipmi_data)
+static void try_init_dmi(struct dmi_ipmi_data *ipmi_data)
 {
struct smi_info *info;
 
@@ -2388,7 +2388,7 @@ static void __devinit try_init_dmi(struct dmi_ipmi_data 
*ipmi_data)
kfree(info);
 }
 
-static void __devinit dmi_find_bmc(void)
+static void dmi_find_bmc(void)
 {
const struct dmi_device *dev = NULL;
struct dmi_ipmi_data data;
@@ -2424,7 +2424,7 @@ static void ipmi_pci_cleanup(struct smi_info *info)
pci_disable_device(pdev);
 }
 
-static int __devinit ipmi_pci_probe_regspacing(struct smi_info *info)
+static int ipmi_pci_probe_regspacing(struct smi_info *info)
 {
if (info->si_type == SI_KCS) {
unsigned char   status;
@@ -2456,7 +2456,7 @@ static int __devinit ipmi_pci_probe_regspacing(struct 
smi_info *info)
return DEFAULT_REGSPACING;
 }
 
-static int __devinit ipmi_pci_probe(struct pci_dev *pdev,
+static int ipmi_pci_probe(struct pci_dev *pdev,
const struct pci_device_id *ent)
 {
int rv;
@@ -2551,7 +2551,7 @@ static struct pci_driver ipmi_pci_driver = {
 #endif /* CONFIG_PCI */
 
 static struct of_device_id ipmi_match[];
-static int __devinit ipmi_probe(struct platform_device *dev)
+static int ipmi_probe(struct platform_device *dev)
 {
 #ifdef CONFIG_OF
const struct of_device_id *match;
@@ -3059,7 +3059,7 @@ static __devinitdata struct ipmi_default_vals
{ .port = 0 }
 };
 
-static void __devinit default_find_bmc(void)
+static void default_find_bmc(void)
 {
struct smi_info *info;
int i;
@@ -3359,7 +3359,7 @@ static int try_smi_init(struct smi_info *new_smi)
return rv;
 }
 
-static int __devinit init_ipmi_si(void)
+static int init_ipmi_si(void)
 {
int  i;
char *str;
diff --git a/drivers/char/ps3flash.c b/drivers/char/ps3flash.c
index 6abdde4..588063ac 100644
--- a/drivers/char/ps3flash.c
+++ b/drivers/char/ps3flash.c
@@ -363,7 +363,7 @@ static struct miscdevice ps3flash_misc = {
.fops   = &ps3flash_fops,
 };
 
-static int __devinit ps3flash_probe(struct ps3_system_bus_device *_dev)
+static int ps3flash_probe(struct ps3_system_bus_device *_dev)
 {
struct ps3_storage_device *dev = to_ps3_storage_device(&_dev->core);
struct ps3flash_private *priv;
diff --git a/drivers/char/sonypi.c b/drivers/char/sonypi.c
index 34f0db3..861efa4 100644
--- a/drivers/char/sonypi.c
+++ b/drivers/char/sonypi.c
@@ -1164,7 +1164,7 @@ static struct acpi

[PATCH 086/493] net: remove use of __devexit_p

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devexit_p is no longer
needed.

Signed-off-by: Bill Pemberton 
Cc: Rusty Russell  
Cc: "Michael S. Tsirkin"  
Cc: Shreyas Bhatewara  
Cc: "VMware, Inc."  
Cc: Francois Romieu  
Cc: virtualization@lists.linux-foundation.org 
Cc: net...@vger.kernel.org 
Cc: xen-de...@lists.xensource.com 
---
 drivers/net/virtio_net.c  | 2 +-
 drivers/net/vmxnet3/vmxnet3_drv.c | 2 +-
 drivers/net/wan/dscc4.c   | 2 +-
 drivers/net/wan/farsync.c | 2 +-
 drivers/net/wan/lmc/lmc_main.c| 2 +-
 drivers/net/xen-netfront.c| 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 97f4ff8..b0c1630 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1285,7 +1285,7 @@ static struct virtio_driver virtio_net_driver = {
.driver.owner = THIS_MODULE,
.id_table = id_table,
.probe =virtnet_probe,
-   .remove =   __devexit_p(virtnet_remove),
+   .remove =   virtnet_remove,
.config_changed = virtnet_config_changed,
 #ifdef CONFIG_PM
.freeze =   virtnet_freeze,
diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c 
b/drivers/net/vmxnet3/vmxnet3_drv.c
index 7e9622f..aa1bde8 100644
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -3302,7 +3302,7 @@ static struct pci_driver vmxnet3_driver = {
.name   = vmxnet3_driver_name,
.id_table   = vmxnet3_pciid_table,
.probe  = vmxnet3_probe_device,
-   .remove = __devexit_p(vmxnet3_remove_device),
+   .remove = vmxnet3_remove_device,
 #ifdef CONFIG_PM
.driver.pm  = &vmxnet3_pm_ops,
 #endif
diff --git a/drivers/net/wan/dscc4.c b/drivers/net/wan/dscc4.c
index ef36caf..2eddbbf 100644
--- a/drivers/net/wan/dscc4.c
+++ b/drivers/net/wan/dscc4.c
@@ -2053,7 +2053,7 @@ static struct pci_driver dscc4_driver = {
.name   = DRV_NAME,
.id_table   = dscc4_pci_tbl,
.probe  = dscc4_init_one,
-   .remove = __devexit_p(dscc4_remove_one),
+   .remove = dscc4_remove_one,
 };
 
 module_pci_driver(dscc4_driver);
diff --git a/drivers/net/wan/farsync.c b/drivers/net/wan/farsync.c
index b627132..0397544 100644
--- a/drivers/net/wan/farsync.c
+++ b/drivers/net/wan/farsync.c
@@ -2652,7 +2652,7 @@ static struct pci_driver fst_driver = {
 .name  = FST_NAME,
 .id_table  = fst_pci_dev_id,
 .probe = fst_add_one,
-.remove= __devexit_p(fst_remove_one),
+   .remove = fst_remove_one,
 .suspend   = NULL,
 .resume= NULL,
 };
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
index f5d533a..358e25f 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/lmc_main.c
@@ -1733,7 +1733,7 @@ static struct pci_driver lmc_driver = {
.name   = "lmc",
.id_table   = lmc_pci_tbl,
.probe  = lmc_init_one,
-   .remove = __devexit_p(lmc_remove_one),
+   .remove = lmc_remove_one,
 };
 
 module_pci_driver(lmc_driver);
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index caa0110..3c3b93e 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1934,7 +1934,7 @@ static int __devexit xennet_remove(struct xenbus_device 
*dev)
 
 static DEFINE_XENBUS_DRIVER(netfront, ,
.probe = netfront_probe,
-   .remove = __devexit_p(xennet_remove),
+   .remove = xennet_remove,
.resume = netfront_resume,
.otherend_changed = netback_changed,
 );
-- 
1.8.0

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH 247/493] drivers/block: remove use of __devinit

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devinit is no longer
needed.

Signed-off-by: Bill Pemberton 
Cc: Chirag Kantharia  
Cc: Geoff Levand  
Cc: Jim Paris  
Cc: Rusty Russell  
Cc: "Michael S. Tsirkin"  
Cc: Grant Likely  
Cc: iss_storage...@hp.com 
Cc: linuxppc-...@lists.ozlabs.org 
Cc: cbe-oss-...@lists.ozlabs.org 
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/block/cciss.c  | 62 +++---
 drivers/block/cpqarray.c   |  6 ++---
 drivers/block/nvme.c   | 10 
 drivers/block/ps3disk.c|  2 +-
 drivers/block/ps3vram.c|  4 +--
 drivers/block/sunvdc.c |  6 ++---
 drivers/block/swim.c   |  6 ++---
 drivers/block/swim3.c  |  2 +-
 drivers/block/umem.c   |  2 +-
 drivers/block/virtio_blk.c |  4 +--
 drivers/block/xsysace.c|  6 ++---
 11 files changed, 55 insertions(+), 55 deletions(-)

diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index b40068f..3096c79 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -181,8 +181,8 @@ static void cciss_geometry_inquiry(ctlr_info_t *h, int 
logvol,
sector_t total_size,
unsigned int block_size, InquiryData_struct *inq_buff,
   drive_info_struct *drv);
-static void __devinit cciss_interrupt_mode(ctlr_info_t *);
-static int __devinit cciss_enter_simple_mode(struct ctlr_info *h);
+static void cciss_interrupt_mode(ctlr_info_t *);
+static int cciss_enter_simple_mode(struct ctlr_info *h);
 static void start_io(ctlr_info_t *h);
 static int sendcmd_withirq(ctlr_info_t *h, __u8 cmd, void *buff, size_t size,
__u8 page_code, unsigned char scsi3addr[],
@@ -199,13 +199,13 @@ static void cciss_device_release(struct device *dev);
 static void cciss_free_gendisk(ctlr_info_t *h, int drv_index);
 static void cciss_free_drive_info(ctlr_info_t *h, int drv_index);
 static inline u32 next_command(ctlr_info_t *h);
-static int __devinit cciss_find_cfg_addrs(struct pci_dev *pdev,
+static int cciss_find_cfg_addrs(struct pci_dev *pdev,
void __iomem *vaddr, u32 *cfg_base_addr, u64 *cfg_base_addr_index,
u64 *cfg_offset);
-static int __devinit cciss_pci_find_memory_BAR(struct pci_dev *pdev,
+static int cciss_pci_find_memory_BAR(struct pci_dev *pdev,
unsigned long *memory_bar);
 static inline u32 cciss_tag_discard_error_bits(ctlr_info_t *h, u32 tag);
-static __devinit int write_driver_ver_to_cfgtable(
+static int write_driver_ver_to_cfgtable(
CfgTable_struct __iomem *cfgtable);
 
 /* performant mode helper functions */
@@ -550,7 +550,7 @@ static const struct file_operations cciss_proc_fops = {
.write   = cciss_proc_write,
 };
 
-static void __devinit cciss_procinit(ctlr_info_t *h)
+static void cciss_procinit(ctlr_info_t *h)
 {
struct proc_dir_entry *pde;
 
@@ -2663,7 +2663,7 @@ static int fill_cmd(ctlr_info_t *h, CommandList_struct 
*c, __u8 cmd, void *buff,
return status;
 }
 
-static int __devinit cciss_send_reset(ctlr_info_t *h, unsigned char *scsi3addr,
+static int cciss_send_reset(ctlr_info_t *h, unsigned char *scsi3addr,
u8 reset_type)
 {
CommandList_struct *c;
@@ -3919,7 +3919,7 @@ static void  calc_bucket_map(int bucket[], int 
num_buckets,
}
 }
 
-static void __devinit cciss_wait_for_mode_change_ack(ctlr_info_t *h)
+static void cciss_wait_for_mode_change_ack(ctlr_info_t *h)
 {
int i;
 
@@ -3933,7 +3933,7 @@ static void __devinit 
cciss_wait_for_mode_change_ack(ctlr_info_t *h)
}
 }
 
-static __devinit void cciss_enter_performant_mode(ctlr_info_t *h,
+static void cciss_enter_performant_mode(ctlr_info_t *h,
u32 use_short_tags)
 {
/* This is a bit complicated.  There are 8 registers on
@@ -4000,7 +4000,7 @@ static __devinit void 
cciss_enter_performant_mode(ctlr_info_t *h,
" performant mode\n");
 }
 
-static void __devinit cciss_put_controller_into_performant_mode(ctlr_info_t *h)
+static void cciss_put_controller_into_performant_mode(ctlr_info_t *h)
 {
__u32 trans_support;
 
@@ -4062,7 +4062,7 @@ clean_up:
  * controllers that are capable. If not, we use IO-APIC mode.
  */
 
-static void __devinit cciss_interrupt_mode(ctlr_info_t *h)
+static void cciss_interrupt_mode(ctlr_info_t *h)
 {
 #ifdef CONFIG_PCI_MSI
int err;
@@ -4108,7 +4108,7 @@ default_int_mode:
return;
 }
 
-static int __devinit cciss_lookup_board_id(struct pci_dev *pdev, u32 *board_id)
+static int cciss_lookup_board_id(struct pci_dev *pdev, u32 *board_id)
 {
int i;
u32 subsystem_vendor_id, subsystem_device_id;
@@ -4134,7 +4134,7 @@ static inline bool cciss_board_disabled(ctlr_info_t *h)
return ((command & PCI_COMMAND_MEMORY) == 0);
 }
 
-static int __devinit cciss_pci_find_memory_BAR(struct pci_dev *pdev,
+static int cciss_pci_find_memory_BAR(struct pci_dev *pdev,
unsigned long *memory_bar)
 {
int i;

[PATCH 392/493] block: remove use of __devexit

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devexit is no
longer needed.

Signed-off-by: Bill Pemberton 
Cc: Chirag Kantharia  
Cc: Rusty Russell  
Cc: "Michael S. Tsirkin"  
Cc: Grant Likely  
Cc: iss_storage...@hp.com 
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/block/cciss.c  | 2 +-
 drivers/block/cpqarray.c   | 6 +++---
 drivers/block/nvme.c   | 2 +-
 drivers/block/swim.c   | 2 +-
 drivers/block/virtio_blk.c | 4 ++--
 drivers/block/xsysace.c| 6 +++---
 6 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 3096c79..d5b415c97 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -5229,7 +5229,7 @@ static int cciss_enter_simple_mode(struct ctlr_info *h)
 }
 
 
-static void __devexit cciss_remove_one(struct pci_dev *pdev)
+static void cciss_remove_one(struct pci_dev *pdev)
 {
ctlr_info_t *h;
int i, j;
diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c
index 34973bc..6c2aa76 100644
--- a/drivers/block/cpqarray.c
+++ b/drivers/block/cpqarray.c
@@ -320,7 +320,7 @@ static void release_io_mem(ctlr_info_t *c)
c->io_mem_length = 0;
 }
 
-static void __devexit cpqarray_remove_one(int i)
+static void cpqarray_remove_one(int i)
 {
int j;
char buff[4];
@@ -352,7 +352,7 @@ static void __devexit cpqarray_remove_one(int i)
free_hba(i);
 }
 
-static void __devexit cpqarray_remove_one_pci (struct pci_dev *pdev)
+static void cpqarray_remove_one_pci (struct pci_dev *pdev)
 {
int i;
ctlr_info_t *tmp_ptr;
@@ -377,7 +377,7 @@ static void __devexit cpqarray_remove_one_pci (struct 
pci_dev *pdev)
 /* removing an instance that was not removed automatically..
  * must be an eisa card.
  */
-static void __devexit cpqarray_remove_one_eisa (int i)
+static void cpqarray_remove_one_eisa (int i)
 {
if (hba[i] == NULL) {
printk(KERN_ERR "cpqarray: controller %d appears to have"
diff --git a/drivers/block/nvme.c b/drivers/block/nvme.c
index 8a7dc4c..7f40623 100644
--- a/drivers/block/nvme.c
+++ b/drivers/block/nvme.c
@@ -1702,7 +1702,7 @@ static int nvme_probe(struct pci_dev *pdev,
return result;
 }
 
-static void __devexit nvme_remove(struct pci_dev *pdev)
+static void nvme_remove(struct pci_dev *pdev)
 {
struct nvme_dev *dev = pci_get_drvdata(pdev);
nvme_dev_remove(dev);
diff --git a/drivers/block/swim.c b/drivers/block/swim.c
index 989f5bd..a8e09b8 100644
--- a/drivers/block/swim.c
+++ b/drivers/block/swim.c
@@ -936,7 +936,7 @@ out:
return ret;
 }
 
-static int __devexit swim_remove(struct platform_device *dev)
+static int swim_remove(struct platform_device *dev)
 {
struct swim_priv *swd = platform_get_drvdata(dev);
int drive;
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 9f64e5cb..6c6df0c 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -885,7 +885,7 @@ out:
return err;
 }
 
-static void __devexit virtblk_remove(struct virtio_device *vdev)
+static void virtblk_remove(struct virtio_device *vdev)
 {
struct virtio_blk *vblk = vdev->priv;
int index = vblk->index;
@@ -963,7 +963,7 @@ static unsigned int features[] = {
 
 /*
  * virtio_blk causes spurious section mismatch warning by
- * simultaneously referring to a and a __devexit function.
+ * simultaneously referring to a and a function.
  * Use __refdata to avoid this warning.
  */
 static struct virtio_driver __refdata virtio_blk = {
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index 1700b20..a784b176 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -1074,7 +1074,7 @@ err_ioremap:
return -ENOMEM;
 }
 
-static void __devexit ace_teardown(struct ace_device *ace)
+static void ace_teardown(struct ace_device *ace)
 {
if (ace->gd) {
del_gendisk(ace->gd);
@@ -1135,7 +1135,7 @@ err_noreg:
return rc;
 }
 
-static void __devexit ace_free(struct device *dev)
+static void ace_free(struct device *dev)
 {
struct ace_device *ace = dev_get_drvdata(dev);
dev_dbg(dev, "ace_free(%p)\n", dev);
@@ -1182,7 +1182,7 @@ static int ace_probe(struct platform_device *dev)
 /*
  * Platform bus remove() method
  */
-static int __devexit ace_remove(struct platform_device *dev)
+static int ace_remove(struct platform_device *dev)
 {
ace_free(&dev->dev);
return 0;
-- 
1.8.0

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH 297/493] xen: remove use of __devinitdata

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devinitdata is no
longer needed.

Signed-off-by: Bill Pemberton 
Cc: xen-de...@lists.xensource.com 
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/xen/platform-pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/xen/platform-pci.c b/drivers/xen/platform-pci.c
index 017f66d..361aae3 100644
--- a/drivers/xen/platform-pci.c
+++ b/drivers/xen/platform-pci.c
@@ -170,7 +170,7 @@ pci_out:
return ret;
 }
 
-static struct pci_device_id platform_pci_tbl[] __devinitdata = {
+static struct pci_device_id platform_pci_tbl[] = {
{PCI_VENDOR_ID_XEN, PCI_DEVICE_ID_XEN_PLATFORM,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{0,}
-- 
1.8.0

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH 432/493] virtio: remove use of __devexit

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devexit is no
longer needed.

Signed-off-by: Bill Pemberton 
Cc: Rusty Russell  
Cc: "Michael S. Tsirkin"  
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/virtio/virtio_balloon.c | 2 +-
 drivers/virtio/virtio_mmio.c| 2 +-
 drivers/virtio/virtio_pci.c | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index c61cce9..ec1e690 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -493,7 +493,7 @@ static void remove_common(struct virtio_balloon *vb)
vb->vdev->config->del_vqs(vb->vdev);
 }
 
-static void __devexit virtballoon_remove(struct virtio_device *vdev)
+static void virtballoon_remove(struct virtio_device *vdev)
 {
struct virtio_balloon *vb = vdev->priv;
 
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index 6e0047b..6bcafdd 100644
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -493,7 +493,7 @@ static int virtio_mmio_probe(struct platform_device *pdev)
return register_virtio_device(&vm_dev->vdev);
 }
 
-static int __devexit virtio_mmio_remove(struct platform_device *pdev)
+static int virtio_mmio_remove(struct platform_device *pdev)
 {
struct virtio_mmio_device *vm_dev = platform_get_drvdata(pdev);
 
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index 325e847..941028e 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -751,7 +751,7 @@ out:
return err;
 }
 
-static void __devexit virtio_pci_remove(struct pci_dev *pci_dev)
+static void virtio_pci_remove(struct pci_dev *pci_dev)
 {
struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
 
-- 
1.8.0

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH 122/493] virtio: remove use of __devexit_p

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devexit_p is no longer
needed.

Signed-off-by: Bill Pemberton 
Cc: Rusty Russell  
Cc: "Michael S. Tsirkin"  
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/virtio/virtio_balloon.c | 2 +-
 drivers/virtio/virtio_mmio.c| 2 +-
 drivers/virtio/virtio_pci.c | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index 2a4f1e3..c61cce9 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -545,7 +545,7 @@ static struct virtio_driver virtio_balloon_driver = {
.driver.owner = THIS_MODULE,
.id_table = id_table,
.probe =virtballoon_probe,
-   .remove =   __devexit_p(virtballoon_remove),
+   .remove =   virtballoon_remove,
.config_changed = virtballoon_changed,
 #ifdef CONFIG_PM
.freeze =   virtballoon_freeze,
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index 5a0e1d3..5584f48 100644
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -630,7 +630,7 @@ MODULE_DEVICE_TABLE(of, virtio_mmio_match);
 
 static struct platform_driver virtio_mmio_driver = {
.probe  = virtio_mmio_probe,
-   .remove = __devexit_p(virtio_mmio_remove),
+   .remove = virtio_mmio_remove,
.driver = {
.name   = "virtio-mmio",
.owner  = THIS_MODULE,
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index e3ecc94..9bd7fb2 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -822,7 +822,7 @@ static struct pci_driver virtio_pci_driver = {
.name   = "virtio-pci",
.id_table   = virtio_pci_id_table,
.probe  = virtio_pci_probe,
-   .remove = __devexit_p(virtio_pci_remove),
+   .remove = virtio_pci_remove,
 #ifdef CONFIG_PM
.driver.pm  = &virtio_pci_pm_ops,
 #endif
-- 
1.8.0

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH 042/493] drivers/block: remove use of __devexit_p

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devexit_p is no longer
needed.

Signed-off-by: Bill Pemberton 
Cc: Chirag Kantharia  
Cc: Rusty Russell  
Cc: "Michael S. Tsirkin"  
Cc: Grant Likely  
Cc: iss_storage...@hp.com 
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/block/cciss.c  | 2 +-
 drivers/block/cpqarray.c   | 2 +-
 drivers/block/nvme.c   | 2 +-
 drivers/block/swim.c   | 2 +-
 drivers/block/virtio_blk.c | 2 +-
 drivers/block/xsysace.c| 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 6526157..b40068f 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -5308,7 +5308,7 @@ static void __devexit cciss_remove_one(struct pci_dev 
*pdev)
 static struct pci_driver cciss_pci_driver = {
.name = "cciss",
.probe = cciss_init_one,
-   .remove = __devexit_p(cciss_remove_one),
+   .remove = cciss_remove_one,
.id_table = cciss_pci_device_id,/* id_table */
.shutdown = cciss_shutdown,
 };
diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c
index 9125bbe..389e314 100644
--- a/drivers/block/cpqarray.c
+++ b/drivers/block/cpqarray.c
@@ -536,7 +536,7 @@ static int __devinit cpqarray_init_one( struct pci_dev 
*pdev,
 static struct pci_driver cpqarray_pci_driver = {
.name = "cpqarray",
.probe = cpqarray_init_one,
-   .remove = __devexit_p(cpqarray_remove_one_pci),
+   .remove = cpqarray_remove_one_pci,
.id_table = cpqarray_pci_device_id,
 };
 
diff --git a/drivers/block/nvme.c b/drivers/block/nvme.c
index 931769e..1f7acff 100644
--- a/drivers/block/nvme.c
+++ b/drivers/block/nvme.c
@@ -1747,7 +1747,7 @@ static struct pci_driver nvme_driver = {
.name   = "nvme",
.id_table   = nvme_id_table,
.probe  = nvme_probe,
-   .remove = __devexit_p(nvme_remove),
+   .remove = nvme_remove,
.suspend= nvme_suspend,
.resume = nvme_resume,
.err_handler= &nvme_err_handler,
diff --git a/drivers/block/swim.c b/drivers/block/swim.c
index 6d5a914..314f0b4 100644
--- a/drivers/block/swim.c
+++ b/drivers/block/swim.c
@@ -972,7 +972,7 @@ static int __devexit swim_remove(struct platform_device 
*dev)
 
 static struct platform_driver swim_driver = {
.probe  = swim_probe,
-   .remove = __devexit_p(swim_remove),
+   .remove = swim_remove,
.driver   = {
.name   = CARDNAME,
.owner  = THIS_MODULE,
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 0bdde8f..dbba5cf 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -973,7 +973,7 @@ static struct virtio_driver __refdata virtio_blk = {
.driver.owner   = THIS_MODULE,
.id_table   = id_table,
.probe  = virtblk_probe,
-   .remove = __devexit_p(virtblk_remove),
+   .remove = virtblk_remove,
.config_changed = virtblk_config_changed,
 #ifdef CONFIG_PM
.freeze = virtblk_freeze,
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index 1a17e33..d925121 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -1204,7 +1204,7 @@ MODULE_DEVICE_TABLE(of, ace_of_match);
 
 static struct platform_driver ace_platform_driver = {
.probe = ace_probe,
-   .remove = __devexit_p(ace_remove),
+   .remove = ace_remove,
.driver = {
.owner = THIS_MODULE,
.name = "xsysace",
-- 
1.8.0

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH 153/493] xen: remove use of __devinit

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devinit is no longer
needed.

Signed-off-by: Bill Pemberton 
Cc: xen-de...@lists.xensource.com 
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/xen/grant-table.c  |  2 +-
 drivers/xen/platform-pci.c |  2 +-
 drivers/xen/xen-pciback/pci_stub.c | 10 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
index 043bf07..a4982a3 100644
--- a/drivers/xen/grant-table.c
+++ b/drivers/xen/grant-table.c
@@ -1205,7 +1205,7 @@ int gnttab_init(void)
 }
 EXPORT_SYMBOL_GPL(gnttab_init);
 
-static int __devinit __gnttab_init(void)
+static int __gnttab_init(void)
 {
/* Delay grant-table initialization in the PV on HVM case */
if (xen_hvm_domain())
diff --git a/drivers/xen/platform-pci.c b/drivers/xen/platform-pci.c
index 97ca359..017f66d 100644
--- a/drivers/xen/platform-pci.c
+++ b/drivers/xen/platform-pci.c
@@ -101,7 +101,7 @@ static int platform_pci_resume(struct pci_dev *pdev)
return 0;
 }
 
-static int __devinit platform_pci_init(struct pci_dev *pdev,
+static int platform_pci_init(struct pci_dev *pdev,
   const struct pci_device_id *ent)
 {
int i, ret;
diff --git a/drivers/xen/xen-pciback/pci_stub.c 
b/drivers/xen/xen-pciback/pci_stub.c
index 961d664..4ac9da7 100644
--- a/drivers/xen/xen-pciback/pci_stub.c
+++ b/drivers/xen/xen-pciback/pci_stub.c
@@ -270,7 +270,7 @@ void pcistub_put_pci_dev(struct pci_dev *dev)
up_write(&pcistub_sem);
 }
 
-static int __devinit pcistub_match_one(struct pci_dev *dev,
+static int pcistub_match_one(struct pci_dev *dev,
   struct pcistub_device_id *pdev_id)
 {
/* Match the specified device by domain, bus, slot, func and also if
@@ -290,7 +290,7 @@ static int __devinit pcistub_match_one(struct pci_dev *dev,
return 0;
 }
 
-static int __devinit pcistub_match(struct pci_dev *dev)
+static int pcistub_match(struct pci_dev *dev)
 {
struct pcistub_device_id *pdev_id;
unsigned long flags;
@@ -308,7 +308,7 @@ static int __devinit pcistub_match(struct pci_dev *dev)
return found;
 }
 
-static int __devinit pcistub_init_device(struct pci_dev *dev)
+static int pcistub_init_device(struct pci_dev *dev)
 {
struct xen_pcibk_dev_data *dev_data;
int err = 0;
@@ -426,7 +426,7 @@ static int __init pcistub_init_devices_late(void)
return 0;
 }
 
-static int __devinit pcistub_seize(struct pci_dev *dev)
+static int pcistub_seize(struct pci_dev *dev)
 {
struct pcistub_device *psdev;
unsigned long flags;
@@ -461,7 +461,7 @@ static int __devinit pcistub_seize(struct pci_dev *dev)
return err;
 }
 
-static int __devinit pcistub_probe(struct pci_dev *dev,
+static int pcistub_probe(struct pci_dev *dev,
   const struct pci_device_id *id)
 {
int err = 0;
-- 
1.8.0

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH 156/493] virtio: remove use of __devinit

2012-11-19 Thread Bill Pemberton
CONFIG_HOTPLUG is going away as an option so __devinit is no longer
needed.

Signed-off-by: Bill Pemberton 
Cc: Rusty Russell  
Cc: "Michael S. Tsirkin"  
Cc: virtualization@lists.linux-foundation.org 
---
 drivers/virtio/virtio_mmio.c | 2 +-
 drivers/virtio/virtio_pci.c  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index 5584f48..6e0047b 100644
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -440,7 +440,7 @@ static struct virtio_config_ops virtio_mmio_config_ops = {
 
 /* Platform device */
 
-static int __devinit virtio_mmio_probe(struct platform_device *pdev)
+static int virtio_mmio_probe(struct platform_device *pdev)
 {
struct virtio_mmio_device *vm_dev;
struct resource *mem;
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index 9bd7fb2..325e847 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -676,7 +676,7 @@ static void virtio_pci_release_dev(struct device *_d)
 }
 
 /* the PCI probing function */
-static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
+static int virtio_pci_probe(struct pci_dev *pci_dev,
  const struct pci_device_id *id)
 {
struct virtio_pci_device *vp_dev;
-- 
1.8.0

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH 1/1] vhost: Remove duplicate inclusion of linux/vhost.h

2012-11-19 Thread Sachin Kamat
linux/vhost.h was included twice.

Signed-off-by: Sachin Kamat 
---
 drivers/vhost/tcm_vhost.c |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/vhost/tcm_vhost.c b/drivers/vhost/tcm_vhost.c
index 73bbc46..798792b 100644
--- a/drivers/vhost/tcm_vhost.c
+++ b/drivers/vhost/tcm_vhost.c
@@ -34,7 +34,6 @@
 #include 
 #include 
 #include 
-#include 
 #include 
 #include 
 #include 
-- 
1.7.4.1

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH 1/1] xen/xenbus: Remove duplicate inclusion of asm/xen/hypervisor.h

2012-11-19 Thread Sachin Kamat
asm/xen/hypervisor.h was included twice.

Signed-off-by: Sachin Kamat 
---
 drivers/xen/xenbus/xenbus_xs.c |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/xen/xenbus/xenbus_xs.c b/drivers/xen/xenbus/xenbus_xs.c
index acedeab..88e677b 100644
--- a/drivers/xen/xenbus/xenbus_xs.c
+++ b/drivers/xen/xenbus/xenbus_xs.c
@@ -48,7 +48,6 @@
 #include 
 #include 
 #include "xenbus_comms.h"
-#include 
 
 struct xs_stored_msg {
struct list_head list;
-- 
1.7.4.1

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH v4] x86/xen: Use __pa_symbol instead of __pa on C visible symbols

2012-11-19 Thread Alexander Duyck
This change updates a few of the functions to use __pa_symbol when
translating C visible symbols instead of __pa.  By using __pa_symbol we are
able to drop a few extra lines of code as don't have to test to see if the
virtual pointer is a part of the kernel text or just standard virtual memory.

Cc: Konrad Rzeszutek Wilk 
Signed-off-by: Alexander Duyck 
---

v4:  I have spun this patch off as a separate patch for v4 due to the fact that
 this patch doesn't apply cleanly to Linus's tree.  As such I am
 submitting it based off of the linux-next tree to be accepted in the Xen
 tree since this patch can actually exist on its own without the need
 for the other patches in the original __phys_addr performance series.

 arch/x86/xen/mmu.c |   21 +++--
 1 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index 4a05b39..a63e5f9 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -1486,7 +1486,8 @@ static int xen_pgd_alloc(struct mm_struct *mm)
 
if (user_pgd != NULL) {
user_pgd[pgd_index(VSYSCALL_START)] =
-   __pgd(__pa(level3_user_vsyscall) | _PAGE_TABLE);
+   __pgd(__pa_symbol(level3_user_vsyscall) |
+ _PAGE_TABLE);
ret = 0;
}
 
@@ -1958,10 +1959,10 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, 
unsigned long max_pfn)
 * pgd.
 */
if (xen_feature(XENFEAT_writable_page_tables)) {
-   native_write_cr3(__pa(init_level4_pgt));
+   native_write_cr3(__pa_symbol(init_level4_pgt));
} else {
xen_mc_batch();
-   __xen_write_cr3(true, __pa(init_level4_pgt));
+   __xen_write_cr3(true, __pa_symbol(init_level4_pgt));
xen_mc_issue(PARAVIRT_LAZY_CPU);
}
/* We can't that easily rip out L3 and L2, as the Xen pagetables are
@@ -1984,10 +1985,10 @@ static RESERVE_BRK_ARRAY(pmd_t, swapper_kernel_pmd, 
PTRS_PER_PMD);
 
 static void __init xen_write_cr3_init(unsigned long cr3)
 {
-   unsigned long pfn = PFN_DOWN(__pa(swapper_pg_dir));
+   unsigned long pfn = PFN_DOWN(__pa_symbol(swapper_pg_dir));
 
-   BUG_ON(read_cr3() != __pa(initial_page_table));
-   BUG_ON(cr3 != __pa(swapper_pg_dir));
+   BUG_ON(read_cr3() != __pa_symbol(initial_page_table));
+   BUG_ON(cr3 != __pa_symbol(swapper_pg_dir));
 
/*
 * We are switching to swapper_pg_dir for the first time (from
@@ -2011,7 +2012,7 @@ static void __init xen_write_cr3_init(unsigned long cr3)
pin_pagetable_pfn(MMUEXT_PIN_L3_TABLE, pfn);
 
pin_pagetable_pfn(MMUEXT_UNPIN_TABLE,
- PFN_DOWN(__pa(initial_page_table)));
+ PFN_DOWN(__pa_symbol(initial_page_table)));
set_page_prot(initial_page_table, PAGE_KERNEL);
set_page_prot(initial_kernel_pmd, PAGE_KERNEL);
 
@@ -2036,7 +2037,7 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, 
unsigned long max_pfn)
 
copy_page(initial_page_table, pgd);
initial_page_table[KERNEL_PGD_BOUNDARY] =
-   __pgd(__pa(initial_kernel_pmd) | _PAGE_PRESENT);
+   __pgd(__pa_symbol(initial_kernel_pmd) | _PAGE_PRESENT);
 
set_page_prot(initial_kernel_pmd, PAGE_KERNEL_RO);
set_page_prot(initial_page_table, PAGE_KERNEL_RO);
@@ -2045,8 +2046,8 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, 
unsigned long max_pfn)
pin_pagetable_pfn(MMUEXT_UNPIN_TABLE, PFN_DOWN(__pa(pgd)));
 
pin_pagetable_pfn(MMUEXT_PIN_L3_TABLE,
- PFN_DOWN(__pa(initial_page_table)));
-   xen_write_cr3(__pa(initial_page_table));
+ PFN_DOWN(__pa_symbol(initial_page_table)));
+   xen_write_cr3(__pa_symbol(initial_page_table));
 
memblock_reserve(__pa(xen_start_info->pt_base),
 xen_start_info->nr_pt_frames * PAGE_SIZE);

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


Re: [Xen-devel] [PATCH 09/14] xen: events: Remove redundant check on unsigned variable

2012-11-19 Thread Tushar Behera
On 11/19/2012 04:01 PM, Ian Campbell wrote:
> On Mon, 2012-11-19 at 03:52 +, Tushar Behera wrote:
>> On 11/16/2012 10:23 PM, Jeremy Fitzhardinge wrote:
>>> To be honest I'd nack this kind of patch. The test is only redundant in the 
>>> most trivial sense that the compiler can easily optimise away. The point of 
>>> the test is to make sure that the range is OK even if the type subsequently 
>>> becomes signed (to hold a -ve error, for example).
>>>
>>> J
>>>
>>
>> The check is on the function argument which is unsigned, so checking '<
>> 0' doesn't make sense. We should force signed check only if the argument
>> is of signed type. In any case, even if irq has been assigned some error
>> value, that would be caught by the check irq >= nr_irqs.
> 
> Jeremy is (I think) arguing that this check is not redundant because
> someone might change the type of the argument to be signed and until
> then the compiler can trivially optimise the check away, so what's the
> harm in it?
> 
> I'm somewhat inclined to agree with him.
> 
> Ian.
> 
Ok, I don't have much argument against this.

-- 
Tushar Behera
___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


Re: [Xen-devel] [PATCH 09/14] xen: events: Remove redundant check on unsigned variable

2012-11-19 Thread Ian Campbell
On Mon, 2012-11-19 at 03:52 +, Tushar Behera wrote:
> On 11/16/2012 10:23 PM, Jeremy Fitzhardinge wrote:
> > To be honest I'd nack this kind of patch. The test is only redundant in the 
> > most trivial sense that the compiler can easily optimise away. The point of 
> > the test is to make sure that the range is OK even if the type subsequently 
> > becomes signed (to hold a -ve error, for example).
> > 
> > J
> > 
> 
> The check is on the function argument which is unsigned, so checking '<
> 0' doesn't make sense. We should force signed check only if the argument
> is of signed type. In any case, even if irq has been assigned some error
> value, that would be caught by the check irq >= nr_irqs.

Jeremy is (I think) arguing that this check is not redundant because
someone might change the type of the argument to be signed and until
then the compiler can trivially optimise the check away, so what's the
harm in it?

I'm somewhat inclined to agree with him.

Ian.

___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


Re: [Pv-drivers] [PATCH 0/6] VSOCK for Linux upstreaming

2012-11-19 Thread Benjamin Herrenschmidt
On Thu, 2012-11-15 at 15:32 -0600, Anthony Liguori wrote:
> 
> The concept was Nacked and that led to the abomination of virtio-serial.  If 
> an 
> address family for virtualization is on the table, we should reconsider 
> AF_VMCHANNEL.
> 
> I'd be thrilled to get rid of virtio-serial...

Ack.

Ben.


___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[PATCH] vhost-blk: Add vhost-blk support v5

2012-11-19 Thread Asias He
vhost-blk is an in-kernel virito-blk device accelerator.

Due to lack of proper in-kernel AIO interface, this version converts
guest's I/O request to bio and use submit_bio() to submit I/O directly.
So this version any supports raw block device as guest's disk image,
e.g. /dev/sda, /dev/ram0. We can add file based image support to
vhost-blk once we have in-kernel AIO interface. There are some work in
progress for in-kernel AIO interface from Dave Kleikamp and Zach Brown:

   http://marc.info/?l=linux-fsdevel&m=133312234313122

Performance evaluation:
-
1) LKVM
Fio with libaio ioengine on Fusion IO device using kvm tool
IOPS(k)Before   After   Improvement
seq-read   107  121 +13.0%
seq-write  130  179 +37.6%
rnd-read   102  122 +19.6%
rnd-write  125  159 +27.0%

2) QEMU
Fio with libaio ioengine on Fusion IO device using QEMU
IOPS(k)Before   After   Improvement
seq-read   76   123 +61.8%
seq-write  139  173 +24.4%
rnd-read   73   120 +64.3%
rnd-write  75   156 +108.0%

Userspace bits:
-
1) LKVM
The latest vhost-blk userspace bits for kvm tool can be found here:
g...@github.com:asias/linux-kvm.git blk.vhost-blk

2) QEMU
The latest vhost-blk userspace prototype for QEMU can be found here:
g...@github.com:asias/qemu.git blk.vhost-blk

Changes in v5:
- Do not assume the buffer layout
- Fix wakeup race

Changes in v4:
- Mark req->status as userspace pointer
- Use __copy_to_user() instead of copy_to_user() in vhost_blk_set_status()
- Add if (need_resched()) schedule() in blk thread
- Kill vhost_blk_stop_vq() and move it into vhost_blk_stop()
- Use vq_err() instead of pr_warn()
- Fail un Unsupported request
- Add flush in vhost_blk_set_features()

Changes in v3:
- Sending REQ_FLUSH bio instead of vfs_fsync, thanks Christoph!
- Check file passed by user is a raw block device file

Signed-off-by: Asias He 
---
 drivers/vhost/Kconfig |   1 +
 drivers/vhost/Kconfig.blk |  10 +
 drivers/vhost/Makefile|   2 +
 drivers/vhost/blk.c   | 697 ++
 drivers/vhost/blk.h   |   8 +
 5 files changed, 718 insertions(+)
 create mode 100644 drivers/vhost/Kconfig.blk
 create mode 100644 drivers/vhost/blk.c
 create mode 100644 drivers/vhost/blk.h

diff --git a/drivers/vhost/Kconfig b/drivers/vhost/Kconfig
index 202bba6..acd8038 100644
--- a/drivers/vhost/Kconfig
+++ b/drivers/vhost/Kconfig
@@ -11,4 +11,5 @@ config VHOST_NET
 
 if STAGING
 source "drivers/vhost/Kconfig.tcm"
+source "drivers/vhost/Kconfig.blk"
 endif
diff --git a/drivers/vhost/Kconfig.blk b/drivers/vhost/Kconfig.blk
new file mode 100644
index 000..ff8ab76
--- /dev/null
+++ b/drivers/vhost/Kconfig.blk
@@ -0,0 +1,10 @@
+config VHOST_BLK
+   tristate "Host kernel accelerator for virtio blk (EXPERIMENTAL)"
+   depends on BLOCK &&  EXPERIMENTAL && m
+   ---help---
+ This kernel module can be loaded in host kernel to accelerate
+ guest block with virtio_blk. Not to be confused with virtio_blk
+ module itself which needs to be loaded in guest kernel.
+
+ To compile this driver as a module, choose M here: the module will
+ be called vhost_blk.
diff --git a/drivers/vhost/Makefile b/drivers/vhost/Makefile
index a27b053..1a8a4a5 100644
--- a/drivers/vhost/Makefile
+++ b/drivers/vhost/Makefile
@@ -2,3 +2,5 @@ obj-$(CONFIG_VHOST_NET) += vhost_net.o
 vhost_net-y := vhost.o net.o
 
 obj-$(CONFIG_TCM_VHOST) += tcm_vhost.o
+obj-$(CONFIG_VHOST_BLK) += vhost_blk.o
+vhost_blk-y := blk.o
diff --git a/drivers/vhost/blk.c b/drivers/vhost/blk.c
new file mode 100644
index 000..f0f118a
--- /dev/null
+++ b/drivers/vhost/blk.c
@@ -0,0 +1,697 @@
+/*
+ * Copyright (C) 2011 Taobao, Inc.
+ * Author: Liu Yuan 
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ * Author: Asias He 
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2.
+ *
+ * virtio-blk server in host kernel.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "vhost.c"
+#include "vhost.h"
+#include "blk.h"
+
+static DEFINE_IDA(vhost_blk_index_ida);
+
+enum {
+   VHOST_BLK_VQ_REQ = 0,
+   VHOST_BLK_VQ_MAX = 1,
+};
+
+struct req_page_list {
+   struct page **pages;
+   int pages_nr;
+};
+
+struct vhost_blk_req {
+   struct llist_node llnode;
+   struct req_page_list *pl;
+   struct vhost_blk *blk;
+
+   struct iovec *iov;
+   int iov_nr;
+
+   struct bio **bio;
+   atomic_t bio_nr;
+
+   struct iovec status[1];
+
+   sector_t sector;
+   int write;
+   u16 head;
+   long len;
+};
+
+struct vhost_blk {
+   struct task_struct *host_kick;
+   struct iovec iov[UIO_MAXIOV];
+   struct vhost_blk_req *reqs;
+   struct vhost_virtqueue vq;
+   struct llist_head llhead;
+   struct vhost_dev dev;
+   u16