Date: 5 Oct 1999 02:15:04 -0000 From: woju@bbs.ee.ntu.edu.tw To: freebsd-smp@freebsd.org Subject: Re: SMP on 4 Pentium III(450NX) failed Message-ID: <19991005021504.88287.qmail@bbs.ee.ntu.edu.tw>
next in thread | raw e-mail | index | archive | help
The booting process still frozen after applying the "woju-patch" -- boot: kernel -v ... SMP: enabled INTs: 1, 6, 12, 14, 29, 34, apic_imen: 0x0077afbd BIOS Geometries: 0:... Device configuration finished. APIC_IO: routing 8254 via 8259 on pin 0 bpf: lo0 attached [frozen here] The kernel source has been cvsuped to the latest version. <woju-patch> --- mp_machdep.c.orig Mon Sep 6 11:09:44 1999 +++ mp_machdep.c Tue Oct 5 10:01:14 1999 @@ -1202,6 +1202,7 @@ { int apic; + printf("lq: int_entry(%d, %d) called, woju\n", entry, intr); io_apic_ints[intr].int_type = entry->int_type; io_apic_ints[intr].int_flags = entry->int_flags; io_apic_ints[intr].src_bus_id = entry->src_bus_id; @@ -1219,9 +1220,17 @@ else io_apic_ints[intr].dst_apic_id = entry->dst_apic_id; } else +#if 1 + if (entry->src_bus_id == 0 && entry->src_bus_irq == 7*4+3) { + printf("lq: passed, woju\n"); + nintrs--; + return 0; + } else +#endif io_apic_ints[intr].dst_apic_id = entry->dst_apic_id; io_apic_ints[intr].dst_apic_int = entry->dst_apic_int; + printf("lq: int_entry(%d, %d) finished, woju\n", entry, intr); return 1; } @@ -2227,6 +2236,7 @@ { u_int apic_id; + printf("lq: ap_init() called, woju\n"); smp_cpus++; #if defined(I586_CPU) && !defined(NO_F00F_HACK) @@ -2251,9 +2261,11 @@ } /* Init local apic for irq's */ + printf("lq: ap_init() called, before apic_initialize(), woju\n"); apic_initialize(); /* Set memory range attributes for this CPU to match the BSP */ + printf("lq: ap_init() called, before mem_range_AP_init(), woju\n"); mem_range_AP_init(); /* @@ -2268,6 +2280,8 @@ } curproc = NULL; /* make sure */ + printf("lq: ap_init() finished, (mp_ncpus, smp_cpus) = (%d, %d), woju\n", + mp_ncpus, smp_cpus); } #ifdef BETTER_CLOCK </woju-patch> The booting process frozen without showing any "printf debugging messages added by me". I also browse the kernel source tree, and see "APIC_IO: routing 8254..." is printed by i386/isa/clock.c. But I don't know the calling sequence(stack), that is, I don't know what the kernel do after kern/kern_clock.c initclocks(). So I don't know where to set the "proper breakpoint(showing debugging info)". It seems that int_entry() and ap_init() are not called before frozen. Could anyone please tell me what the "key(major) functions" called between initclocks() and ap_init()? So I can set more "breakpoints" and find out the accruate position(function) where the kernel frozen. The mptable now is -- <mptable> =============================================================================== MPTable, version 2.0.15 ------------------------------------------------------------------------------- MP Floating Pointer Structure: location: BIOS physical address: 0x000f9e00 signature: '_MP_' length: 16 bytes version: 1.4 checksum: 0xe3 mode: Virtual Wire ------------------------------------------------------------------------------- MP Config Table Header: physical address: 0x000f9e10 signature: 'PCMP' base table length: 240 version: 1.4 checksum: 0xc2 OEM ID: 'ACER ' Product ID: 'X5 ' OEM table pointer: 0x00000000 OEM table size: 0 entry count: 23 local APIC address: 0xfee00000 extended table length: 140 extended table checksum: 15 ------------------------------------------------------------------------------- MP Config Base Table Entries: -- Processors: APIC ID Version State Family Model Step Flags 0 0x11 BSP, usable 6 7 3 0x387fbff -- Bus: Bus ID Type 0 PCI 1 PCI 2 ISA -- I/O APICs: APIC ID Version State Address 1 0x11 usable 0xfec00000 -- I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# INT active-hi edge 2 0 1 0 INT active-hi edge 2 1 1 1 INT active-hi edge 2 3 1 3 INT active-hi edge 2 4 1 4 INT active-hi edge 2 6 1 6 INT active-hi edge 2 7 1 7 INT active-hi edge 2 8 1 8 INT active-hi edge 2 9 1 9 INT active-hi edge 2 10 1 10 INT active-hi edge 2 12 1 12 INT active-hi edge 2 14 1 14 INT active-hi edge 2 15 1 15 INT active-hi level 0 7:D 1 19 INT active-lo level 0 11:A 1 19 INT active-lo level 1 9:A 1 23 INT active-lo level 1 9:B 1 23 -- Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# ExtINT active-hi edge 2 0 255 0 NMI active-hi edge 2 0 255 1 ------------------------------------------------------------------------------- MP Config Extended Table Entries: -- bus ID: 0 address type: memory address address base: 0x40700000 address range: 0x1e00000 -- bus ID: 0 address type: memory address address base: 0xa0000 address range: 0x20000 -- bus ID: 1 address type: memory address address base: 0x42500000 address range: 0xbc200000 -- bus ID: 0 address type: I/O address address base: 0x0 address range: 0x4000 -- bus ID: 1 address type: I/O address address base: 0x4000 address range: 0xc000 -- bus ID: 2 bus info: 0x00 parent bus ID: 0-- bus ID: 2 address modifier: add predefined range: 0x00000000-- bus ID: 2 address modifier: add predefined range: 0x00000001-- bus ID: 1 address modifier: subtract predefined range: 0x00000000-- bus ID: 1 address modifier: subtract predefined range: 0x00000001 ------------------------------------------------------------------------------- # SMP kernel config file options: # Required: options SMP # Symmetric MultiProcessor Kernel options APIC_IO # Symmetric (APIC) I/O # Optional (built-in defaults will work in most cases): #options NCPU=1 # number of CPUs #options NBUS=3 # number of busses #options NAPIC=1 # number of IO APICs #options NINTR=24 # number of INTs =============================================================================== </mptable> Regards, woju To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991005021504.88287.qmail>