Bug 846632 - cannot export 'nx' flag to the windows_2k3_sp2_64bit guest correctly on the rhel5.9 64bit host
Summary: cannot export 'nx' flag to the windows_2k3_sp2_64bit guest correctly on the r...
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kvm
Version: 5.9
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: rc
: ---
Assignee: Virtualization Maintenance
QA Contact: Virtualization Bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-08-08 10:00 UTC by Sibiao Luo
Modified: 2012-08-09 02:46 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-08-09 02:46:14 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Sibiao Luo 2012-08-08 10:00:27 UTC
Description of problem:
boot a windows_2k3_sp2_64bit guest with '-cpu qemu64,+nx' on rhel5.9 64bit host(SandyBridge host), 'nx' was not exported to guest correctly.
btw, I also test the rhel5.9 64bit guest, the 'nx' can be found via 'cat /proc/cpuinfo'.

Version-Release number of selected component (if applicable):
host info:
# uname -r && rpm -q kvm
2.6.18-333.el5
kvm-83-258.el5
guest info:
windows_2k3_sp2_64bit

How reproducible:
100%

Steps to Reproduce:
1.check the ‘nx’ is supported on host(should enable 'nx' in host BIOS).
# cat /proc/cpuinfo
2.boot guest with '-cpu qemu64,+nx'.
eg: # /usr/libexec/qemu-kvm -m 2G -smp 2,cores=2,threads=1,sockets=1 -M rhel5.6.0 -cpu qemu64,+nx -name cpu_clustering_test -drive file=/home/windows2k3_x64_sp2.raw,format=raw,media=disk,if=ide,cache=none,werror=stop,boot=on -net nic,vlan=0,model=e1000,macaddr=08:2E:5F:0A:0D:1A -net tap,sndbuf=0,vlan=0,script=/etc/qemu-ifup,downscript=no -balloon none -uuid `uuidgen` -monitor unix:/tmp/virt-nic-sluo,server,nowait -spice port=5931,disable-ticketing -qxl 1 -usbdevice tablet -soundhw ac97 -no-hpet -rtc-td-hack -no-kvm-pit-reinjection -boot c -monitor stdio
3.check cpu flag on guest.
# x86info -a -f

Actual results:
after the step 3,
can not find 'nx' flag in windows_2k3_sp2_64bit guest via ‘x86info -a -f’.

Expected results:
can export 'nx' flag to windows guest correctly.

Additional info:
host cpuinfo:
processor	: 7
vendor_id	: GenuineIntel
cpu family	: 6
model		: 42
model name	:         Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
stepping	: 7
cpu MHz		: 1600.000
cache size	: 8192 KB
physical id	: 0
siblings	: 8
core id		: 3
cpu cores	: 4
apicid		: 7
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
bogomips	: 6784.60
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management: [8]

Comment 1 RHEL Program Management 2012-08-08 10:08:10 UTC
This request was evaluated by Red Hat Product Management for inclusion
in a Red Hat Enterprise Linux release.  Product Management has
requested further review of this request by Red Hat Engineering, for
potential inclusion in a Red Hat Enterprise Linux release for currently
deployed products.  This request is not yet committed for inclusion in
a release.

