Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Nov 2002 18:48:25 +0100 (CET)
From:      "Julian Stacey" <jhs@berklix.com>
To:        freebsd-current@freebsd.org
Cc:        "Gary Jennejohn" <gj@freebsd.org>
Subject:   5.0-DP2: SMP+ATA OK.  But 4.7 & stable boot panic with ASUS P2L97-DS
Message-ID:  <200211221748.gAMHmPD36692@flip.jhs.private>

next in thread | raw e-mail | index | archive | help
current@ people,

5.0-DP2-disc1.iso with my ASUS P2L97-DS ACPI BIOS Revision 1008 Dual cpu box
boots OK :-)  But 4.7-RELEASE & stable produce a boot panic with a kernel
where ATA + dual processor are both enabled.

Does that mean there is code in 5.0 that could be
retro-fitted to Stable, to help others with SMP + ATA ?
(I'm not asking for myself, I'll stay with current now installed :-)

Further notes for anyone interested:

4.7-RELEASE GENERIC boots OK in single cpu mode.
Stable boots in dual cpu mode with this patched out:
	#device          ata0    at isa? port IO_WD1 irq 14
	#device          ata1    at isa? port IO_WD2 irq 15
	#device          ata
	#device          atadisk                 # ATA disk drives
	#device          atapicd                 # ATAPI CDROM drives
	#device          atapifd                 # ATAPI floppy drives
	#device          atapist                 # ATAPI tape drives
	#options         ATA_STATIC_ID           #Static device numbering
& this added:
	options		DDB
	options 	INCLUDE_CONFIG_FILE
	options		SMP                     # Symmetric MultiProcessor Kernel
	options		APIC_IO                 # Symmetric (APIC) I/O
	makeoptions	DEBUG=-g

Neither stable nor 4.7-RELEASE will support both ATA + SMP.

I added the patch below to my stable, which moved the boot panic
to occur a little later.  It shows the code in stable is broken,
as I see the "ata_pmode called with no pointer"

*** src/sys/dev/ata/ata-all.c.orig	Sat Nov  2 10:58:31 2002
--- src/sys/dev/ata/ata-all.c	Mon Nov 18 19:36:37 2002
***************
*** 1393,1398 ****
--- 1393,1417 ----
  int
  ata_pmode(struct ata_params *ap)
  {
+     if (ap == (struct ata_params *)0)
+ 	{ /* jhs@'s dual cpu with DVD on IDE bus panics on boot, 
+ 		like this:
+ 	Stopped at ata_pmode+0x6: testb $0x2,0x6a(%eax)
+ 	db> trace
+ 	ata_pmode(0) at ata_pmode+0x6
+ 	atapi_attach
+ 	ata_boot_attach
+ 	run_interrupt_driven_config_hooks
+ 	mi_startup
+ 	begin
+ 	 */
+ 	printf("ata: (jhs@) ata_pmode called with no pointer\n");
+     	return -1; 	/* no idea if -1 is correct - no man ata_pmode */
+ 	/* it now panics like this 
+ 		ata1-slave: timeout waiting for cmd=ef s=01 e=04
+ 		fatal trap 12: page fault while in kernel mode
+ 	*/
+ 	}
      if (ap->atavalid & ATA_FLAG_64_70) {
  	if (ap->apiomodes & 2)
  	    return 4;

PS I bought this machine at auction recently, I've reset the BIOS
to setup defaults, but not done a BIOS upgrade, got a bit bogged
down in Asus new site, suspect I might have to register myself there.

Julian Stacey
jhs @ berklix.com	Computer Systems Engineer & Unix Consultant, Munich.
   Ihr Rauchen = mein allergischer Kopfschmerz !  Schnupftabak probieren.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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