]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
crypto: hisilicon/sec2 - clear SEC debug regs
authorKai Ye <yekai13@huawei.com>
Tue, 7 Jul 2020 01:15:37 +0000 (09:15 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 16 Jul 2020 11:49:00 +0000 (21:49 +1000)
SEC debug registers aren't cleared even if its driver is removed,
so add a clearing operation in driver removing.

Signed-off-by: Kai Ye <yekai13@huawei.com>
Reviewed-by: Longfang Liu <liulongfang@huawei.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/hisilicon/sec2/sec_main.c

index 57de51fa6f5144b3dff4127f5ca3db0b80f77930..d5f0589a1b0d2df010a1291f2274071fe07a6f34 100644 (file)
@@ -346,10 +346,17 @@ static int sec_set_user_domain_and_cache(struct hisi_qm *qm)
 /* sec_debug_regs_clear() - clear the sec debug regs */
 static void sec_debug_regs_clear(struct hisi_qm *qm)
 {
+       int i;
+
        /* clear current_qm */
        writel(0x0, qm->io_base + QM_DFX_MB_CNT_VF);
        writel(0x0, qm->io_base + QM_DFX_DB_CNT_VF);
 
+       /* clear sec dfx regs */
+       writel(0x1, qm->io_base + SEC_CTRL_CNT_CLR_CE);
+       for (i = 0; i < ARRAY_SIZE(sec_dfx_regs); i++)
+               readl(qm->io_base + sec_dfx_regs[i].offset);
+
        /* clear rdclr_en */
        writel(0x0, qm->io_base + SEC_CTRL_CNT_CLR_CE);