Skip site navigation (1)Skip section navigation (2)
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>