On Mon, Dec 11, 2023 at 12:15:19AM +0800, Jiqian Chen wrote: > There is a need for some scenarios to use gsi sysfs. > For example, when xen passthrough a device to dumU, it will > use gsi to map pirq, but currently userspace can't get gsi > number. > So, add gsi sysfs for that and for other potential scenarios. > > Co-developed-by: Huang Rui <ray.huang@xxxxxxx> > Signed-off-by: Jiqian Chen <Jiqian.Chen@xxxxxxx> > --- > drivers/acpi/pci_irq.c | 1 + > drivers/pci/pci-sysfs.c | 11 +++++++++++ > include/linux/pci.h | 2 ++ > 3 files changed, 14 insertions(+) > > diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c > index 630fe0a34bc6..739a58755df2 100644 > --- a/drivers/acpi/pci_irq.c > +++ b/drivers/acpi/pci_irq.c > @@ -449,6 +449,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev) > kfree(entry); > return 0; > } > + dev->gsi = gsi; It would be better if the gsi if fetched without requiring calling acpi_pci_irq_enable(), as the gsi doesn't require the interrupt to be enabled. The gsi is known at boot time and won't change for the lifetime of the device. > > rc = acpi_register_gsi(&dev->dev, gsi, triggering, polarity); > if (rc < 0) { > diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c > index 2321fdfefd7d..c51df88d079e 100644 > --- a/drivers/pci/pci-sysfs.c > +++ b/drivers/pci/pci-sysfs.c > @@ -71,6 +71,16 @@ static ssize_t irq_show(struct device *dev, > } > static DEVICE_ATTR_RO(irq); > > +static ssize_t gsi_show(struct device *dev, > + struct device_attribute *attr, > + char *buf) > +{ > + struct pci_dev *pdev = to_pci_dev(dev); const Thanks, Roger.