From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: RE: general protection fault: 0000 [#1] Date: Thu, 06 Mar 2008 08:42:16 +0000 Message-ID: <47CFBC78.76E4.0078.0@novell.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: john bryant , Jose Renato G Santos Cc: "xen-devel@lists.xensource.com" , "xen-users@lists.xensource.com" , "oprofile-list@lists.sourceforge.net" List-Id: xen-devel@lists.xenproject.org Actually, it's not exactly that way - as long as an MSR can be read by Xen (i.e. is implemented), guests are permitted to read them (see the default case in the rdmsr handling part of emulate_privileged_op(). However, I have a hard time understanding what need profiling code would have to access MSR 0x119 (which, according to my docs, is PentiumPro/II/III specific). Jan >>> "Santos, Jose Renato G" 05.03.08 19:12 >>> No. In Xen, kernel and modules for PV guests run in ring 1, Xen provide = virtualization for some MSRs enabling access to them from ring 1, but this = is not available for performance counter MSRs. For OProfile we have a Xen = component (xenoprof) that acess the performance counters. Oprofile kernel = module for Xen is modified to use hypercalls in order to get the = performance counters programmed instead of accessing MSRs directly. Regards Renato ________________________________ From: oprofile-list-bounces@lists.sourceforge.net [mailto:oprofile-list-bou= nces@lists.sourceforge.net] On Behalf Of john bryant Sent: Wednesday, March 05, 2008 8:14 AM To: xen-users@lists.xensource.com; xen-devel@lists.xensource.com; = oprofile-list@lists.sourceforge.net=20 Subject: general protection fault: 0000 [#1] hi, I have written a small kernel module to profile an event in xen. When i = invoke "rdmsr", I get general protection error. As far as i understand, = any kernel module is in CPL0, then rdmsr should work in kernel module. Any = help ? Below is log from syslog -John general protection fault: 0000 [#1] SMP Modules linked in: hello_printk autofs4 hidp l2cap bluetooth sunrpc ipv6 = binfmt_misc dm_mirror dm_multipath dm_mod video thermal processor fan = container button battery ac lp nvram tsdev evdev i2c_i801 i2c_core piix = tg3 r8169 parport_pc parport serio_raw serial_core usbhid rtc ahci libata = shpchp pci_hotplug ext3 jbd ehci_hcd ohci_hcd uhci_hcd usbcore CPU: 0 EIP: 0061:[] Not tainted VLI EFLAGS: 00010296 (2.6.16.33-xen #337) EIP is at hello_init+0x23/0x8d [hello_printk] eax: 00000000 ebx: 00000119 ecx: 00000119 edx: ff1bbfb4 esi: d9de86b0 edi: d9de8400 ebp: d9de86d8 esp: d9eafe1c ds: 007b es: 007b ss: 0069 Process insmod (pid: 11521, threadinfo=3Dd9eae000 task=3Dc0713030) Stack: <0>ee1df034 ca680746 0000b06e c0135f05 c013d301 ee1df400 d9de86b0 = d9de8400 c0137381 ee1df448 c03916c1 ee1df40c 00000000 00000008 00000003 = 00000000 ee1df40c ee1df448 ee1df400 00000000 00000000 00000000 00000000 = 00000000 Call Trace: [] __link_module+0x0/0x1f [] stop_machine_run+0x2e/0x34 [] sys_init_module+0x13e/0x1afb [] printk+0x0/0x1f [] do_sync_read+0xc3/0xff [] autoremove_wake_function+0x0/0x37 [] do_brk+0x21b/0x220 [] _atomic_dec_and_lock+0x40/0x5c [] dput+0xc3/0x12a [] __fput+0x137/0x18c [] mntput_no_expire+0x13/0x6c [] syscall_call+0x7/0xb Code: Bad EIP value.