fix: VM/SP pre-emption by NS interrupt

On SP vCPU pre-emption by an NS interrupt (without managed exit), the
SPMC is expected to use the FFA_INTERRUPT reporting interface and pass
the VM id/vCPU index of the pre-empted execution context. This permits
the normal world driver to resume the vCPU once it has handled the NS
interrupt, as mentioned by FF-A v1.1 EAC0 section 12.4.1 bullet 1.
Change [1] broke this assumption because of different expectations for
the Hafnium driver [2] and the upstream FF-A kernel driver [3].
Restore api_preempt to pass FFA_INTERRUPT with VM id/vCPU index.
The Hafnium driver shouldn't be affected as in the case of VM
pre-emption it gets the same VM/vCPU ids (as opposed to zeros) as return
from last FFA_RUN and then proceeds with a fresh FFA_RUN invocation.

[1] https://review.trustedfirmware.org/c/hafnium/hafnium/+/6547/4/src/api.c#b247
[2] https://review.trustedfirmware.org/c/hafnium/driver/linux/+/6545/2/main.c
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/firmware/arm_ffa/driver.c?h=v5.15.52#n338

Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Change-Id: I84ee7623230c186b80e8fa771d9f74236f73d629
diff --git a/src/api.c b/src/api.c
index 303b5ab..79095f9 100644
--- a/src/api.c
+++ b/src/api.c
@@ -241,6 +241,7 @@
 {
 	struct ffa_value ret = {
 		.func = FFA_INTERRUPT_32,
+		.arg1 = ffa_vm_vcpu(current->vm->id, vcpu_index(current)),
 	};
 
 	return api_switch_to_primary(current, ret, VCPU_STATE_PREEMPTED);