Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4f9edb2 authored by Marc Zyngier's avatar Marc Zyngier
Browse files

irqchip/gic-v3: Expose GICD_TYPER in the rdist structure



Instead of exposing the GIC distributor IntID field in the rdist
structure that is passed to the ITS, let's replace it with a
copy of the whole GICD_TYPER register. We are going to need
some of this information at a later time.

No functionnal change.

Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
parent 38dd7c49
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1616,7 +1616,7 @@ static int __init its_alloc_lpi_tables(void)
{
	phys_addr_t paddr;

	lpi_id_bits = gic_rdists->id_bits;
	lpi_id_bits = GICD_TYPER_ID_BITS(gic_rdists->gicd_typer);
	gic_rdists->prop_page = its_allocate_prop_table(GFP_NOWAIT);
	if (!gic_rdists->prop_page) {
		pr_err("Failed to allocate PROPBASE\n");
+2 −2
Original line number Diff line number Diff line
@@ -877,7 +877,7 @@ static struct irq_chip gic_eoimode1_chip = {
	.flags			= IRQCHIP_SET_TYPE_MASKED,
};

#define GIC_ID_NR		(1U << gic_data.rdists.id_bits)
#define GIC_ID_NR	(1U << GICD_TYPER_ID_BITS(gic_data.rdists.gicd_typer))

static int gic_irq_domain_map(struct irq_domain *d, unsigned int irq,
			      irq_hw_number_t hw)
@@ -1091,7 +1091,7 @@ static int __init gic_init_bases(void __iomem *dist_base,
	 * The GIC only supports up to 1020 interrupt sources (SGI+PPI+SPI)
	 */
	typer = readl_relaxed(gic_data.dist_base + GICD_TYPER);
	gic_data.rdists.id_bits = GICD_TYPER_ID_BITS(typer);
	gic_data.rdists.gicd_typer = typer;
	gic_irqs = GICD_TYPER_IRQS(typer);
	if (gic_irqs > 1020)
		gic_irqs = 1020;
+1 −1
Original line number Diff line number Diff line
@@ -576,8 +576,8 @@ struct rdists {
		phys_addr_t	phys_base;
	} __percpu		*rdist;
	struct page		*prop_page;
	int			id_bits;
	u64			flags;
	u32			gicd_typer;
	bool			has_vlpis;
	bool			has_direct_lpi;
};