[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 12/28] x86/vvtd: decode interrupt attribute from IRTE
On Mon, Feb 12, 2018 at 11:55:42AM +0000, Roger Pau Monné wrote: >On Fri, Nov 17, 2017 at 02:22:19PM +0800, Chao Gao wrote: >> Without interrupt remapping, interrupt attributes can be extracted from >> msi message or IOAPIC RTE. However, with interrupt remapping enabled, >> the attributes are enclosed in the associated IRTE. This callback is >> for cases in which the caller wants to acquire interrupt attributes, for >> example: >> 1. vioapic_get_vector(). With vIOMMU, the RTE may don't contain vector. > ^ doesn't contain the vector. >> 2. perform EOI which is always based on the interrupt vector. >> >> Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx> >> Signed-off-by: Lan Tianyu <tianyu.lan@xxxxxxxxx> >> --- >> v3: >> - add example cases in which we will use this function. > >I'm still missing the actual usage of vvtd_get_irq_info. This handler >is introduced without any user. > >> --- >> xen/drivers/passthrough/vtd/vvtd.c | 25 +++++++++++++++++++++++++ >> 1 file changed, 25 insertions(+) >> >> diff --git a/xen/drivers/passthrough/vtd/vvtd.c >> b/xen/drivers/passthrough/vtd/vvtd.c >> index 927e715..9890cc2 100644 >> --- a/xen/drivers/passthrough/vtd/vvtd.c >> +++ b/xen/drivers/passthrough/vtd/vvtd.c >> @@ -541,6 +541,30 @@ static int vvtd_handle_irq_request(const struct domain >> *d, >> return ret; >> } >> >> +static int vvtd_get_irq_info(const struct domain *d, > >IMO for internal (static) functions you can drop the vvtd_ prefix. > >> + const struct arch_irq_remapping_request *irq, >> + struct arch_irq_remapping_info *info) >> +{ >> + int ret; >> + struct iremap_entry irte; >> + struct vvtd *vvtd = domain_vvtd(d); >> + >> + if ( !vvtd ) >> + return -ENODEV; >> + >> + ret = vvtd_get_entry(vvtd, irq, &irte); >> + /* not in an interrupt delivery, don't report faults to guest */ >> + if ( ret ) >> + return ret; >> + >> + info->vector = irte.remap.vector; >> + info->dest = irte_dest(vvtd, irte.remap.dst); >> + info->dest_mode = irte.remap.dm; >> + info->delivery_mode = irte.remap.dlm; >> + >> + return 0; >> +} >> + >> static void vvtd_reset(struct vvtd *vvtd) >> { >> uint64_t cap = cap_set_num_fault_regs(VVTD_FRCD_NUM) >> @@ -603,6 +627,7 @@ static const struct viommu_ops vvtd_hvm_vmx_ops = { >> .create = vvtd_create, >> .destroy = vvtd_destroy, >> .handle_irq_request = vvtd_handle_irq_request, >> + .get_irq_info = vvtd_get_irq_info, > >So the public helper to this arch specific hook is added in 4/28, yet >the arch specific code is added here, and I still have to figure out >where this will actually be hooked into the vIOAPIC or vMSI code. > >Would it be possible to have a single patch, which contains 4/28, the >code in this patch and the glue that hooks this into the vIOAPIC and >vMSI code? > >The above likely applies to quite a lot of patches in this series. >It's fine to try to reduce the size of patches as much as possible, >but at least in this series this is actually harming (at least my) >capability to review them. Yes. I will put related changes in one patch. Thanks Chao _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |