linux/drivers/hv
Thomas Gleixner 1aec169673 x86: Hyperv: Cleanup the irq mess
The vmbus/hyperv interrupt handling is another complete trainwreck and
probably the worst of all currently in tree.

If CONFIG_HYPERV=y then the interrupt delivery to the vmbus happens
via the direct HYPERVISOR_CALLBACK_VECTOR. So far so good, but:

  The driver requests first a normal device interrupt. The only reason
  to do so is to increment the interrupt stats of that device
  interrupt. For no reason it also installs a private flow handler.

  We have proper accounting mechanisms for direct vectors, but of
  course it's too much effort to add that 5 lines of code.

  Aside of that the alloc_intr_gate() is not protected against
  reallocation which makes module reload impossible.

Solution to the problem is simple to rip out the whole mess and
implement it correctly.

First of all move all that code to arch/x86/kernel/cpu/mshyperv.c and
merily install the HYPERVISOR_CALLBACK_VECTOR with proper reallocation
protection and use the proper direct vector accounting mechanism.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: K. Y. Srinivasan <kys@microsoft.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linuxdrivers <devel@linuxdriverproject.org>
Cc: x86 <x86@kernel.org>
Link: http://lkml.kernel.org/r/20140223212739.028307673@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2014-03-04 17:37:54 +01:00
..
channel_mgmt.c Drivers: hv: vmbus: Fix a bug in channel rescind code 2013-10-19 19:53:46 -07:00
channel.c hyperv: Add support for physically discontinuous receive buffer 2014-01-27 16:40:45 -08:00
connection.c Drivers: hv: vmbus: Don't timeout during the initial connection with host 2014-02-07 08:27:34 -08:00
hv_balloon.c Drivers: hv: remove HV_DRV_VERSION 2013-08-02 11:34:30 +08:00
hv_kvp.c Drivers: hv: util: Correctly support ws2008R2 and earlier 2013-09-26 14:20:21 -07:00
hv_snapshot.c Drivers: hv: util: Correctly support ws2008R2 and earlier 2013-09-26 14:20:21 -07:00
hv_util.c Merge 3.12-rc3 into char-misc-next 2013-09-29 18:27:03 -07:00
hv.c drivers: hv: Mark the function hv_synic_free_cpu() as static in hv.c 2013-12-18 16:41:52 -08:00
hyperv_vmbus.h hv: delete struct hv_dev_port_info 2013-09-26 09:01:17 -07:00
Kconfig x86: Make Linux guest support optional 2013-03-04 13:14:25 -08:00
Makefile Drivers: hv: Add a new driver to support host initiated backup 2013-03-15 12:12:36 -07:00
ring_buffer.c drivers: hv: check interrupt mask before read_index 2013-06-24 16:24:17 -07:00
vmbus_drv.c x86: Hyperv: Cleanup the irq mess 2014-03-04 17:37:54 +01:00