[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87leo8jvud.ffs@tglx>
Date: Fri, 18 Nov 2022 13:22:34 +0100
From: Thomas Gleixner <tglx@...utronix.de>
To: "Tian, Kevin" <kevin.tian@...el.com>,
LKML <linux-kernel@...r.kernel.org>
Cc: "x86@...nel.org" <x86@...nel.org>, Joerg Roedel <joro@...tes.org>,
Will Deacon <will@...nel.org>,
"linux-pci@...r.kernel.org" <linux-pci@...r.kernel.org>,
Bjorn Helgaas <bhelgaas@...gle.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@....com>,
Marc Zyngier <maz@...nel.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Jason Gunthorpe <jgg@...lanox.com>,
"Jiang, Dave" <dave.jiang@...el.com>,
Alex Williamson <alex.williamson@...hat.com>,
"Williams, Dan J" <dan.j.williams@...el.com>,
Logan Gunthorpe <logang@...tatee.com>,
"Raj, Ashok" <ashok.raj@...el.com>, Jon Mason <jdmason@...zu.us>,
Allen Hubbe <allenbh@...il.com>,
"Ahmed S. Darwish" <darwi@...utronix.de>,
"Chatre, Reinette" <reinette.chatre@...el.com>
Subject: RE: [patch 12/20] genirq/msi: Make descriptor freeing domain aware
On Fri, Nov 18 2022 at 08:17, Kevin Tian wrote:
>> From: Thomas Gleixner <tglx@...utronix.de>
>> /**
>> - * msi_insert_msi_desc - Allocate and initialize a MSI descriptor in the
>> default domain
>> + * msi_insert_msi_desc - Allocate and initialize a MSI descriptor in the
>> default irqdomain
>> + *
>
> belong to last patch
Yes.
>> +/**
>> + * struct msi_ctrl - MSI internal management control structure
>> + * @domid: ID of the domain on which management operations should
>> be done
>> + * @first: First (hardware) slot index to operate on
>> + * @last: Last (hardware) slot index to operate on
>> + */
>> +struct msi_ctrl {
>> + unsigned int domid;
>> + unsigned int first;
>> + unsigned int last;
>> +};
>> +
>
> this really contains the range information. what about msi_range and
> then msi_range_valid()?
It's range plus domain id and later it gains nirqs. So its awkward in
any case.
>> +static void msi_domain_free_descs(struct device *dev, struct msi_ctrl *ctrl)
>> {
>> struct xarray *xa = &dev->msi.data->__store;
>> struct msi_desc *desc;
>> unsigned long idx;
>> + int base;
>> +
>> + lockdep_assert_held(&dev->msi.data->mutex);
>>
>> - if (WARN_ON_ONCE(first_index >= MSI_MAX_INDEX || last_index >=
>> MSI_MAX_INDEX))
>> + if (!msi_ctrl_valid(dev, ctrl))
>> return;
>>
>> - lockdep_assert_held(&dev->msi.data->mutex);
>> + base = msi_get_domain_base_index(dev, ctrl->domid);
>> + if (base < 0)
>> + return;
>
> What about putting domid checks in msi_ctrl_valid() then here could
> be a simple calculation on domid * MSI_XA_DOMAIN_SIZE.
>
> domid is part of msi_ctrl. then it sound reasonable to validate it
> together with first/last.
Let me look at that.
Powered by blists - more mailing lists