2023-07-03 13:58:56

by Niklas Schnelle

[permalink] [raw]
Subject: [PATCH v6 0/2] PCI: Handle HAS_IOPORT dependencies

Hi Bjorn,

This is a follow up to my ongoing effort of making the inb()/outb() and
similar I/O port accessors compile-time optional. Previously I sent this as
a complete treewide series titled "treewide: Remove I/O port accessors for
HAS_IOPORT=n" with the latest being its 5th version[0]. Now about half of
the per-subsystem patches have been merged so I'm changing over to stand
alone subsystem patches. These series are stand alone and should be merged
via the relevant tree such that with all subsystems complete we can follow
this up with the last patch[1] that will make the I/O port accessors
compile-time optional.

As for compile-time vs runtime see Linus' reply to my first attempt[2].

Other than rebasing on current master there are no changes to these
two patches for the PCI subsystem.

Thanks,
Niklas

[0] https://lore.kernel.org/all/[email protected]/
[1] https://lore.kernel.org/all/[email protected]/
[2] https://lore.kernel.org/lkml/CAHk-=wg80je=K7madF4e7WrRNp37e3qh6y10Svhdc7O8SZ_-8g@mail.gmail.com/

Niklas Schnelle (2):
PCI: Make quirk using inw() depend on HAS_IOPORT
PCI/sysfs: Make I/O resource depend on HAS_IOPORT

drivers/pci/pci-sysfs.c | 4 ++++
drivers/pci/quirks.c | 2 ++
2 files changed, 6 insertions(+)


base-commit: a901a3568fd26ca9c4a82d8bc5ed5b3ed844d451
--
2.39.2



2023-07-03 13:59:30

by Niklas Schnelle

[permalink] [raw]
Subject: [PATCH v6 1/2] PCI: Make quirk using inw() depend on HAS_IOPORT

In the future inw() and friends will not be compiled on architectures
without I/O port support.

Acked-by: Bjorn Helgaas <[email protected]>
Co-developed-by: Arnd Bergmann <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
Signed-off-by: Niklas Schnelle <[email protected]>
---
drivers/pci/quirks.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 321156ca273d..ef193661c3d1 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -361,6 +361,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_CBUS_2, quirk_isa_d
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_CBUS_3, quirk_isa_dma_hangs);
#endif

+#ifdef CONFIG_HAS_IOPORT
/*
* Intel NM10 "TigerPoint" LPC PM1a_STS.BM_STS must be clear
* for some HT machines to use C4 w/o hanging.
@@ -380,6 +381,7 @@ static void quirk_tigerpoint_bm_sts(struct pci_dev *dev)
}
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TGP_LPC, quirk_tigerpoint_bm_sts);
+#endif

/* Chipsets where PCI->PCI transfers vanish or hang */
static void quirk_nopcipci(struct pci_dev *dev)
--
2.39.2


2023-07-03 14:14:11

by Niklas Schnelle

[permalink] [raw]
Subject: [PATCH v6 2/2] PCI/sysfs: Make I/O resource depend on HAS_IOPORT

If legacy I/O spaces are not supported simply return an error when
trying to access them via pci_resource_io(). This allows inb() and
friends to become undefined when they are known at compile time to be
non-functional in a later patch.

Co-developed-by: Arnd Bergmann <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
Acked-by: Bjorn Helgaas <[email protected]>
Signed-off-by: Niklas Schnelle <[email protected]>
---
drivers/pci/pci-sysfs.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index ab32a91f287b..d9eede2dbc0e 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -1083,6 +1083,7 @@ static ssize_t pci_resource_io(struct file *filp, struct kobject *kobj,
struct bin_attribute *attr, char *buf,
loff_t off, size_t count, bool write)
{
+#ifdef CONFIG_HAS_IOPORT
struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
int bar = (unsigned long)attr->private;
unsigned long port = off;
@@ -1116,6 +1117,9 @@ static ssize_t pci_resource_io(struct file *filp, struct kobject *kobj,
return 4;
}
return -EINVAL;
+#else
+ return -ENXIO;
+#endif
}

static ssize_t pci_read_resource_io(struct file *filp, struct kobject *kobj,
--
2.39.2


2023-07-03 17:55:26

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH v6 0/2] PCI: Handle HAS_IOPORT dependencies

