From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
To: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: linux-ide@vger.kernel.org,
Mikhail Cherkashin <mcherkashin@ru.mvista.com>
Subject: Re: [PATCH 2/8] ide: add ide_set_irq() inline helper
Date: Tue, 08 Jul 2008 13:10:13 +0400 [thread overview]
Message-ID: <48732EF5.6080302@ru.mvista.com> (raw)
In-Reply-To: <200807072000.26380.bzolnier@gmail.com>
Hello.
Bartlomiej Zolnierkiewicz wrote:
>>>Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> Hmm, this patch already went in on Jan 26
> (commit 81ca691981da718727281238b435dcf1528d2fda).
I know. :-)
>> We're getting "ide0: unexpected interrupt, status=0x58, count=1" with
>>palm_bk3710 driver when running hdparm with option -X. That interrupt has
>>beenidentidied to occur while ide_driveid_update() waits for non-BSY status
>>polling the alt. status reg. After looking at the code there, I couldn't help
>>wondering why I never saw that before with any other controller since the code
>>looked like it was bound to produce the unexpected interrupts -- unless I'm
>>missing something?..
> You are right, I've also noticed this old bug while working on the patch
> but I didn't have time to deal with it yet (it was kind of low-prio since
> it doesn't affect IDE PCI controllers and has been there for a long time).
Really long time. :-)
> [ BTW I would _strongly_ prefer to discuss the old bugs under new threads
> instead of replying to unrelated patches which just happen to be touching
> the buggy code (like my patch which didn't cause any funtionality changes
> and was just a preparation for adding struct ide_tp_ops). ]
Sorry about it. I'm doing all things in a hurry now... should have at
least changed the subject.
>>>Index: b/drivers/ide/ide-iops.c
>>>===================================================================
>>>--- a/drivers/ide/ide-iops.c
>>>+++ b/drivers/ide/ide-iops.c
>>>@@ -688,8 +688,7 @@ int ide_driveid_update(ide_drive_t *driv
>>> */
>>>
>>> SELECT_MASK(drive, 1);
>>>- if (IDE_CONTROL_REG)
>>>- hwif->OUTB(drive->ctl,IDE_CONTROL_REG);
>>>+ ide_set_irq(drive, 1);
>> If we're going to execute the command using polling, isn't it logical to
>>*disable* drive's interrupt instead of enabling it which this code is
>>currently doing? This looks like it might work only for the drivers having
>>the maskproc() method (of which hpt366.c is the only one that I've ever dealt
>>with).
> Yes, this needs fixing.
But should we honor drive->quirk_list here? What its different values
mean? I'm seeing either 1 or 2 is used to decide whether to set nIEN or not...
>>> local_irq_enable();
>>> local_irq_restore(flags);
>> What's interesting, ide_config_drive_speed() code looks sane in this respect:
>>>@@ -769,13 +768,12 @@ int ide_config_drive_speed(ide_drive_t *
>>> SELECT_DRIVE(drive);
>>> SELECT_MASK(drive, 0);
>>> udelay(1);
>>>- if (IDE_CONTROL_REG)
>>>- hwif->OUTB(drive->ctl | 2, IDE_CONTROL_REG);
>>>+ ide_set_irq(drive, 0);
>> This correctly sets nIEN... The code als calls disable_irq_nosync() which
>>might be an overkill
Or not -- since nIEN can be later cleared.
>>> hwif->OUTB(speed, IDE_NSECTOR_REG);
>>> hwif->OUTB(SETFEATURES_XFER, IDE_FEATURE_REG);
>>> hwif->OUTBSYNC(drive, WIN_SETFEATURES, IDE_COMMAND_REG);
>>>- if ((IDE_CONTROL_REG) && (drive->quirk_list == 2))
>>>- hwif->OUTB(drive->ctl, IDE_CONTROL_REG);
>>>+ if (drive->quirk_list == 2)
>>>+ ide_set_irq(drive, 1);
>> I'm just not sure why set nIEN on the quirky drives at all...
> Agreed (however deserves a separate patch just in case we're wrong).
Of course.
> Since you have both the affected hardware and needed expertise
> I assume that you'll take care fixing ide_driveid_update()?
Mikhail will submit the fix, and we'll see about cleanups later...
> Thanks,
> Bart
MBR, Sergei
next prev parent reply other threads:[~2008-07-08 9:10 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-29 0:04 [PATCH 2/8] ide: add ide_set_irq() inline helper Bartlomiej Zolnierkiewicz
2008-07-07 15:47 ` Sergei Shtylyov
2008-07-07 17:00 ` Sergei Shtylyov
2008-07-07 18:05 ` Bartlomiej Zolnierkiewicz
2008-07-08 9:13 ` Sergei Shtylyov
2008-07-07 18:00 ` Bartlomiej Zolnierkiewicz
2008-07-08 9:10 ` Sergei Shtylyov [this message]
2008-07-11 21:20 ` Bartlomiej Zolnierkiewicz
2008-07-11 9:28 ` Sergei Shtylyov
2008-07-11 12:57 ` Sergei Shtylyov
2008-07-12 10:30 ` Bartlomiej Zolnierkiewicz
2008-07-10 12:11 ` Dubious IRQ masking in ide_config_drive_speed() Sergei Shtylyov
2008-07-11 19:39 ` Bartlomiej Zolnierkiewicz
2008-07-10 21:21 ` Sergei Shtylyov
2008-07-11 21:44 ` Bartlomiej Zolnierkiewicz
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=48732EF5.6080302@ru.mvista.com \
--to=sshtylyov@ru.mvista.com \
--cc=bzolnier@gmail.com \
--cc=linux-ide@vger.kernel.org \
--cc=mcherkashin@ru.mvista.com \
/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).