[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [IA64] cleanup in regionreg.c
# HG changeset patch # User awilliam@xxxxxxxxxxx # Node ID cc94ab1e0de09c9cb557492719de1fac3a3fbf10 # Parent 2133fb78dba3cf6b6b88d1566fc5cc9de3039f43 [IA64] cleanup in regionreg.c get_impl_rid_bits: use pal call to get implemented_rid_bits. clean up in regionreg.c Signed-off-by: Tristan Gingold <tristan.gingold@xxxxxxxx> diff -r 2133fb78dba3 -r cc94ab1e0de0 xen/arch/ia64/xen/process.c --- a/xen/arch/ia64/xen/process.c Wed Apr 05 12:19:52 2006 -0600 +++ b/xen/arch/ia64/xen/process.c Thu Apr 06 15:51:59 2006 -0600 @@ -37,15 +37,12 @@ extern void die_if_kernel(char *str, struct pt_regs *regs, long err); /* FIXME: where these declarations shold be there ? */ -extern void load_region_regs(struct vcpu *); extern void panic_domain(struct pt_regs *, const char *, ...); extern long platform_is_hp_ski(void); extern int ia64_hyperprivop(unsigned long, REGS *); extern int ia64_hypercall(struct pt_regs *regs); extern void vmx_do_launch(struct vcpu *); extern unsigned long lookup_domain_mpa(struct domain *,unsigned long); - -extern unsigned long dom0_start, dom0_size; #define IA64_PSR_CPL1 (__IA64_UL(1) << IA64_PSR_CPL1_BIT) // note IA64_PSR_PK removed from following, why is this necessary? diff -r 2133fb78dba3 -r cc94ab1e0de0 xen/arch/ia64/xen/regionreg.c --- a/xen/arch/ia64/xen/regionreg.c Wed Apr 05 12:19:52 2006 -0600 +++ b/xen/arch/ia64/xen/regionreg.c Thu Apr 06 15:51:59 2006 -0600 @@ -52,7 +52,7 @@ ia64_set_rr (unsigned long rr, unsigned #endif // use this to allocate a rid out of the "Xen reserved rid block" -unsigned long allocate_reserved_rid(void) +static unsigned long allocate_reserved_rid(void) { static unsigned long currentrid = XEN_DEFAULT_RID+1; unsigned long t = currentrid; @@ -91,14 +91,14 @@ static int implemented_rid_bits = 0; static int implemented_rid_bits = 0; static struct domain *ridblock_owner[MAX_RID_BLOCKS] = { 0 }; -void get_impl_rid_bits(void) -{ - // FIXME (call PAL) -//#ifdef CONFIG_MCKINLEY - implemented_rid_bits = IA64_MAX_IMPL_RID_BITS; -//#else -//#error "rid ranges won't work on Merced" -//#endif +static void get_impl_rid_bits(void) +{ + pal_vm_info_2_u_t vm_info_2; + + /* Get machine rid_size. */ + BUG_ON (ia64_pal_vm_summary (NULL, &vm_info_2) != 0); + implemented_rid_bits = vm_info_2.pal_vm_info_2_s.rid_size; + if (implemented_rid_bits <= IA64_MIN_IMPL_RID_BITS || implemented_rid_bits > IA64_MAX_IMPL_RID_BITS) BUG(); @@ -177,29 +177,11 @@ int deallocate_rid_range(struct domain * return 1; } - -static inline void -set_rr_no_srlz(unsigned long rr, unsigned long rrval) -{ - ia64_set_rr(rr, vmMangleRID(rrval)); -} - -void +static void set_rr(unsigned long rr, unsigned long rrval) { ia64_set_rr(rr, vmMangleRID(rrval)); ia64_srlz_d(); -} - -static inline int validate_page_size(unsigned long ps) -{ - switch(ps) { - case 12: case 13: case 14: case 16: case 18: - case 20: case 22: case 24: case 26: case 28: - return 1; - default: - return 0; - } } // validates and changes a single region register @@ -280,8 +262,8 @@ int set_metaphysical_rr0(void) // validates/changes region registers 0-6 in the currently executing domain // Note that this is the one and only SP API (other than executing a privop) // for a domain to use to change region registers -int set_all_rr( u64 rr0, u64 rr1, u64 rr2, u64 rr3, - u64 rr4, u64 rr5, u64 rr6, u64 rr7) +static int set_all_rr(u64 rr0, u64 rr1, u64 rr2, u64 rr3, + u64 rr4, u64 rr5, u64 rr6, u64 rr7) { if (!set_one_rr(0x0000000000000000L, rr0)) return 0; if (!set_one_rr(0x2000000000000000L, rr1)) return 0; @@ -316,25 +298,6 @@ if (!v->vcpu_info) { printf("Stopping in /* XEN/ia64 INTERNAL ROUTINES */ - -unsigned long physicalize_rid(struct vcpu *v, unsigned long rrval) -{ - ia64_rr rrv; - - rrv.rrval = rrval; - rrv.rid += v->arch.starting_rid; - return rrv.rrval; -} - -unsigned long -virtualize_rid(struct vcpu *v, unsigned long rrval) -{ - ia64_rr rrv; - - rrv.rrval = rrval; - rrv.rid -= v->arch.starting_rid; - return rrv.rrval; -} // loads a thread's region register (0-6) state into // the real physical region registers. Returns the diff -r 2133fb78dba3 -r cc94ab1e0de0 xen/arch/ia64/xen/vcpu.c --- a/xen/arch/ia64/xen/vcpu.c Wed Apr 05 12:19:52 2006 -0600 +++ b/xen/arch/ia64/xen/vcpu.c Thu Apr 06 15:51:59 2006 -0600 @@ -23,7 +23,6 @@ extern void getreg(unsigned long regnum, extern void getreg(unsigned long regnum, unsigned long *val, int *nat, struct pt_regs *regs); extern void setreg(unsigned long regnum, unsigned long val, int nat, struct pt_regs *regs); extern void panic_domain(struct pt_regs *, const char *, ...); -extern int set_metaphysical_rr0(void); extern unsigned long translate_domain_pte(UINT64,UINT64,UINT64); extern unsigned long translate_domain_mpaddr(unsigned long); extern void ia64_global_tlb_purge(UINT64 start, UINT64 end, UINT64 nbits); diff -r 2133fb78dba3 -r cc94ab1e0de0 xen/arch/ia64/xen/xenmisc.c --- a/xen/arch/ia64/xen/xenmisc.c Wed Apr 05 12:19:52 2006 -0600 +++ b/xen/arch/ia64/xen/xenmisc.c Thu Apr 06 15:51:59 2006 -0600 @@ -29,7 +29,6 @@ unsigned long loops_per_jiffy = (1<<12); unsigned long loops_per_jiffy = (1<<12); // from linux/init/main.c /* FIXME: where these declarations should be there ? */ -extern void load_region_regs(struct vcpu *); extern void show_registers(struct pt_regs *regs); void ia64_mca_init(void) { printf("ia64_mca_init() skipped (Machine check abort handling)\n"); } diff -r 2133fb78dba3 -r cc94ab1e0de0 xen/include/asm-ia64/regionreg.h --- a/xen/include/asm-ia64/regionreg.h Wed Apr 05 12:19:52 2006 -0600 +++ b/xen/include/asm-ia64/regionreg.h Thu Apr 06 15:51:59 2006 -0600 @@ -65,6 +65,7 @@ vmMangleRID(unsigned long RIDVal) #define vmUnmangleRID(x) vmMangleRID(x) extern unsigned long allocate_metaphysical_rr(void); +extern int deallocate_metaphysical_rid(unsigned long rid); struct domain; extern int allocate_rid_range(struct domain *d, unsigned long ridbits); @@ -73,4 +74,8 @@ struct vcpu; struct vcpu; extern void init_all_rr(struct vcpu *v); +extern int set_metaphysical_rr0(void); + +extern void load_region_regs(struct vcpu *v); + #endif /* !_REGIONREG_H_ */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |