Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

xen/hvm/params: Add a new delivery type for event-channel in HVM_PARAM_CALLBACK_IRQ

This new delivery type which is for ARM shares the same value with
HVM_PARAM_CALLBACK_TYPE_VECTOR which is for x86.

val[15:8] is flag: val[7:0] is a PPI.
To the flag, bit 8 stands the interrupt mode is edge(1) or level(0) and
bit 9 stands the interrupt polarity is active low(1) or high(0).

Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Reviewed-by: Julien Grall <julien.grall@arm.com>
Tested-by: Julien Grall <julien.grall@arm.com>

authored by

Shannon Zhao and committed by
David Vrabel
383ff518 b6f0bcc2

+13
+13
include/xen/interface/hvm/params.h
··· 47 47 * Domain = val[47:32], Bus = val[31:16] DevFn = val[15:8], IntX = val[1:0] 48 48 */ 49 49 50 + #if defined(__i386__) || defined(__x86_64__) 50 51 #define HVM_PARAM_CALLBACK_TYPE_VECTOR 2 51 52 /* 52 53 * val[7:0] is a vector number. Check for XENFEAT_hvm_callback_vector to know 53 54 * if this delivery method is available. 54 55 */ 56 + #elif defined(__arm__) || defined(__aarch64__) 57 + #define HVM_PARAM_CALLBACK_TYPE_PPI 2 58 + /* 59 + * val[55:16] needs to be zero. 60 + * val[15:8] is interrupt flag of the PPI used by event-channel: 61 + * bit 8: the PPI is edge(1) or level(0) triggered 62 + * bit 9: the PPI is active low(1) or high(0) 63 + * val[7:0] is a PPI number used by event-channel. 64 + * This is only used by ARM/ARM64 and masking/eoi the interrupt associated to 65 + * the notification is handled by the interrupt controller. 66 + */ 67 + #endif 55 68 56 69 #define HVM_PARAM_STORE_PFN 1 57 70 #define HVM_PARAM_STORE_EVTCHN 2