On Mon, Jul 03, 2023 at 03:52:53PM +0200, Niklas Schnelle wrote:
> Hi Bjorn,
>
> This is a follow up to my ongoing effort of making the inb()/outb() and
> similar I/O port accessors compile-time optional. Previously I sent this as
> a complete treewide series titled "treewide: Remove I/O port accessors for
> HAS_IOPORT=n" with the latest being its 5th version[0]. Now about half of
> the per-subsystem patches have been merged so I'm changing over to stand
> alone subsystem patches. These series are stand alone and should be merged
> via the relevant tree such that with all subsystems complete we can follow
> this up with the last patch[1] that will make the I/O port accessors
> compile-time optional.

Is the merge plan for each subsystem to merge this separately? I
acked these so they could be merged along with all the tree-wide
changes.

> As for compile-time vs runtime see Linus' reply to my first attempt[2].
>
> Other than rebasing on current master there are no changes to these
> two patches for the PCI subsystem.
>
> Thanks,
> Niklas
>
> [0] https://lore.kernel.org/all/[email protected]/
> [1] https://lore.kernel.org/all/[email protected]/
> [2] https://lore.kernel.org/lkml/CAHk-=wg80je=K7madF4e7WrRNp37e3qh6y10Svhdc7O8SZ_-8g@mail.gmail.com/
>
> Niklas Schnelle (2):
> PCI: Make quirk using inw() depend on HAS_IOPORT
> PCI/sysfs: Make I/O resource depend on HAS_IOPORT
>
> drivers/pci/pci-sysfs.c | 4 ++++
> drivers/pci/quirks.c | 2 ++
> 2 files changed, 6 insertions(+)
>
>
> base-commit: a901a3568fd26ca9c4a82d8bc5ed5b3ed844d451
> --
> 2.39.2
>

2023-07-03 18:09:45

by Niklas Schnelle

[permalink] [raw]
Subject: Re: [PATCH v6 0/2] PCI: Handle HAS_IOPORT dependencies

On Mon, 2023-07-03 at 12:42 -0500, Bjorn Helgaas wrote:
> On Mon, Jul 03, 2023 at 03:52:53PM +0200, Niklas Schnelle wrote:
> > Hi Bjorn,
> >
> > This is a follow up to my ongoing effort of making the inb()/outb() and
> > similar I/O port accessors compile-time optional. Previously I sent this as
> > a complete treewide series titled "treewide: Remove I/O port accessors for
> > HAS_IOPORT=n" with the latest being its 5th version[0]. Now about half of
> > the per-subsystem patches have been merged so I'm changing over to stand
> > alone subsystem patches. These series are stand alone and should be merged
> > via the relevant tree such that with all subsystems complete we can follow
> > this up with the last patch[1] that will make the I/O port accessors
> > compile-time optional.
>
> Is the merge plan for each subsystem to merge this separately? I
> acked these so they could be merged along with all the tree-wide
> changes.

Hi Björn,

Yeah this went back and forth a little, sorry about that. With the
Kconfig introduction of HAS_IOPORT merged about half of the original
patches have been merged via subsystem maintainers or are at least
sitting in linux-next already. Arnd was anticipating that he'll pick
up some left overs but at the moment the simplest is for subsystems to
pick the patches up themselves ideally and if small enough for v6.5
still.

Thanks,
Niklas

>
> > As for compile-time vs runtime see Linus' reply to my first attempt[2].
> >
> > Other than rebasing on current master there are no changes to these
> > two patches for the PCI subsystem.
> >
> > Thanks,
> > Niklas
> >
> > [0] https://lore.kernel.org/all/[email protected]/
> > [1] https://lore.kernel.org/all/[email protected]/
> > [2] https://lore.kernel.org/lkml/CAHk-=wg80je=K7madF4e7WrRNp37e3qh6y10Svhdc7O8SZ_-8g@mail.gmail.com/
> >
> > Niklas Schnelle (2):
> > PCI: Make quirk using inw() depend on HAS_IOPORT
> > PCI/sysfs: Make I/O resource depend on HAS_IOPORT
> >
> > drivers/pci/pci-sysfs.c | 4 ++++
> > drivers/pci/quirks.c | 2 ++
> > 2 files changed, 6 insertions(+)
> >
> >
> > base-commit: a901a3568fd26ca9c4a82d8bc5ed5b3ed844d451
> > --
> > 2.39.2
> >


2023-07-18 21:26:27

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH v6 0/2] PCI: Handle HAS_IOPORT dependencies

On Mon, Jul 03, 2023 at 08:02:40PM +0200, Niklas Schnelle wrote:
> On Mon, 2023-07-03 at 12:42 -0500, Bjorn Helgaas wrote:
> > On Mon, Jul 03, 2023 at 03:52:53PM +0200, Niklas Schnelle wrote:
> > > Hi Bjorn,
> > >
> > > This is a follow up to my ongoing effort of making the inb()/outb() and
> > > similar I/O port accessors compile-time optional. Previously I sent this as
> > > a complete treewide series titled "treewide: Remove I/O port accessors for
> > > HAS_IOPORT=n" with the latest being its 5th version[0]. Now about half of
> > > the per-subsystem patches have been merged so I'm changing over to stand
> > > alone subsystem patches. These series are stand alone and should be merged
> > > via the relevant tree such that with all subsystems complete we can follow
> > > this up with the last patch[1] that will make the I/O port accessors
> > > compile-time optional.
> >
> > Is the merge plan for each subsystem to merge this separately? I
> > acked these so they could be merged along with all the tree-wide
> > changes.
>
> Hi Bj?rn,
>
> Yeah this went back and forth a little, sorry about that. With the
> Kconfig introduction of HAS_IOPORT merged about half of the original
> patches have been merged via subsystem maintainers or are at least
> sitting in linux-next already. Arnd was anticipating that he'll pick
> up some left overs but at the moment the simplest is for subsystems to
> pick the patches up themselves ideally and if small enough for v6.5
> still.

I didn't merge these in time for the v6.5 merge window. If you want
these in v6.5, it's fine with me, and it would probably make more
sense for you to bundle them with any other leftovers.

Otherwise, let me know and I'm happy to queue them for v6.6.

Bjorn

2023-07-18 22:24:14

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH v6 0/2] PCI: Handle HAS_IOPORT dependencies

On Tue, Jul 18, 2023 at 04:12:24PM -0500, Bjorn Helgaas wrote:
> On Mon, Jul 03, 2023 at 08:02:40PM +0200, Niklas Schnelle wrote:
> > On Mon, 2023-07-03 at 12:42 -0500, Bjorn Helgaas wrote:
> > > On Mon, Jul 03, 2023 at 03:52:53PM +0200, Niklas Schnelle wrote:
> > > > Hi Bjorn,
> > > >
> > > > This is a follow up to my ongoing effort of making the inb()/outb() and
> > > > similar I/O port accessors compile-time optional. Previously I sent this as
> > > > a complete treewide series titled "treewide: Remove I/O port accessors for
> > > > HAS_IOPORT=n" with the latest being its 5th version[0]. Now about half of
> > > > the per-subsystem patches have been merged so I'm changing over to stand
> > > > alone subsystem patches. These series are stand alone and should be merged
> > > > via the relevant tree such that with all subsystems complete we can follow
> > > > this up with the last patch[1] that will make the I/O port accessors
> > > > compile-time optional.
> > >
> > > Is the merge plan for each subsystem to merge this separately? I
> > > acked these so they could be merged along with all the tree-wide
> > > changes.
> >
> > Hi Bj?rn,
> >
> > Yeah this went back and forth a little, sorry about that. With the
> > Kconfig introduction of HAS_IOPORT merged about half of the original
> > patches have been merged via subsystem maintainers or are at least
> > sitting in linux-next already. Arnd was anticipating that he'll pick
> > up some left overs but at the moment the simplest is for subsystems to
> > pick the patches up themselves ideally and if small enough for v6.5
> > still.
>
> I didn't merge these in time for the v6.5 merge window. If you want
> these in v6.5, it's fine with me, and it would probably make more
> sense for you to bundle them with any other leftovers.
>
> Otherwise, let me know and I'm happy to queue them for v6.6.

I provisionally put these on pci/ioport for v6.6. If you pick them up
for v6.5, let me know and I'll just drop that branch.

Bjorn