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.