Browse Source

feat(ethos-n): add check for NPU in SiP setup

The SiP service in the Arm(R) Ethos(TM)-N NPU driver requires that there
is at least one NPU available. If there is no NPU available, the driver
is either used incorrectly or the HW config is incorrect.

To ensure that the SiP service is not incorrectly used, a setup handler
has been added to the service that will validate that there is at least
one NPU available.

Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
Change-Id: I8139a652f265cfc0db4a37464f39f1fb92868e10
pull/1996/head
Mikael Olsson 2 years ago
committed by Joanna Farley
parent
commit
a2cdbb1df0
  1. 10
      drivers/arm/ethosn/ethosn_smc.c
  2. 2
      include/drivers/arm/ethosn.h
  3. 10
      plat/arm/common/arm_sip_svc.c

10
drivers/arm/ethosn/ethosn_smc.c

@ -286,3 +286,13 @@ uintptr_t ethosn_smc_handler(uint32_t smc_fid,
SMC_RET1(handle, SMC_UNK);
}
}
int ethosn_smc_setup(void)
{
if (ETHOSN_NUM_DEVICES == 0U) {
ERROR("ETHOSN: No NPU found\n");
return ETHOSN_FAILURE;
}
return 0;
}

2
include/drivers/arm/ethosn.h

@ -58,6 +58,8 @@
#define ETHOSN_RESET_TYPE_FULL U(0)
#define ETHOSN_RESET_TYPE_HALT U(1)
int ethosn_smc_setup(void);
uintptr_t ethosn_smc_handler(uint32_t smc_fid,
u_register_t core_addr,
u_register_t asset_alloc_idx,

10
plat/arm/common/arm_sip_svc.c

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2019,2021, ARM Limited and Contributors. All rights reserved.
* Copyright (c) 2016-2023, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@ -34,6 +34,14 @@ static int arm_sip_setup(void)
#endif /* USE_DEBUGFS */
#if ARM_ETHOSN_NPU_DRIVER
if (ethosn_smc_setup() != 0) {
return 1;
}
#endif /* ARM_ETHOSN_NPU_DRIVER */
return 0;
}

Loading…
Cancel
Save