Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 May 1997 04:23:07 +0300 (EEST)
From:      Andrew Stesin <stesin@gu.net>
To:        dg@root.com, se@freebsd.org, Michael Smith <msmith@atrad.adelaide.edu.au>
Cc:        hackers@freebsd.org, scsi@freebsd.org
Subject:   Intel XXpress - partial success! (was: 2 PCI busses, 2 AIC chips...
Message-ID:  <Pine.BSF.3.95q.970501033701.703A-100000@trifork.gu.net>
In-Reply-To: <199704090022.JAA21738@genesis.atrad.adelaide.edu.au>

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

Hello,

that's me again and it seems to me that the XXpress saga will
come to the end soon -- with FreeBSD final victory, I hope :)

This machine is going to become a mail relay of major importance.
For several reasons, commercial unices aren't an option.
The machine is Big and Nice ;) but only Solaris x86
was able to live successfully on it -- more or less, because
neither Linux nor Solaris were able to recognize _both_ AIC7870 chips,
only the first one worked.

Ok, first time FreeBSD
failed to sit on it and live there; and my collegues are
all Linux-oriented men, they put some fancy Linux distribution
onto this box, with 2.0.30 kernel.  Test run: a loaded Squid proxy
caused a silent crash of Linux, no reboot, nothing, just death
with a one-line panic message, after 1-2 days of uptime.
Other Linux kernels -- same behaviour.  So now
I got the box again, and -- cool! patch by David Greenman succeeded,
thanks!  The first and the most boring problem is solved,
2 AIC chips are recognized.

Dear Stefan, wouldn't you mind commiting a cleaner equivalent
of the pci.c fix below to both code branches, please.

Some questions still remain, though.
I.e.: what are those PCI chips, they are unknown to FreeBSD,
they caused weirdness in the dmesg output below?
Why on the Earth I'm seeing that infamous-since-i386-days "stray irq 7"
message once again?
What does the message: "ahc0: Reading SEEPROM...checksum error",
"ahc0: No SEEPROM available" mean -- is this Ok?

(And will FreeBSD on this machine more stable than the "other OS" was? ;)

On Wed, 9 Apr 1997, Michael Smith wrote:

> > 4.	XPC 637909-001		(no idea)
> > 5.	XPD 637910-001	2 parts	(no idea)
> 
> Um, they sound a lot like FPGA or some other gate array parts.  Do they
> have logos on them?

	Yes, Intel logos as well. I also noticed some references
	to a string XPC in the BIOS setup, somewhere under
	"Advanced -> ... chipset ..." screen.  I have no ideas
	what can this mean... BIOS is AMI, version is 1.00.06.BG0
	"Interesting" options are:

Force BSP to slot 2		[Disable]
Force XPC Posted Write		[Auto Detect]
...
Current XPC Posted Write	<Enable>

	???

> Stick a serial cable on com1 leading to another machine, and use the
> '-hv' boot flags to get it to use the serial console.

	Attempts to do so brought an unusual effect (BTW: BIOS
	is capable to redirect it's output to the serial console),
	GENERIC kernel started writing to serial port but as soon
	as it detected video & keyboard it started writing all the
	rest there... :)

> > 	I'm considering this, but I don't trust my own skills of
> > 	hacking pretty unfamiliar kernel code to get production
> > 	system running in 2-3 days...  I still hope that there already is
> > 	a solution...
> 
> 2-3 days on a new platform?  Is this your timeframe or your customer's?
> Whoever, they gotta be _nuts_!

	No. This system is for us -- and it _should_ be ready 2
	weeks ago to start a "test run", with some simple
	functions like web proxy running there, while the rest
	details of the configuration are being done.

Best regards,
Andrew Stesin

nic-hdl: ST73-RIPE


---------- fix to pci.c --------- 8< --------------------------------

*** pci.c-releng22	Thu May  1 00:20:48 1997
--- pci.c	Thu May  1 00:21:54 1997
***************
*** 152,161 ****
--- 152,180 ----
  static	int		pci_conf_count;
  static	int		pci_info_done;
  static	int		pcibusmax;
  static	struct pcicb   *pcicb;
  
+ /*--------------------------------------------------------
+ **
+ **	DG's patch to deal with a crazy Intel XXpress:
+ **	it has 2 PCI busses, both are primary (?)
+ **
+ **--------------------------------------------------------
+ */
+ #define SECOND_BUS 1
+ static	struct pcicb	pcibus1 = {
+     NULL, NULL, NULL,
+     { 0 },
+     0, SECOND_BUS, 0, 0,
+     0, 0, 0, 0, 0, 0, 0, 0,	/* real allocation */
+     0, 0xFFFF,			/* iobase/limit */
+     0x2000000, 0xFFFFFFFFu,	/* nonprefetch membase/limit */
+     0x2000000, 0xFFFFFFFFu	/* prefetch membase/limit */
+ };
+   
+ 
  /*-----------------------------------------------------------------
  **
  **	The following functions are provided for the device driver
  **	to read/write the configuration space.
  **
***************
*** 891,900 ****
--- 910,942 ----
  			if (pcicb)
  				pcicb = pcicb->pcicb_next;
  		}
  		pcibusmax++;
  	}
+ #ifdef SECOND_BUS
+ /*--------------------------------------------------------
+ **
+ **	DG's patch to deal with a crazy Intel XXpress:
+ **	it has 2 PCI busses, both are primary (?)
+ **
+ **--------------------------------------------------------
+ */
+ 	for (pcicb = &pcibus1; pcicb != NULL;) {
+ 		pci_bus_config ();
+ 
+ 		if (pcicb->pcicb_down) {
+ 			pcicb = pcicb->pcicb_down;
+ 			continue;
+ 		};
+ 
+ 		while (pcicb && !pcicb->pcicb_next)
+ 			pcicb = pcicb->pcicb_up;
+ 
+ 		if (pcicb)
+ 			pcicb = pcicb->pcicb_next;
+ 	}
+ #endif
  	pci_conf_count++;
  }
  
  /*-----------------------------------------------------------------------
  **




----------- XXpress' dmesg output after verbose boot --- 8< ---------------

Copyright (c) 1992-1996 FreeBSD Inc.
Copyright (c) 1982, 1986, 1989, 1991, 1993
	The Regents of the University of California.  All rights reserved.

FreeBSD 2.2-970427-RELENG #1: Thu May  1 00:24:37 GMT 1997
    root@whitestar.gu.net:/usr/src/sys/compile/XXPRESS
Calibrating clock(s) ... i586 clock: 166669373 Hz, i8254 clock: 1193166 Hz
CLK_USE_I8254_CALIBRATION not specified - using default frequency
CLK_USE_I586_CALIBRATION not specified - using old calibration method
CPU: Pentium (160.01-MHz 586-class CPU)
  Origin = "GenuineIntel"  Id = 0x52c  Stepping=12
  Features=0x3bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,APIC>
real memory  = 167772160 (163840K bytes)
avail memory = 162467840 (158660K bytes)
eisa0: <INT3190 (System Board)>
Probing for devices on the EISA bus
ep0: <3Com 3C579-BNC EISA Network Adapter> at 0x2000-0x200f, 0x2c80-0x2c89 irq 5
ep0: on eisa0 slot 2
ep0: aui/bnc[*BNC*] address 00:20:af:53:1e:22
pcibus_setup(1):	mode 1 addr port (0x0cf8) is 0x80007804
pcibus_setup(1a):	mode1res=0x80000000 (0x80000000)
pcibus_check:	device 0 is there (id=12258086)
Probing for devices on PCI bus 0:
	configuration mode 1 allows 32 devices.
chip0 <generic PCI bridge (vendor=8086 device=1225 subclass=0)> rev 2 on pci0:0
chip1 <Intel 82375EB PCI-EISA bridge> rev 5 on pci0:14:0
pci0:15:0: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned]
	map(10): mem32(ffe7fc08)
	map(14): mem32(ffe7fc08)
	map(18): mem32(ffe7fc08)
	map(1c): mem32(ffe7fc08)
	map(20): mem32(ffe7fc08)
	map(24): mem32(ffe7fc08)
pci0:15:1: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned]
	map(10): mem32(ffe7fc08)
	map(14): mem32(ffe7fc08)
	map(18): mem32(ffe7fc08)
	map(1c): mem32(ffe7fc08)
	map(20): mem32(ffe7fc08)
	map(24): mem32(ffe7fc08)
pci0:15:2: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned]
	map(10): mem32(ffe7fc08)
	map(14): mem32(ffe7fc08)
	map(18): mem32(ffe7fc08)
	map(1c): mem32(ffe7fc08)
	map(20): mem32(ffe7fc08)
	map(24): mem32(ffe7fc08)
pci0:15:3: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned]
	map(10): mem32(ffe7fc08)
	map(14): mem32(ffe7fc08)
	map(18): mem32(ffe7fc08)
	map(1c): mem32(ffe7fc08)
	map(20): mem32(ffe7fc08)
	map(24): mem32(ffe7fc08)
pci0:15:4: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned]
	map(10): mem32(ffe7fc08)
	map(14): mem32(ffe7fc08)
	map(18): mem32(ffe7fc08)
	map(1c): mem32(ffe7fc08)
	map(20): mem32(ffe7fc08)
	map(24): mem32(ffe7fc08)
pci0:15:5: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned]
	map(10): mem32(ffe7fc08)
	map(14): mem32(ffe7fc08)
	map(18): mem32(ffe7fc08)
	map(1c): mem32(ffe7fc08)
	map(20): mem32(ffe7fc08)
	map(24): mem32(ffe7fc08)
pci0:15:6: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned]
	map(10): mem32(ffe7fc08)
	map(14): mem32(ffe7fc08)
	map(18): mem32(ffe7fc08)
	map(1c): mem32(ffe7fc08)
	map(20): mem32(ffe7fc08)
	map(24): mem32(ffe7fc08)
pci0:15:7: Intel Corporation, device=0x0008, class=0xff, subclass=0x00 [no driver assigned]
	map(10): mem32(ffe7fc08)
	map(14): mem32(ffe7fc08)
	map(18): mem32(ffe7fc08)
	map(1c): mem32(ffe7fc08)
	map(20): mem32(ffe7fc08)
	map(24): mem32(ffe7fc08)
Probing for devices on PCI bus 1:
chip2 <generic PCI bridge (vendor=8086 device=1225 subclass=0)> rev 2 on pci1:0
ahc0 <Adaptec aic7870 SCSI host adapter> rev 3 int a irq 10 on pci1:13
	mapreg[10] type=1 addr=0000fc00 size=0100.
	mapreg[14] type=0 addr=ffcff000 size=1000.
	reg20: virtual=0xf6963000 physical=0xffcff000 size=0x1000
ahc0: Reading SEEPROM...checksum error
ahc0: No SEEPROM available
ahc0: Using left over BIOS settings
ahc0: aic7870 Wide Channel, SCSI Id=7, 16/255 SCBs
ahc0: Resetting Channel A
ahc0: Downloading Sequencer Program...ahc0: 411 instructions downloaded
Done
ahc0: Probing channel A
ahc0 waiting for scsi devices to settle
ahc0: target 1 using 16Bit transfers
ahc0: target 1 synchronous at 10.0MHz, offset = 0x8
ahc0: target 1 Tagged Queuing Device
(ahc0:1:0): "SEAGATE ST34371W 0484" type 0 fixed SCSI 2
sd0(ahc0:1:0): Direct-Access 4148MB (8496884 512 byte sectors)
sd0(ahc0:1:0): with 5172 cyls, 10 heads, and an average 164 sectors/track
ahc1 <Adaptec aic7870 SCSI host adapter> rev 3 int a irq 9 on pci1:14
	mapreg[10] type=1 addr=0000f800 size=0100.
	mapreg[14] type=0 addr=ffcfe000 size=1000.
	reg20: virtual=0xf6966000 physical=0xffcfe000 size=0x1000
ahc1: Reading SEEPROM...checksum error
ahc1: No SEEPROM available
ahc1: aic7870 Wide Channel, SCSI Id=7, 16/255 SCBs
ahc1: Resetting Channel A
ahc1: Host Adapter Bios disabled.  Using default SCSI device parameters
ahc1: Downloading Sequencer Program...ahc1: 411 instructions downloaded
Done
ahc1: Probing channel A
ahc1 waiting for scsi devices to settle
ahc1: target 6 using 16Bit transfers
ahc1: target 6 synchronous at 10.0MHz, offset = 0x8
ahc1: target 6 Tagged Queuing Device
(ahc1:6:0): "SEAGATE ST34371W 0484" type 0 fixed SCSI 2
sd1(ahc1:6:0): Direct-Access 4148MB (8496884 512 byte sectors)
sd1(ahc1:6:0): with 5172 cyls, 10 heads, and an average 164 sectors/track
pci1: uses 8192 bytes of memory from ffcfe000 upto ffcfffff.
pci1: uses 512 bytes of I/O space from f800 upto fcff.
Probing for devices on the ISA bus:
sc0: the current keyboard controller command byte 0065
kbdio: RESET_KBD return code:00fa
kbdio: RESET_KBD status:00aa
sc0 at 0x60-0x6f irq 1 on motherboard
sc0: BIOS video mode:3
sc0: VGA registers upon power-up
50 18 10 00 10 00 03 00 02 67 5f 4f 50 82 55 81 
bf 1f 00 4f 0d 0e 00 00 ff ff 9c 8e 8f 28 1f 96 
b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c 
3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff 
sc0: video mode:24
sc0: VGA registers for mode:24
50 18 10 00 10 00 03 00 02 67 5f 4f 50 82 55 81 
bf 1f 00 4f 0d 0e 00 00 00 00 9c 8e 8f 28 1f 96 
b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c 
3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff 
sc0: VGA color <16 virtual consoles, flags=0x0>
sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 not found at 0x2f8
lpt0 not found at 0xffffffff
psm0: current command byte:0065
kbdio: TEST_AUX_PORT status:0000
kbdio: RESET_AUX return code:00fa
kbdio: RESET_AUX status:00aa
kbdio: RESET_AUX ID:0000
psm0: status after reset 00 02 64
psm: status 00 00 64 (get_mouse_buttons)
psm0: status 00 02 64
psm0 at 0x60-0x64 irq 12 on motherboard
psm0: device ID 0, 2 buttons
fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa
fdc0: NEC 72065B
fd0: 1.44MB 3.5in
wdc0 at 0x1f0-0x1f7 irq 14 flags 0x80ff80ff on isa
wdc0: unit 0 (wd0): <NEC Corporation D3745>, multi-block-16
wd0: 1032MB (2113776 sectors), 2097 cyls, 16 heads, 63 S/T, 512 B/S
ep0 not found at 0x300
npx0 flags 0x1 on motherboard
npx0: INT 16 interface
imasks: bio c0004640, tty c0031032, net c0031032
BIOS Geometries:
 0:020a3f3f 0..522=523 cylinders, 0..63=64 heads, 1..63=63 sectors
 0 accounted for
Device configuration finished.
Considering FFS root f/s.
configure() finished.
new masks: bio c0004640, tty c0031032, net c0031032
wd0s1: type 0xa5, start 0, end = 2113775, size 2113776 
wd0s1: C/H/S end 131/146/63 (1222451) != end 2113775: invalid
stray irq 7




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95q.970501033701.703A-100000>