power: reset: qcom-dload-mode: Store KASLR offset when available

Store KASLR offset in imem property when requested by devicetree.

Change-Id: I4f5f359fadab413db6bc5e80799a445218251872
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
This commit is contained in:
Elliot Berman 2019-12-03 09:39:59 -08:00
commit a54b8a7d7d

View file

@ -213,6 +213,27 @@ static void __iomem *map_prop_mem(const char *propname)
return addr;
}
#ifdef CONFIG_RANDOMIZE_BASE
#define KASLR_OFFSET_MASK 0x00000000FFFFFFFF
static void store_kaslr_offset(void)
{
void __iomem *mem = map_prop_mem("qcom,msm-imem-kaslr_offset");
if (!mem)
return;
__raw_writel(0xdead4ead, mem);
__raw_writel((kimage_vaddr - KIMAGE_VADDR) & KASLR_OFFSET_MASK,
mem + 4);
__raw_writel(((kimage_vaddr - KIMAGE_VADDR) >> 32) & KASLR_OFFSET_MASK,
mem + 8);
iounmap(mem);
}
#else
static void store_kaslr_offset(void) {}
#endif /* CONFIG_RANDOMIZE_BASE */
static int qcom_dload_probe(struct platform_device *pdev)
{
struct qcom_dload *poweroff;
@ -238,6 +259,7 @@ static int qcom_dload_probe(struct platform_device *pdev)
}
poweroff->dload_dest_addr = map_prop_mem("qcom,msm-imem-dload-type");
store_kaslr_offset();
if (enable_dump)
set_download_mode(QCOM_DOWNLOAD_FULLDUMP);