[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] arm: gic-v3: clear GICR active interrupts




> -----Original Message-----
> From: Julien Grall [mailto:julien.grall@xxxxxxx]
> Sent: 2019年1月30日 21:49
> To: Peng Fan <peng.fan@xxxxxxx>; sstabellini@xxxxxxxxxx
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx; Andre Przywara
> <andre.przywara@xxxxxxx>
> Subject: Re: [PATCH] arm: gic-v3: clear GICR active interrupts
> 
> Hi,
> 
> On 30/01/2019 13:36, Peng Fan wrote:
> >>> Each ICACTIVER0 registers hold the active bit for 32 interrupts.
> >>> However, this code assumes the register only hold 4 interrupts. So
> >>> this will write to unwanted area.
> >>>
> >>> There are only 16 SGIs, so it fits in one write to ICACTIVER0. As
> >>> wrote above, you also need to deactivate the PPIs. So the following
> >>> should
> >> be enough:
> >>>
> >>> /*
> >>>    * The activate state is unknown at boot, so make sure all SGIs
> >>> and PPIs
> >> are
> >>>    * de-activated.
> >>>    */
> >>> writel_relaxed(0xffffffff, GICD_RDIST_SGI_BASE + GICR_ICACTIVER0);
> >
> > Just have a following up question, according to
> > IHI0069D_gic_architecture_specification
> > "8.11.3 GICR_ICACTIVER0, Interrupt Clear-Active Register 0"
> > This field resets to a value that is architecturally UNKNOWN, Do we
> > need to take SPI into consideration as the following in gic_cpu_init?
> > for (i = 0; i < nr_lines; i +=32)
> >     writel_relaxed(0xffffffff, GICD_RDIST_SGI_BASE + GICR_ICACTIVER0 + (i
> > / 32) * 4);
> >
> > and move nr_lines out from gic_dist_init to a static global varaiable.
> 
> You can't clear SPIs through GICD_RDIST_SGI_BASE. You have to use the
> GICD.

Oops. I got wrong.

> 
> Furthermore, gic_cpu_init is called for every CPU so this is not a good place
> for clearing shared interrupts. Shared interrupts should be cleared in
> gic_dist_init as this is called only once.

Yes.

Thanks,
Peng.

> 
> Cheers,
> 
> --
> Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.