On 27/06/2024 07:08, Yuke Peng wrote:
On Wed, Jun 26, 2024 at 2:15 PM cmd <clement.mathieudrif....@gmail.com> wrote:

    Hi,

    On 25/06/2024 13:28, Yuke Peng wrote:
    > According to Intel VT-d specification 5.1.4, CFI must be blocked
    when
    > Extended Interrupt Mode is enabled or Compatibility format
    interrupts
    > are disabled.
    >
    > Signed-off-by: Yuke Peng <pykfi...@gmail.com>
    > ---
    >   hw/i386/intel_iommu.c         | 28 ++++++++++++++++++++++++++++
    >   hw/i386/trace-events          |  1 +
    >   include/hw/i386/intel_iommu.h |  1 +
    >   3 files changed, 30 insertions(+)
    >
    > diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
    > index 5085a6fee3..dfa2f979e7 100644
    > --- a/hw/i386/intel_iommu.c
    > +++ b/hw/i386/intel_iommu.c
    > @@ -2410,6 +2410,22 @@ static void
    vtd_handle_gcmd_ire(IntelIOMMUState *s, bool en)
    >       }
    >   }
    >
    > +/* Handle Compatibility Format Interrupts Enable/Disable */
    > +static void vtd_handle_gcmd_cfi(IntelIOMMUState *s, bool en)
    > +{
    > +    trace_vtd_cfi_enable(en);
    > +
    > +    if (en) {
    > +        s->cfi_enabled = true;
    > +        /* Ok - report back to driver */
    > +        vtd_set_clear_mask_long(s, DMAR_GSTS_REG, 0,
    VTD_GSTS_CFIS);
    > +    } else {
    > +        s->cfi_enabled = false;
    > +        /* Ok - report back to driver */
    > +        vtd_set_clear_mask_long(s, DMAR_GSTS_REG,
    VTD_GSTS_CFIS, 0);
    > +    }
    You have the same comment in both branches of the if statement,
    couldn't
    we put it between 'trace' and 'if'?


The reason I put the comment within the branches is that the function
'vtd_handle_gcmd_cfi'  is similar to the function 'vtd_handle_gcmd_ire'
and  'vtd_handle_gcmd_te'. So for consistency, I also put comments
within the branches instead of in front of 'if'. Besides, I think the comments
only explain the statement 'vtd_set_clear_mask_long'.

The 'vtd_handle_gcmd_ire' function:
ok fine

> /* Handle Interrupt Remap Enable/Disable */
> static void vtd_handle_gcmd_ire(IntelIOMMUState *s, bool en)
> {
>     trace_vtd_ir_enable(en);
>
>     if (en) {
>         s->intr_enabled = true;
>         /* Ok - report back to driver */
>         vtd_set_clear_mask_long(s, DMAR_GSTS_REG, 0, VTD_GSTS_IRES);
>     } else {
>         s->intr_enabled = false;
>         /* Ok - report back to driver */
>         vtd_set_clear_mask_long(s, DMAR_GSTS_REG, VTD_GSTS_IRES, 0);
>     }
> }

Reply via email to