Commit 0756244d authored by Marc Zyngier's avatar Marc Zyngier Committed by Bjorn Helgaas
Browse files

PCI: xgene-msi: Drop superfluous fields from xgene_msi structure



The xgene_msi structure remembers both the of_node of the device
and the number of CPUs. All of which are perfectly useless.

Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Signed-off-by: default avatarLorenzo Pieralisi <lpieralisi@kernel.org>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Link: https://lore.kernel.org/r/20250708173404.1278635-7-maz@kernel.org
parent d17e3f8a
Loading
Loading
Loading
Loading
+10 −13
Original line number Diff line number Diff line
@@ -31,14 +31,12 @@ struct xgene_msi_group {
};

struct xgene_msi {
	struct device_node	*node;
	struct irq_domain	*inner_domain;
	u64			msi_addr;
	void __iomem		*msi_regs;
	unsigned long		*bitmap;
	struct mutex		bitmap_lock;
	struct xgene_msi_group	*msi_groups;
	int			num_cpus;
};

/* Global data */
@@ -147,7 +145,7 @@ static void xgene_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
 */
static int hwirq_to_cpu(unsigned long hwirq)
{
	return (hwirq % xgene_msi_ctrl.num_cpus);
	return (hwirq % num_possible_cpus());
}

static unsigned long hwirq_to_canonical_hwirq(unsigned long hwirq)
@@ -186,9 +184,9 @@ static int xgene_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,
	mutex_lock(&msi->bitmap_lock);

	msi_irq = bitmap_find_next_zero_area(msi->bitmap, NR_MSI_VEC, 0,
					     msi->num_cpus, 0);
					     num_possible_cpus(), 0);
	if (msi_irq < NR_MSI_VEC)
		bitmap_set(msi->bitmap, msi_irq, msi->num_cpus);
		bitmap_set(msi->bitmap, msi_irq, num_possible_cpus());
	else
		msi_irq = -ENOSPC;

@@ -214,7 +212,7 @@ static void xgene_irq_domain_free(struct irq_domain *domain,
	mutex_lock(&msi->bitmap_lock);

	hwirq = hwirq_to_canonical_hwirq(d->hwirq);
	bitmap_clear(msi->bitmap, hwirq, msi->num_cpus);
	bitmap_clear(msi->bitmap, hwirq, num_possible_cpus());

	mutex_unlock(&msi->bitmap_lock);

@@ -235,10 +233,11 @@ static const struct msi_parent_ops xgene_msi_parent_ops = {
	.init_dev_msi_info	= msi_lib_init_dev_msi_info,
};

static int xgene_allocate_domains(struct xgene_msi *msi)
static int xgene_allocate_domains(struct device_node *node,
				  struct xgene_msi *msi)
{
	struct irq_domain_info info = {
		.fwnode		= of_fwnode_handle(msi->node),
		.fwnode		= of_fwnode_handle(node),
		.ops		= &xgene_msi_domain_ops,
		.size		= NR_MSI_VEC,
		.host_data	= msi,
@@ -358,7 +357,7 @@ static int xgene_msi_hwirq_alloc(unsigned int cpu)
	int i;
	int err;

	for (i = cpu; i < NR_HW_IRQS; i += msi->num_cpus) {
	for (i = cpu; i < NR_HW_IRQS; i += num_possible_cpus()) {
		msi_group = &msi->msi_groups[i];

		/*
@@ -386,7 +385,7 @@ static int xgene_msi_hwirq_free(unsigned int cpu)
	struct xgene_msi_group *msi_group;
	int i;

	for (i = cpu; i < NR_HW_IRQS; i += msi->num_cpus) {
	for (i = cpu; i < NR_HW_IRQS; i += num_possible_cpus()) {
		msi_group = &msi->msi_groups[i];
		irq_set_chained_handler_and_data(msi_group->gic_irq, NULL,
						 NULL);
@@ -417,8 +416,6 @@ static int xgene_msi_probe(struct platform_device *pdev)
		goto error;
	}
	xgene_msi->msi_addr = res->start;
	xgene_msi->node = pdev->dev.of_node;
	xgene_msi->num_cpus = num_possible_cpus();

	rc = xgene_msi_init_allocator(xgene_msi);
	if (rc) {
@@ -426,7 +423,7 @@ static int xgene_msi_probe(struct platform_device *pdev)
		goto error;
	}

	rc = xgene_allocate_domains(xgene_msi);
	rc = xgene_allocate_domains(dev_of_node(&pdev->dev), xgene_msi);
	if (rc) {
		dev_err(&pdev->dev, "Failed to allocate MSI domain\n");
		goto error;