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); |