Re: [PATCH 3/3] i386: Replace struct Xgt_desc_struct with struct desc_ptr
* Rusty Russell ([EMAIL PROTECTED]) wrote: > Remove i386's Xgt_desc_struct definition and use desc_def.h's desc_ptr. plus this is needed now Index: linus-2.6/drivers/lguest/lg.h === --- linus-2.6.orig/drivers/lguest/lg.h +++ linus-2.6/drivers/lguest/lg.h @@ -91,13 +91,13 @@ struct lguest_ro_state { /* Host information we need to restore when we switch back. */ u32 host_cr3; - struct Xgt_desc_struct host_idt_desc; - struct Xgt_desc_struct host_gdt_desc; + struct desc_ptr host_idt_desc; + struct desc_ptr host_gdt_desc; u32 host_sp; /* Fields which are used when guest is running. */ - struct Xgt_desc_struct guest_idt_desc; - struct Xgt_desc_struct guest_gdt_desc; + struct desc_ptr guest_idt_desc; + struct desc_ptr guest_gdt_desc; struct i386_hw_tss guest_tss; struct desc_struct guest_idt[IDT_ENTRIES]; struct desc_struct guest_gdt[GDT_ENTRIES]; Index: linus-2.6/arch/i386/xen/enlighten.c === --- linus-2.6.orig/arch/i386/xen/enlighten.c +++ linus-2.6/arch/i386/xen/enlighten.c @@ -301,7 +301,7 @@ static void xen_set_ldt(const void *addr xen_mc_issue(PARAVIRT_LAZY_CPU); } -static void xen_load_gdt(const struct Xgt_desc_struct *dtr) +static void xen_load_gdt(const struct desc_ptr *dtr) { unsigned long *frames; unsigned long va = dtr->address; @@ -401,7 +401,7 @@ static int cvt_gate_to_trap(int vector, } /* Locations of each CPU's IDT */ -static DEFINE_PER_CPU(struct Xgt_desc_struct, idt_desc); +static DEFINE_PER_CPU(struct desc_ptr, idt_desc); /* Set an IDT entry. If the entry is part of the current IDT, then also update Xen. */ @@ -433,7 +433,7 @@ static void xen_write_idt_entry(struct d preempt_enable(); } -static void xen_convert_trap_info(const struct Xgt_desc_struct *desc, +static void xen_convert_trap_info(const struct desc_ptr *desc, struct trap_info *traps) { unsigned in, out, count; @@ -452,7 +452,7 @@ static void xen_convert_trap_info(const void xen_copy_trap_info(struct trap_info *traps) { - const struct Xgt_desc_struct *desc = &__get_cpu_var(idt_desc); + const struct desc_ptr *desc = &__get_cpu_var(idt_desc); xen_convert_trap_info(desc, traps); } @@ -460,7 +460,7 @@ void xen_copy_trap_info(struct trap_info /* Load a new IDT into Xen. In principle this can be per-CPU, so we hold a spinlock to protect the static traps[] array (static because it avoids allocation, and saves stack space). */ -static void xen_load_idt(const struct Xgt_desc_struct *desc) +static void xen_load_idt(const struct desc_ptr *desc) { static DEFINE_SPINLOCK(lock); static struct trap_info traps[257]; Index: linus-2.6/drivers/lguest/lguest.c === --- linus-2.6.orig/drivers/lguest/lguest.c +++ linus-2.6/drivers/lguest/lguest.c @@ -167,7 +167,7 @@ static void lguest_write_idt_entry(struc hcall(LHCALL_LOAD_IDT_ENTRY, entrynum, low, high); } -static void lguest_load_idt(const struct Xgt_desc_struct *desc) +static void lguest_load_idt(const struct desc_ptr *desc) { unsigned int i; struct desc_struct *idt = (void *)desc->address; @@ -176,7 +176,7 @@ static void lguest_load_idt(const struct hcall(LHCALL_LOAD_IDT_ENTRY, i, idt[i].raw32.a, idt[i].raw32.b); } -static void lguest_load_gdt(const struct Xgt_desc_struct *desc) +static void lguest_load_gdt(const struct desc_ptr *desc) { BUG_ON((desc->size+1)/8 != GDT_ENTRIES); hcall(LHCALL_LOAD_GDT, __pa(desc->address), GDT_ENTRIES, 0); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 3/3] i386: Replace struct Xgt_desc_struct with struct desc_ptr
* Rusty Russell ([EMAIL PROTECTED]) wrote: Remove i386's Xgt_desc_struct definition and use desc_def.h's desc_ptr. plus this is needed now Index: linus-2.6/drivers/lguest/lg.h === --- linus-2.6.orig/drivers/lguest/lg.h +++ linus-2.6/drivers/lguest/lg.h @@ -91,13 +91,13 @@ struct lguest_ro_state { /* Host information we need to restore when we switch back. */ u32 host_cr3; - struct Xgt_desc_struct host_idt_desc; - struct Xgt_desc_struct host_gdt_desc; + struct desc_ptr host_idt_desc; + struct desc_ptr host_gdt_desc; u32 host_sp; /* Fields which are used when guest is running. */ - struct Xgt_desc_struct guest_idt_desc; - struct Xgt_desc_struct guest_gdt_desc; + struct desc_ptr guest_idt_desc; + struct desc_ptr guest_gdt_desc; struct i386_hw_tss guest_tss; struct desc_struct guest_idt[IDT_ENTRIES]; struct desc_struct guest_gdt[GDT_ENTRIES]; Index: linus-2.6/arch/i386/xen/enlighten.c === --- linus-2.6.orig/arch/i386/xen/enlighten.c +++ linus-2.6/arch/i386/xen/enlighten.c @@ -301,7 +301,7 @@ static void xen_set_ldt(const void *addr xen_mc_issue(PARAVIRT_LAZY_CPU); } -static void xen_load_gdt(const struct Xgt_desc_struct *dtr) +static void xen_load_gdt(const struct desc_ptr *dtr) { unsigned long *frames; unsigned long va = dtr-address; @@ -401,7 +401,7 @@ static int cvt_gate_to_trap(int vector, } /* Locations of each CPU's IDT */ -static DEFINE_PER_CPU(struct Xgt_desc_struct, idt_desc); +static DEFINE_PER_CPU(struct desc_ptr, idt_desc); /* Set an IDT entry. If the entry is part of the current IDT, then also update Xen. */ @@ -433,7 +433,7 @@ static void xen_write_idt_entry(struct d preempt_enable(); } -static void xen_convert_trap_info(const struct Xgt_desc_struct *desc, +static void xen_convert_trap_info(const struct desc_ptr *desc, struct trap_info *traps) { unsigned in, out, count; @@ -452,7 +452,7 @@ static void xen_convert_trap_info(const void xen_copy_trap_info(struct trap_info *traps) { - const struct Xgt_desc_struct *desc = __get_cpu_var(idt_desc); + const struct desc_ptr *desc = __get_cpu_var(idt_desc); xen_convert_trap_info(desc, traps); } @@ -460,7 +460,7 @@ void xen_copy_trap_info(struct trap_info /* Load a new IDT into Xen. In principle this can be per-CPU, so we hold a spinlock to protect the static traps[] array (static because it avoids allocation, and saves stack space). */ -static void xen_load_idt(const struct Xgt_desc_struct *desc) +static void xen_load_idt(const struct desc_ptr *desc) { static DEFINE_SPINLOCK(lock); static struct trap_info traps[257]; Index: linus-2.6/drivers/lguest/lguest.c === --- linus-2.6.orig/drivers/lguest/lguest.c +++ linus-2.6/drivers/lguest/lguest.c @@ -167,7 +167,7 @@ static void lguest_write_idt_entry(struc hcall(LHCALL_LOAD_IDT_ENTRY, entrynum, low, high); } -static void lguest_load_idt(const struct Xgt_desc_struct *desc) +static void lguest_load_idt(const struct desc_ptr *desc) { unsigned int i; struct desc_struct *idt = (void *)desc-address; @@ -176,7 +176,7 @@ static void lguest_load_idt(const struct hcall(LHCALL_LOAD_IDT_ENTRY, i, idt[i].raw32.a, idt[i].raw32.b); } -static void lguest_load_gdt(const struct Xgt_desc_struct *desc) +static void lguest_load_gdt(const struct desc_ptr *desc) { BUG_ON((desc-size+1)/8 != GDT_ENTRIES); hcall(LHCALL_LOAD_GDT, __pa(desc-address), GDT_ENTRIES, 0); - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 3/3] i386: Replace struct Xgt_desc_struct with struct desc_ptr
Remove i386's Xgt_desc_struct definition and use desc_def.h's desc_ptr. The offsets in asm-offsets.c do not seem to be used anywhere, so I simply removed them. Signed-off-by: Rusty Russell <[EMAIL PROTECTED]> diff -r 0b03f449c0b3 arch/i386/kernel/asm-offsets.c --- a/arch/i386/kernel/asm-offsets.cWed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/asm-offsets.cWed Jul 18 16:55:36 2007 +1000 @@ -61,11 +61,6 @@ void foo(void) OFFSET(TI_sysenter_return, thread_info, sysenter_return); BLANK(); - OFFSET(GDS_size, Xgt_desc_struct, size); - OFFSET(GDS_address, Xgt_desc_struct, address); - OFFSET(GDS_pad, Xgt_desc_struct, pad); - BLANK(); - OFFSET(PT_EBX, pt_regs, ebx); OFFSET(PT_ECX, pt_regs, ecx); OFFSET(PT_EDX, pt_regs, edx); diff -r 0b03f449c0b3 arch/i386/kernel/cpu/common.c --- a/arch/i386/kernel/cpu/common.c Wed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/cpu/common.c Wed Jul 18 16:56:08 2007 +1000 @@ -642,7 +642,7 @@ struct pt_regs * __devinit idle_regs(str * it's on the real one. */ void switch_to_new_gdt(void) { - struct Xgt_desc_struct gdt_descr; + struct desc_ptr gdt_descr; gdt_descr.address = (long)get_cpu_gdt_table(smp_processor_id()); gdt_descr.size = GDT_SIZE - 1; diff -r 0b03f449c0b3 arch/i386/kernel/doublefault.c --- a/arch/i386/kernel/doublefault.cWed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/doublefault.cWed Jul 18 16:56:34 2007 +1000 @@ -17,7 +17,7 @@ static unsigned long doublefault_stack[D static void doublefault_fn(void) { - struct Xgt_desc_struct gdt_desc = {0, 0}; + struct desc_ptr gdt_desc = {0, 0}; unsigned long gdt, tss; store_gdt(_desc); diff -r 0b03f449c0b3 arch/i386/kernel/efi.c --- a/arch/i386/kernel/efi.cWed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/efi.cWed Jul 18 16:56:43 2007 +1000 @@ -69,7 +69,7 @@ static void efi_call_phys_prelog(void) _ { unsigned long cr4; unsigned long temp; - struct Xgt_desc_struct gdt_descr; + struct desc_ptr gdt_descr; spin_lock(_rt_lock); local_irq_save(efi_rt_eflags); @@ -111,7 +111,7 @@ static void efi_call_phys_epilog(void) _ static void efi_call_phys_epilog(void) __releases(efi_rt_lock) { unsigned long cr4; - struct Xgt_desc_struct gdt_descr; + struct desc_ptr gdt_descr; gdt_descr.address = (unsigned long)get_cpu_gdt_table(0); gdt_descr.size = GDT_SIZE - 1; diff -r 0b03f449c0b3 arch/i386/kernel/machine_kexec.c --- a/arch/i386/kernel/machine_kexec.c Wed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/machine_kexec.c Wed Jul 18 16:56:54 2007 +1000 @@ -31,7 +31,7 @@ static u32 kexec_pte1[1024] PAGE_ALIGNED static void set_idt(void *newidt, __u16 limit) { - struct Xgt_desc_struct curidt; + struct desc_ptr curidt; /* ia32 supports unaliged loads & stores */ curidt.size= limit; @@ -43,7 +43,7 @@ static void set_idt(void *newidt, __u16 static void set_gdt(void *newgdt, __u16 limit) { - struct Xgt_desc_struct curgdt; + struct desc_ptr curgdt; /* ia32 supports unaligned loads & stores */ curgdt.size= limit; diff -r 0b03f449c0b3 arch/i386/kernel/reboot.c --- a/arch/i386/kernel/reboot.c Wed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/reboot.c Wed Jul 18 16:56:59 2007 +1000 @@ -155,7 +155,7 @@ real_mode_gdt_entries [3] = 0x92000100ULL /* 16-bit real-mode 64k data at 0x0100 */ }; -static struct Xgt_desc_struct +static struct desc_ptr real_mode_gdt = { sizeof (real_mode_gdt_entries) - 1, (long)real_mode_gdt_entries }, real_mode_idt = { 0x3ff, 0 }, no_idt = { 0, 0 }; diff -r 0b03f449c0b3 drivers/kvm/svm.c --- a/drivers/kvm/svm.c Wed Jul 18 16:34:04 2007 +1000 +++ b/drivers/kvm/svm.c Wed Jul 18 17:10:13 2007 +1000 @@ -290,11 +290,7 @@ static void svm_hardware_enable(void *ga struct svm_cpu_data *svm_data; uint64_t efer; -#ifdef CONFIG_X86_64 struct desc_ptr gdt_descr; -#else - struct Xgt_desc_struct gdt_descr; -#endif struct desc_struct *gdt; int me = raw_smp_processor_id(); diff -r 0b03f449c0b3 include/asm-i386/desc.h --- a/include/asm-i386/desc.h Wed Jul 18 16:34:04 2007 +1000 +++ b/include/asm-i386/desc.h Wed Jul 18 16:47:34 2007 +1000 @@ -12,12 +12,6 @@ #include -struct Xgt_desc_struct { - unsigned short size; - unsigned long address __attribute__((packed)); - unsigned short pad; -} __attribute__ ((packed)); - struct gdt_page { struct desc_struct gdt[GDT_ENTRIES]; @@ -29,7 +23,7 @@ static inline struct desc_struct *get_cp return per_cpu(gdt_page, cpu).gdt; } -extern struct Xgt_desc_struct idt_descr; +extern struct desc_ptr idt_descr; extern struct desc_struct idt_table[]; extern void set_intr_gate(unsigned int irq, void * addr); @@ -107,22 +101,22 @@ static inline void
[PATCH 3/3] i386: Replace struct Xgt_desc_struct with struct desc_ptr
Remove i386's Xgt_desc_struct definition and use desc_def.h's desc_ptr. The offsets in asm-offsets.c do not seem to be used anywhere, so I simply removed them. Signed-off-by: Rusty Russell [EMAIL PROTECTED] diff -r 0b03f449c0b3 arch/i386/kernel/asm-offsets.c --- a/arch/i386/kernel/asm-offsets.cWed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/asm-offsets.cWed Jul 18 16:55:36 2007 +1000 @@ -61,11 +61,6 @@ void foo(void) OFFSET(TI_sysenter_return, thread_info, sysenter_return); BLANK(); - OFFSET(GDS_size, Xgt_desc_struct, size); - OFFSET(GDS_address, Xgt_desc_struct, address); - OFFSET(GDS_pad, Xgt_desc_struct, pad); - BLANK(); - OFFSET(PT_EBX, pt_regs, ebx); OFFSET(PT_ECX, pt_regs, ecx); OFFSET(PT_EDX, pt_regs, edx); diff -r 0b03f449c0b3 arch/i386/kernel/cpu/common.c --- a/arch/i386/kernel/cpu/common.c Wed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/cpu/common.c Wed Jul 18 16:56:08 2007 +1000 @@ -642,7 +642,7 @@ struct pt_regs * __devinit idle_regs(str * it's on the real one. */ void switch_to_new_gdt(void) { - struct Xgt_desc_struct gdt_descr; + struct desc_ptr gdt_descr; gdt_descr.address = (long)get_cpu_gdt_table(smp_processor_id()); gdt_descr.size = GDT_SIZE - 1; diff -r 0b03f449c0b3 arch/i386/kernel/doublefault.c --- a/arch/i386/kernel/doublefault.cWed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/doublefault.cWed Jul 18 16:56:34 2007 +1000 @@ -17,7 +17,7 @@ static unsigned long doublefault_stack[D static void doublefault_fn(void) { - struct Xgt_desc_struct gdt_desc = {0, 0}; + struct desc_ptr gdt_desc = {0, 0}; unsigned long gdt, tss; store_gdt(gdt_desc); diff -r 0b03f449c0b3 arch/i386/kernel/efi.c --- a/arch/i386/kernel/efi.cWed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/efi.cWed Jul 18 16:56:43 2007 +1000 @@ -69,7 +69,7 @@ static void efi_call_phys_prelog(void) _ { unsigned long cr4; unsigned long temp; - struct Xgt_desc_struct gdt_descr; + struct desc_ptr gdt_descr; spin_lock(efi_rt_lock); local_irq_save(efi_rt_eflags); @@ -111,7 +111,7 @@ static void efi_call_phys_epilog(void) _ static void efi_call_phys_epilog(void) __releases(efi_rt_lock) { unsigned long cr4; - struct Xgt_desc_struct gdt_descr; + struct desc_ptr gdt_descr; gdt_descr.address = (unsigned long)get_cpu_gdt_table(0); gdt_descr.size = GDT_SIZE - 1; diff -r 0b03f449c0b3 arch/i386/kernel/machine_kexec.c --- a/arch/i386/kernel/machine_kexec.c Wed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/machine_kexec.c Wed Jul 18 16:56:54 2007 +1000 @@ -31,7 +31,7 @@ static u32 kexec_pte1[1024] PAGE_ALIGNED static void set_idt(void *newidt, __u16 limit) { - struct Xgt_desc_struct curidt; + struct desc_ptr curidt; /* ia32 supports unaliged loads stores */ curidt.size= limit; @@ -43,7 +43,7 @@ static void set_idt(void *newidt, __u16 static void set_gdt(void *newgdt, __u16 limit) { - struct Xgt_desc_struct curgdt; + struct desc_ptr curgdt; /* ia32 supports unaligned loads stores */ curgdt.size= limit; diff -r 0b03f449c0b3 arch/i386/kernel/reboot.c --- a/arch/i386/kernel/reboot.c Wed Jul 18 16:34:04 2007 +1000 +++ b/arch/i386/kernel/reboot.c Wed Jul 18 16:56:59 2007 +1000 @@ -155,7 +155,7 @@ real_mode_gdt_entries [3] = 0x92000100ULL /* 16-bit real-mode 64k data at 0x0100 */ }; -static struct Xgt_desc_struct +static struct desc_ptr real_mode_gdt = { sizeof (real_mode_gdt_entries) - 1, (long)real_mode_gdt_entries }, real_mode_idt = { 0x3ff, 0 }, no_idt = { 0, 0 }; diff -r 0b03f449c0b3 drivers/kvm/svm.c --- a/drivers/kvm/svm.c Wed Jul 18 16:34:04 2007 +1000 +++ b/drivers/kvm/svm.c Wed Jul 18 17:10:13 2007 +1000 @@ -290,11 +290,7 @@ static void svm_hardware_enable(void *ga struct svm_cpu_data *svm_data; uint64_t efer; -#ifdef CONFIG_X86_64 struct desc_ptr gdt_descr; -#else - struct Xgt_desc_struct gdt_descr; -#endif struct desc_struct *gdt; int me = raw_smp_processor_id(); diff -r 0b03f449c0b3 include/asm-i386/desc.h --- a/include/asm-i386/desc.h Wed Jul 18 16:34:04 2007 +1000 +++ b/include/asm-i386/desc.h Wed Jul 18 16:47:34 2007 +1000 @@ -12,12 +12,6 @@ #include asm/mmu.h -struct Xgt_desc_struct { - unsigned short size; - unsigned long address __attribute__((packed)); - unsigned short pad; -} __attribute__ ((packed)); - struct gdt_page { struct desc_struct gdt[GDT_ENTRIES]; @@ -29,7 +23,7 @@ static inline struct desc_struct *get_cp return per_cpu(gdt_page, cpu).gdt; } -extern struct Xgt_desc_struct idt_descr; +extern struct desc_ptr idt_descr; extern struct desc_struct idt_table[]; extern void set_intr_gate(unsigned int irq, void * addr); @@ -107,22 +101,22 @@ static