Bug 165127

Summary: acpi_processor_get_performance_states fails on empty table entries (_PSS)
Product: Red Hat Enterprise Linux 4 Reporter: Brian Maly <bmaly>
Component: kernelAssignee: Brian Maly <bmaly>
Status: CLOSED ERRATA QA Contact: Brian Brock <bbrock>
Severity: medium Docs Contact:
Priority: medium    
Version: 4.0   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: RHSA-2005-514 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2005-10-05 13:48:32 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 156322    
Attachments:
Description Flags
patch to limit max performance supported states (_PSS) none

Description Brian Maly 2005-08-04 15:57:36 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; rv:1.7.3) Gecko/20041020 Firefox/0.10.1

Description of problem:
acpi_processor_get_performance_states fails on some machines that have empty _PSS entries. The result is that the powernow-k8 module fails to load on some SMP machines (this is hardware specific, some machines may work, many dont).

example (see the "Zero" entries after the valid power state entries):

 Scope(\_PR_) {
                Processor(CPU1, 1, 0x5010, 0x6) {
                    Name(_PCT, Package(0x2) {
                        Buffer(0x11) {0x82, 0xc, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x79, 0x0 },
                        Buffer(0x11) {0x82, 0xc, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x79, 0x0 },
                    })
                    Name(_PSS, Package(0x4) {
                        Package(0x6) {
                            0x00000898,
                            0x00017318,
                            0x00000064,
                            0x00000007,
                            0xc020120e,
                            0x0000020e,
                        },
                        Package(0x6) {
                            0x000007d0,
                            0x000160bc,
                            0x00000064,
                            0x00000007,
                            0xc020128c,
                            0x0000028c,
                        },
                        Package(0x6) {
                            0x00000708,
                            0x0001287c,
                            0x00000064,
                            0x00000007,
                            0xc020130a,
                            0x0000030a,
                        },
                        Package(0x6) {
                            0x000003e8,
                            0x00008d04,
                            0x00000064,
                            0x00000007,
                            0xc0201482,
                            0x00000482,
                        },
                        Zero,
                        Zero,
                        Zero,
                        Zero,
                        Zero,
                        Zero,
                        Zero,
                        Zero,


Version-Release number of selected component (if applicable):
linux-2.6.9

How reproducible:
Sometimes

Steps to Reproduce:
1. find a machine with ACPI _PSS enablement and "Zero" entries in the _PSS table (use acpidump to get this info if needed)
2. boot SMP enabled kernel
3. modprobe powernow-k8
  

Actual Results:  FATAL: Error inserting powernow_k8 (/lib/modules/2.6.9-prep/kernel/arch/x86_64/kernel/cpufreq/powernow-k8.ko): No such device

exact error: bad ACPI data: _PSS

Expected Results:  module loads correctly and finds all power states in _PSS table

Additional info:

this appears to be fixed in both the 2.4.31 and 2.6.12 kernels

this should be a MUSTFIX as we will otherwise have no SMP Powernow enablement

Comment 1 Brian Maly 2005-08-04 20:07:47 UTC
Created attachment 117479 [details]
patch to limit max performance supported states (_PSS)

This patch scans PSS entries and counts the valid ones, and adds a sanity check
to weed out invalid (or zero) PSS entries.

This patch was tested on a variety of machine and resolves the problem (the
powernow-k8 module loads properly). It seems like more machines than not have
PSS tables that have been "padded out" with zeros.

Comment 6 Brian Maly 2005-08-16 19:11:08 UTC
this should be a MUSTFIX instead of a CANFIX. The Powernow driver will otherwise
fail to load on many new machines (including most of the machines we test with)

Comment 7 Red Hat Bugzilla 2005-10-05 13:48:32 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHSA-2005-514.html