From: Aaro Koskinen <aaro.koskinen@iki.fi>
To: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
Jens Axboe <axboe@kernel.dk>,
linux-ide@vger.kernel.org, linux-mips@vger.kernel.org
Subject: Re: Loongson 2F IDE/ATA broken with lemote2f_defconfig
Date: Sat, 12 Jan 2019 17:26:09 +0200 [thread overview]
Message-ID: <20190112152609.GE22416@darkstar.musicnaut.iki.fi> (raw)
In-Reply-To: <20190106124607.GK27785@darkstar.musicnaut.iki.fi>
Hi,
On Sun, Jan 06, 2019 at 02:46:07PM +0200, Aaro Koskinen wrote:
> Commit 7ff7a5b1bfff ("MIPS: lemote2f_defconfig: Convert to use libata
> PATA drivers") switched from IDE to libata PATA on Loongson 2F, but
> neither PATA_AMD or PATA_CS5536 work well on this platform compared
> to the AMD74XX IDE driver.
>
> During the ATA init/probe there is interrupt storm from irq 14, and
> majority of system boots end up with "nobody cared... IRQ disabled".
> So the result is a very slow disk access.
>
> It seems that the interrupt gets crazy after the port freeze done early
> during the init, and for whatever reason it cannot be cleared.
>
> With the below workaround I was able to boot the system normally. I
> guess that rather than going back to old IDE driver, we should just try
> to make pata_cs5536 work (and forget PATA AMD on this board)...?
Hmm, even with this hack I get ~500 spurious IRQs during the boot.
Also compared to old IDE, there's 33 vs 100 speed difference:
[ 3.324000] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x4ce0 irq 14
[ 3.584000] ata1.00: ATA-8: WDC WD1600BEVS-00VAT0, 11.01A11, max UDMA/133
[ 3.588000] ata1.00: 312581808 sectors, multi 16: LBA48
[ 3.592000] ata1.00: limited to UDMA/33 due to 40-wire cable
[ 4.540000] Probing IDE interface ide0...
[ 4.992000] hda: WDC WD1600BEVS-00VAT0, ATA DISK drive
[ 5.716000] hda: host max PIO5 wanted PIO255(auto-tune) selected PIO4
[ 5.716000] hda: UDMA/100 mode selected
A.
> diff --git a/drivers/ata/pata_cs5536.c b/drivers/ata/pata_cs5536.c
> index dc1255294628..71e485547ee8 100644
> --- a/drivers/ata/pata_cs5536.c
> +++ b/drivers/ata/pata_cs5536.c
> @@ -229,6 +229,16 @@ static void cs5536_set_dmamode(struct ata_port *ap, struct ata_device *adev)
> cs5536_write(pdev, ETC, etc);
> }
>
> +static void cs5536_noop_freeze(struct ata_port *ap)
> +{
> + /*
> + * Some CS5536 controllers result in a screaming interrupt if ATA_NIEN
> + * is manipulated. Leave it alone and just clear pending IRQ.
> + */
> + ap->ops->sff_check_status(ap);
> + ata_bmdma_irq_clear(ap);
> +}
> +
> static struct scsi_host_template cs5536_sht = {
> ATA_BMDMA_SHT(DRV_NAME),
> };
> @@ -238,6 +248,7 @@ static struct ata_port_operations cs5536_port_ops = {
> .cable_detect = cs5536_cable_detect,
> .set_piomode = cs5536_set_piomode,
> .set_dmamode = cs5536_set_dmamode,
> + .freeze = cs5536_noop_freeze,
> };
>
> /**
next prev parent reply other threads:[~2019-01-12 15:26 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-06 12:46 Loongson 2F IDE/ATA broken with lemote2f_defconfig Aaro Koskinen
2019-01-12 15:26 ` Aaro Koskinen [this message]
2019-01-14 13:16 ` Bartlomiej Zolnierkiewicz
2019-01-26 18:43 ` Aaro Koskinen
2019-02-07 15:02 ` Bartlomiej Zolnierkiewicz
2019-05-14 20:01 ` Aaro Koskinen
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=20190112152609.GE22416@darkstar.musicnaut.iki.fi \
--to=aaro.koskinen@iki.fi \
--cc=axboe@kernel.dk \
--cc=b.zolnierkie@samsung.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
/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).