On 10/26/2017 08:56 AM, Borislav Petkov wrote:
On Mon, Oct 23, 2017 at 02:57:04PM -0500, Brijesh Singh wrote:
Calling PLATFORM_GET_STATUS is not required, we can manage the state through
a simple ref count variable. Issuing PSP commands will always be much more
expensive compare to accessing a protected global variable.
What does "protected" mean here?
Access global variable after acquiring the semaphore.
In any case, that variable can be a simple bool as you use it as such.
I am not using the variable (fw_init_count) as boolean. The variable
gets incremented in sev_platform_init() and decremented in
sev_platform_shutdown(). In very first call to sev_platform_init (i.e
when variable is zero) we issue PLATFORM_INIT command, similarly
PLATFORM_SHUTDOWN is issued on the last (i.e when variable value is
reached to zero). The variable is used as ref counter.
I would prefer to avoid invoking PSP command if possible.
Additionally, the global semaphore is still needed to serialize
the sev_platform_init() and sev_platform_shutdown() from multiple
processes. e.g If process "A" calls sev_platform_init() and if it gets
preempted due to whatever reason then we don't want another process
to issue the shutdown command while process "A" is in middle of
sev_platform_init().
How? You're holding fw_init_mutex.
In your previous reply you comments on global semaphore (fw_init_mutex)
and in response I tried to highlight why we need the global semaphore.
Did I misunderstood your comment ?
-Brijesh