Linux v4.17-1535-g5037be168f0e
This commit is contained in:
parent
ab80721865
commit
4ec5ad2daf
2
gitrev
2
gitrev
@ -1 +1 @@
|
|||||||
9214407d1237a985894894f9be2b1a7416b69d14
|
5037be168f0e4ee910602935b1180291082d3aac
|
||||||
|
@ -331,6 +331,7 @@ CONFIG_ARM_PMU=y
|
|||||||
CONFIG_ARM_PSCI=y
|
CONFIG_ARM_PSCI=y
|
||||||
CONFIG_ARM_PTDUMP_DEBUGFS=y
|
CONFIG_ARM_PTDUMP_DEBUGFS=y
|
||||||
CONFIG_ARM_PTDUMP=y
|
CONFIG_ARM_PTDUMP=y
|
||||||
|
# CONFIG_ARM_QCOM_CPUFREQ_KRYO is not set
|
||||||
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
||||||
CONFIG_ARM_SBSA_WATCHDOG=m
|
CONFIG_ARM_SBSA_WATCHDOG=m
|
||||||
CONFIG_ARM_SCMI_CPUFREQ=m
|
CONFIG_ARM_SCMI_CPUFREQ=m
|
||||||
|
@ -331,6 +331,7 @@ CONFIG_ARM_PMU=y
|
|||||||
CONFIG_ARM_PSCI=y
|
CONFIG_ARM_PSCI=y
|
||||||
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
||||||
# CONFIG_ARM_PTDUMP is not set
|
# CONFIG_ARM_PTDUMP is not set
|
||||||
|
# CONFIG_ARM_QCOM_CPUFREQ_KRYO is not set
|
||||||
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
||||||
CONFIG_ARM_SBSA_WATCHDOG=m
|
CONFIG_ARM_SBSA_WATCHDOG=m
|
||||||
CONFIG_ARM_SCMI_CPUFREQ=m
|
CONFIG_ARM_SCMI_CPUFREQ=m
|
||||||
|
@ -352,6 +352,7 @@ CONFIG_ARM_PMU=y
|
|||||||
CONFIG_ARM_PSCI=y
|
CONFIG_ARM_PSCI=y
|
||||||
CONFIG_ARM_PTDUMP_DEBUGFS=y
|
CONFIG_ARM_PTDUMP_DEBUGFS=y
|
||||||
CONFIG_ARM_PTDUMP=y
|
CONFIG_ARM_PTDUMP=y
|
||||||
|
# CONFIG_ARM_QCOM_CPUFREQ_KRYO is not set
|
||||||
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
||||||
CONFIG_ARM_SCMI_CPUFREQ=m
|
CONFIG_ARM_SCMI_CPUFREQ=m
|
||||||
CONFIG_ARM_SCMI_POWER_DOMAIN=m
|
CONFIG_ARM_SCMI_POWER_DOMAIN=m
|
||||||
|
@ -340,6 +340,7 @@ CONFIG_ARM_PMU=y
|
|||||||
CONFIG_ARM_PSCI=y
|
CONFIG_ARM_PSCI=y
|
||||||
CONFIG_ARM_PTDUMP_DEBUGFS=y
|
CONFIG_ARM_PTDUMP_DEBUGFS=y
|
||||||
CONFIG_ARM_PTDUMP=y
|
CONFIG_ARM_PTDUMP=y
|
||||||
|
# CONFIG_ARM_QCOM_CPUFREQ_KRYO is not set
|
||||||
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
||||||
CONFIG_ARM_SCMI_CPUFREQ=m
|
CONFIG_ARM_SCMI_CPUFREQ=m
|
||||||
CONFIG_ARM_SCMI_POWER_DOMAIN=m
|
CONFIG_ARM_SCMI_POWER_DOMAIN=m
|
||||||
|
@ -339,6 +339,7 @@ CONFIG_ARM_PMU=y
|
|||||||
CONFIG_ARM_PSCI=y
|
CONFIG_ARM_PSCI=y
|
||||||
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
||||||
# CONFIG_ARM_PTDUMP is not set
|
# CONFIG_ARM_PTDUMP is not set
|
||||||
|
# CONFIG_ARM_QCOM_CPUFREQ_KRYO is not set
|
||||||
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
||||||
CONFIG_ARM_SCMI_CPUFREQ=m
|
CONFIG_ARM_SCMI_CPUFREQ=m
|
||||||
CONFIG_ARM_SCMI_POWER_DOMAIN=m
|
CONFIG_ARM_SCMI_POWER_DOMAIN=m
|
||||||
|
@ -351,6 +351,7 @@ CONFIG_ARM_PMU=y
|
|||||||
CONFIG_ARM_PSCI=y
|
CONFIG_ARM_PSCI=y
|
||||||
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
||||||
# CONFIG_ARM_PTDUMP is not set
|
# CONFIG_ARM_PTDUMP is not set
|
||||||
|
# CONFIG_ARM_QCOM_CPUFREQ_KRYO is not set
|
||||||
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
CONFIG_ARM_RK3399_DMC_DEVFREQ=m
|
||||||
CONFIG_ARM_SCMI_CPUFREQ=m
|
CONFIG_ARM_SCMI_CPUFREQ=m
|
||||||
CONFIG_ARM_SCMI_POWER_DOMAIN=m
|
CONFIG_ARM_SCMI_POWER_DOMAIN=m
|
||||||
|
@ -69,7 +69,7 @@ Summary: The Linux kernel
|
|||||||
# The rc snapshot level
|
# The rc snapshot level
|
||||||
%global rcrev 0
|
%global rcrev 0
|
||||||
# The git snapshot level
|
# The git snapshot level
|
||||||
%define gitrev 1
|
%define gitrev 2
|
||||||
# Set rpm version accordingly
|
# Set rpm version accordingly
|
||||||
%define rpmversion 4.%{upstream_sublevel}.0
|
%define rpmversion 4.%{upstream_sublevel}.0
|
||||||
%endif
|
%endif
|
||||||
@ -617,10 +617,6 @@ Patch501: Fix-for-module-sig-verification.patch
|
|||||||
# rhbz 1431375
|
# rhbz 1431375
|
||||||
Patch502: input-rmi4-remove-the-need-for-artifical-IRQ.patch
|
Patch502: input-rmi4-remove-the-need-for-artifical-IRQ.patch
|
||||||
|
|
||||||
# rbhz 1435837
|
|
||||||
# https://www.spinics.net/lists/linux-acpi/msg82405.html
|
|
||||||
Patch504: mailbox-ACPI-erroneous-error-message-when-parsing-ACPI.patch
|
|
||||||
|
|
||||||
# END OF PATCH DEFINITIONS
|
# END OF PATCH DEFINITIONS
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
@ -1856,6 +1852,9 @@ fi
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jun 05 2018 Laura Abbott <labbott@redhat.com> - 4.18.0-0.rc0.git2.1
|
||||||
|
- Linux v4.17-1535-g5037be168f0e
|
||||||
|
|
||||||
* Mon Jun 04 2018 Laura Abbott <labbott@redhat.com> - 4.18.0-0.rc0.git1.1
|
* Mon Jun 04 2018 Laura Abbott <labbott@redhat.com> - 4.18.0-0.rc0.git1.1
|
||||||
- Linux v4.17-505-g9214407d1237
|
- Linux v4.17-505-g9214407d1237
|
||||||
|
|
||||||
|
@ -1,240 +0,0 @@
|
|||||||
From 8f8027c5f935bf02bdc8806c109ddbb0e402283c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Al Stone <ahs3@redhat.com>
|
|
||||||
Date: Wed, 16 May 2018 16:01:41 -0600
|
|
||||||
Subject: [PATCH] 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>
|
|
||||||
---
|
|
||||||
drivers/mailbox/pcc.c | 81 ++++++++++++++++++++++++---------------------------
|
|
||||||
1 file changed, 38 insertions(+), 43 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c
|
|
||||||
index 3ef7f036ceea..fc3c237daef2 100644
|
|
||||||
--- a/drivers/mailbox/pcc.c
|
|
||||||
+++ b/drivers/mailbox/pcc.c
|
|
||||||
@@ -373,33 +373,24 @@ static const struct mbox_chan_ops pcc_chan_ops = {
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
- * parse_pcc_subspace - Parse the PCC table and verify PCC subspace
|
|
||||||
- * entries. There should be one entry per PCC client.
|
|
||||||
+ * parse_pcc_subspaces -- Count PCC subspaces defined
|
|
||||||
* @header: Pointer to the ACPI subtable header under the PCCT.
|
|
||||||
* @end: End of subtable entry.
|
|
||||||
*
|
|
||||||
- * Return: 0 for Success, else errno.
|
|
||||||
+ * Return: If we find a PCC subspace entry of a valid type, return 0.
|
|
||||||
+ * Otherwise, return -EINVAL.
|
|
||||||
*
|
|
||||||
* This gets called for each entry in the PCC table.
|
|
||||||
*/
|
|
||||||
static int parse_pcc_subspace(struct acpi_subtable_header *header,
|
|
||||||
const unsigned long end)
|
|
||||||
{
|
|
||||||
- struct acpi_pcct_hw_reduced *pcct_ss;
|
|
||||||
-
|
|
||||||
- if (pcc_mbox_ctrl.num_chans <= MAX_PCC_SUBSPACES) {
|
|
||||||
- pcct_ss = (struct acpi_pcct_hw_reduced *) header;
|
|
||||||
+ struct acpi_pcct_subspace *ss = (struct acpi_pcct_subspace *) header;
|
|
||||||
|
|
||||||
- if ((pcct_ss->header.type !=
|
|
||||||
- ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE)
|
|
||||||
- && (pcct_ss->header.type !=
|
|
||||||
- ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2)) {
|
|
||||||
- pr_err("Incorrect PCC Subspace type detected\n");
|
|
||||||
- return -EINVAL;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
+ if (ss->header.type < ACPI_PCCT_TYPE_RESERVED)
|
|
||||||
+ return 0;
|
|
||||||
|
|
||||||
- return 0;
|
|
||||||
+ return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -449,8 +440,8 @@ static int __init acpi_pcc_probe(void)
|
|
||||||
struct acpi_table_header *pcct_tbl;
|
|
||||||
struct acpi_subtable_header *pcct_entry;
|
|
||||||
struct acpi_table_pcct *acpi_pcct_tbl;
|
|
||||||
+ struct acpi_subtable_proc proc[ACPI_PCCT_TYPE_RESERVED];
|
|
||||||
int count, i, rc;
|
|
||||||
- int sum = 0;
|
|
||||||
acpi_status status = AE_OK;
|
|
||||||
|
|
||||||
/* Search for PCCT */
|
|
||||||
@@ -459,43 +450,41 @@ static int __init acpi_pcc_probe(void)
|
|
||||||
if (ACPI_FAILURE(status) || !pcct_tbl)
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
- count = acpi_table_parse_entries(ACPI_SIG_PCCT,
|
|
||||||
- sizeof(struct acpi_table_pcct),
|
|
||||||
- ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE,
|
|
||||||
- parse_pcc_subspace, MAX_PCC_SUBSPACES);
|
|
||||||
- sum += (count > 0) ? count : 0;
|
|
||||||
-
|
|
||||||
- count = acpi_table_parse_entries(ACPI_SIG_PCCT,
|
|
||||||
- sizeof(struct acpi_table_pcct),
|
|
||||||
- ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2,
|
|
||||||
- parse_pcc_subspace, MAX_PCC_SUBSPACES);
|
|
||||||
- sum += (count > 0) ? count : 0;
|
|
||||||
+ /* Set up the subtable handlers */
|
|
||||||
+ for (i = ACPI_PCCT_TYPE_GENERIC_SUBSPACE;
|
|
||||||
+ i < ACPI_PCCT_TYPE_RESERVED; i++) {
|
|
||||||
+ proc[i].id = i;
|
|
||||||
+ proc[i].count = 0;
|
|
||||||
+ proc[i].handler = parse_pcc_subspace;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- if (sum == 0 || sum >= MAX_PCC_SUBSPACES) {
|
|
||||||
- pr_err("Error parsing PCC subspaces from PCCT\n");
|
|
||||||
+ count = acpi_table_parse_entries_array(ACPI_SIG_PCCT,
|
|
||||||
+ sizeof(struct acpi_table_pcct), proc,
|
|
||||||
+ ACPI_PCCT_TYPE_RESERVED, MAX_PCC_SUBSPACES);
|
|
||||||
+ if (count == 0 || count > MAX_PCC_SUBSPACES) {
|
|
||||||
+ pr_warn("Invalid PCCT: %d PCC subspaces\n", count);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- pcc_mbox_channels = kzalloc(sizeof(struct mbox_chan) *
|
|
||||||
- sum, GFP_KERNEL);
|
|
||||||
+ pcc_mbox_channels = kzalloc(sizeof(struct mbox_chan) * count, GFP_KERNEL);
|
|
||||||
if (!pcc_mbox_channels) {
|
|
||||||
pr_err("Could not allocate space for PCC mbox channels\n");
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
- pcc_doorbell_vaddr = kcalloc(sum, sizeof(void *), GFP_KERNEL);
|
|
||||||
+ pcc_doorbell_vaddr = kcalloc(count, sizeof(void *), GFP_KERNEL);
|
|
||||||
if (!pcc_doorbell_vaddr) {
|
|
||||||
rc = -ENOMEM;
|
|
||||||
goto err_free_mbox;
|
|
||||||
}
|
|
||||||
|
|
||||||
- pcc_doorbell_ack_vaddr = kcalloc(sum, sizeof(void *), GFP_KERNEL);
|
|
||||||
+ pcc_doorbell_ack_vaddr = kcalloc(count, sizeof(void *), GFP_KERNEL);
|
|
||||||
if (!pcc_doorbell_ack_vaddr) {
|
|
||||||
rc = -ENOMEM;
|
|
||||||
goto err_free_db_vaddr;
|
|
||||||
}
|
|
||||||
|
|
||||||
- pcc_doorbell_irq = kcalloc(sum, sizeof(int), GFP_KERNEL);
|
|
||||||
+ pcc_doorbell_irq = kcalloc(count, sizeof(int), GFP_KERNEL);
|
|
||||||
if (!pcc_doorbell_irq) {
|
|
||||||
rc = -ENOMEM;
|
|
||||||
goto err_free_db_ack_vaddr;
|
|
||||||
@@ -509,18 +498,24 @@ static int __init acpi_pcc_probe(void)
|
|
||||||
if (acpi_pcct_tbl->flags & ACPI_PCCT_DOORBELL)
|
|
||||||
pcc_mbox_ctrl.txdone_irq = true;
|
|
||||||
|
|
||||||
- for (i = 0; i < sum; i++) {
|
|
||||||
+ for (i = 0; i < count; i++) {
|
|
||||||
struct acpi_generic_address *db_reg;
|
|
||||||
- struct acpi_pcct_hw_reduced *pcct_ss;
|
|
||||||
+ struct acpi_pcct_subspace *pcct_ss;
|
|
||||||
pcc_mbox_channels[i].con_priv = pcct_entry;
|
|
||||||
|
|
||||||
- pcct_ss = (struct acpi_pcct_hw_reduced *) pcct_entry;
|
|
||||||
+ if (pcct_entry->type == ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE ||
|
|
||||||
+ pcct_entry->type == ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2) {
|
|
||||||
+ struct acpi_pcct_hw_reduced *pcct_hrss;
|
|
||||||
+
|
|
||||||
+ pcct_hrss = (struct acpi_pcct_hw_reduced *) pcct_entry;
|
|
||||||
|
|
||||||
- if (pcc_mbox_ctrl.txdone_irq) {
|
|
||||||
- rc = pcc_parse_subspace_irq(i, pcct_ss);
|
|
||||||
- if (rc < 0)
|
|
||||||
- goto err;
|
|
||||||
+ if (pcc_mbox_ctrl.txdone_irq) {
|
|
||||||
+ rc = pcc_parse_subspace_irq(i, pcct_hrss);
|
|
||||||
+ if (rc < 0)
|
|
||||||
+ goto err;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
+ pcct_ss = (struct acpi_pcct_subspace *) pcct_entry;
|
|
||||||
|
|
||||||
/* If doorbell is in system memory cache the virt address */
|
|
||||||
db_reg = &pcct_ss->doorbell_register;
|
|
||||||
@@ -531,7 +526,7 @@ static int __init acpi_pcc_probe(void)
|
|
||||||
((unsigned long) pcct_entry + pcct_entry->length);
|
|
||||||
}
|
|
||||||
|
|
||||||
- pcc_mbox_ctrl.num_chans = sum;
|
|
||||||
+ pcc_mbox_ctrl.num_chans = count;
|
|
||||||
|
|
||||||
pr_info("Detected %d PCC Subspaces\n", pcc_mbox_ctrl.num_chans);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.3
|
|
2
sources
2
sources
@ -1,2 +1,2 @@
|
|||||||
SHA512 (linux-4.17.tar.xz) = 4d9de340a26155a89ea8773131c76220cc2057f2b5d031b467b60e8b14c1842518e2d60a863d8c695f0f7640f3f18d43826201984a238dade857b6cef79837db
|
SHA512 (linux-4.17.tar.xz) = 4d9de340a26155a89ea8773131c76220cc2057f2b5d031b467b60e8b14c1842518e2d60a863d8c695f0f7640f3f18d43826201984a238dade857b6cef79837db
|
||||||
SHA512 (patch-4.17-git1.xz) = 72d5b961ce2a577fa8cbe406be47148f0f796e84c0038af635b2a80483c1ac9bed36f07a245a7073b11292ebd43d7dc60ab7ea25430b0bdd4f0027aa3473c1cf
|
SHA512 (patch-4.17-git2.xz) = 4a8f4ea89b14248a8e5fc1d567d1f2a6f9963c4ddf8061aadc4e8819f9f7bd642300368a2351781e1e33e6c125fc3f35ddae22d0f3002c551a55715ecb2b06fd
|
||||||
|
Loading…
Reference in New Issue
Block a user