Comment 2 Sibiao Luo 2012-08-08 11:03:02 UTC
(In reply to comment #0)
> Description of problem:
> boot a windows_2k3_sp2_64bit guest with '-cpu qemu64,+nx' on rhel5.9 64bit
> host(SandyBridge host), 'nx' was not exported to guest correctly.
> btw, I also test the rhel5.9 64bit guest, the 'nx' can be found via 'cat
> /proc/cpuinfo'.
> 
Hi all,

   I also tried windows_2k3_sp2_64bit guest on the rhel6.4 64bit host(kernel-2.6.32-294.el6.x86_64) with '-cpu SandyBridge,+nx' as the same steps. But test result is that the 'nx' flag can not be exported to the guest correctly. So, rhel6 also hit this issue.

Best wish.
sluo

Comment 3 Sibiao Luo 2012-08-08 14:56:24 UTC
(In reply to comment #0)
> Description of problem:
> 
> btw, I also test the rhel5.9 64bit guest, the 'nx' can be found via 'cat
> /proc/cpuinfo'.
> 
we also can use 'x86info -a -f' to check it in guest. I paste the hex dump of the CPUID entries here, the hex dump is the actual information returned by the CPU and should allow us to see what exactly is being returned.
--------------------------------------------------------------------------
CPU #2
eax in: 0x00000000, eax = 00000004 ebx = 756e6547 ecx = 6c65746e edx = 49656e69
eax in: 0x00000001, eax = 00000663 ebx = 01020800 ecx = 80000001 edx = 178bfbfd
eax in: 0x00000002, eax = 00000001 ebx = 00000000 ecx = 00000000 edx = 002c307d
eax in: 0x00000003, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000
eax in: 0x00000004, eax = 04000121 ebx = 01c0003f ecx = 0000003f edx = 00000001

eax in: 0x80000000, eax = 8000000a ebx = 68747541 ecx = 444d4163 edx = 69746e65
eax in: 0x80000001, eax = 078bfbfd ebx = 00000000 ecx = 00000002 edx = 2191abfd
eax in: 0x80000002, eax = 554d4551 ebx = 72695620 ecx = 6c617574 edx = 55504320
eax in: 0x80000003, eax = 72657620 ebx = 6e6f6973 ecx = 392e3020 edx = 0000312e
eax in: 0x80000004, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000
eax in: 0x80000005, eax = 01ff01ff ebx = 01ff01ff ecx = 40020140 edx = 40020140
eax in: 0x80000006, eax = 00000000 ebx = 42004200 ecx = 02008140 edx = 00000000
eax in: 0x80000007, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000
eax in: 0x80000008, eax = 00003028 ebx = 00000000 ecx = 00000001 edx = 00000000
eax in: 0x80000009, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000
eax in: 0x8000000a, eax = 00000001 ebx = 00000010 ecx = 00000000 edx = 00000000

According the 'Intel Software Developer Manual, Volume 2, CPUID instruction', the nx is on CPUID eax=80000001, edx, bit 20.
eax in: 0x80000001, eax = 078bfbfd ebx = 00000000 ecx = 00000002 edx = 2191abfd
0x2191abfd has bit 20 set.

So, the 'nx' flag can be exported to the rhel guest correctly. Thanks for ehabkos's kindly help.

Comment 4 Sibiao Luo 2012-08-09 02:46:14 UTC
(In reply to comment #3)
> (In reply to comment #0)
> > Description of problem:
> > 
> > btw, I also test the rhel5.9 64bit guest, the 'nx' can be found via 'cat
> > /proc/cpuinfo'.
> > 
> we also can use 'x86info -a -f' to check it in guest. I paste the hex dump
> of the CPUID entries here, the hex dump is the actual information returned
> by the CPU and should allow us to see what exactly is being returned.
> 
> According the 'Intel Software Developer Manual, Volume 2, CPUID
> instruction', the nx is on CPUID eax=80000001, edx, bit 20.
> eax in: 0x80000001, eax = 078bfbfd ebx = 00000000 ecx = 00000002 edx =
> 2191abfd
> 0x2191abfd has bit 20 set.
> 
I also check the window guest' hex dump via 'x86info -a -f' in command prompt.
the windows guest is just hiding the 'nx' flag, i check the CPUID that the nx can be export to guest correctly.
--------------------------------------------------------------------------

CPU #2

eax in: 0x00000000, eax = 00000004 ebx = 756e6547 ecx = 6c65746e edx = 49656e69

eax in: 0x00000001, eax = 00000663 ebx = 00020800 ecx = 80000001 edx = 178bfbfd

eax in: 0x00000002, eax = 00000001 ebx = 00000000 ecx = 00000000 edx = 002c307d

eax in: 0x00000003, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000

eax in: 0x00000004, eax = 00000003 ebx = 00000000 ecx = 00000000 edx = 00000000



eax in: 0x80000000, eax = 8000000a ebx = 68747541 ecx = 444d4163 edx = 69746e65

eax in: 0x80000001, eax = 078bfbfd ebx = 00000000 ecx = 00000002 edx = 2191abfd

eax in: 0x80000002, eax = 554d4551 ebx = 72695620 ecx = 6c617574 edx = 55504320

eax in: 0x80000003, eax = 72657620 ebx = 6e6f6973 ecx = 392e3020 edx = 0000312e

eax in: 0x80000004, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000

eax in: 0x80000005, eax = 01ff01ff ebx = 01ff01ff ecx = 40020140 edx = 40020140

eax in: 0x80000006, eax = 00000000 ebx = 42004200 ecx = 02008140 edx = 00000000

eax in: 0x80000007, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000

eax in: 0x80000008, eax = 00003028 ebx = 00000000 ecx = 00000001 edx = 00000000

eax in: 0x80000009, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 00000000

eax in: 0x8000000a, eax = 00000001 ebx = 00000010 ecx = 00000000 edx = 00000000

the nx is on CPUID eax=80000001, edx, bit 20.
eax in: 0x80000001, eax = 078bfbfd ebx = 00000000 ecx = 00000002 edx = 2191abfd

above all, this issue is not bug, close it to NOTABUG.


Note You need to log in before you can comment on or make changes to this bug.