linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: Sticky IO-APIC problem
@ 2001-07-03 23:03 Manfred Spraul
  0 siblings, 0 replies; 6+ messages in thread
From: Manfred Spraul @ 2001-07-03 23:03 UTC (permalink / raw)
  To: Randy.Dunlap, linux-kernel

 
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

> This shows that Linux mapped the APIC (part of the processor).
> It says nothing about mapping any IO APICs (unless you deleted
> that part :).
> 
Correct. Linux always enables the APIC, but it needs some bios tables
for the IO APIC. And the IO APIC is not present on all uniprocessor
motherboards.

> So, how does one know if a (UP) system has an IO APIC and that
> Linux can be configured to use the UP IO APIC code?...

Figure out which ICH is used (lspci?), then check Intel's documentation.

But even if an io apic is present, Linux can only use it if a MP table
is present. Afaik ACPI tables are not yet supported on i386, but ia64
already supports detecting the IO APIC's based on ACPI tables.

--
	Manfred

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: Sticky IO-APIC problem
@ 2001-07-09 12:38 Colin Bayer
  0 siblings, 0 replies; 6+ messages in thread
From: Colin Bayer @ 2001-07-09 12:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: rddunlap

'K, after hours (which seemed like years) of surfing the datasheets of the 82810AA ICH (I/O Controller Hub) from Intel, I've come up with step-by-step hardware-level instructions for enabling the IO-APIC with pre-defined PIRQs (I'm not an assembly guru, so I can't help with the coding of this):

1) Set bit 7 of register PIRQ[n]_ROUT (offset 60h) to 0.
2) Set bits 3:0 of the same register to the (8259) interrupt to be mapped on this PIRQ (big-endian).
3) Set the corresponding bit on the correct 8259s (master is at 21h, slave at A1h) OCW1 register to mask the interrupt; the way I read it, bit 7 of the A1h register is IRQ 15, bit 0 of 21h is IRQ 0.
4) Set bit 8 of GEN_CNTL (starting offset D0h, hehe...) to 1 to enable the I/O APIC.

Anyway, that's as far as I could read into the process.  Hope somebody out there in maintainer-land can create a cogent snippet of code out of it.  If such code exists, plz don't flame me...

     -- Colin


On the first day, man created the computer.  On the second day, God proclaimed from the heavens, "F0 0F C7 C8".

------------------------------------------------------------
The CompNerd Network: http://www.compnerd.com/
Where a nerd can be a nerd.  Get your free webmail@compnerd.net!

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Sticky IO-APIC problem
@ 2001-07-05  4:12 Colin Bayer
  0 siblings, 0 replies; 6+ messages in thread
From: Colin Bayer @ 2001-07-05  4:12 UTC (permalink / raw)
  To: linux-kernel; +Cc: rddunlap


"Randy.Dunlap" <rddunlap@osdlab.org> wrote:

>I can't find an Intel BN810E board at intel.com or by searching
>at google.com.  Are you sure that's the correct name/ID for it?
>Do you have any web page references for it?

Sorry, it was an Intel CA810E board.
(http://www.intel.com/support/motherboards/desktop/ca810e/)

     -- Colin

------------------------------------------------------------
The CompNerd Network: http://www.compnerd.com/
Where a nerd can be a nerd.  Get your free webmail@compnerd.net!

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Sticky IO-APIC problem
@ 2001-07-04  0:19 Colin Bayer
  0 siblings, 0 replies; 6+ messages in thread
From: Colin Bayer @ 2001-07-04  0:19 UTC (permalink / raw)
  To: linux-kernel; +Cc: rddunlap


"Randy.Dunlap" <rddunlap@osdlab.org> wrote:
>What mobo (model/name) is it?
>Can you give us the output from "lspci -vv"?

OK, it's an Intel BN810E Desktop Board; here's the output from lspci -vv:

[root@fortytwo /root]# lspci -vv
00:00.0 Host bridge: Intel Corporation 82810E GMCH [Graphics Memory Controller Hub] (rev 03)
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
        Latency: 0

00:01.0 VGA compatible controller: Intel Corporation 82810E CGC [Chipset Graphics Controller] (rev 03) (prog-if 00 [VGA])
        Subsystem: Intel Corporation: Unknown device 4332
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at f8000000 (32-bit, prefetchable) [size=64M]
        Region 1: Memory at ffa80000 (32-bit, non-prefetchable) [size=512K]
        Capabilities: [dc] Power Management version 1
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:1e.0 PCI bridge: Intel Corporation 82801AA PCI Bridge (rev 02) (prog-if 00 [Normal decode])
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
        Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
        I/O behind bridge: 0000d000-0000dfff
        Memory behind bridge: ff800000-ff8fffff
        Prefetchable memory behind bridge: f6a00000-f6afffff
        BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-

00:1f.0 ISA bridge: Intel Corporation 82801AA ISA Bridge (LPC) (rev 02)
        Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
        Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0

00:1f.1 IDE interface: Intel Corporation 82801AA IDE (rev 02) (prog-if 80 [Master])
        Subsystem: Intel Corporation 82801AA IDE
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Region 4: I/O ports at ffa0 [size=16]

00:1f.2 USB Controller: Intel Corporation 82801AA USB (rev 02) (prog-if 00 [UHCI])
        Subsystem: Intel Corporation 82801AA USB
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin D routed to IRQ 9
        Region 4: I/O ports at ef80 [size=32]

00:1f.3 SMBus: Intel Corporation 82801AA SMBus (rev 02)
        Subsystem: Intel Corporation 82801AA SMBus
        Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Interrupt: pin B routed to IRQ 10
        Region 4: I/O ports at efa0 [size=16]

01:0a.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 09)
        Subsystem: Ensoniq Creative Sound Blaster AudioPCI64V, AudioPCI128
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort+ <MAbort- >SERR- <PERR-
        Latency: 64 (3000ns min, 32000ns max)
        Interrupt: pin A routed to IRQ 4
        Region 0: I/O ports at df00 [size=64]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

01:0b.0 Serial controller: US Robotics/3Com 56K FaxModem Model 5610 (rev 01) (prog-if 02 [16550])
        Subsystem: US Robotics/3Com: Unknown device baba
        Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Interrupt: pin A routed to IRQ 9
        Region 0: I/O ports at dff0 [size=8]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI- D1- D2+ AuxCurrent=0mA PME(D0+,D1-,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=2 PME-

[root@fortytwo /root]#

>This shows that Linux mapped the APIC (part of the processor).
>It says nothing about mapping any IO APICs (unless you deleted
>that part :).

Oops, sorry -- misunderstood the meaning of the message. 8-P

>So, how does one know if a (UP) system has an IO APIC and that
>Linux can be configured to use the UP IO APIC code?...
>
>(That's a serious question: does an IO APIC show up in lspci output?)
>
>And why do you think that this system has an IO APIC?
>Is it documented to have one?
>[just digging for clues]

There's no IO-APIC in the lspci output, but that's because it's integrated as part of the i810 chipset; it's probably hidden to keep people from tinkering with the settings -- there's not much one can do to modify an interrupt controller that wouldn't end badly 8=;-) (according to Intel's docs, the IO-APIC's carried somewhere on the 82801AA I/O Controller Hub, and I quote:)

>From Intel's 82801AA I/O Controller Hub Datasheet (http://developer.intel.com/design/chipsets/datashts/29065503.pdf):

Features List: (page 3)

...
- Interrupt Controller
     - Two cascaded 82C59
     - Integrated IO-APIC capability
     - 15 Interrupt support in 8259 mode, 24 Interrupt support in
       IO-APIC mode
...

82801AA Simplified Block Diagram: (page 4)
                     ____________
SERIRQ <-----------> |           |
PIRQ[A..D]# <------> |           |
IRQ[14..15] -------> | Interrupt |<---
APICCLK -----------> |           |
APICD[1..0] <------> |___________|

82801AA Datasheet Introduction: (page 25)

Advanced Programmable Interrupt Controller (APIC) 

In addition to the standard ISA compatible interrupt controller (PIC) described in the previous section, the ICH incorporates the Advanced Programmable Interrupt Controller (APIC). While the standard interrupt controller is intended for use in a uni-processor system, APIC can be used in either a uni-processor or multi-processor system.

Hope this clears up some confusion.

     -- Colin

------------------------------------------------------------
The CompNerd Network: http://www.compnerd.com/
Where a nerd can be a nerd.  Get your free webmail@compnerd.net!

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Sticky IO-APIC problem
@ 2001-07-03 21:58 Randy.Dunlap
  0 siblings, 0 replies; 6+ messages in thread
From: Randy.Dunlap @ 2001-07-03 21:58 UTC (permalink / raw)
  To: colin_bayer, linux-kernel

Colin Bayer scribed:
| I have a Pentium III 933/133 (Coppermine, stepping 6) in an
Intel-manufactured
| i810 motherboard (hey, I

What mobo (model/name) is it?
Can you give us the output from "lspci -vv"?

| know it's a lame chipset, but it was on sale). On boot, the kernel
(version
| 2.4.6-pre8) identifies and maps the
| IO-APIC onboard, but does not assign any IRQs to it. 
| 
| The relevant boot log snippet follows. 
| 
| [root@fortytwo i386]# cat /var/log/dmesg 
|  ... 
|  ... 
| mapped APIC to ffffe000 (0121c000) 

This shows that Linux mapped the APIC (part of the processor).
It says nothing about mapping any IO APICs (unless you deleted
that part :).

So, how does one know if a (UP) system has an IO APIC and that
Linux can be configured to use the UP IO APIC code?...

(That's a serious question: does an IO APIC show up in lspci output?)

And why do you think that this system has an IO APIC?
Is it documented to have one?
[just digging for clues]

| Kernel command line: auto BOOT_IMAGE=linux-test ro root=307
| BOOT_FILE=/boot/vmlinuz-2.4.6-pre8
| devfs=mount pirq=9,4 
| PIRQ redirection, working around broken MP-BIOS. 
| ... PIRQ0 -> IRQ 9 
| ... PIRQ1 -> IRQ 4 
|  ... 
|  ... 
| 
| And /proc/interrupts: 
| [root@fortytwo i386]# cat /proc/interrupts 
|            CPU0 
|   0: 79409 XT-PIC timer 
|   1: 5911 XT-PIC keyboard 
|   2: 0 XT-PIC cascade 
|   4: 990 XT-PIC es1371 
|   8: 1 XT-PIC rtc 
|   9: 26402 XT-PIC usb-uhci, serial 
|  11: 16473 XT-PIC i810@PCI:0:1:0 
|  14: 5152 XT-PIC ide0 
|  15: 47 XT-PIC ide1 
| NMI: 0 
| ERR: 0 
| MIS: 0 
| [root@fortytwo i386]# 
| 
| This problem also occurs when booting without the pirq switch. I've
configured
| everything the way it's
| mentioned in Documentation/i386/IO-APIC.txt, but it doesn't help.
Anyway, thx in
| advance for the help. 

~Randy

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Sticky IO-APIC problem
@ 2001-07-02  9:25 Colin Bayer
  0 siblings, 0 replies; 6+ messages in thread
From: Colin Bayer @ 2001-07-02  9:25 UTC (permalink / raw)
  To: linux-kernel

'K, here's the deal.

I have a Pentium III 933/133 (Coppermine, stepping 6) in an Intel-manufactured i810 motherboard (hey, I know it's a lame chipset, but it was on sale).  On boot, the kernel (version 2.4.6-pre8) identifies and maps the IO-APIC onboard, but does not assign any IRQs to it.

The relevant boot log snippet follows.

[root@fortytwo i386]# cat /var/log/dmesg
 ...
 ...
mapped APIC to ffffe000 (0121c000)
Kernel command line: auto BOOT_IMAGE=linux-test ro root=307 BOOT_FILE=/boot/vmlinuz-2.4.6-pre8 devfs=mount pirq=9,4
PIRQ redirection, working around broken MP-BIOS.
... PIRQ0 -> IRQ 9
... PIRQ1 -> IRQ 4
 ...
 ...

And /proc/interrupts:
[root@fortytwo i386]# cat /proc/interrupts
           CPU0
  0:      79409          XT-PIC  timer
  1:       5911          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  4:        990          XT-PIC  es1371
  8:          1          XT-PIC  rtc
  9:      26402          XT-PIC  usb-uhci, serial
 11:      16473          XT-PIC  i810@PCI:0:1:0
 14:       5152          XT-PIC  ide0
 15:         47          XT-PIC  ide1
NMI:          0
ERR:          0
MIS:          0
[root@fortytwo i386]# 

This problem also occurs when booting without the pirq switch. I've configured everything the way it's mentioned in Documentation/i386/IO-APIC.txt, but it doesn't help.  Anyway, thx in advance for the help.

     -- Colin

------------------------------------------------------------
The CompNerd Network: http://www.compnerd.com/
Where a nerd can be a nerd.  Get your free webmail@compnerd.net!

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2001-07-09 12:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-07-03 23:03 Sticky IO-APIC problem Manfred Spraul
  -- strict thread matches above, loose matches on Subject: below --
2001-07-09 12:38 Colin Bayer
2001-07-05  4:12 Colin Bayer
2001-07-04  0:19 Colin Bayer
2001-07-03 21:58 Randy.Dunlap
2001-07-02  9:25 Colin Bayer

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).