2008-01-10 11:14:11

by Jan Marek

[permalink] [raw]
Subject: Is it possible to change IRQ for certain device?

Hello lkml,

I have problem with my computer: I have motherboard with AMD690G chipset
and nVidia VGA card. But I cannot set BIOS, to assign for VGA unique
IRQ. VGA card is sharing IRQ with two ohci_hcd (USB 1.1 controllers).
But when I want use for X proprietary nvidia driver, X didn't work with
this errors:

In dmesg:

NVRM: RmInitAdapter failed! (0x23:0xffffffff:678)
NVRM: rm_init_adapter(0) failed

and in /var/log/Xorg.0.log:

(II) Setting vga for screen 0.
(**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
(==) NVIDIA(0): RGB weight 888
(==) NVIDIA(0): Default visual is TrueColor
(==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
(**) NVIDIA(0): Enabling RENDER acceleration
(II) NVIDIA(0): Support for GLX with the Damage and Composite X
extensions is
(II) NVIDIA(0): enabled.
(EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device
PCI:1:0:0.
(EE) NVIDIA(0): Please see the COMMON PROBLEMS section in the
README for
(EE) NVIDIA(0): additional information.
(EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device!
(EE) NVIDIA(0): *** Aborting ***
(II) UnloadModule: "nvidia"
(II) UnloadModule: "fb"
(EE) Screen(s) found, but none have a usable configuration.

Fatal server error:
no screens found

I've found in README for NVIDIA, that VGA has to have unique IRQ. I've
tried to set INTERRUPT_LINE and INTERRUPT_PIN with setpci tool, set
pci=routeirq, pci=noacpi as the kernel boot parameters, but IRQ
is still the same.

Is there a way to change IRQ for VGA (or for ohci_hcd instead of VGA)
directly in Linux?

Thanks a lot.

Sincerely
Jan Marek


2008-01-10 11:23:59

by Andi Kleen

[permalink] [raw]
Subject: Re: Is it possible to change IRQ for certain device?

Jan Marek <[email protected]> writes:
>
> Is there a way to change IRQ for VGA (or for ohci_hcd instead of VGA)
> directly in Linux?

Linux normally cannot change the interrupts assigned by the BIOS
because it often requires chipset specific knowledge.

-Andi

2008-01-10 14:02:36

by linux-os (Dick Johnson)

[permalink] [raw]
Subject: Re: Is it possible to change IRQ for certain device?


On Thu, 10 Jan 2008, Jan Marek wrote:

> Hello lkml,
>
> I have problem with my computer: I have motherboard with AMD690G chipset
> and nVidia VGA card. But I cannot set BIOS, to assign for VGA unique
> IRQ. VGA card is sharing IRQ with two ohci_hcd (USB 1.1 controllers).
> But when I want use for X proprietary nvidia driver, X didn't work with
> this errors:
>
> In dmesg:
>
> NVRM: RmInitAdapter failed! (0x23:0xffffffff:678)
> NVRM: rm_init_adapter(0) failed
>
> and in /var/log/Xorg.0.log:
>
> (II) Setting vga for screen 0.
> (**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
> (==) NVIDIA(0): RGB weight 888
> (==) NVIDIA(0): Default visual is TrueColor
> (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
> (**) NVIDIA(0): Enabling RENDER acceleration
> (II) NVIDIA(0): Support for GLX with the Damage and Composite X
> extensions is
> (II) NVIDIA(0): enabled.
> (EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device
> PCI:1:0:0.
> (EE) NVIDIA(0): Please see the COMMON PROBLEMS section in the
> README for
> (EE) NVIDIA(0): additional information.
> (EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device!
> (EE) NVIDIA(0): *** Aborting ***
> (II) UnloadModule: "nvidia"
> (II) UnloadModule: "fb"
> (EE) Screen(s) found, but none have a usable configuration.
>
> Fatal server error:
> no screens found
>
> I've found in README for NVIDIA, that VGA has to have unique IRQ. I've
> tried to set INTERRUPT_LINE and INTERRUPT_PIN with setpci tool, set
> pci=routeirq, pci=noacpi as the kernel boot parameters, but IRQ
> is still the same.
>
> Is there a way to change IRQ for VGA (or for ohci_hcd instead of VGA)
> directly in Linux?
>
> Thanks a lot.
>
> Sincerely
> Jan Marek

The interrupt lines are set by the traces on the PC board and
the contents of various "glue" chips and FPGAs. Many lap-tops,
for instance, only have one IRQ serving any PCI devices. If
your screen card can't share the only IRQ you have, it is
broken. Contact the vendor of both your motherboard (they
may have a BIOS upgrade) and the screen card (they may
have a fix).


Cheers,
Dick Johnson
Penguin : Linux version 2.6.22.1 on an i686 machine (5588.29 BogoMips).
My book : http://www.AbominableFirebug.com/
_


****************************************************************
The information transmitted in this message is confidential and may be privileged. Any review, retransmission, dissemination, or other use of this information by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify Analogic Corporation immediately - by replying to this message or by sending an email to [email protected] - and destroy all copies of this information, including any attachments, without reading or disclosing them.

Thank you.

2008-01-10 23:43:44

by Len Brown

[permalink] [raw]
Subject: Re: Is it possible to change IRQ for certain device?

On Thursday 10 January 2008 09:01, linux-os (Dick Johnson) wrote:
>
> On Thu, 10 Jan 2008, Jan Marek wrote:
>
> > Hello lkml,
> >
> > I have problem with my computer: I have motherboard with AMD690G chipset
> > and nVidia VGA card. But I cannot set BIOS, to assign for VGA unique
> > IRQ. VGA card is sharing IRQ with two ohci_hcd (USB 1.1 controllers).
> > But when I want use for X proprietary nvidia driver, X didn't work with
> > this errors:
> >
> > In dmesg:
> >
> > NVRM: RmInitAdapter failed! (0x23:0xffffffff:678)
> > NVRM: rm_init_adapter(0) failed
> >
> > and in /var/log/Xorg.0.log:
> >
> > (II) Setting vga for screen 0.
> > (**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
> > (==) NVIDIA(0): RGB weight 888
> > (==) NVIDIA(0): Default visual is TrueColor
> > (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
> > (**) NVIDIA(0): Enabling RENDER acceleration
> > (II) NVIDIA(0): Support for GLX with the Damage and Composite X
> > extensions is
> > (II) NVIDIA(0): enabled.
> > (EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device
> > PCI:1:0:0.
> > (EE) NVIDIA(0): Please see the COMMON PROBLEMS section in the
> > README for
> > (EE) NVIDIA(0): additional information.
> > (EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device!
> > (EE) NVIDIA(0): *** Aborting ***
> > (II) UnloadModule: "nvidia"
> > (II) UnloadModule: "fb"
> > (EE) Screen(s) found, but none have a usable configuration.
> >
> > Fatal server error:
> > no screens found
> >
> > I've found in README for NVIDIA, that VGA has to have unique IRQ. I've
> > tried to set INTERRUPT_LINE and INTERRUPT_PIN with setpci tool, set
> > pci=routeirq, pci=noacpi as the kernel boot parameters, but IRQ
> > is still the same.
> >
> > Is there a way to change IRQ for VGA (or for ohci_hcd instead of VGA)
> > directly in Linux?
> >
> > Thanks a lot.
> >
> > Sincerely
> > Jan Marek
>
> The interrupt lines are set by the traces on the PC board and
> the contents of various "glue" chips and FPGAs. Many lap-tops,
> for instance, only have one IRQ serving any PCI devices. If
> your screen card can't share the only IRQ you have, it is
> broken. Contact the vendor of both your motherboard (they
> may have a BIOS upgrade) and the screen card (they may
> have a fix).


What Dick writes is true.
If you can move devices between slots, you can often get onto a different
physical interrupt wire.

However, if your system has an IOAPIC but you're not using IOAPIC mode,
often that programs the "glue" above so spread interrutps out.
See if your BIOS setup has any IRQ options, and see if your kernel
has the IOAPIC enabled. dmesg would tell.

cheers,
-Len

2008-01-11 05:19:44

by Robert Hancock

[permalink] [raw]
Subject: Re: Is it possible to change IRQ for certain device?

Jan Marek wrote:
> Hello lkml,
>
> I have problem with my computer: I have motherboard with AMD690G chipset
> and nVidia VGA card. But I cannot set BIOS, to assign for VGA unique
> IRQ. VGA card is sharing IRQ with two ohci_hcd (USB 1.1 controllers).
> But when I want use for X proprietary nvidia driver, X didn't work with
> this errors:
>
> In dmesg:
>
> NVRM: RmInitAdapter failed! (0x23:0xffffffff:678)
> NVRM: rm_init_adapter(0) failed
>
> and in /var/log/Xorg.0.log:
>
> (II) Setting vga for screen 0.
> (**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
> (==) NVIDIA(0): RGB weight 888
> (==) NVIDIA(0): Default visual is TrueColor
> (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
> (**) NVIDIA(0): Enabling RENDER acceleration
> (II) NVIDIA(0): Support for GLX with the Damage and Composite X
> extensions is
> (II) NVIDIA(0): enabled.
> (EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device
> PCI:1:0:0.
> (EE) NVIDIA(0): Please see the COMMON PROBLEMS section in the
> README for
> (EE) NVIDIA(0): additional information.
> (EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device!
> (EE) NVIDIA(0): *** Aborting ***
> (II) UnloadModule: "nvidia"
> (II) UnloadModule: "fb"
> (EE) Screen(s) found, but none have a usable configuration.
>
> Fatal server error:
> no screens found
>
> I've found in README for NVIDIA, that VGA has to have unique IRQ. I've
> tried to set INTERRUPT_LINE and INTERRUPT_PIN with setpci tool, set
> pci=routeirq, pci=noacpi as the kernel boot parameters, but IRQ
> is still the same.
>
> Is there a way to change IRQ for VGA (or for ohci_hcd instead of VGA)
> directly in Linux?

The kernel has no control over IRQ assignments. Often they are hardwired
in the motherboard and can't be changed at all. You could check for any
relevant BIOS settings (Assign IRQ to VGA, also see if it has an APIC
mode setting that needs to be enabled).

--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from [email protected]
Home Page: http://www.roberthancock.com/

2008-01-11 16:57:21

by Jan Marek

[permalink] [raw]
Subject: Re: Is it possible to change IRQ for certain device?

Hello,

thanks a lot for replies.

But...
On Thu, Jan 10, 2008 at 09:01:37AM -0500, linux-os (Dick Johnson) wrote:
>
> On Thu, 10 Jan 2008, Jan Marek wrote:
>
> > Hello lkml,
> >
> > I have problem with my computer: I have motherboard with AMD690G chipset
> > and nVidia VGA card. But I cannot set BIOS, to assign for VGA unique
> > IRQ. VGA card is sharing IRQ with two ohci_hcd (USB 1.1 controllers).
> > But when I want use for X proprietary nvidia driver, X didn't work with
> > this errors:
> >
> > In dmesg:
> >
> > NVRM: RmInitAdapter failed! (0x23:0xffffffff:678)
> > NVRM: rm_init_adapter(0) failed
> >
> > and in /var/log/Xorg.0.log:
> >
> > (II) Setting vga for screen 0.
> > (**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
> > (==) NVIDIA(0): RGB weight 888
> > (==) NVIDIA(0): Default visual is TrueColor
> > (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
> > (**) NVIDIA(0): Enabling RENDER acceleration
> > (II) NVIDIA(0): Support for GLX with the Damage and Composite X
> > extensions is
> > (II) NVIDIA(0): enabled.
> > (EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device
> > PCI:1:0:0.
> > (EE) NVIDIA(0): Please see the COMMON PROBLEMS section in the
> > README for
> > (EE) NVIDIA(0): additional information.
> > (EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device!
> > (EE) NVIDIA(0): *** Aborting ***
> > (II) UnloadModule: "nvidia"
> > (II) UnloadModule: "fb"
> > (EE) Screen(s) found, but none have a usable configuration.
> >
> > Fatal server error:
> > no screens found
> >
> > I've found in README for NVIDIA, that VGA has to have unique IRQ. I've
> > tried to set INTERRUPT_LINE and INTERRUPT_PIN with setpci tool, set
> > pci=routeirq, pci=noacpi as the kernel boot parameters, but IRQ
> > is still the same.
> >
> > Is there a way to change IRQ for VGA (or for ohci_hcd instead of VGA)
> > directly in Linux?
> >
> > Thanks a lot.
> >
> > Sincerely
> > Jan Marek
>
> The interrupt lines are set by the traces on the PC board and
> the contents of various "glue" chips and FPGAs. Many lap-tops,
> for instance, only have one IRQ serving any PCI devices. If
> your screen card can't share the only IRQ you have, it is
> broken. Contact the vendor of both your motherboard (they
> may have a BIOS upgrade) and the screen card (they may
> have a fix).

I know, that interrupt lines are hardwired, but IMHO IOAPIC can assign
for every device on every hardwired line another IRQ. Am I right? I
think, that in this process can do some work BIOS. But I though, that
Linux can do similar work, when initializing hardware and can reassign
IRQ for certain device to another "number".

In BIOS of my motherboard there is no options like "IRQ for VGA" or
similar... :-( It's Gigabyte MA69G-S3H. I have already flashed newest
BIOS, which is on the Gigabyte web pages...

I suppose, that VGA card does not need unique IRQ, but programmers,
which wrote driver, want it. I can imagine, that VGA card have many
interrupts, especially in the OpenGL games, but I cannot assign unique
IRQ for VGA card at all :-(

But thank you for advice: I will try to send e-mail to Gigabyte and ask
they, if it possible to do change in the BIOS.

BTW: it is interesting: I had a Biostar TA690G motherboard and it behave
similar as Gigabyte: I cannnot assign unique IRQ to the external
graphics card... Chipsets of this motherboards are the same...

I've tried to solve this problem by bought of new motherboard: Gigabyte
MA790FX-DS5. I will see, if this board will behave as previous board...

>
> Cheers,
> Dick Johnson
> Penguin : Linux version 2.6.22.1 on an i686 machine (5588.29 BogoMips).
> My book : http://www.AbominableFirebug.com/

Sincerely
Jan Marek

2008-01-14 03:57:22

by Lee Revell

[permalink] [raw]
Subject: Re: Is it possible to change IRQ for certain device?

On Jan 11, 2008 11:57 AM, Jan Marek <[email protected]> wrote:
> I suppose, that VGA card does not need unique IRQ, but programmers,
> which wrote driver, want it. I can imagine, that VGA card have many
> interrupts, especially in the OpenGL games, but I cannot assign unique
> IRQ for VGA card at all :-(
>
> But thank you for advice: I will try to send e-mail to Gigabyte and ask
> they, if it possible to do change in the BIOS.
>
> BTW: it is interesting: I had a Biostar TA690G motherboard and it behave
> similar as Gigabyte: I cannnot assign unique IRQ to the external
> graphics card... Chipsets of this motherboards are the same...
>
> I've tried to solve this problem by bought of new motherboard: Gigabyte
> MA790FX-DS5. I will see, if this board will behave as previous board...

Why is a shared IRQ a problem for you? IRQ handlers are supposed to
be fast enough that disabling an IRQ line for the duration of the
handler execution should not be a problem even if the IRQ is shared.
VGA interrupts in particular should only fire once per frame and only
need to flip some bits to wake up any processes waiting on vsync.

If you have issues with a shared VGA interrupt then the bug is that
some IRQ handler runs for too long and should be deferring work to a
bottom half.

Lee

2008-01-14 05:31:00

by Bryan Donlan

[permalink] [raw]
Subject: Re: Is it possible to change IRQ for certain device?

On Jan 13, 2008 10:57 PM, Lee Revell <[email protected]> wrote:
> On Jan 11, 2008 11:57 AM, Jan Marek <[email protected]> wrote:
> > I suppose, that VGA card does not need unique IRQ, but programmers,
> > which wrote driver, want it. I can imagine, that VGA card have many
> > interrupts, especially in the OpenGL games, but I cannot assign unique
> > IRQ for VGA card at all :-(
> >
> > But thank you for advice: I will try to send e-mail to Gigabyte and ask
> > they, if it possible to do change in the BIOS.
> >
> > BTW: it is interesting: I had a Biostar TA690G motherboard and it behave
> > similar as Gigabyte: I cannnot assign unique IRQ to the external
> > graphics card... Chipsets of this motherboards are the same...
> >
> > I've tried to solve this problem by bought of new motherboard: Gigabyte
> > MA790FX-DS5. I will see, if this board will behave as previous board...
>
> Why is a shared IRQ a problem for you? IRQ handlers are supposed to
> be fast enough that disabling an IRQ line for the duration of the
> handler execution should not be a problem even if the IRQ is shared.
> VGA interrupts in particular should only fire once per frame and only
> need to flip some bits to wake up any processes waiting on vsync.
>
> If you have issues with a shared VGA interrupt then the bug is that
> some IRQ handler runs for too long and should be deferring work to a
> bottom half.

Jan is apparently using the nvidia binary driver, so I doubt it will
be possible to fix the bug that prevents it from sharing IRQs.

2008-01-14 06:04:29

by Lee Revell

[permalink] [raw]
Subject: Re: Is it possible to change IRQ for certain device?

On Jan 14, 2008 12:30 AM, Bryan Donlan <[email protected]> wrote:
>
> On Jan 13, 2008 10:57 PM, Lee Revell <[email protected]> wrote:
> > On Jan 11, 2008 11:57 AM, Jan Marek <[email protected]> wrote:
> > Why is a shared IRQ a problem for you? IRQ handlers are supposed to
> > be fast enough that disabling an IRQ line for the duration of the
> > handler execution should not be a problem even if the IRQ is shared.
> > VGA interrupts in particular should only fire once per frame and only
> > need to flip some bits to wake up any processes waiting on vsync.
> >
> > If you have issues with a shared VGA interrupt then the bug is that
> > some IRQ handler runs for too long and should be deferring work to a
> > bottom half.
>
> Jan is apparently using the nvidia binary driver, so I doubt it will
> be possible to fix the bug that prevents it from sharing IRQs.
>

Ah, of course, stupid me. Thought I was on linux-audio-user where
this is a FAQ (for completely different reasons) and not LKML.

But this is strange - I'm sure I've seen people using that driver with
a shared IRQ before.

Jan, maybe you can blacklist ohci-hcd as a workaround? In any case
let's take this discussion off LKML so as not to spam the list with
binary only driver issues.

Lee

2008-01-15 21:33:58

by folkert

[permalink] [raw]
Subject: Re: Is it possible to change IRQ for certain device?

> Why is a shared IRQ a problem for you? IRQ handlers are supposed to
> be fast enough that disabling an IRQ line for the duration of the
> handler execution should not be a problem even if the IRQ is shared.

Take the 'zaptel' driver for example, for FXO cards for Asterisk for
example. They hate to share their irq. In fact: they refuse to work when
their irq is shared.


Folkert van Heusden

--
MultiTail na wan makriki wrokosani fu tan luku den logfile nanga san
den commando spiti puru. Piki puru spesrutu sani, wroko nanga difrenti
kroru, tya kon makandra, nanga wan lo moro.
http://www.vanheusden.com/multitail/
----------------------------------------------------------------------
Phone: +31-6-41278122, PGP-key: 1F28D8AE, http://www.vanheusden.com