Maverick on Hyper-V - fixes for instability

Tim Gardner tim.gardner at canonical.com
Thu Apr 7 13:20:44 UTC 2011


On 04/06/2011 11:53 AM, Mike Sterling wrote:
> If a user wants to run Linux in a Hyper-V virtual machine (Hyper-V is
> Microsoft's virtualization solution, included in Windows Server 2008
> and higher), Microsoft provides a set of drivers that enable the use
> of the high-performance synthetic devices (the equivalent of Xen's PV
> drivers). Maverick includes some of our drivers by default -
> hv_vmbus, hv_netvsc, and hv_utils. However, that version of the
> kernel has an bug in the hv_netvsc driver (and the underlying
> hv_vmbus driver) that results in multiple issues - specifically,
> you'll see a number of errors in /var/log/messages referring to
> schedule while atomic. After a while, the synthetic networking device
> will end up losing its connection.
>
>
>
> The issue's been fixed upstream as part of the cleanup we've been
> doing to exit staging, and we have created a patch set against
> Maverick that fixes it. The patch set consists of four patches:
>
>
>
> 1.       Ubuntu-10-10-network-atomic-fix: Change the allocation of
> memory for the hv_netvsc driver from GFP_KERNEL to GFP_ATOMIC.
>
> 2.       Ubuntu-10-10-network-stack-print-fix: A wrong check was done
> when freeing the network device, resulting in a stack trace output
> which seemed to erroneously indicate that there was a problem.
>
> 3.       Ubuntu-10-10-vmbus-atomic-fix: Change the allocation of
> memory for the hv_vmbus driver from GFP_KERNEL to GFP_ATOMIC.
>
> 4.
> Ubuntu-10-10-backport-of-mainline-loss-of-network-fix-for-Hyper-V:
> Locking is required when tweaking bits located in a shared page,
> usethe sync_version of bitops. Without this change vmbus_on_event()
> will miss events and as a result, vmbus_isr() will not schedule the
> receive tasklet.
>
>
>
> This does not hit Natty, as we've fixed the issue in later kernels.
> However, given the large install base of Maverick, we'd like to get
> this included so customers can use the synthetic devices.
>
>
>
> Symptoms:
>
>
>
> [  807.276091] BUG: scheduling while atomic: swapper/0/0x10000100
>
> [  807.277476] Modules linked in: parport_pc ppdev binfmt_misc
> hv_utils(C) hv_netvsc(C) psmouse lp serio_raw hv_vmbus(C) i2c_piix4
> parport floppy tulip
>
> [  807.294414] Modules linked in: parport_pc ppdev binfmt_misc
> hv_utils(C) hv_netvsc(C) psmouse lp serio_raw hv_vmbus(C) i2c_piix4
> parport floppy tulip
>
> [  807.337981] Pid: 0, comm: swapper Tainted: G      D  C
> 2.6.35-22-generic #33-Ubuntu Virtual Machine/Virtual Machine
>
> [  807.339352] EIP: 0060:[<c012c21a>] EFLAGS: 00000246 CPU: 0
>
> [  807.340699] EIP is at native_safe_halt+0xa/0x10
>
>
> This has also been logged on Launchpad at
> https://bugs.launchpad.net/ubuntu/+source/linux-meta/+bug/752064
>
>
> Please let me know if you have any questions on this.
>
> Thanks,
>
> -M
>
> mike sterling | program manager open source technology center
> http://www.microsoft.com/opensource/
>
> t: +1 425 707 7730 f:  +1 425 708 1799 e:
> mike.sterling at microsoft.com<mailto:mike.sterling at microsoft.com> t:
> http://twitter.com/mikester01
>
>
>

Mike - these patches look fine to me. I've package them as a pull request.

Brad/Steve - please review.

---
The following changes since commit 5ef5b0c54fdaf6c915a6585485fefb2e85462df9:
   Manoj Iyer (1):
         UBUNTU: SAUCE: (drop after 2.6.38) add support for Lenovo 
tablet ID (0xE6)

are available in the git repository at:

   git://kernel.ubuntu.com/rtg/ubuntu-maverick.git ms-lp752064

Haiyang Zhang (1):
       staging: hv: Fix the WARN_ON condition in free_net_device()

Tim Gardner (2):
       UBUNTU: SAUCE: staging: hv: Fixed issue with scheduling while 
atomic in hv_vmbus
       UBUNTU: SAUCE: Backport of mainline loss of network fix for Hyper-V

Timo Teräs (1):
       staging: hv: fix netvsc sleeping while atomic

  drivers/staging/hv/channel.c       |    8 ++++----
  drivers/staging/hv/connection.c    |    4 ++--
  drivers/staging/hv/netvsc.c        |    4 ++--
  drivers/staging/hv/osd.c           |    2 +-
  drivers/staging/hv/vmbus.c         |    2 +-
  drivers/staging/hv/vmbus_private.h |    2 +-
  6 files changed, 11 insertions(+), 11 deletions(-)
-- 
Tim Gardner tim.gardner at canonical.com




More information about the kernel-team mailing list