Bug 1046435 - "Invalid PBLK length [0]" when boot a rhel guest in a rhel7 host
Summary: "Invalid PBLK length [0]" when boot a rhel guest in a rhel7 host
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: qemu-kvm
Version: 7.0
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: rc
: ---
Assignee: Michael S. Tsirkin
QA Contact: Virtualization Bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-12-25 09:42 UTC by Qian Guo
Modified: 2014-06-18 03:44 UTC (History)
8 users (show)

Fixed In Version: qemu-kvm-1.5.3-36.el7
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2014-06-13 11:51:29 UTC
Target Upstream Version:


Attachments (Terms of Use)
Dmesg when guest boot up (35.09 KB, text/plain)
2013-12-25 09:42 UTC, Qian Guo
no flags Details

Description Qian Guo 2013-12-25 09:42:32 UTC
Created attachment 841436 [details]
Dmesg when guest boot up

Description of problem:
Boot a rhel guest, will report the warning:
For rhel6.5 guest (both i686 and x86_64)
 processor LNXCPU:00: Invalid PBLK length [0]
 processor LNXCPU:01: Invalid PBLK length [0]
 processor LNXCPU:02: Invalid PBLK length [0]
 processor LNXCPU:03: Invalid PBLK length [0]
 processor LNXCPU:04: Invalid PBLK length [0]
 processor LNXCPU:05: Invalid PBLK length [0]
 processor LNXCPU:06: Invalid PBLK length [0]
 processor LNXCPU:07: Invalid PBLK length [0]

For rhel7 guest:
 acpi LNXCPU:00: Invalid PBLK length [0]
 acpi LNXCPU:01: Invalid PBLK length [0]
 acpi LNXCPU:02: Invalid PBLK length [0]
 acpi LNXCPU:03: Invalid PBLK length [0]
 acpi LNXCPU:04: Invalid PBLK length [0]
 acpi LNXCPU:05: Invalid PBLK length [0]
 acpi LNXCPU:06: Invalid PBLK length [0]
 acpi LNXCPU:07: Invalid PBLK length [0]

Version-Release number of selected component (if applicable):
# rpm -q qemu-kvm
qemu-kvm-1.5.3-30.el7.x86_64
# uname -r
3.10.0-64.el7.x86_64


How reproducible:
100%

Steps to Reproduce:
1.Boot a rhel guest
# /usr/libexec/qemu-kvm -M pc -cpu Opteron_G5  -m 8G -smp 8,sockets=1,cores=8,threads=1 -enable-kvm -nodefaults -nodefconfig -drive file=RHEL-7.0-x86_64-Server.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,werror=stop,rerror=stop,aio=native -device virtio-blk-pci,drive=drive-virtio-disk0,id=virtio-disk0 -spice port=5930,disable-ticketing -global qxl-vga.vram_size=67108864 -vga qxl -global qxl-vga.vram_size=67108864 -monitor stdio -netdev tap,id=hostnet0,script=/etc/qemu-ifup -device e1000,netdev=hostnet0,mac=54:52:0a:1b:3c:19,id=vnic1 -boot menu=on -device virtio-balloon-pci,id=balloon1 -qmp tcp:0:6666,server,nowait -global  PIIX4_PM.disable_s3=0 -global  PIIX4_PM.disable_s4=0 -serial unix:/tmp/s1,server,nowait

2.Check dmesg
3.

Actual results:
Have acpi warning, I will attach the dmesg of rhel7 guest.
...
[    0.177125] acpi LNXCPU:00: Invalid PBLK length [0]
[    0.177460] acpi LNXCPU:01: Invalid PBLK length [0]
[    0.177777] acpi LNXCPU:02: Invalid PBLK length [0]
[    0.178096] acpi LNXCPU:03: Invalid PBLK length [0]
[    0.178422] acpi LNXCPU:04: Invalid PBLK length [0]
[    0.178738] acpi LNXCPU:05: Invalid PBLK length [0]
[    0.179073] acpi LNXCPU:06: Invalid PBLK length [0]
[    0.179392] acpi LNXCPU:07: Invalid PBLK length [0]
...
Expected results:
No such warning

Additional info:
1.No related with host, I checked the guest that boot in both intel and amd host
2.Boot a real host and check the dmesg, no such warning infos

Please feel free to change the component to kernel if this is a kernel bug, thanks.

Comment 2 Eduardo Habkost 2014-02-20 20:33:56 UTC
Based on the following commit:

commit 6ec80ef1502e90d19b90f021514debe32c8689a8
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Sep 27 01:15:14 2013 +0300

    ssdt: fix PBLK length

    We don't really support CPU throttling, so supply 0 PBLK length.

    Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
    Tested-by: Gerd Hoffmann <kraxel@redhat.com>
    Reviewed-by: Igor Mammedov <imammedo@redhat.com>
    Tested-by: Igor Mammedov <imammedo@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

The PBLK length being set to 0 instead of 6 (which is considered invalid by Linux) was on purpose. I can't understand the reason for the change, so reassigning it to Michael.

