提交 53324233 编写于 作者: X Xu Qiang 提交者: Xie XiuQi

irq-gic-v3-its: It can't be initialized when the GICR had been cut

ascend inclusion
category: bugfix
bugzilla: NA
CVE: NA

------------

In FPGA, We need to check if the gicr has been cut,
and if it is, it can't be initialized
Signed-off-by: NXu Qiang <xuqiang36@huawei.com>
Signed-off-by: NLijun Fang <fanglijun3@huawei.com>
Reviewed-by: NHanjun Guo <guohanjun@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 c16fd413
......@@ -2420,6 +2420,7 @@ static void its_cpu_init_lpis_others(void __iomem *rbase, int cpu)
static void its_cpu_init_collection_others(void __iomem *rbase,
phys_addr_t phys_base, int cpu)
{
u32 count;
struct its_node *its;
raw_spin_lock(&its_lock);
......@@ -2445,6 +2446,32 @@ static void its_cpu_init_collection_others(void __iomem *rbase,
target = GICR_TYPER_CPU_NUMBER(target) << 16;
}
dsb(sy);
/* In FPGA, We need to check if the gicr has been cut,
* and if it is, it can't be initialized
*/
count = 2000;
while (1) {
if (readl_relaxed(rbase + GICR_SYNCR) == 0)
break;
count--;
if (!count) {
pr_err("this gicr does not exist, or it's abnormal:%pK\n",
&phys_base);
break;
}
cpu_relax();
udelay(1);
}
if (count == 0)
break;
pr_info("its init other collection table, ITS:%pK, GICR:%pK, coreId:%u\n",
&its->phys_base, &phys_base, cpu);
/* Perform collection mapping */
its->collections[cpu].target_address = target;
its->collections[cpu].col_id = cpu;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册