u32 x2apic_set_apic_id(unsigned int id);
 int x2apic_phys_pkg_id(int initial_apicid, int index_msb);
 void x2apic_send_IPI_self(int vector);
+void __x2apic_send_IPI_shorthand(int vector, u32 which);
 
 /* IPI */
 
 
 
 static void x2apic_send_IPI_allbutself(int vector)
 {
-       __x2apic_send_IPI_mask(cpu_online_mask, vector, APIC_DEST_ALLBUT);
+       __x2apic_send_IPI_shorthand(vector, APIC_DEST_ALLBUT);
 }
 
 static void x2apic_send_IPI_all(int vector)
 {
-       __x2apic_send_IPI_mask(cpu_online_mask, vector, APIC_DEST_ALLINC);
+       __x2apic_send_IPI_shorthand(vector, APIC_DEST_ALLINC);
 }
 
 static u32 x2apic_calc_apicid(unsigned int cpu)
 
 
 static void x2apic_send_IPI_allbutself(int vector)
 {
-       __x2apic_send_IPI_mask(cpu_online_mask, vector, APIC_DEST_ALLBUT);
+       __x2apic_send_IPI_shorthand(vector, APIC_DEST_ALLBUT);
 }
 
 static void x2apic_send_IPI_all(int vector)
 {
-       __x2apic_send_IPI_mask(cpu_online_mask, vector, APIC_DEST_ALLINC);
+       __x2apic_send_IPI_shorthand(vector, APIC_DEST_ALLINC);
 }
 
 static void init_x2apic_ldr(void)
        native_x2apic_icr_write(cfg, apicid);
 }
 
+void __x2apic_send_IPI_shorthand(int vector, u32 which)
+{
+       unsigned long cfg = __prepare_ICR(which, vector, 0);
+
+       x2apic_wrmsr_fence();
+       native_x2apic_icr_write(cfg, 0);
+}
+
 unsigned int x2apic_get_apic_id(unsigned long id)
 {
        return id;