mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
drivers: cci: add missing CCI port availability firmware check
The CCI ports programming interface is available to the kernel only when booted in secure mode (or when firmware enables non-secure access to override CCI ports control). In both cases, firmware reports the CCI ports availability through the device tree CCI ports nodes, which must be parsed and their status checked by the kernel probing path. This check is currently missing and may cause the kernel to erroneously believe it is free to take control of CCI ports where in practice CCI ports control is forbidden. Add the missing CCI port availability check to the CCI driver in order to guarantee sane CCI usage. Cc: Liviu Dudau <[email protected]> Cc: Suzuki K Poulose <[email protected]> Cc: Marc Zyngier <[email protected]> Acked-by: Nicolas Pitre <[email protected]> Signed-off-by: Lorenzo Pieralisi <[email protected]> Signed-off-by: Sudeep Holla <[email protected]>
This commit is contained in:
parent
525d4015e6
commit
801f33be8e
1 changed files with 10 additions and 0 deletions
|
|
@ -2190,6 +2190,9 @@ static int cci_probe_ports(struct device_node *np)
|
|||
if (!of_match_node(arm_cci_ctrl_if_matches, cp))
|
||||
continue;
|
||||
|
||||
if (!of_device_is_available(cp))
|
||||
continue;
|
||||
|
||||
i = nb_ace + nb_ace_lite;
|
||||
|
||||
if (i >= nb_cci_ports)
|
||||
|
|
@ -2232,6 +2235,13 @@ static int cci_probe_ports(struct device_node *np)
|
|||
ports[i].dn = cp;
|
||||
}
|
||||
|
||||
/*
|
||||
* If there is no CCI port that is under kernel control
|
||||
* return early and report probe status.
|
||||
*/
|
||||
if (!nb_ace && !nb_ace_lite)
|
||||
return -ENODEV;
|
||||
|
||||
/* initialize a stashed array of ACE ports to speed-up look-up */
|
||||
cci_ace_init_ports();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue