Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Apr 1997 12:05:14 -0600
From:      Steve Passe <smp@csn.net>
To:        Gunther Hipper <gunther@informatik.uni-rostock.de>
Cc:        smp@freebsd.org
Subject:   Re: Problem with DEC 21050 PCI/PCI bridge 
Message-ID:  <199704191805.MAA03317@Ilsa.StevesCafe.com>
In-Reply-To: Your message of "Sat, 19 Apr 1997 17:14:32 %2B0200." <199704191514.RAA05104@donau.informatik.uni-rostock.de> 

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

I've never had access to a bridge card to check out the GA586DX's behaviour, 
but
am not suprised to find that it fails, almost ALL current generation MP
boards do!  I just going from memory, but I think this is how I solved the
problem for another user.  Note that I placed '???' in the code for the
actual INT#, as I don't have enough info to decide which it will be (or its
just that I haven't had my first latte' yet this morning...)  The INT used
depends on the slot the card is in.  The ahc is not a direct clue as it is a 
"virtual fifth slot", ie it's builit into the MB and I forget which slot it
is shared with.  We know it will be one of:

                INT     active-lo       level        1   8:A          2   16
                INT     active-lo       level        1   9:A          2   17
                INT     active-lo       level        1  10:A          2   18
                INT     active-lo       level        1  12:A          2   19

ie, INT 16,17,18,19

furthermore we know that whatever slot the vga card is in uses 16:

vga0 <VGA-compatible display device> rev 227 int a irq 16 on pci0:8:0

you could move the vga card around in the empty PCI slots, recording this value
each time you boot, and map the slot to APIC INT# values.  Or you could just 
put the de card in the slot currently occuppied by the vga card and use 16
in place of the '???'.  Remember that this patch requires that you keep the
de card in the same slot once you have the kernel working...

my guess is that your vga is in slot 1, that the map will be:

slot 1 -> INT16
slot 2 -> INT17
slot 3 -> INT18
slot 4 -> INT19

and that the ahc "shares" slot 4/INT19.  let me know how this does/doesn't
work...  If you map the slots to INTs please forward them here for my rogue
database.

------------------------------------ cut --------------------------------------
*** mp_machdep.c.orig	Thu Dec 12 01:43:52 1996
--- mp_machdep.c	Sat Apr 19 11:44:18 1997
***************
*** 920,932 ****
  #define SRCBUSDEVICE(I)	((ioApicINTs[(I)].srcBusIRQ >> 2) & 0x1f)
  #define SRCBUSLINE(I)	(ioApicINTs[(I)].srcBusIRQ & 0x03)
  int
! get_pci_apic_irq( int pciBus __attribute__ ((unused)),
! 		  int pciDevice, int pciInt )
  {
      /**
       * FIXME: how do we associate a SPECIFIC PCI bus with a unique bus ID???
       */
      int intr;
  
      --pciInt;					/* zero based */
  
--- 920,934 ----
  #define SRCBUSDEVICE(I)	((ioApicINTs[(I)].srcBusIRQ >> 2) & 0x1f)
  #define SRCBUSLINE(I)	(ioApicINTs[(I)].srcBusIRQ & 0x03)
  int
! get_pci_apic_irq( int pciBus, int pciDevice, int pciInt )
  {
      /**
       * FIXME: how do we associate a SPECIFIC PCI bus with a unique bus ID???
       */
      int intr;
+ 
+     if ( (pciBus == 1) && ((pciDevice >= 4) && (pciDevice <=7))
+          return ???;
  
      --pciInt;					/* zero based */
------------------------------------ cut --------------------------------------

--
Steve Passe	| powered by 
smp@csn.net	|            Symmetric MultiProcessor FreeBSD





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704191805.MAA03317>