[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] A question about SYSENTER/SYSEXIT in HVM guest
On Monday 06 April 2009 15:11:52 Guofu Xiang wrote: > The CPU type of our server is Intel Xeon E5310, and the OS is Fedora 8. Xen > 3.2 is installed by compilation. When the HVM guest is x86_32 Fedora 8, the > system call is implemented by instruction - *int $80h*. Our debug result by > gdb is as follow. > > Dump of assembler code for function __kernel_vsyscall: > 0xb7f87400 <__kernel_vsyscall+0>: int $0x80 > 0xb7f87402 <__kernel_vsyscall+2>: ret > End of assembler dump. > > However, when the HVM guest is x86_64 Fedora 8, the system call is > implemented by instruction - *syscall*. The debug result is as fellow: > > Dump of assembler code for function getuid: > 0x00000036e7296220 <getuid+0>: mov $0x66,%eax > 0x00000036e7296225 <getuid+5>: syscall > 0x00000036e7296227 <getuid+7>: retq > > As far as I know, fast system call is implemented by *sysenter* on Intel > CPU, and *syscall* on AMD CPU. Why the debug result is *syscall*, rather > than *sysenter*? > If the HVM guest is x86_32 Fedora 8, can we set the system call > implementation by *sysenter*? In x86_64 OS, is all system call implemented > by *syscall*? > > Thank you for your response! The Linux kernel has several vdso pages, one for int 0x80, one for syscall and one for sysenter. The Linux kernel maps one of them into userspace depending on the cpuid vendor string. In 64bit mode, the glibc always uses syscall, therefore all applications use syscall instruction. If you run a 32bit application, the glibc uses the vdso page (if its version is new enough or patched by the distributor). I don't know the exact version since glibc uses the vdso, Slackware 12.1.0 comes with an unpatched glibc 2.4 and it doesn't use the vdso page. It uses syscall in 64bit mode and int 0x80 in 32bit mode. SLES 10.0 comes with a patched glibc 2.3.5 and uses the vdso page in 32bit mode. Christoph -- ---to satisfy European Law for business letters: Advanced Micro Devices GmbH Karl-Hammerschmidt-Str. 34, 85609 Dornach b. Muenchen Geschaeftsfuehrer: Jochen Polster, Thomas M. McCoy, Giuliano Meroni Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |