--- initial
+++ final
@@ -1,99 +1,99 @@
 static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle) {
   volatile u32 *trampoline_status = (volatile u32 *)__va(real_mode_header->trampoline_status);
   /* start_ip had better be page-aligned! */
   unsigned long start_ip = real_mode_header->trampoline_start;
   unsigned long boot_error = 0;
   int cpu0_nmi_registered = 0;
   unsigned long timeout;
   idle->thread.sp = (unsigned long)task_pt_regs(idle);
-  early_gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu);
+  early_gdt_descr.address = (unsigned long)get_cpu_gdt_rw(cpu);
   initial_code = (unsigned long)start_secondary;
   initial_stack = idle->thread.sp;
   /*
    * Enable the espfix hack for this CPU
    */
 #ifdef CONFIG_X86_ESPFIX64
   init_espfix_ap(cpu);
 #endif
   /* So we see what's up */
   announce_cpu(cpu, apicid);
   /*
    * This grunge runs the startup process for
    * the targeted processor.
    */
   if (get_uv_system_type() != UV_NON_UNIQUE_APIC) {
     pr_debug("Setting warm reset code and vector.\n");
     smpboot_setup_warm_reset_vector(start_ip);
     /*
      * Be paranoid about clearing APIC errors.
      */
     if (APIC_INTEGRATED(boot_cpu_apic_version)) {
       apic_write(APIC_ESR, 0);
       apic_read(APIC_ESR);
     }
   }
   /*
    * AP might wait on cpu_callout_mask in cpu_init() with
    * cpu_initialized_mask set if previous attempt to online
    * it timed-out. Clear cpu_initialized_mask so that after
    * INIT/SIPI it could start with a clean state.
    */
   cpumask_clear_cpu(cpu, cpu_initialized_mask);
   smp_mb();
   /*
    * Wake up a CPU in difference cases:
    * - Use the method in the APIC driver if it's defined
    * Otherwise,
    * - Use an INIT boot APIC message for APs or NMI for BSP.
    */
   if (apic->wakeup_secondary_cpu)
     boot_error = apic->wakeup_secondary_cpu(apicid, start_ip);
   else
     boot_error = wakeup_cpu_via_init_nmi(cpu, start_ip, apicid, &cpu0_nmi_registered);
   if (!boot_error) {
     /*
      * Wait 10s total for first sign of life from AP
      */
     boot_error = -1;
     timeout = jiffies + 10 * HZ;
     while (time_before(jiffies, timeout)) {
       if (cpumask_test_cpu(cpu, cpu_initialized_mask)) {
         /*
          * Tell AP to proceed with initialization
          */
         cpumask_set_cpu(cpu, cpu_callout_mask);
         boot_error = 0;
         break;
       }
       schedule();
     }
   }
   if (!boot_error) {
     /*
      * Wait till AP completes initial initialization
      */
     while (!cpumask_test_cpu(cpu, cpu_callin_mask)) {
       /*
        * Allow other tasks to run while we wait for the
        * AP to come online. This also gives a chance
        * for the MTRR work(triggered by the AP coming online)
        * to be completed in the stop machine context.
        */
       schedule();
     }
   }
   /* mark "stuck" area as not stuck */
   *trampoline_status = 0;
   if (get_uv_system_type() != UV_NON_UNIQUE_APIC) {
     /*
      * Cleanup possible dangling ends...
      */
     smpboot_restore_warm_reset_vector();
   }
   /*
    * Clean up the nmi handler. Do this after the callin and callout sync
    * to avoid impact of possible long unregister time.
    */
   if (cpu0_nmi_registered) unregister_nmi_handler(NMI_LOCAL, "wake_cpu0");
   return boot_error;
 }<sep>@@
expression e;
@@

- get_cpu_gdt_table
+ get_cpu_gdt_rw
    (e)