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;
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
* 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__ */