interconnect: fix provider registration API
authorJohan Hovold <johan+linaro@kernel.org>
Mon, 6 Mar 2023 07:56:31 +0000 (08:56 +0100)
committerGeorgi Djakov <djakov@kernel.org>
Tue, 7 Mar 2023 20:19:05 +0000 (22:19 +0200)
commiteb59eca0d8ac15f8c1b7f1cd35999455a90292c0
treeffdc03650927c3eb1373e1a6625fc564978c383f
parente0e7089bf9a87bc5e3997422e4e24563424f9018
interconnect: fix provider registration API

The current interconnect provider interface is inherently racy as
providers are expected to be added before being fully initialised.

Specifically, nodes are currently not added and the provider data is not
initialised until after registering the provider which can cause racing
DT lookups to fail.

Add a new provider API which will be used to fix up the interconnect
drivers.

The old API is reimplemented using the new interface and will be removed
once all drivers have been fixed.

Fixes: 11f1ceca7031 ("interconnect: Add generic on-chip interconnect API")
Fixes: 87e3031b6fbd ("interconnect: Allow endpoints translation via DT")
Cc: stable@vger.kernel.org # 5.1
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> # i.MX8MP MSC SM2-MB-EP1 Board
Link: https://lore.kernel.org/r/20230306075651.2449-4-johan+linaro@kernel.org
Signed-off-by: Georgi Djakov <djakov@kernel.org>
drivers/interconnect/core.c
include/linux/interconnect-provider.h