From: Christoph Hellwig <hch@lst.de>
To: Russell King - ARM Linux admin <linux@armlinux.org.uk>
Cc: Christoph Hellwig <hch@lst.de>,
"David S. Miller" <davem@davemloft.net>,
Jens Axboe <axboe@kernel.dk>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Richard Henderson <rth@twiddle.net>,
Ivan Kokshaysky <ink@jurassic.park.msu.ru>,
Matt Turner <mattst88@gmail.com>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Michael Ellerman <mpe@ellerman.id.au>,
linux-ide@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 02/10] ARM: disable CONFIG_IDE in footbridge_defconfig
Date: Mon, 22 Mar 2021 16:33:14 +0100 [thread overview]
Message-ID: <20210322153314.GA3440@lst.de> (raw)
In-Reply-To: <20210322151823.GA2764@lst.de>
On Mon, Mar 22, 2021 at 04:18:23PM +0100, Christoph Hellwig wrote:
> On Mon, Mar 22, 2021 at 03:15:03PM +0000, Russell King - ARM Linux admin wrote:
> > It gets worse than that though - due to a change to remove
> > pcibios_min_io from the generic code, moving it into the ARM
> > architecture code, this has caused a regression that prevents the
> > legacy resources being registered against the bus resource. So even
> > if they are there, they cause probe failures. I haven't found a
> > reasonable way to solve this yet, but until there is, there is no
> > way that the PATA driver can be used as the "legacy mode" support
> > is effectively done via the PCI code assigning virtual IO port
> > resources.
> >
> > I'm quite surprised that the CY82C693 even works on Alpha - I've
> > asked for a lspci for that last week but nothing has yet been
> > forthcoming from whoever responded to your patch for Alpha - so I
> > can't compare what I'm seeing with what's happening with Alpha.
>
> That sounds like something we could fix with a quirk for function 2
> in the PCI resource assignment code. Can you show what vendor and
> device ID function 2 has so that I could try to come up with one?
Something like this:
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 953f15abc850ac..851918206c4f2d 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1855,7 +1855,7 @@ int pci_setup_device(struct pci_dev *dev)
* addresses. These are not always echoed in BAR0-3, and
* BAR0-3 in a few cases contain junk!
*/
- if (class == PCI_CLASS_STORAGE_IDE) {
+ if (class == PCI_CLASS_STORAGE_IDE && !dev->no_legacy_ide_bars) {
u8 progif;
pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
if ((progif & 1) == 0) {
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 653660e3ba9ef1..c661462d894a5b 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -5612,3 +5612,16 @@ static void apex_pci_fixup_class(struct pci_dev *pdev)
}
DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a,
PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class);
+
+/*
+ * CY82C693 splits the primary and secondar IDE channels over 2 functions, which
+ * causes the PCI resource assignment algorithm to assign the legacy IDE I/O
+ * regions to both of them. Disable that assignment for function 2 here.
+ */
+static void quirk_cy82c693_legacy_resources(struct pci_dev *pdev)
+{
+ if (PCI_FUNC(pdev->devfn) == 2)
+ pdev->no_legacy_ide_bars = 1;
+}
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693,
+ quirk_cy82c693_legacy_resources);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 86c799c97b7796..7ca3f5ebbfade7 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -453,6 +453,7 @@ struct pci_dev {
unsigned int link_active_reporting:1;/* Device capable of reporting link active */
unsigned int no_vf_scan:1; /* Don't scan for VFs after IOV enablement */
unsigned int no_command_memory:1; /* No PCI_COMMAND_MEMORY */
+ unsigned int no_legacy_ide_bars:1; /* do not assign legacy IDE BARs */
pci_dev_flags_t dev_flags;
atomic_t enable_cnt; /* pci_enable_device has been called */
next prev parent reply other threads:[~2021-03-22 15:34 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-18 4:56 remove the legacy ide driver Christoph Hellwig
2021-03-18 4:56 ` [PATCH 01/10] alpha: use libata instead of " Christoph Hellwig
2021-03-18 5:54 ` Al Viro
2021-03-18 6:07 ` Christoph Hellwig
2021-03-18 17:09 ` Måns Rullgård
2021-03-18 18:03 ` Måns Rullgård
2021-03-18 7:54 ` John Paul Adrian Glaubitz
2021-03-19 16:23 ` Serge Belyshev
2021-03-18 4:56 ` [PATCH 02/10] ARM: disable CONFIG_IDE in footbridge_defconfig Christoph Hellwig
2021-03-19 17:07 ` Russell King - ARM Linux admin
2021-03-19 17:53 ` Russell King - ARM Linux admin
2021-03-22 14:54 ` Christoph Hellwig
2021-03-22 15:15 ` Russell King - ARM Linux admin
2021-03-22 15:18 ` Christoph Hellwig
2021-03-22 15:33 ` Christoph Hellwig [this message]
2021-03-23 14:03 ` Russell King - ARM Linux admin
2021-03-22 16:59 ` Russell King - ARM Linux admin
2021-03-22 16:09 ` John Paul Adrian Glaubitz
2021-03-22 16:47 ` Cye Borg
2021-03-22 17:03 ` Russell King - ARM Linux admin
2021-03-22 17:10 ` Cye Borg
2021-03-23 18:43 ` Russell King - ARM Linux admin
2021-03-24 5:47 ` Cye Borg
2021-03-18 4:56 ` [PATCH 03/10] ARM: disable CONFIG_IDE in pxa_defconfig Christoph Hellwig
2021-03-18 4:57 ` [PATCH 04/10] MIPS: disable CONFIG_IDE in sb1250_swarm_defconfig Christoph Hellwig
2021-03-19 0:12 ` Maciej W. Rozycki
2021-03-24 9:59 ` Thomas Bogendoerfer
2021-03-18 4:57 ` [PATCH 05/10] MIPS: switch workpad_defconfig from legacy IDE to libata Christoph Hellwig
2021-03-24 10:00 ` Thomas Bogendoerfer
2021-03-18 4:57 ` [PATCH 06/10] MIPS: disable CONFIG_IDE in rbtx49xx_defconfig Christoph Hellwig
2021-03-24 10:00 ` Thomas Bogendoerfer
2021-03-18 4:57 ` [PATCH 07/10] MIPS: disable CONFIG_IDE in bigsur_defconfig Christoph Hellwig
2021-03-18 10:08 ` Sergei Shtylyov
2021-03-24 10:00 ` Thomas Bogendoerfer
2021-03-18 4:57 ` [PATCH 08/10] MIPS: disable CONFIG_IDE in malta*_defconfig Christoph Hellwig
2021-03-18 10:12 ` Sergei Shtylyov
2021-03-18 14:19 ` Thomas Bogendoerfer
2021-03-19 13:03 ` Christoph Hellwig
2021-03-24 10:01 ` Thomas Bogendoerfer
2021-03-18 4:57 ` [PATCH 09/10] m68k: use libata instead of the legacy ide driver Christoph Hellwig
2021-03-18 4:57 ` [PATCH 10/10] ide: remove " Christoph Hellwig
2021-03-20 3:44 ` Maciej W. Rozycki
2021-03-20 4:04 ` Maciej W. Rozycki
2021-03-19 1:43 ` Finn Thain
2021-03-19 5:43 ` Christoph Hellwig
2021-03-19 16:48 ` Maciej W. Rozycki
2021-03-21 9:20 ` John Paul Adrian Glaubitz
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=20210322153314.GA3440@lst.de \
--to=hch@lst.de \
--cc=axboe@kernel.dk \
--cc=davem@davemloft.net \
--cc=geert@linux-m68k.org \
--cc=ink@jurassic.park.msu.ru \
--cc=linux-alpha@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mattst88@gmail.com \
--cc=mpe@ellerman.id.au \
--cc=rth@twiddle.net \
--cc=tsbogend@alpha.franken.de \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).