• Suzuki K. Poulose's avatar
    arm-cci: Get rid of secure transactions for PMU driver · 772742a6
    Suzuki K. Poulose authored
    Avoid secure transactions while probing the CCI PMU. The
    existing code makes use of the Peripheral ID2 (PID2) register
    to determine the revision of the CCI400, which requires a
    secure transaction. This puts a limitation on the usage of the
    driver on systems running non-secure Linux(e.g, ARM64).
    
    Updated the device-tree binding for cci pmu node to add the explicit
    revision number for the compatible field.
    
    The supported strings are :
    	arm,cci-400-pmu,r0
    	arm,cci-400-pmu,r1
    	arm,cci-400-pmu - DEPRECATED. See NOTE below
    
    NOTE: If the revision is not mentioned, we need to probe the cci revision,
    which could be fatal on a platform running non-secure. We need a reliable way
    to know if we can poke the CCI registers at runtime on ARM32. We depend on
    'mcpm_is_available()' when it is available. mcpm_is_available() returns true
    only when there is a registered driver for mcpm. Otherwise, we assume that we
    don't have secure access, and skips probing the revision number(ARM64 case).
    
    The MCPM should figure out if it is safe to access the CCI. Unfortunately
    there isn't a reliable way to indicate the same via dtb. This patch doesn't
    address/change the current situation. It only deals with the CCI-PMU, leaving
    the assumptions about the secure access as it has been, prior to this patch.
    
    Cc: devicetree@vger.kernel.org
    Cc: Punit Agrawal <punit.agrawal@arm.com>
    Tested-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Acked-by: default avatarNicolas Pitre <nicolas.pitre@linaro.org>
    Acked-by: default avatarMark Rutland <mark.rutland@arm.com>
    Signed-off-by: default avatarSuzuki K. Poulose <suzuki.poulose@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    772742a6
arm-cci.c 37.4 KB