[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 09/10] xen/arm: ffa: Remove per VM notif_enabled
Hi Jens, > On 24 Oct 2024, at 09:41, Jens Wiklander <jens.wiklander@xxxxxxxxxx> wrote: > > Hi Bertrand, > > On Wed, Oct 16, 2024 at 10:32 AM Bertrand Marquis > <bertrand.marquis@xxxxxxx> wrote: >> >> Remove the per VM flag to store if notifications are enabled or not as >> the only case where they are not, if notifications are enabled globally, >> will make the VM creation fail. >> Also use the opportunity to always give the notifications interrupts IDs >> to VM. If the firmware does not support notifications, there won't be >> any generated and setting one will give back a NOT_SUPPORTED. >> >> Signed-off-by: Bertrand Marquis <bertrand.marquis@xxxxxxx> >> --- >> Changes in v2: >> - rebase >> --- >> xen/arch/arm/tee/ffa.c | 17 +++-------------- >> xen/arch/arm/tee/ffa_notif.c | 10 +--------- >> xen/arch/arm/tee/ffa_private.h | 2 -- >> 3 files changed, 4 insertions(+), 25 deletions(-) >> >> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c >> index 72826b49d2aa..3a9525aa4598 100644 >> --- a/xen/arch/arm/tee/ffa.c >> +++ b/xen/arch/arm/tee/ffa.c >> @@ -169,8 +169,6 @@ static void handle_version(struct cpu_user_regs *regs) >> >> static void handle_features(struct cpu_user_regs *regs) >> { >> - struct domain *d = current->domain; >> - struct ffa_ctx *ctx = d->arch.tee; >> uint32_t a1 = get_user_reg(regs, 1); >> unsigned int n; >> >> @@ -218,16 +216,10 @@ static void handle_features(struct cpu_user_regs *regs) >> ffa_set_regs_success(regs, 0, 0); >> break; >> case FFA_FEATURE_NOTIF_PEND_INTR: >> - if ( ctx->notif.enabled ) >> - ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0); >> - else >> - ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED); >> + ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0); >> break; >> case FFA_FEATURE_SCHEDULE_RECV_INTR: >> - if ( ctx->notif.enabled ) >> - ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0); >> - else >> - ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED); >> + ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0); >> break; >> >> case FFA_NOTIFICATION_BIND: >> @@ -236,10 +228,7 @@ static void handle_features(struct cpu_user_regs *regs) >> case FFA_NOTIFICATION_SET: >> case FFA_NOTIFICATION_INFO_GET_32: >> case FFA_NOTIFICATION_INFO_GET_64: >> - if ( ctx->notif.enabled ) >> - ffa_set_regs_success(regs, 0, 0); >> - else >> - ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED); >> + ffa_set_regs_success(regs, 0, 0); >> break; >> default: >> ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED); >> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c >> index 4b3e46318f4b..3c6418e62e2b 100644 >> --- a/xen/arch/arm/tee/ffa_notif.c >> +++ b/xen/arch/arm/tee/ffa_notif.c >> @@ -405,7 +405,6 @@ void ffa_notif_init(void) >> >> int ffa_notif_domain_init(struct domain *d) >> { >> - struct ffa_ctx *ctx = d->arch.tee; >> int32_t res; >> >> if ( !notif_enabled ) >> @@ -415,18 +414,11 @@ int ffa_notif_domain_init(struct domain *d) >> if ( res ) >> return -ENOMEM; >> >> - ctx->notif.enabled = true; >> - >> return 0; >> } >> >> void ffa_notif_domain_destroy(struct domain *d) >> { >> - struct ffa_ctx *ctx = d->arch.tee; >> - >> - if ( ctx->notif.enabled ) >> - { >> + if ( notif_enabled ) >> ffa_notification_bitmap_destroy(ffa_get_vm_id(d)); > > This call may now be done even if there hasn't been a successful call > to ffa_notification_bitmap_create(). > A comment mentioning this and that it's harmless (if we can be sure it > is) would be nice. > You mean in the case where it failed during domain_init ? I can add the following comment: Call bitmap_destroy even if bitmap create failed as the SPMC should return an error that we will ignore Would that be ok ? Cheers Bertrand > Cheers, > Jens > >> - ctx->notif.enabled = false; >> - } >> } >> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h >> index 02162e0ee4c7..973ee55be09b 100644 >> --- a/xen/arch/arm/tee/ffa_private.h >> +++ b/xen/arch/arm/tee/ffa_private.h >> @@ -281,8 +281,6 @@ struct ffa_mem_region { >> }; >> >> struct ffa_ctx_notif { >> - bool enabled; >> - >> /* >> * True if domain is reported by FFA_NOTIFICATION_INFO_GET to have >> * pending global notifications. >> -- >> 2.47.0
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |