LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: "Maciej W. Rozycki" <macro@orcam.me.uk>
To: Nikolai Zhubr <zhubr.2@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Bjorn Helgaas <bhelgaas@google.com>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
Len Brown <len.brown@intel.com>, Pavel Machek <pavel@ucw.cz>,
Paolo Bonzini <pbonzini@redhat.com>,
Sean Christopherson <seanjc@google.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>
Cc: x86@kernel.org, linux-pci@vger.kernel.org,
linux-pm@vger.kernel.org, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH 0/6] x86: PIRQ/ELCR-related fixes and updates
Date: Tue, 20 Jul 2021 05:27:43 +0200 (CEST) [thread overview]
Message-ID: <alpine.DEB.2.21.2107171813230.9461@angie.orcam.me.uk> (raw)
Hi,
In the course of adding PIRQ routing support for Nikolai's FinALi system
I realised we need to have some infrastructure for the indirectly accessed
configuration space implemented by some chipsets as well as Cyrix CPUs and
also included with the Intel MP spec for the IMCR register via port I/O
space locations 0x22/0x23. With that in place I implemented PIRQ support
for the Intel PCEB/ESC combined EISA southbridge using the same scheme to
access the relevant registers and for the final remaining Intel chipset of
the era, that is the i420EX.
While at it I chose to rewrite ELCR register accesses to avoid using
magic numbers scattered across our code and use proper macros like with
the remaining PIC registers, and while at it again I noticed and fixed a
number of typos: s/ECLR/ELCR/.
Since there are mechanical dependencies between the patches (except for
typo fixes) I chose to send them as a series rather than individually,
though 3/6 depends on: <https://lore.kernel.org/patchwork/patch/1452772/>
necessarily as well, the fate of which is currently unclear to me.
See individual change descriptions for details.
Nikolai: for your system only 1/6 and 2/6 are required, though you are
free to experiment with all the patches. Mind that 3/6 mechanically
depends on the earlier change for the SIO PIRQ router referred above. In
any case please use the debug patch for PCI code as well as the earlier
patches for your other system and send the resulting bootstrap log for
confirmation.
Ideally this would be verified with PCI interrupt sharing, but for that
you'd have to track down one or more multifunction option cards (USB 2.0
interfaces with legacy 1.1 functions or serial/parallel multi-I/O cards
are good candidates, but of course there are more) or option devices with
PCI-to-PCI bridges, and then actually use some of these devices as well.
Any interrupt sharing will be reported, e.g.:
pci 0000:00:07.0: SIO/PIIX/ICH IRQ router [8086:7000]
pci 0000:00:11.0: PCI INT A -> PIRQ 63, mask deb8, excl 0c20
pci 0000:00:11.0: PCI INT A -> newirq 0
PCI: setting IRQ 11 as level-triggered
pci 0000:00:11.0: found PCI INT A -> IRQ 11
pci 0000:00:11.0: sharing IRQ 11 with 0000:00:07.2
pci 0000:02:00.0: using bridge 0000:00:11.0 INT A to get INT A
pci 0000:00:11.0: sharing IRQ 11 with 0000:02:00.0
pci 0000:02:01.0: using bridge 0000:00:11.0 INT B to get INT A
pci 0000:02:02.0: using bridge 0000:00:11.0 INT C to get INT A
pci 0000:03:00.0: using bridge 0000:00:11.0 INT A to get INT A
pci 0000:00:11.0: sharing IRQ 11 with 0000:03:00.0
pci 0000:04:00.0: using bridge 0000:00:11.0 INT B to get INT A
pci 0000:04:00.3: using bridge 0000:00:11.0 INT A to get INT D
pci 0000:00:11.0: sharing IRQ 11 with 0000:04:00.3
pci 0000:06:05.0: using bridge 0000:00:11.0 INT D to get INT A
pci 0000:06:08.0: using bridge 0000:00:11.0 INT C to get INT A
pci 0000:06:08.1: using bridge 0000:00:11.0 INT D to get INT B
pci 0000:06:08.2: using bridge 0000:00:11.0 INT A to get INT C
pci 0000:00:11.0: sharing IRQ 11 with 0000:06:08.2
-- a lot of sharing and swizzling here. :) You'd most definitely need:
<https://lore.kernel.org/patchwork/patch/1454747/> for that though, as I
can't imagine PCI BIOS 2.1 PIRQ routers to commonly enumerate devices
behind PCI-to-PCI bridges, given that they fail to cope with more complex
bus topologies created by option devices in the first place.
Maciej
next reply other threads:[~2021-07-20 3:29 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-20 3:27 Maciej W. Rozycki [this message]
2021-07-20 3:27 ` [PATCH 1/6] x86: Add support for 0x22/0x23 port I/O configuration space Maciej W. Rozycki
2021-08-10 21:35 ` [tip: x86/irq] " tip-bot2 for Maciej W. Rozycki
2021-07-20 3:27 ` [PATCH 2/6] x86/PCI: Add support for the ALi M1487 (IBC) PIRQ router Maciej W. Rozycki
2021-08-10 21:35 ` [tip: x86/irq] " tip-bot2 for Maciej W. Rozycki
2021-07-20 3:27 ` [PATCH 3/6] x86/PCI: Add support for the Intel 82374EB/82374SB (ESC) " Maciej W. Rozycki
2021-08-10 21:35 ` [tip: x86/irq] " tip-bot2 for Maciej W. Rozycki
2021-07-20 3:28 ` [PATCH 4/6] x86/PCI: Add support for the Intel 82426EX " Maciej W. Rozycki
2021-08-10 21:35 ` [tip: x86/irq] " tip-bot2 for Maciej W. Rozycki
2021-07-20 3:28 ` [PATCH 5/6] x86: Avoid magic number with ELCR register accesses Maciej W. Rozycki
2021-08-10 21:35 ` [tip: x86/irq] " tip-bot2 for Maciej W. Rozycki
2021-07-20 3:28 ` [PATCH 6/6] x86: Fix typo s/ECLR/ELCR/ for the PIC register Maciej W. Rozycki
2021-08-10 21:35 ` [tip: x86/irq] " tip-bot2 for Maciej W. Rozycki
2021-07-21 0:12 ` [PATCH 0/6] x86: PIRQ/ELCR-related fixes and updates Bjorn Helgaas
2021-07-21 20:41 ` Thomas Gleixner
2021-08-15 22:22 ` Nikolai Zhubr
2021-08-16 22:30 ` Maciej W. Rozycki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.21.2107171813230.9461@angie.orcam.me.uk \
--to=macro@orcam.me.uk \
--cc=bhelgaas@google.com \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pavel@ucw.cz \
--cc=pbonzini@redhat.com \
--cc=rjw@rjwysocki.net \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.com \
--cc=x86@kernel.org \
--cc=zhubr.2@gmail.com \
--subject='Re: [PATCH 0/6] x86: PIRQ/ELCR-related fixes and updates' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).