svn commit: r317600 - in head/sys: amd64/vmm/amd modules/vmm

Conrad Meyer cem at freebsd.org
Thu May 4 14:58:39 UTC 2017


Hi Anish,


On Sat, Apr 29, 2017 at 7:08 PM, Anish Gupta <anish at freebsd.org> wrote:
> Author: anish
> Date: Sun Apr 30 02:08:46 2017
> New Revision: 317600
> URL: https://svnweb.freebsd.org/changeset/base/317600
>
> Log:
>   Add AMD IOMMU/AMD-Vi support in bhyve for passthrough/direct assignment to VMs. To enable AMD-Vi, set hw.vmm.amdvi.enable=1.
>
>   Reviewed by:bcr
>   Approved by:grehan
>   Tested by:rgrimes
>   Differential Revision:https://reviews.freebsd.org/D10049
> ...
>
> Added: head/sys/amd64/vmm/amd/amdvi_hw.c
> ...
> +/* See section 2.5.4 of AMD IOMMU spec ver 2.62.*/
> +static inline void
> +amdvi_decode_evt_flag_type(uint8_t type)
> +{
> +
> +       switch (AMDVI_EVENT_FLAG_TYPE(type)) {
> +       case 0:
> +               printf("RSVD\n");
> +               break;
> +       case 1:
> +               printf("Master Abort\n");
> +               break;
> +       case 2:
> +               printf("Target Abort\n");
> +               break;
> +       case 3:
> +               printf("Data Err\n");
> +               break;
> +       default:
> +               break;
> +       }
> +}

Coverity warns that the result of AMDVI_EVENT_FLAG_TYPE() in this
function will always be zero.  This makes sense, as the macro is
defined as:

#define AMDVI_EVENT_FLAG_TYPE(x)        (((x) >> 9) & 0x3)

And "type" is a uint8_t.  Right-shifting it by 9 will always zero it.
Perhaps the function's parameter should be a wider type?

FYI, this is Coverity CID 1374742.

Best,
Conrad


More information about the svn-src-head mailing list