From 90d9839f114674cd56231d27a5c215abb0ee4bce Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Tue, 20 Nov 2007 09:33:53 -0700 Subject: [PATCH] [IA64] Sync public headers Signed-off-by: Alex Williamson --- include/xen/interface/arch-ia64.h | 4 +- include/xen/interface/arch-ia64/hvm/save.h | 82 ++++++++++++---------- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/include/xen/interface/arch-ia64.h b/include/xen/interface/arch-ia64.h index d197a79b..0895dd0e 100644 --- a/include/xen/interface/arch-ia64.h +++ b/include/xen/interface/arch-ia64.h @@ -674,7 +674,9 @@ DEFINE_XEN_GUEST_HANDLE(xen_ia64_debug_op_t); * This is useful in guests using region 7 for identity mapping * like the linux kernel does. */ -#define XEN_IA64_OPTF_IDENT_MAP_REG7 0x1UL +#define XEN_IA64_OPTF_IDENT_MAP_REG7_BIT 0 +#define XEN_IA64_OPTF_IDENT_MAP_REG7 \ + (1UL << XEN_IA64_OPTF_IDENT_MAP_REG7_BIT) struct xen_ia64_opt_feature { unsigned long cmd; /* Which feature */ diff --git a/include/xen/interface/arch-ia64/hvm/save.h b/include/xen/interface/arch-ia64/hvm/save.h index e6d08a19..a2650b59 100644 --- a/include/xen/interface/arch-ia64/hvm/save.h +++ b/include/xen/interface/arch-ia64/hvm/save.h @@ -74,13 +74,15 @@ struct hvm_hw_ia64_vlsapic { uint8_t pad[2]; }; DECLARE_HVM_SAVE_TYPE(VLSAPIC, 4, struct hvm_hw_ia64_vlsapic); -// unconditionaly set v->arch.irq_new_peding = 1 -// unconditionaly set v->arch.irq_new_condition = 0 +/* set + * unconditionaly set v->arch.irq_new_peding = 1 + * unconditionaly set v->arch.irq_new_condition = 0 + */ /* * vtime */ -// itc, itm, itv are saved by arch vcpu context +/* itc, itm, itv are saved by arch vcpu context */ struct hvm_hw_ia64_vtime { uint64_t itc; uint64_t itm; @@ -89,13 +91,15 @@ struct hvm_hw_ia64_vtime { uint64_t pending; }; DECLARE_HVM_SAVE_TYPE(VTIME, 5, struct hvm_hw_ia64_vtime); -// calculate v->vtm.vtm_offset -// ??? Or should vtm_offset be set by leave_hypervisor_tail()? -// start vtm_timer if necessary by vtm_set_itm(). -// ??? Or should vtm_timer be set by leave_hypervisor_tail()? -// -// ??? or should be done by schedule_tail() -// => schedule_tail() should do. +/* + * calculate v->vtm.vtm_offset + * ??? Or should vtm_offset be set by leave_hypervisor_tail()? + * start vtm_timer if necessary by vtm_set_itm(). + * ??? Or should vtm_timer be set by leave_hypervisor_tail()? + * + * ??? or should be done by schedule_tail() + * => schedule_tail() should do. + */ /* * viosapic @@ -138,49 +142,51 @@ DECLARE_HVM_SAVE_TYPE(VIOSAPIC, 6, struct hvm_hw_ia64_viosapic); * vacpi * PM timer */ -#if 0 -struct hvm_hw_ia64_pmtimer { - uint32_t tmr_val; /* PM_TMR_BLK.TMR_VAL: 32bit free-running counter */ - uint16_t pm1a_sts; /* PM1a_EVT_BLK.PM1a_STS: status register */ - uint16_t pm1a_en; /* PM1a_EVT_BLK.PM1a_EN: enable register */ -}; -DECLARE_HVM_SAVE_TYPE(PMTIMER, 7, struct hvm_hw_ia64_pmtimer); -#else struct vacpi_regs { - union { - struct { - uint32_t pm1a_sts:16; - uint32_t pm1a_en:16; - }; - uint32_t evt_blk; - }; - uint32_t tmr_val; + union { + struct { + uint32_t pm1a_sts:16;/* PM1a_EVT_BLK.PM1a_STS: status register */ + uint32_t pm1a_en:16; /* PM1a_EVT_BLK.PM1a_EN: enable register */ + }; + uint32_t evt_blk; + }; + uint32_t tmr_val; /* PM_TMR_BLK.TMR_VAL: 32bit free-running counter */ }; struct hvm_hw_ia64_vacpi { struct vacpi_regs regs; }; DECLARE_HVM_SAVE_TYPE(VACPI, 7, struct hvm_hw_ia64_vacpi); -// update last_gtime and setup timer of struct vacpi -#endif +/* update last_gtime and setup timer of struct vacpi */ -#if 0 /* - * guest os type - * XXX Xen guest os specific optimization - * This isn't hvm specific so this should be addressed genericly - * including paravirtualized domain. + * opt_feature: identity mapping of region 4, 5 and 7. + * With the c/s 16396:d2935f9c217f of xen-ia64-devel.hg, + * opt_feature hypercall supports only region 4,5,7 identity mappings. + * structure hvm_hw_ia64_identity_mappings only supports them. + * The new structure, struct hvm_hw_ia64_identity_mappings, is created to + * avoid to keep up with change of the xen/ia64 internal structure, struct + * opt_feature. + * + * If it is enhanced in the future, new structure will be created. */ -struct hvm_hw_ia64_gos { - uint64_t gos_type; +struct hvm_hw_ia64_identity_mapping { + uint64_t on; /* on/off */ + uint64_t pgprot; /* The page protection bit mask of the pte. */ + uint64_t key; /* A protection key. */ +}; + +struct hvm_hw_ia64_identity_mappings { + struct hvm_hw_ia64_identity_mapping im_reg4;/* Region 4 identity mapping */ + struct hvm_hw_ia64_identity_mapping im_reg5;/* Region 5 identity mapping */ + struct hvm_hw_ia64_identity_mapping im_reg7;/* Region 7 identity mapping */ }; -DECLARE_HVM_SAVE_TYPE(GOS_TYPE, 8, struct hvm_hw_ia64_gos); -#endif +DECLARE_HVM_SAVE_TYPE(OPT_FEATURE_IDENTITY_MAPPINGS, 8, struct hvm_hw_ia64_identity_mappings); /* * Largest type-code in use */ -#define HVM_SAVE_CODE_MAX 7 +#define HVM_SAVE_CODE_MAX 8 #endif /* __XEN_PUBLIC_HVM_SAVE_IA64_H__ */ -- 2.39.5