Loading drivers/soc/qcom/peripheral-loader.c +24 −7 Original line number Diff line number Diff line Loading @@ -582,11 +582,35 @@ static int pil_init_mmap(struct pil_desc *desc, const struct pil_mdt *mdt) return pil_init_entry_addr(priv, mdt); } struct pil_map_fw_info { void *region; unsigned long attrs; phys_addr_t base_addr; struct device *dev; }; static void pil_release_mmap(struct pil_desc *desc) { struct pil_priv *priv = desc->priv; struct pil_seg *p, *tmp; u64 zero = 0ULL; u8 __iomem *buf; struct pil_map_fw_info map_fw_info = { .attrs = desc->attrs, .region = priv->region, .base_addr = priv->region_start, .dev = desc->dev, }; void *map_data = desc->map_data ? desc->map_data : &map_fw_info; /* Clear memory so that unauthorized ELF code is not left behind */ buf = desc->map_fw_mem(priv->region_start, (priv->region_end - priv->region_start), map_data); pil_memset_io(buf, 0, (priv->region_end - priv->region_start)); desc->unmap_fw_mem(buf, (priv->region_end - priv->region_start), map_data); if (priv->info) { __iowrite32_copy(&priv->info->start, &zero, Loading @@ -602,13 +626,6 @@ static void pil_release_mmap(struct pil_desc *desc) #define IOMAP_SIZE SZ_1M struct pil_map_fw_info { void *region; unsigned long attrs; phys_addr_t base_addr; struct device *dev; }; static void *map_fw_mem(phys_addr_t paddr, size_t size, void *data) { struct pil_map_fw_info *info = data; Loading Loading
drivers/soc/qcom/peripheral-loader.c +24 −7 Original line number Diff line number Diff line Loading @@ -582,11 +582,35 @@ static int pil_init_mmap(struct pil_desc *desc, const struct pil_mdt *mdt) return pil_init_entry_addr(priv, mdt); } struct pil_map_fw_info { void *region; unsigned long attrs; phys_addr_t base_addr; struct device *dev; }; static void pil_release_mmap(struct pil_desc *desc) { struct pil_priv *priv = desc->priv; struct pil_seg *p, *tmp; u64 zero = 0ULL; u8 __iomem *buf; struct pil_map_fw_info map_fw_info = { .attrs = desc->attrs, .region = priv->region, .base_addr = priv->region_start, .dev = desc->dev, }; void *map_data = desc->map_data ? desc->map_data : &map_fw_info; /* Clear memory so that unauthorized ELF code is not left behind */ buf = desc->map_fw_mem(priv->region_start, (priv->region_end - priv->region_start), map_data); pil_memset_io(buf, 0, (priv->region_end - priv->region_start)); desc->unmap_fw_mem(buf, (priv->region_end - priv->region_start), map_data); if (priv->info) { __iowrite32_copy(&priv->info->start, &zero, Loading @@ -602,13 +626,6 @@ static void pil_release_mmap(struct pil_desc *desc) #define IOMAP_SIZE SZ_1M struct pil_map_fw_info { void *region; unsigned long attrs; phys_addr_t base_addr; struct device *dev; }; static void *map_fw_mem(phys_addr_t paddr, size_t size, void *data) { struct pil_map_fw_info *info = data; Loading