Changes in kernel/arch/ia32/src/smp/smp.c [99718a2e:fe32163] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/smp/smp.c
r99718a2e rfe32163 62 62 void smp_init(void) 63 63 { 64 uintptr_t l_apic_address; 65 uintptr_t io_apic_address; 66 64 67 if (acpi_madt) { 65 68 acpi_madt_parse(); … … 72 75 } 73 76 77 l_apic_address = (uintptr_t) frame_alloc(ONE_FRAME, 78 FRAME_ATOMIC | FRAME_KA); 79 if (!l_apic_address) 80 panic("Cannot allocate address for l_apic."); 81 82 io_apic_address = (uintptr_t) frame_alloc(ONE_FRAME, 83 FRAME_ATOMIC | FRAME_KA); 84 if (!io_apic_address) 85 panic("Cannot allocate address for io_apic."); 86 74 87 if (config.cpu_count > 1) { 75 l_apic = (uint32_t *) hw_map((uintptr_t) l_apic, PAGE_SIZE); 76 io_apic = (uint32_t *) hw_map((uintptr_t) io_apic, PAGE_SIZE); 88 page_table_lock(AS_KERNEL, true); 89 page_mapping_insert(AS_KERNEL, l_apic_address, 90 (uintptr_t) l_apic, PAGE_NOT_CACHEABLE | PAGE_WRITE); 91 page_mapping_insert(AS_KERNEL, io_apic_address, 92 (uintptr_t) io_apic, PAGE_NOT_CACHEABLE | PAGE_WRITE); 93 page_table_unlock(AS_KERNEL, true); 94 95 l_apic = (uint32_t *) l_apic_address; 96 io_apic = (uint32_t *) io_apic_address; 77 97 } 78 98 } … … 113 133 apic_init(); 114 134 135 uint8_t apic = l_apic_id(); 136 115 137 for (i = 0; i < config.cpu_count; i++) { 116 138 /* … … 126 148 continue; 127 149 128 if (ops->cpu_apic_id(i) == bsp_l_apic) {129 printf(" kmp: bad processor entry #%u, will not send IPI "130 "to myself\n", i);150 if (ops->cpu_apic_id(i) == apic) { 151 printf("%s: bad processor entry #%u, will not send IPI " 152 "to myself\n", __FUNCTION__, i); 131 153 continue; 132 154 }
Note:
See TracChangeset
for help on using the changeset viewer.