From: Bob <recbo@nishanet.com>
To: linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: IRQ disabled (SATA) on NForce2 and my theory
Date: Mon, 15 Dec 2003 01:22:19 -0500 [thread overview]
Message-ID: <3FDD531B.40306@nishanet.com> (raw)
In-Reply-To: <200312151113.52165.ross@datscreative.com.au>
Ross Dickson wrote:
><snip>
>
>
>>It was most noticeable for the timer interrupt, because the timer
>>interrupt is basically always at "high load" and a lack of it would
>>result in a hard lockup of the board. However, it now seems like the
>>timer interrupt isn't the only interrupt suffering from this issue.
>>
>>
>
>
>>, I think inserting the small delay in the appropriate IRQ
>>handler might fix this, too.
>>
>>
>>
>>But there's still the question, why the delay is actually needed for
>>NForce2 boards. That would basically mean that you'll have to
>>introduce the delay for *every* IRQ, to avoid a lockup of any device
>>that will do high load at some time. I bet that, if I put my Firewire
>>Card back in (or just use the onboard Firewire ports) and stream a
>>video from my DV cam onto the harddisk, it would lock up as well after
>>a very short time, since those who know DV also know that DV has a
>>very high bandwidth, half an hour of film is like 40GB or the
>>like. (However, I can't test this right now, because my DV cam is
>>currently not accessible)
>>
>>
I can't get usb or agp8 to work without crashing,
though ide onboard and on cards is stable. Might
be that delay on all interrupts is neededs.
>>So, we're still not "rock solid" with NForce2, I guess...
>>Any idea?
>>
>>
>>Regards,
>>Julien
>>-
>>
>>
>
>
>If it is a C1 disconnect reconnection as we suspect then it should affect all
>local apic interrupts so the following is the conservative approach which may help.
>
>here is one of many educated? guesswork posts on topic
>
>http://linux.derkeiler.com/Mailing-Lists/Kernel/2003-12/2307.html
>
>If you want to put the delay in all local apic irq acks then remove the delay code
>from apic.c and put it in
>
>/usr/src/linux-2.4.23-rd2/include/asm-i386/apic.h
>
>also needs to bring in delay.h
>
>I am trying it now for my patched 2.4.23 (it boots and runs OK so far) kern as
>follows but if it is really needed there then it would be better merged within
>the macro style of the bad ioapic selection code and given a kernel config
>selection mechanism.
>
>
>#ifndef __ASM_APIC_H
>#define __ASM_APIC_H
>
>#include <linux/config.h>
>#include <linux/pm.h>
>#include <asm/apicdef.h>
>#include <asm/system.h>
>#include <linux/delay.h>
>
><snip>
>
>static inline void ack_APIC_irq(void)
>{
>
>#if defined(CONFIG_MK7) && defined(CONFIG_BLK_DEV_AMD74XX)
> /*
> * on 2200XP & nforce2 chipset we need at least 500ns delay here
> * to stop lockups with udma100 drive. try to scale delay time
> * with cpu speed. Ross Dickson.
> */
> ndelay((cpu_khz >> 12)+200 ); /* don't ack too soon or hard lockup */
>#endif
>
> /*
> * ack_APIC_irq() actually gets compiled as a single instruction:
> * - a single rmw on Pentium/82489DX
> * - a single write on P6+ cores (CONFIG_X86_GOOD_APIC)
> * ... yummie.
> */
>
> /* Docs say use 0 for future compatibility */
> apic_write_around(APIC_EOI, 0);
>}
><snip>
>
>Also note I stuffed up the syntax of the original #ifdef, code still works but
>only tests the first param not both. The ifdef code should also be adjusted for
>the ioapic patch if it is to be used widely on other chipsets and processor types.
>Also others more familiar with the kernel build system could choose better
>config params to test against.
>
>Anyhow we are still flying blind so far as manufacturers comments on this
>topic.
>
>
...instead of sending nforce2 boards back saying they don't
work with linux, try using competitive jealousy between
Phoenix and Award, since Award has a bios update which
fixes the lockups(except usb and agp8 and maybe firewire).
>So maybe occasional lockups could be caused by this on other AMD cpu systems?
>I don't know.
>
>Don't forget to recompile & install modules given the inline code above.
>
>Please cc me as to how it goes if you try it.
>
>Regards
>Ross
>
Another clue to all of this is there is a delay for onboard
amd74xx and that never crashed for me, but offboard
promise and sii did, on fsck or grep etc. I'm hoping these
latest patches with debug=1 will give a clue what the
Award bios update does!
-Bob
next prev parent reply other threads:[~2003-12-15 6:22 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-12-15 1:13 IRQ disabled (SATA) on NForce2 and my theory Ross Dickson
2003-12-15 6:22 ` Bob [this message]
-- strict thread matches above, loose matches on Subject: below --
2003-12-14 13:14 Julien Oster
2003-12-15 6:06 ` Bob
2003-12-15 14:55 ` Bartlomiej Zolnierkiewicz
2003-12-16 3:56 ` Bob
2003-12-16 20:00 ` 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=3FDD531B.40306@nishanet.com \
--to=recbo@nishanet.com \
--cc=linux-kernel@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.