> -----Original Message-----
> From: Jan Beulich [mailto:jbeulich@xxxxxxxxxx]
> Sent: Thursday, March 06, 2008 12:42 AM
> To: john bryant; Santos, Jose Renato G
> Cc: oprofile-list@xxxxxxxxxxxxxxxxxxxxx;
> xen-devel@xxxxxxxxxxxxxxxxxxx; xen-users@xxxxxxxxxxxxxxxxxxx
> Subject: [Xen-devel] RE: general protection fault: 0000 [#1]
>
> 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().
>
To use performance counters you also have to write MSRs, not
only read them. I am not familiar with MSR emulation in Xen but
I think it should not allow guests to arbitrary write to them.
Anyway, I did not know you could actualy read any MSR in Xen.
Thanks for pointing this out.
> 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).
>
Most performance counters are model specific, although more recent
CPUs have now a subset of counters that more general and expected to
be supported across new models of the same architecture
(architectural counters)
Renato
> Jan
>
> >>> "Santos, Jose Renato G" <joserenato.santos@xxxxxx> 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@xxxxxxxxxxxxxxxxxxxxx
> [mailto:oprofile-list-bounces@xxxxxxxxxxxxxxxxxxxxx] On
> Behalf Of john bryant
> Sent: Wednesday, March 05, 2008 8:14 AM
> To: xen-users@xxxxxxxxxxxxxxxxxxx;
> xen-devel@xxxxxxxxxxxxxxxxxxx; oprofile-list@xxxxxxxxxxxxxxxxxxxxx
> 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:[<ee07e023>] 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=d9eae000 task=c0713030)
> 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:
> [<c0135f05>] __link_module+0x0/0x1f
> [<c013d301>] stop_machine_run+0x2e/0x34 [<c0137381>]
> sys_init_module+0x13e/0x1afb [<c011e45a>] printk+0x0/0x1f
> [<c0162dc1>] do_sync_read+0xc3/0xff [<c0130e9e>]
> autoremove_wake_function+0x0/0x37 [<c01540e7>]
> do_brk+0x21b/0x220 [<c01c4ca4>]
> _atomic_dec_and_lock+0x40/0x5c [<c0179452>] dput+0xc3/0x12a
> [<c0163fe5>] __fput+0x137/0x18c [<c017d1e0>]
> mntput_no_expire+0x13/0x6c [<c0105289>] syscall_call+0x7/0xb
> Code: Bad EIP value.
>
>
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|