|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V3 22/29] x86/vioapic: extend vioapic_get_vector() to support remapping format RTE
On Thu, Sep 21, 2017 at 11:02:03PM -0400, Lan Tianyu wrote:
> From: Chao Gao <chao.gao@xxxxxxxxx>
>
> When IOAPIC RTE is in remapping format, it doesn't contain the vector of
> interrupt. For this case, the RTE contains an index of interrupt remapping
> table where the vector of interrupt is stored. This patchs gets the vector
> through a vIOMMU interface.
>
> Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx>
> Signed-off-by: Lan Tianyu <tianyu.lan@xxxxxxxxx>
> ---
> xen/arch/x86/hvm/vioapic.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c
> index 5d0d1cd..9e47ef4 100644
> --- a/xen/arch/x86/hvm/vioapic.c
> +++ b/xen/arch/x86/hvm/vioapic.c
> @@ -561,11 +561,25 @@ int vioapic_get_vector(const struct domain *d, unsigned
> int gsi)
> {
> unsigned int pin;
> const struct hvm_vioapic *vioapic = gsi_vioapic(d, gsi, &pin);
> + struct arch_irq_remapping_request request;
>
> if ( !vioapic )
> return -EINVAL;
>
> - return vioapic->redirtbl[pin].fields.vector;
> + irq_request_ioapic_fill(&request, vioapic->id,
> vioapic->redirtbl[pin].bits);
> + if ( viommu_check_irq_remapping(vioapic->domain, &request) )
> + {
> + int err;
> + struct arch_irq_remapping_info info;
> +
> + err = viommu_get_irq_info(vioapic->domain, &request, &info);
> + return !err ? info.vector : err;
You can simplify this as return err :? info.vector;
Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |