the recent vm change uncovered a long standing latent pseudo-bug where the local and ioapic memory window were mapped into kernel space via create_area(), not map_physical_memory() like it should be. create_area() used to work fine, but now it's a big more picky about mapping memory it can't get a vm_page to (like stuff outside the range of RAM).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20265 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -187,10 +187,10 @@ arch_smp_init(kernel_args *args)
|
|||||||
apic_timer_tics_per_sec = args->arch_args.apic_time_cv_factor;
|
apic_timer_tics_per_sec = args->arch_args.apic_time_cv_factor;
|
||||||
|
|
||||||
// setup regions that represent the apic & ioapic
|
// setup regions that represent the apic & ioapic
|
||||||
create_area("local apic", &apic, B_EXACT_ADDRESS, B_PAGE_SIZE,
|
map_physical_memory("local apic", (void *)args->arch_args.apic, B_PAGE_SIZE,
|
||||||
B_ALREADY_WIRED, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA);
|
B_EXACT_ADDRESS, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA, &apic);
|
||||||
create_area("ioapic", &ioapic, B_EXACT_ADDRESS, B_PAGE_SIZE,
|
map_physical_memory("ioapic", (void *)args->arch_args.ioapic, B_PAGE_SIZE,
|
||||||
B_ALREADY_WIRED, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA);
|
B_EXACT_ADDRESS, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA, &ioapic);
|
||||||
|
|
||||||
// set up the local apic on the boot cpu
|
// set up the local apic on the boot cpu
|
||||||
arch_smp_per_cpu_init(args, 0);
|
arch_smp_per_cpu_init(args, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user