Subversion Repositories HelenOS-historic

Rev

Rev 1502 | Rev 1702 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1502 Rev 1576
Line 82... Line 82...
82
                  PAGE_NOT_CACHEABLE);
82
                  PAGE_NOT_CACHEABLE);
83
                 
83
                 
84
        l_apic = (__u32 *) l_apic_address;
84
        l_apic = (__u32 *) l_apic_address;
85
        io_apic = (__u32 *) io_apic_address;
85
        io_apic = (__u32 *) io_apic_address;
86
        }
86
        }
87
 
-
 
88
        /*
-
 
89
         * Must be initialized outside the kmp thread, since it is waited
-
 
90
         * on before the kmp thread is created.
-
 
91
         */
-
 
92
        waitq_initialize(&kmp_completion_wq);
-
 
93
 
-
 
94
}
87
}
95
 
88
 
96
/*
89
/*
97
 * Kernel thread for bringing up application processors. It becomes clear
90
 * Kernel thread for bringing up application processors. It becomes clear
98
 * that we need an arrangement like this (AP's being initialized by a kernel
91
 * that we need an arrangement like this (AP's being initialized by a kernel
Line 170... Line 163...
170
            if (waitq_sleep_timeout(&ap_completion_wq, 1000000, SYNCH_FLAGS_NONE) == ESYNCH_TIMEOUT)
163
            if (waitq_sleep_timeout(&ap_completion_wq, 1000000, SYNCH_FLAGS_NONE) == ESYNCH_TIMEOUT)
171
                printf("%s: waiting for cpu%d (APIC ID = %d) timed out\n", __FUNCTION__, config.cpu_active > i ? config.cpu_active : i, ops->cpu_apic_id(i));
164
                printf("%s: waiting for cpu%d (APIC ID = %d) timed out\n", __FUNCTION__, config.cpu_active > i ? config.cpu_active : i, ops->cpu_apic_id(i));
172
        } else
165
        } else
173
            printf("INIT IPI for l_apic%d failed\n", ops->cpu_apic_id(i));
166
            printf("INIT IPI for l_apic%d failed\n", ops->cpu_apic_id(i));
174
    }
167
    }
175
 
-
 
176
    /*
-
 
177
     * Wakeup the kinit thread so that
-
 
178
     * system initialization can go on.
-
 
179
     */
-
 
180
    waitq_wakeup(&kmp_completion_wq, WAKEUP_FIRST);
-
 
181
}
168
}
182
 
169
 
183
int smp_irq_to_pin(int irq)
170
int smp_irq_to_pin(int irq)
184
{
171
{
185
    ASSERT(ops != NULL);
172
    ASSERT(ops != NULL);