Bug 847226

Summary: [virtio-win][viostor]Guest 2008-32bit BSOD during resume from s4 after hot plug virtio block disk
Product: Red Hat Enterprise Linux 7 Reporter: Yang Zhao <yanzhao>
Component: virtio-winAssignee: Vadim Rozenfeld <vrozenfe>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.0CC: amit.shah, bcao, bsarathy, hhuang, juzhang, knoel, mdeng, michen, rbalakri, virt-bugs, virt-maint, vrozenfe
Target Milestone: rc   
Target Release: 7.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-03-04 06:23:26 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 923626, 1105334    

Description Yang Zhao 2012-08-10 07:50:00 UTC
Description of problem:
Guest 2008-32bit BSOD during resume from s4 after hot plug virtio block disk

Version-Release number of selected component (if applicable):
qemu-kvm-0.12.1.2-2.302.el6.x86_64
2.6.32-294.el6.x86_64
virtio-win-prewhql-32

How reproducible:
100%

Steps to Reproduce:
1.Start vm:
/usr/libexec/qemu-kvm -cpu SandyBridge,+x2apic -smp 4 -m 2G -device virtio-balloon-pci,id=balloon0 -k en-us -usb -device usb-tablet,id=tablet0 -drive file=win2k8-32.qcow2,format=qcow2,cache=none,if=none,id=scsi0,media=disk -device virtio-blk-pci,drive=scsi0,id=ide-disk0 -netdev tap,id=hostnet0,vhost=on,script=/etc/qemu-ifup -device e1000,netdev=hostnet0,id=net0,mac=00:12:7a:00:11:12 -rtc base=localtime,clock=host,driftfix=slew -name win2k8 -spice port=5931,disable-ticketing -vga qxl -uuid a4ef4247-36ba-4f37-bf98-e82de9382532 -monitor stdio -boot cd -bios /usr/share/seabios/bios-pm.bin -drive file=disk1.qcow2,format=qcow2,cache=none,if=none,id=scsi1,media=disk  -device virtio-blk-pci,drive=scsi1,id=ide-disk1  -drive file=disk2.qcow2,format=qcow2,cache=none,if=none,id=scsi2,media=disk -device virtio-blk-pci,drive=scsi2,id=ide-disk2 -drive file=disk3.raw,format=raw,cache=none,if=none,id=scsi3,media=disk -device virtio-blk-pci,drive=scsi3,id=ide-disk3
2.hotplug virtio block disk
(qemu) __com.redhat_drive_add  file=test3.raw,format=raw,id=blkdisk3
(qemu) device_add virtio-blk-pci,drive=blkdisk3,id=blkdisk3
3.S4 guest
4.Resume Guest with the same CLI in step 1

Actual result:
Guest BSOD

Expected results:
no BSOD occurs

Additional info:

Comment 1 Yang Zhao 2012-08-10 07:54:19 UTC
0: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high.  This is usually
caused by drivers using improper addresses.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: 00000004, memory referenced
Arg2: 00000008, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: 81f34852, address which referenced memory

Debugging Details:
------------------


READ_ADDRESS:  00000004 

CURRENT_IRQL:  8

FAULTING_IP: 
viostor+2852
81f34852 8b5004          mov     edx,dword ptr [eax+4]

DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT

BUGCHECK_STR:  0xD1

PROCESS_NAME:  System

TRAP_FRAME:  8039dc3c -- (.trap 0xffffffff8039dc3c)
ErrCode = 00000000
eax=00000000 ebx=85f996f0 ecx=7d9996f0 edx=00000000 esi=85f99288 edi=8596b1ec
eip=81f34852 esp=8039dcb0 ebp=8039dcc8 iopl=0         nv up ei pl nz na po nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010202
viostor+0x2852:
81f34852 8b5004          mov     edx,dword ptr [eax+4] ds:0023:00000004=????????
Resetting default scope

LAST_CONTROL_TRANSFER:  from 81f34852 to 81864fb9