(Sorry for reassigning it so late. I will still investigate it to try to find out the reasoning behind the change, but I guess Michael can find and explain the original reason for the change much quicker than me.)

Comment 3 Eduardo Habkost 2014-02-20 20:43:33 UTC
From the ACPI spec: "PBlockAddress provides the system I/O address for the processors register block. Each processor can supply a different such address. PBlockLength is the length of the processor register block, in bytes and is either 0 (for no P_BLK) or 6."

So a PBLK length of 0 is valid, but Linux considers it invalid. Looks like a guest bug.

Comment 4 Eduardo Habkost 2014-02-20 20:59:32 UTC
(In reply to Eduardo Habkost from comment #3)
> So a PBLK length of 0 is valid, but Linux considers it invalid. Looks like a
> guest bug.

Linux doesn't seem to print the warning if the the PBLK address is 0 (and according to the code, it should be already 0).


        if (!object.processor.pblk_address)
                ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No PBLK (NULL address)\n"));
        else if (object.processor.pblk_length != 6)
                dev_err(&device->dev, "Invalid PBLK length [%d]\n",
                            object.processor.pblk_length);

So, this seems to deserve further investigation.

Comment 5 Eduardo Habkost 2014-02-20 21:11:40 UTC
I think I found the problem:

We have a broken ssdt-proc.hex.generated file in our tree, having non-zero PBLK address and zero PBLK length. I don't know where this file comes from. But the file should be ignored during build, but it wasn't ignored because of missing iasl dependency.

This should be fixed on qemu-kvm-1.5.3-36.el7.

Comment 7 huiqingding 2014-03-03 08:57:54 UTC
Reproduce this bug using the version:
qemu-kvm-1.5.3-35.el7
kernel-3.10.0-97.el7.x86_64

Steps to Reproduce:
1.Boot a rhel guest (rhel7 and rhel6.5 guest were tested)
# /usr/libexec/qemu-kvm -M pc -cpu Opteron_G5  -m 8G -smp 8,sockets=1,cores=8,threads=1 -enable-kvm -nodefaults -nodefconfig -drive file=RHEL-7.0-x86_64-Server.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,werror=stop,rerror=stop,aio=native -device virtio-blk-pci,drive=drive-virtio-disk0,id=virtio-disk0 -spice port=5930,disable-ticketing -global qxl-vga.vram_size=67108864 -vga qxl -global qxl-vga.vram_size=67108864 -monitor stdio -netdev tap,id=hostnet0,script=/etc/qemu-ifup -device e1000,netdev=hostnet0,mac=54:52:0a:1b:3c:19,id=vnic1 -boot menu=on -device virtio-balloon-pci,id=balloon1 -qmp tcp:0:6666,server,nowait -global  PIIX4_PM.disable_s3=0 -global  PIIX4_PM.disable_s4=0 -serial unix:/tmp/s1,server,nowait

2.Check dmesg

Actual results:
Have acpi warning in guest:
...
[    0.177125] acpi LNXCPU:00: Invalid PBLK length [0]
[    0.177460] acpi LNXCPU:01: Invalid PBLK length [0]
[    0.177777] acpi LNXCPU:02: Invalid PBLK length [0]
[    0.178096] acpi LNXCPU:03: Invalid PBLK length [0]
[    0.178422] acpi LNXCPU:04: Invalid PBLK length [0]
[    0.178738] acpi LNXCPU:05: Invalid PBLK length [0]
[    0.179073] acpi LNXCPU:06: Invalid PBLK length [0]
[    0.179392] acpi LNXCPU:07: Invalid PBLK length [0]
...

Verify this bug using the version:
qemu-kvm-1.5.3-50.el7
kernel-3.10.0-97.el7.x86_64

Steps to Reproduce:
1.Boot a rhel guest (rhel7 and rhel6.5 guest were tested)
# /usr/libexec/qemu-kvm -M pc -cpu Opteron_G5  -m 8G -smp 8,sockets=1,cores=8,threads=1 -enable-kvm -nodefaults -nodefconfig -drive file=RHEL-7.0-x86_64-Server.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,werror=stop,rerror=stop,aio=native -device virtio-blk-pci,drive=drive-virtio-disk0,id=virtio-disk0 -spice port=5930,disable-ticketing -global qxl-vga.vram_size=67108864 -vga qxl -global qxl-vga.vram_size=67108864 -monitor stdio -netdev tap,id=hostnet0,script=/etc/qemu-ifup -device e1000,netdev=hostnet0,mac=54:52:0a:1b:3c:19,id=vnic1 -boot menu=on -device virtio-balloon-pci,id=balloon1 -qmp tcp:0:6666,server,nowait -global  PIIX4_PM.disable_s3=0 -global  PIIX4_PM.disable_s4=0 -serial unix:/tmp/s1,server,nowait

2.Check dmesg

Actual results:
There are no like "Invalid PBLK length [0]".

Based on the above results, I think this bug has been fixed.

Comment 9 Ludek Smid 2014-06-13 11:51:29 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.


Note You need to log in before you can comment on or make changes to this bug.