diff --git a/Makefile b/Makefile index 4d925b3d7..a5a3a78e9 100644 --- a/Makefile +++ b/Makefile @@ -131,7 +131,7 @@ INCLUDES += -Ilib/include/ \ -Iinclude/${ARCH}/ \ -Iinclude/ \ -Iarch/system/gic \ - -Icommon/psci \ + -Iservices/psci \ -Iinclude/stdlib \ -Iinclude/stdlib/sys \ -Iplat/${PLAT} \ diff --git a/bl31/bl31.mk b/bl31/bl31.mk index fec8ebe24..1522b8399 100644 --- a/bl31/bl31.mk +++ b/bl31/bl31.mk @@ -33,13 +33,13 @@ vpath %.c common \ arch/system/gic \ plat/${PLAT} \ arch/${ARCH} \ - common/psci \ + services/psci \ lib/sync/locks/bakery \ plat/${PLAT}/${ARCH} \ ${PLAT_BL31_C_VPATH} vpath %.S lib/arch/${ARCH} \ - common/psci \ + services/psci \ include \ plat/${PLAT}/${ARCH} \ lib/sync/locks/exclusive \ diff --git a/common/psci/psci_afflvl_off.c b/services/psci/psci_afflvl_off.c similarity index 99% rename from common/psci/psci_afflvl_off.c rename to services/psci/psci_afflvl_off.c index 1d8f2912d..72557aa31 100644 --- a/common/psci/psci_afflvl_off.c +++ b/services/psci/psci_afflvl_off.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include diff --git a/common/psci/psci_afflvl_on.c b/services/psci/psci_afflvl_on.c similarity index 99% rename from common/psci/psci_afflvl_on.c rename to services/psci/psci_afflvl_on.c index 14f524c8f..d22904cd9 100644 --- a/common/psci/psci_afflvl_on.c +++ b/services/psci/psci_afflvl_on.c @@ -31,11 +31,13 @@ #include #include #include +#include #include #include #include #include #include +#include typedef int (*afflvl_on_handler)(unsigned long, aff_map_node *, diff --git a/common/psci/psci_afflvl_suspend.c b/services/psci/psci_afflvl_suspend.c similarity index 98% rename from common/psci/psci_afflvl_suspend.c rename to services/psci/psci_afflvl_suspend.c index c12ad437c..4391580be 100644 --- a/common/psci/psci_afflvl_suspend.c +++ b/services/psci/psci_afflvl_suspend.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -87,6 +88,7 @@ static int psci_afflvl0_suspend(unsigned long mpidr, { unsigned int index, plat_state; unsigned long psci_entrypoint, sctlr = read_sctlr(); + el3_state *saved_el3_state; int rc = PSCI_E_SUCCESS; /* Sanity check to safeguard against data corruption */ @@ -112,6 +114,13 @@ static int psci_afflvl0_suspend(unsigned long mpidr, cm_el3_sysregs_context_save(NON_SECURE); rc = PSCI_E_SUCCESS; + /* + * The EL3 state to PoC since it will be accessed after a + * reset with the caches turned off + */ + saved_el3_state = get_el3state_ctx(cm_get_context(mpidr, NON_SECURE)); + flush_dcache_range((uint64_t) saved_el3_state, sizeof(*saved_el3_state)); + /* Set the secure world (EL3) re-entry point after BL1 */ psci_entrypoint = (unsigned long) psci_aff_suspend_finish_entry; diff --git a/common/psci/psci_common.c b/services/psci/psci_common.c similarity index 100% rename from common/psci/psci_common.c rename to services/psci/psci_common.c diff --git a/common/psci/psci_entry.S b/services/psci/psci_entry.S similarity index 100% rename from common/psci/psci_entry.S rename to services/psci/psci_entry.S diff --git a/common/psci/psci_main.c b/services/psci/psci_main.c similarity index 100% rename from common/psci/psci_main.c rename to services/psci/psci_main.c diff --git a/common/psci/psci_private.h b/services/psci/psci_private.h similarity index 100% rename from common/psci/psci_private.h rename to services/psci/psci_private.h diff --git a/common/psci/psci_setup.c b/services/psci/psci_setup.c similarity index 100% rename from common/psci/psci_setup.c rename to services/psci/psci_setup.c