Subject: Re: [PATCH 02/10] ARM: disable CONFIG_IDE in footbridge_defconfig

From: Christoph Hellwig <[email-masked]>
Date: Mon, 22 Mar 2021 15:54:03 +0100

On Fri, Mar 19, 2021 at 05:53:12PM +0000, Russell King - ARM Linux admin wrote:
> If I extend the arch/arm/kernel/bios32.c code to kill BARs 2/3 (which
> actually are not present on the CY82C693) then the IDE driver works
> for me, but the PATA driver does not:
> 
> cy82c693 0000:00:06.1: IDE controller (0x1080:0xc693 rev 0x00)
> cy82c693 0000:00:06.1: not 100% native mode: will probe irqs later
> legacy IDE will be removed in 2021, please switch to libata
> Report any missing HW support to [email-masked]
>     ide0: BM-DMA at 0x1080-0x1087
>     ide1: BM-DMA at 0x1088-0x108f
> Probing IDE interface ide0...
> hda: PIONEER DVD-RW DVR-105, ATAPI CD/DVD-ROM drive
> hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
> ...
> 
> (unbind Cypress_IDE and try binding pata_cypress)
> 
> pata_cypress 0000:00:06.1: no available native port

This comes from ata_pci_sff_init_host when it tails to initialize
a port.  There are three cases why it can't initialize the port:

 1) because it is marked as dummy, which is the case for the second
    port of the cypress controller, but you're not using that even
    with the old ide driver, and we'd still not get that message just
    because of that second port.
 2) when ata_resources_present returns false because the BAR has
    a zero start or length
 3) because pcim_iomap_regions() fails.  This prints a warning to the
    log ("failed to request/iomap BARs for port %d (errno=%d)") that you
    should have seen

So the problem here has to be number two.  The legacy ide driver OTOH
seems to lack a lot of these checks, although I'm not sure how it
manages to actually work without those.

Can you show how the BAR assignment for the device looks using lscpi
or a tool of your choice?