+#ifdef __i386__
+ gdt = (struct desc_struct *)gdt_descr->address;
+ pda = kmalloc_node(sizeof(*pda), GFP_KERNEL, cpu_to_node(cpu));
+
+ if (unlikely(!pda)) {
+ printk(KERN_CRIT "CPU%d failed to allocate PDA\n",
+ cpu);
+ continue;
+ }
+ cpu_pda(cpu) = pda;
+ cpu_pda(cpu)->cpu_number = cpu;
+ pack_descriptor((u32 *)&gdt[GDT_ENTRY_PDA].a,
+ (u32 *)&gdt[GDT_ENTRY_PDA].b,
+ (unsigned long)pda, sizeof(*pda) - 1,
+ 0x80 | DESCTYPE_S | 0x2, 0); /* present read-write data segment */
+#endif