STACK_TEXT:  
8039dc3c 81f34852 badb0d00 00000000 00000000 nt!KiTrap0E+0x2e1
WARNING: Stack unwind information not available. Following frames may be wrong.
8039dcc8 81f468fc 8596b1ec 00000898 00000000 viostor+0x2852
8039dce4 81f348bf 8596b102 81f34808 855790b4 storport!StorPortSynchronizeAccess+0x31
8039dcf8 81f33b23 8596b1ec 855790b4 85ac50e8 viostor+0x28bf
8039dd14 81f3d2ee 8596b1ec 855790b4 8039dd4c viostor+0x1b23
8039dd24 81f3d806 85ac51a0 855790b4 85f99008 storport!RaCallMiniportStartIo+0x1e
8039dd4c 81f4396c 85ac50e8 85976520 85a025f8 storport!RaidAdapterPostScatterGatherExecute+0xe2
8039dd64 81bd51f4 85ac5030 00000000 85f9905c storport!RaidpAdapterContinueScatterGather+0x3f
8039dd90 81f457dc 85f9905c 85ac5030 85a02598 hal!HalBuildScatterGatherList+0x1ba
8039ddc0 81f43a08 85ac52ac 85ac5030 85a02598 storport!RaidDmaBuildScatterGatherList+0x2c
8039de00 81f3d712 85ac52ac 00010000 8039de30 storport!RaidAdapterScatterGatherExecute+0x65
8039de10 81f409a2 85ac50e8 85f99008 85953358 storport!RaidAdapterExecuteXrb+0x24
8039de30 81f460eb 00000000 00000001 8039de50 storport!RaUnitStartIo+0x8b
8039de60 81f4adf1 85953398 8039de7c 81f4b3da storport!RaidRestartIoQueue+0x73
8039de6c 81f4b3da 859764a8 85338008 8039de9c storport!RaidUnitRestartQueue+0x1b
8039de7c 81f40142 859764a8 85338008 85338008 storport!RaUnitUnlockQueueSrb+0x23
8039de9c 81f3ff43 859764a8 85338008 8798a000 storport!RaUnitScsiIrp+0x1ba
8039deb8 8185b976 859763f0 85338008 85338008 storport!RaDriverScsiIrp+0x60
8039ded0 87983ad9 8533807b 85338008 859f6ac8 nt!IofCallDriver+0x63
8039defc 818be1fb 859f6ac8 85338008 859f6dd0 CLASSPNP!ClasspPowerUpCompletion+0x33b
8039df34 81f3d047 859f6df4 8039df78 81f40658 nt!IopfCompleteRequest+0x11d
8039df40 81f40658 85338008 00000001 00000000 storport!RaidCompleteRequestEx+0x1c
8039df78 81f3d31f 85f98008 81911300 8039dff4 storport!RaidUnitCompleteRequest+0x8f
8039df88 818c16a2 85ac50a4 85ac5030 00000000 storport!RaidpAdapterDpcRoutine+0x28
8039dff4 818bf2d5 9c95b958 00000000 00000000 nt!KiRetireDpcList+0x147
8039dff8 9c95b958 00000000 00000000 00000000 nt!KiDispatchInterrupt+0x45
818bf2d5 00000000 0000001b 00c7850f bb830000 0x9c95b958


STACK_COMMAND:  kb

FOLLOWUP_IP: 
viostor+2852
81f34852 8b5004          mov     edx,dword ptr [eax+4]

SYMBOL_STACK_INDEX:  1

SYMBOL_NAME:  viostor+2852

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: viostor

IMAGE_NAME:  viostor.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  501d41de

FAILURE_BUCKET_ID:  0xD1_viostor+2852

BUCKET_ID:  0xD1_viostor+2852

Followup: MachineOwner
---------

Comment 4 Yang Zhao 2012-08-10 08:19:41 UTC
Tried w/ resume from s4 after hotunplug ,does not hit this issue.

Comment 9 Ronen Hod 2014-08-06 09:07:05 UTC
QE, please check again with build-88.

Comment 10 Min Deng 2014-08-14 07:07:03 UTC
QE re-test the bug on both rhel6.6 host and rhel7 host
On rhel6.6 host
virtio-win-prewhql-0.1-89
kernel-2.6.32-492.el6.x86_64
qemu-kvm-rhev-0.12.1.2-2.430.el6.x86_64
seabios-0.6.1.2-28.el6.x86_64
On rhel7 host
virtio-win-prewhql-0.1-89
kernel-3.10.0-143.el7.x86_64
qemu-kvm-rhev-2.1.0-1.el7.x86_64.rpm
seabios-1.7.5-4.el7.x86_64.rpm
seabios-bin-1.7.5-4.el7.noarch.rpm
seavgabios-bin-1.7.5-4.el7.noarch.rpm
steps,
1.boot up guest 
  /usr/libexec/qemu-kvm -cpu SandyBridge,+x2apic -smp 4 -m 2G -device virtio-balloon-pci,id=balloon0 -k en-us -usb -device usb-tablet,id=tablet0 -drive file=win2k8-32.qcow2,format=qcow2,cache=none,if=none,id=scsi0,media=disk -device virtio-blk-pci,drive=scsi0,id=ide-disk0 -netdev tap,id=hostnet0,vhost=on,script=/etc/qemu-ifup -device e1000,netdev=hostnet0,id=net0,mac=00:12:7a:00:11:12 -rtc base=localtime,clock=host,driftfix=slew -name win2k8 -spice port=5931,disable-ticketing -vga qxl -uuid a4ef4247-36ba-4f37-bf98-e82de9382532 -monitor stdio -boot cd  -drive file=disk1.qcow2,format=qcow2,cache=none,if=none,id=scsi1,media=disk  -device virtio-blk-pci,drive=scsi1,id=ide-disk1  -drive file=disk2.qcow2,format=qcow2,cache=none,if=none,id=scsi2,media=disk -device virtio-blk-pci,drive=scsi2,id=ide-disk2 -drive file=disk3.raw,format=raw,cache=none,if=none,id=scsi3,media=disk -device virtio-blk-pci,drive=scsi3,id=ide-disk3 -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0
2.Hot-plug disk
(qemu) __com.redhat_drive_add  file=test3.raw,format=raw,id=blkdisk3
(qemu) device_add virtio-blk-pci,drive=blkdisk3,id=blkdisk3
3.S4 guest
4.Resume Guest with the same CLI in step 1

Actual results,there isn't bsod 
Expected results,there isn't bsod

 So the bug has been fixed on virtio-win-prewhql-0.1-89,thanks for developer's efforts

Comment 12 Mike Cao 2015-03-04 06:17:23 UTC
referring to comment#10 the bug has been fixed ald