Look good to me. Reviewed-by: Yeoreum Yun <[email protected]>
> When protected KVM is enabled, the kernel includes a pKVM FF-A proxy > that sits in front of the normal FF-A driver. The proxy has to perform > its own FF-A version negotiation and setup first, so that it can mediate > subsequent FF-A traffic correctly. > > Defer FF-A core probing until pKVM has completed initialization. This > keeps the normal driver from negotiating the FF-A version or performing > other transport setup before the pKVM proxy is ready, and lets the > driver model retry probing once the protected KVM state required by the > FF-A transport is available. > > Suggested-by: Yeoreum Yun <[email protected]> > Signed-off-by: Sudeep Holla <[email protected]> > --- > drivers/firmware/arm_ffa/driver.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/firmware/arm_ffa/driver.c > b/drivers/firmware/arm_ffa/driver.c > index e9d7dc71c06d..1fba064c2aba 100644 > --- a/drivers/firmware/arm_ffa/driver.c > +++ b/drivers/firmware/arm_ffa/driver.c > @@ -43,6 +43,8 @@ > #include <linux/uuid.h> > #include <linux/xarray.h> > > +#include <asm/virt.h> > + > #include "common.h" > > #define FFA_DRIVER_VERSION FFA_VERSION_1_2 > @@ -2039,6 +2041,10 @@ static int ffa_probe(struct platform_device *pdev) > u32 buf_sz; > size_t rxtx_bufsz = SZ_4K; > > + if (IS_BUILTIN(CONFIG_ARM_FFA_TRANSPORT) && > + is_protected_kvm_enabled() && !is_pkvm_initialized()) > + return -EPROBE_DEFER; > + > ret = ffa_transport_init(&invoke_ffa_fn); > if (ret) > return ret; > > -- > 2.43.0 > -- Sincerely, Yeoreum Yun

