[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] x86: Update HVM_PARAM_CALLBACK_IRQ
Couple of updates: - Add an macro to make it easier to use the vector callback. - Fix the odditity in Xen internal usage of an enum which offset by one compared to the #defines. Make it the same. - This also clears up the printing of the Callback in the irq_dump() to match up with the #defines. Reported-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> --- xen/arch/x86/hvm/irq.c | 2 +- xen/include/asm-x86/hvm/irq.h | 12 ++++++++---- xen/include/public/hvm/hvm_op.h | 3 ++- xen/include/public/hvm/params.h | 15 +++++++++++++++ 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c index 5323d7c..0c6ead4 100644 --- a/xen/arch/x86/hvm/irq.c +++ b/xen/arch/x86/hvm/irq.c @@ -325,7 +325,7 @@ void hvm_set_callback_via(struct domain *d, uint64_t via) unsigned int gsi=0, pdev=0, pintx=0; uint8_t via_type; - via_type = (uint8_t)(via >> 56) + 1; + via_type = (uint8_t)(via >> HVM_PARAM_CALLBACK_TYPE_SHIFT); if ( ((via_type == HVMIRQ_callback_gsi) && (via == 0)) || (via_type > HVMIRQ_callback_vector) ) via_type = HVMIRQ_callback_none; diff --git a/xen/include/asm-x86/hvm/irq.h b/xen/include/asm-x86/hvm/irq.h index 73b8fb0..2a301db 100644 --- a/xen/include/asm-x86/hvm/irq.h +++ b/xen/include/asm-x86/hvm/irq.h @@ -26,6 +26,8 @@ #include <asm/hvm/vpic.h> #include <asm/hvm/vioapic.h> +#include <public/hvm/params.h> + struct hvm_irq { /* * Virtual interrupt wires for a single PCI bus. @@ -50,11 +52,13 @@ struct hvm_irq { /* Virtual interrupt and via-link for paravirtual platform driver. */ uint32_t callback_via_asserted; union { + /* These MUST match with HVM_PARAM_CALLBACK_IRQ types. */ enum { - HVMIRQ_callback_none, - HVMIRQ_callback_gsi, - HVMIRQ_callback_pci_intx, - HVMIRQ_callback_vector + HVMIRQ_callback_gsi = HVM_PARAM_CALLBACK_TYPE_GSI, + HVMIRQ_callback_pci_intx = HVM_PARAM_CALLBACK_TYPE_PCI_INTX, + HVMIRQ_callback_vector = HVM_PARAM_CALLBACK_TYPE_VECTOR, + /* Will change if we add more types. */ + HVMIRQ_callback_none = HVM_PARAM_CALLBACK_TYPE_NUM, } callback_via_type; }; union { diff --git a/xen/include/public/hvm/hvm_op.h b/xen/include/public/hvm/hvm_op.h index 1606185..5908f39 100644 --- a/xen/include/public/hvm/hvm_op.h +++ b/xen/include/public/hvm/hvm_op.h @@ -386,7 +386,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_hvm_set_ioreq_server_state_t); * channel upcalls on the specified <vcpu>. If set, * this vector will be used in preference to the * domain global callback via (see - * HVM_PARAM_CALLBACK_IRQ). + * HVM_PARAM_CALLBACK_IRQ and + * HVM_PARAM_CALLBACK_VECTOR). */ #define HVMOP_set_evtchn_upcall_vector 23 struct xen_hvm_evtchn_upcall_vector { diff --git a/xen/include/public/hvm/params.h b/xen/include/public/hvm/params.h index 73d4718..5c7fbc5 100644 --- a/xen/include/public/hvm/params.h +++ b/xen/include/public/hvm/params.h @@ -56,6 +56,21 @@ */ /* + * In the future this may change. + */ +#define HVM_PARAM_CALLBACK_TYPE_NUM HVM_PARAM_CALLBACK_TYPE_VECTOR + 1 +/* + * The val[63:56] convenience shift. + */ +#define HVM_PARAM_CALLBACK_TYPE_SHIFT 56 + +/* + * Wrapper around for HVM_PARAM_CALLBACK_TYPE_VECTOR. + */ +#define HVM_PARAM_CALLBACK_VECTOR(x) \ + (((uint64_t)HVM_PARAM_CALLBACK_TYPE_VECTOR) << \ + HVM_PARAM_CALLBACK_TYPE_SHIFT | (x)) +/* * These are not used by Xen. They are here for convenience of HVM-guest * xenbus implementations. */ -- 2.4.3 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |