receive trampoline addr via parameter of arch_start()

This commit is contained in:
bgerofi@riken.jp
2014-08-18 21:56:45 +09:00
committed by Balazs Gerofi bgerofi@riken.jp
parent a91bf9a13d
commit ff47261337
3 changed files with 6 additions and 5 deletions

View File

@@ -266,8 +266,8 @@ void ihk_mc_init_ap(void)
{
struct ihk_mc_cpu_info *cpu_info = ihk_mc_get_cpu_info();
trampoline_va = map_fixed_area(AP_TRAMPOLINE, AP_TRAMPOLINE_SIZE,
0);
trampoline_va = map_fixed_area(ap_trampoline, AP_TRAMPOLINE_SIZE, 0);
kprintf("trampoline area: 0x%lx \n", ap_trampoline);
first_page_va = map_fixed_area(0, PAGE_SIZE, 0);
kprintf("# of cpus : %d\n", cpu_info->ncpus);
@@ -607,7 +607,7 @@ void ihk_mc_boot_cpu(int cpuid, unsigned long pc)
cpu_boot_status = 0;
__x86_wakeup(cpuid, AP_TRAMPOLINE);
__x86_wakeup(cpuid, ap_trampoline);
/* XXX: Time out */
while (!cpu_boot_status) {

View File

@@ -246,7 +246,8 @@ void flush_tlb_single(unsigned long addr);
void *map_fixed_area(unsigned long phys, unsigned long size, int uncachable);
#define AP_TRAMPOLINE 0x10000
extern unsigned long ap_trampoline;
//#define AP_TRAMPOLINE 0x10000
#define AP_TRAMPOLINE_SIZE 0x4000
/* Local is cachable */

View File

@@ -2088,7 +2088,7 @@ void ihk_mc_reserve_arch_pages(unsigned long start, unsigned long end,
/* Reserve Text + temporal heap */
cb(virt_to_phys(_head), virt_to_phys(get_last_early_heap()), 0);
/* Reserve trampoline area to boot the second ap */
cb(AP_TRAMPOLINE, AP_TRAMPOLINE + AP_TRAMPOLINE_SIZE, 0);
cb(ap_trampoline, ap_trampoline + AP_TRAMPOLINE_SIZE, 0);
/* Reserve the null page */
cb(0, PAGE_SIZE, 0);
/* Micro-arch specific */