>Synopsis:      crash with performance counter (RDPMC) on OpenBSD as QEMU quest 
>VM
>Category:      Crash / system hang
>Environment:
        System      : OpenBSD 5.8 and -current (snapshot: 2016-03-11)
        Details     : OpenBSD 5.8 (GENERIC) #0: Fri Oct 23 11:15:05 CEST 2015
                         
[email protected]:/usr/src/sys/arch/amd64/compile/GENERIC

        Architecture: OpenBSD.amd64
        Machine     : amd64
>Description:
        I run OpenBSD on my VPS as a QEMU quest VM, when I run `pctr` as a user
        the system hangs and shows the ddb console.
>How-To-Repeat:
        run as user in QEMU VM the command: pctr
>Fix:
        I don't know the correct fix for this issue, below is a workaround
and additional information:

        trace from ddb console:

                kernel: protection fault trap, code=0
                Stopped at      pctrioctl+0x140:        rdpmc
                ddb> trace
                pctrioctl() at pctrioctl+0x140
                VOP_IOCTL() at VOP_IOCTL+0x44
                vn_ioctl() at vn_ioctl+0x77
                sys_ioctl() at sys_ioctl+0x18b
                syscall() at syscall+0x19e
                --- syscall (number 54) ---
                end of kernel
                end trace frame: 0x3, count: -5

        When changing the macro `usepctr` CPU family check in
        /usr/src/sys/arch/amd64/amd64/pctr.c to #define usepctr 0 it doesn't
hang (workaround).

        I also found CPU Erratum 26 ("RDPMC cannot be used in conjunction with 
SMM"),
        but it's probably unrelated.

        Linux commit: 
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e97df76377b8b3b1f7dfd5d6f8a1d5a31438b140
        Errata PDF: 
http://download.intel.com/design/archives/processors/pro/docs/24268935.pdf

        Additional system info (of VM) which might be useful:

                $ sysctl | grep cpuid
                machdep.cpuid=132801

                $ sysctl | grep hw
                hw.machine=amd64
                hw.model=Westmere E56xx/L56xx/X56xx (Nehalem-C)
                hw.ncpu=1
                hw.byteorder=1234
                hw.pagesize=4096
                hw.disknames=sd0:a9def653718cd57f,fd0:
                hw.diskcount=2
                hw.sensors.viomb0.raw0=0 (desired)
                hw.sensors.viomb0.raw1=0 (current)
                hw.cpuspeed=2200
                hw.vendor=QEMU
                hw.product=Standard PC (i440FX + PIIX, 1996)
                hw.version=pc-i440fx-2.4
                hw.uuid=a5b29157-fdc3-2806-6b94-00001fd2b1b4
                hw.physmem=1056833536
                hw.usermem=1056821248
                hw.ncpufound=1
                hw.allowpowerdown=1

dmesg:
OpenBSD 5.8 (GENERIC) #0: Fri Oct 23 11:15:05 CEST 2015
    [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC
real mem = 1056833536 (1007MB)
avail mem = 1021014016 (973MB)
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.8 @ 0xf6300 (9 entries)
bios0: vendor SeaBIOS version "rel-1.8.2-0-g33fbe13 by
qemu-project.org" date 04/01/2014
bios0: QEMU Standard PC (i440FX + PIIX, 1996)
acpi0 at bios0: rev 0
acpi0: sleep states S3 S4 S5
acpi0: tables DSDT FACP SSDT APIC HPET
acpi0: wakeup devices
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Westmere E56xx/L56xx/X56xx (Nehalem-C), 2200.34 MHz
cpu0: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SSE3,PCLMUL,SSSE3,CX16,SSE4.1,SSE4.2,x2APIC,POPCNT,AES,HV,NXE,LONG,LAHF,ARAT
cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB
64b/line 16-way L2 cache
cpu0: ITLB 255 4KB entries direct-mapped, 255 4MB entries direct-mapped
cpu0: DTLB 255 4KB entries direct-mapped, 255 4MB entries direct-mapped
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges
cpu0: apic clock running at 999MHz
ioapic0 at mainbus0: apid 0 pa 0xfec00000, version 11, 24 pins
acpihpet0 at acpi0: 100000000 Hz
acpiprt0 at acpi0: bus 0 (PCI0)
acpicpu0 at acpi0: C1(@1 halt!)
pvbus0 at mainbus0: KVM
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02
pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00
pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA,
channel 0 wired to compatibility, channel 1 wired to compatibility
pciide0: channel 0 disabled (no drives)
pciide0: channel 1 disabled (no drives)
uhci0 at pci0 dev 1 function 2 "Intel 82371SB USB" rev 0x01: apic 0 int 11
piixpm0 at pci0 dev 1 function 3 "Intel 82371AB Power" rev 0x03: apic 0 int 9
iic0 at piixpm0
vga1 at pci0 dev 2 function 0 "Bochs VGA" rev 0x02
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
virtio0 at pci0 dev 3 function 0 "Qumranet Virtio Network" rev 0x00:
Virtio Network Device
vio0 at virtio0: address 52:54:00:85:bb:77
virtio0: apic 0 int 11
eap0 at pci0 dev 4 function 0 "Ensoniq AudioPCI" rev 0x00: apic 0 int 11
audio0 at eap0
midi0 at eap0: <AudioPCI MIDI UART>
virtio1 at pci0 dev 5 function 0 "Qumranet Virtio Storage" rev 0x00:
Virtio Block Device
vioblk0 at virtio1
scsibus1 at vioblk0: 2 targets
sd0 at scsibus1 targ 0 lun 0: <VirtIO, Block Device, > SCSI3 0/direct fixed
sd0: 51200MB, 512 bytes/sector, 104857600 sectors
virtio1: apic 0 int 10
virtio2 at pci0 dev 6 function 0 "Qumranet Virtio Memory" rev 0x00:
Virtio Memory Balloon Device
viomb0 at virtio2
virtio2: apic 0 int 10
isa0 at pcib0
isadma0 at isa0
fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
fd0 at fdc0 drive 1: density unknown
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
wsmouse0 at pms0 mux 0
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
usb0 at uhci0: USB revision 1.0
uhub0 at usb0 "Intel UHCI root hub" rev 1.00/1.00 addr 1
nvram: invalid checksum
uhidev0 at uhub0 port 1 configuration 1 interface 0 "QEMU QEMU USB
Tablet" rev 2.00/0.00 addr 2
uhidev0: iclass 3/0
ums0 at uhidev0: 3 buttons, Z dir
wsmouse1 at ums0 mux 0
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
root on sd0a (a9def653718cd57f.a) swap on sd0b dump on sd0b
WARNING: / was not properly unmounted
clock: unknown CMOS layout

usbdevs:
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000),
Intel(0x8086), rev 1.00
 port 1 addr 2: full speed, power 100 mA, config 1, QEMU USB
Tablet(0x0001), QEMU(0x0627), rev 0.00, iSerialNumber 42
 port 2 powered

Kind regards,
Hiltjo

Reply via email to