mbox

Maverick on Hyper-V - fixes for instability

Message ID 4D9DBA2C.2010904@canonical.com
State New
Headers show

Pull-request

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

Message

Tim Gardner April 7, 2011, 1:20 p.m. UTC
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@microsoft.com<mailto:mike.sterling@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(-)

Comments

Brad Figg April 7, 2011, 2:48 p.m. UTC | #1
On 04/07/2011 06:20 AM, Tim Gardner wrote:
> 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@microsoft.com<mailto:mike.sterling@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(-)

The patches look good to me, they are well contained and specific to the issues.
Plus it's all in staging.

We'll need to get the SRU justification text added but other than that ...

Acked-by: Brad Figg <brad.figg@canonical.com>