linux/drivers/mailbox
Al Stone 8f8027c5f9 mailbox: PCC: erroneous error message when parsing ACPI PCCT
There have been multiple reports of the following error message:

[    0.068293] Error parsing PCC subspaces from PCCT

This error message is not correct.  In multiple cases examined, the PCCT
(Platform Communications Channel Table) concerned is actually properly
constructed; the problem is that acpi_pcc_probe() which reads the PCCT
is making the assumption that the only valid PCCT is one that contains
subtables of one of two types: ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE or
ACPI_PCCT_TYPE_HW_REDUCED_TYPE2.  The number of subtables of these
types are counted and as long as there is at least one of the desired
types, the acpi_pcc_probe() succeeds.  When no subtables of these types
are found, regardless of whether or not any other subtable types are
present, the error mentioned above is reported.

In the cases reported to me personally, the PCCT contains exactly one
subtable of type ACPI_PCCT_TYPE_GENERIC_SUBSPACE.  The function
acpi_pcc_probe() does not count it as a valid subtable, so believes
there to be no valid subtables, and hence outputs the error message.

An example of the PCCT being reported as erroneous yet perfectly fine
is the following:

                    Signature : "PCCT"
                 Table Length : 0000006E
                     Revision : 05
                     Checksum : A9
                       Oem ID : "XXXXXX"
                 Oem Table ID : "XXXXX   "
                 Oem Revision : 00002280
              Asl Compiler ID : "XXXX"
        Asl Compiler Revision : 00000002

        Flags (decoded below) : 00000001
                     Platform : 1
                     Reserved : 0000000000000000

                Subtable Type : 00 [Generic Communications Subspace]
                       Length : 3E

                     Reserved : 000000000000
                 Base Address : 00000000DCE43018
               Address Length : 0000000000001000

            Doorbell Register : [Generic Address Structure]
                     Space ID : 01 [SystemIO]
                    Bit Width : 08
                   Bit Offset : 00
         Encoded Access Width : 01 [Byte Access:8]
                      Address : 0000000000001842

                Preserve Mask : 00000000000000FD
                   Write Mask : 0000000000000002
              Command Latency : 00001388
          Maximum Access Rate : 00000000
      Minimum Turnaround Time : 0000

To fix this, we count up all of the possible subtable types for the
PCCT, and only report an error when there are none (which could mean
either no subtables, or no valid subtables), or there are too many.
We also change the logic so that if there is a valid subtable, we
do try to initialize it per the PCCT subtable contents.  This is a
change in functionality; previously, the probe would have returned
right after the error message and would not have tried to use any
other subtable definition.

Tested on my personal laptop which showed the error previously; the
error message no longer appears and the laptop appears to operate
normally.

Signed-off-by: Al Stone <ahs3@redhat.com>
Reviewed-by: Prashanth Prakash <pprakash@codeaurora.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2018-05-18 12:08:15 +02:00
..
Kconfig mailbox: Add support for Hi3660 mailbox 2018-03-20 11:15:54 +08:00
Makefile mailbox: Add support for Hi3660 mailbox 2018-03-20 11:15:54 +08:00
arm_mhu.c Merge branch 'mailbox-for-next' of git://git.linaro.org/landing-teams/working/fujitsu/integration 2015-09-05 18:11:04 -07:00
bcm-flexrm-mailbox.c maillbox: bcm-flexrm-mailbox: Use dma_pool_zalloc() 2018-03-15 21:23:36 +05:30
bcm-pdc-mailbox.c mailbox: bcm-pdc: Add Northstar Plus support to PDC driver 2017-03-28 23:27:56 +05:30
bcm2835-mailbox.c mailbox: Drop owner assignment from platform_driver 2015-08-05 17:20:53 +05:30
hi3660-mailbox.c mailbox: Add support for Hi3660 mailbox 2018-03-20 11:15:54 +08:00
hi6220-mailbox.c mailbox: constify mbox_chan_ops structures 2017-03-28 23:27:32 +05:30
mailbox-altera.c mailbox: Convert timers to use timer_setup() 2017-11-06 12:49:51 -08:00
mailbox-sti.c mailbox: sti: Fix module autoload for OF registration 2016-12-19 20:10:18 +05:30
mailbox-test.c vfs: do bulk POLL* -> EPOLL* replacement 2018-02-11 14:34:03 -08:00
mailbox-xgene-slimpro.c mailbox: constify mbox_chan_ops structures 2017-03-28 23:27:32 +05:30
mailbox.c mailbox: reset txdone_method TXDONE_BY_POLL if client knows_txdone 2017-11-14 20:21:28 +05:30
mailbox.h Mailbox: Add support for Platform Communication Channel 2014-11-27 12:51:09 +05:30
omap-mailbox.c mailbox/omap: unregister mbox class 2017-11-14 20:21:35 +05:30
pcc.c mailbox: PCC: erroneous error message when parsing ACPI PCCT 2018-05-18 12:08:15 +02:00
pl320-ipc.c mailbox: pl320: remove __raw IO 2016-06-24 13:32:31 +05:30
platform_mhu.c mailbox: Add Platform Message-Handling-Unit variant driver 2016-09-07 13:07:17 +05:30
qcom-apcs-ipc-mailbox.c mailbox: qcom: Create APCS child device for clock controller 2018-02-04 12:16:23 +05:30
rockchip-mailbox.c mailbox: rockchip: avoid 64-bit division 2016-03-16 09:18:15 +05:30
tegra-hsp.c mailbox: tegra-hsp: Use after free in tegra_hsp_remove_doorbells() 2016-11-18 14:32:13 +01:00
ti-msgmgr.c mailbox: ti-msgmgr: Use %zu for size_t print format 2018-01-10 10:15:32 +05:30