Merge "app: mmutests: Add tests for lpae"
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 07a8d76..d7c9786 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -90,6 +90,7 @@
extern int get_target_boot_params(const char *cmdline, const char *part,
char *buf, int buflen);
+void *info_buf;
void write_device_info_mmc(device_info *dev);
void write_device_info_flash(device_info *dev);
static int aboot_save_boot_hash_mmc(uint32_t image_addr, uint32_t image_size);
@@ -1472,7 +1473,6 @@
return 0;
}
-BUF_DMA_ALIGN(info_buf, BOOT_IMG_MAX_PAGE_SIZE);
void write_device_info_mmc(device_info *dev)
{
unsigned long long ptn = 0;
@@ -1551,10 +1551,15 @@
void write_device_info_flash(device_info *dev)
{
- struct device_info *info = (void *) info_buf;
+ struct device_info *info = memalign(PAGE_SIZE, ROUNDUP(BOOT_IMG_MAX_PAGE_SIZE, PAGE_SIZE));
struct ptentry *ptn;
struct ptable *ptable;
-
+ if(info == NULL)
+ {
+ dprintf(CRITICAL, "Failed to allocate memory for device info struct\n");
+ ASSERT(0);
+ }
+ info_buf = info;
ptable = flash_get_ptable();
if (ptable == NULL)
{
@@ -1576,6 +1581,7 @@
dprintf(CRITICAL, "ERROR: Cannot write device info\n");
return;
}
+ free(info);
}
static int read_allow_oem_unlock(device_info *dev)
@@ -1651,10 +1657,15 @@
void read_device_info_flash(device_info *dev)
{
- struct device_info *info = (void*) info_buf;
+ struct device_info *info = memalign(PAGE_SIZE, ROUNDUP(BOOT_IMG_MAX_PAGE_SIZE, PAGE_SIZE));
struct ptentry *ptn;
struct ptable *ptable;
-
+ if(info == NULL)
+ {
+ dprintf(CRITICAL, "Failed to allocate memory for device info struct\n");
+ ASSERT(0);
+ }
+ info_buf = info;
ptable = flash_get_ptable();
if (ptable == NULL)
{
@@ -1683,23 +1694,31 @@
write_device_info_flash(info);
}
memcpy(dev, info, sizeof(device_info));
+ free(info);
}
void write_device_info(device_info *dev)
{
if(target_is_emmc_boot())
{
- struct device_info *info = (void*) info_buf;
+ struct device_info *info = memalign(PAGE_SIZE, ROUNDUP(BOOT_IMG_MAX_PAGE_SIZE, PAGE_SIZE));
+ if(info == NULL)
+ {
+ dprintf(CRITICAL, "Failed to allocate memory for device info struct\n");
+ ASSERT(0);
+ }
+ info_buf = info;
memcpy(info, dev, sizeof(struct device_info));
#if USE_RPMB_FOR_DEVINFO
if (is_secure_boot_enable())
- write_device_info_rpmb((void*) info, mmc_get_device_blocksize());
+ write_device_info_rpmb((void*) info, PAGE_SIZE);
else
write_device_info_mmc(info);
#else
write_device_info_mmc(info);
#endif
+ free(info);
}
else
{
@@ -1711,11 +1730,17 @@
{
if(target_is_emmc_boot())
{
- struct device_info *info = (void*) info_buf;
+ struct device_info *info = memalign(PAGE_SIZE, ROUNDUP(BOOT_IMG_MAX_PAGE_SIZE, PAGE_SIZE));
+ if(info == NULL)
+ {
+ dprintf(CRITICAL, "Failed to allocate memory for device info struct\n");
+ ASSERT(0);
+ }
+ info_buf = info;
#if USE_RPMB_FOR_DEVINFO
if (is_secure_boot_enable())
- read_device_info_rpmb((void*) info, mmc_get_device_blocksize());
+ read_device_info_rpmb((void*) info, PAGE_SIZE);
else
read_device_info_mmc(info);
#else
@@ -1725,8 +1750,10 @@
if (memcmp(info->magic, DEVICE_MAGIC, DEVICE_MAGIC_SIZE))
{
memcpy(info->magic, DEVICE_MAGIC, DEVICE_MAGIC_SIZE);
- info->is_unlocked = 0;
- info->is_verified = 0;
+ if (is_secure_boot_enable())
+ info->is_unlocked = 0;
+ else
+ info->is_verified = 1;
info->is_tampered = 0;
#if USER_BUILD_VARIANT
info->charger_screen_enabled = 1;
@@ -1736,6 +1763,7 @@
write_device_info(info);
}
memcpy(dev, info, sizeof(device_info));
+ free(info);
}
else
{
diff --git a/platform/msm_shared/rpmb/rpmb.c b/platform/msm_shared/rpmb/rpmb.c
index de67c46..36bacab 100644
--- a/platform/msm_shared/rpmb/rpmb.c
+++ b/platform/msm_shared/rpmb/rpmb.c
@@ -140,7 +140,9 @@
read_rsp.cmd_id = CLIENT_CMD_READ_LK_DEVICE_STATE;
/* Read the device info */
+ arch_clean_invalidate_cache_range((addr_t) info, sz);
ret = qseecom_send_command(app_handle, (void*) &read_req, sizeof(read_req), (void*) &read_rsp, sizeof(read_rsp));
+ arch_invalidate_cache_range((addr_t) info, sz);
if (ret < 0 || read_rsp.status < 0)
{
@@ -165,7 +167,9 @@
write_rsp.cmd_id = CLIENT_CMD_WRITE_LK_DEVICE_STATE;
/* Write the device info */
+ arch_clean_invalidate_cache_range((addr_t) info, sz);
ret = qseecom_send_command(app_handle, (void *)&write_req, sizeof(write_req), (void *)&write_rsp, sizeof(write_rsp));
+ arch_invalidate_cache_range((addr_t) info, sz);
if (ret < 0 || write_rsp.status < 0)
{
diff --git a/project/msm8952.mk b/project/msm8952.mk
index 4cdcf6e..2a88469 100644
--- a/project/msm8952.mk
+++ b/project/msm8952.mk
@@ -66,7 +66,7 @@
DEFINES += MDTP_EFUSE_START=0
endif
-ENABLE_WDOG_SUPPORT := 1
+ENABLE_WDOG_SUPPORT := 0
ifeq ($(ENABLE_WDOG_SUPPORT),1)
DEFINES += WDOG_SUPPORT=1
endif