diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-07-23 17:21:18 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-24 06:30:06 -0400 |
commit | 38ffbe66d59051fd9cfcfc8545f164700e2fa3bc (patch) | |
tree | 37e76db49cc86b3da550a62f36d101c7269d262e /include/asm-x86/paravirt.h | |
parent | 338b9bb3adac0d2c5a1e180491d9b001d624c402 (diff) |
x86/paravirt/xen: properly fill out the ldt ops
LTP testing showed that Xen does not properly implement
sys_modify_ldt(). This patch does the final little bits needed to
make the ldt work properly.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/asm-x86/paravirt.h')
-rw-r--r-- | include/asm-x86/paravirt.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h index fbbde93f12d6..db9b0647b346 100644 --- a/include/asm-x86/paravirt.h +++ b/include/asm-x86/paravirt.h | |||
@@ -124,6 +124,9 @@ struct pv_cpu_ops { | |||
124 | int entrynum, const void *desc, int size); | 124 | int entrynum, const void *desc, int size); |
125 | void (*write_idt_entry)(gate_desc *, | 125 | void (*write_idt_entry)(gate_desc *, |
126 | int entrynum, const gate_desc *gate); | 126 | int entrynum, const gate_desc *gate); |
127 | void (*alloc_ldt)(struct desc_struct *ldt, unsigned entries); | ||
128 | void (*free_ldt)(struct desc_struct *ldt, unsigned entries); | ||
129 | |||
127 | void (*load_sp0)(struct tss_struct *tss, struct thread_struct *t); | 130 | void (*load_sp0)(struct tss_struct *tss, struct thread_struct *t); |
128 | 131 | ||
129 | void (*set_iopl_mask)(unsigned mask); | 132 | void (*set_iopl_mask)(unsigned mask); |
@@ -824,6 +827,16 @@ do { \ | |||
824 | (aux) = __aux; \ | 827 | (aux) = __aux; \ |
825 | } while (0) | 828 | } while (0) |
826 | 829 | ||
830 | static inline void paravirt_alloc_ldt(struct desc_struct *ldt, unsigned entries) | ||
831 | { | ||
832 | PVOP_VCALL2(pv_cpu_ops.alloc_ldt, ldt, entries); | ||
833 | } | ||
834 | |||
835 | static inline void paravirt_free_ldt(struct desc_struct *ldt, unsigned entries) | ||
836 | { | ||
837 | PVOP_VCALL2(pv_cpu_ops.free_ldt, ldt, entries); | ||
838 | } | ||
839 | |||
827 | static inline void load_TR_desc(void) | 840 | static inline void load_TR_desc(void) |
828 | { | 841 | { |
829 | PVOP_VCALL0(pv_cpu_ops.load_tr_desc); | 842 | PVOP_VCALL0(pv_cpu_ops.load_tr_desc); |