• Sudeep Holla's avatar
    firmware: arm_scmi: Check if platform has released shmem before using · 6e9d4502
    Sudeep Holla authored
    [ Upstream commit 9dc34d63 ]
    
    Sometimes platfom may take too long to respond to the command and OS
    might timeout before platform transfer the ownership of the shared
    memory region to the OS with the response.
    
    Since the mailbox channel associated with the channel is freed and new
    commands are dispatch on the same channel, OS needs to wait until it
    gets back the ownership. If not, either OS may end up overwriting the
    platform response for the last command(which is fine as OS timed out
    that command) or platform might overwrite the payload for the next
    command with the response for the old.
    
    The latter is problematic as platform may end up interpretting the
    response as the payload. In order to avoid such race, let's wait until
    the OS gets back the ownership before we prepare the shared memory with
    the payload for the next command.
    Reported-by: default avatarJim Quinlan <james.quinlan@broadcom.com>
    Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    6e9d4502
driver.c 23.4 KB