From: Dexuan Cui <[email protected]> Sent: Friday, August 28, 2026 2:23 PM
> 
> This basically reverts the Feb 2021 change:
> commit 96854bbda24f ("hv_netvsc: Restrict configurations on isolated guests")
> 
> In Feb 2021, PCI device assignment for CoCo VMs on Hyper-V was not
> supported: if the host offered a PCI VF NIC device to the VM, the VM
> couldn't handle it properly, so the 2021 commit was made to tell the host
> "I'm unable to handle SR-IOV NICs, so please don't offer a VF to me".
> If the host offers a VF NIC to the VM anyway, the change to
> netvsc_receive_inband() ignores the VF NIC.
> 
> Since Mar 2023, the VM is able to support PCI device assignment due to
> commit 2c6ba4216844 ("PCI: hv: Enable PCI pass-thru devices in Confidential 
> VMs")
> and related commits, so hv_netvsc can functionally work with a VF NIC, but
> we haven't advertised the SR-IOV capability because the MANA NIC driver
> (drivers/net/ethernet/microsoft/mana/) hadn't been hardened, so a
> malicious MANA NIC might be able to attack the VM.
> 
> Recently, we have finished hardening the MANA driver, so we can safely
> use the MANA NIC in a CoCo VM now. Note: currently the MANA driver in a
> CoCo VM still uses bounce buffering (i.e. shared decrypted memory)
> for DMA. In the future, it will be able to use private encrypted
> memory for DMA with the help of TDISP.
> 
> Now, advertises the SR-IOV capability for CoCo VMs.
> 
> Note: for MANA to work properly for CoCo VMs, the following earlier
> commits are also required:
> commit 2e2a83b4998a ("net: mana: Validate the packet length reported by the 
> NIC")
> commit c72a0f09c57f ("net: mana: Sync page pool RX frags for CPU")
> 
> Note: the host might offer a VF NIC device that's not MANA -- in that
> case, if the corresponding VF NIC driver isn't hardened for CoCo VMs,
> the driver should be blacklisted in CoCo VMs.
> 
> Signed-off-by: Dexuan Cui <[email protected]>
> ---
>  drivers/net/hyperv/netvsc.c | 10 ++--------
>  1 file changed, 2 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
> index 5cd084e5696c..fc6548b16c91 100644
> --- a/drivers/net/hyperv/netvsc.c
> +++ b/drivers/net/hyperv/netvsc.c
> @@ -625,10 +625,7 @@ static int negotiate_nvsp_ver(struct hv_device *device,
>       init_packet->msg.v2_msg.send_ndis_config.capability.ieee8021q = 1;
> 
>       if (nvsp_ver >= NVSP_PROTOCOL_VERSION_5) {
> -             if (hv_is_isolation_supported())
> -                     netdev_info(ndev, "SR-IOV not advertised by guests on 
> the host supporting isolation\n");
> -             else
> -                     
> init_packet->msg.v2_msg.send_ndis_config.capability.sriov = 1;
> +             init_packet->msg.v2_msg.send_ndis_config.capability.sriov = 1;
> 
>               /* Teaming bit is needed to receive link speed updates */
>               init_packet->msg.v2_msg.send_ndis_config.capability.teaming = 1;
> @@ -1665,10 +1662,7 @@ static void netvsc_receive_inband(struct net_device 
> *ndev,
>               break;
> 
>       case NVSP_MSG4_TYPE_SEND_VF_ASSOCIATION:
> -             if (hv_is_isolation_supported())
> -                     netdev_err(ndev, "Ignore VF_ASSOCIATION msg from the 
> host supporting isolation\n");
> -             else
> -                     netvsc_send_vf(ndev, nvmsg, msglen);
> +             netvsc_send_vf(ndev, nvmsg, msglen);
>               break;
>       }
>  }

Nice to see this getting enabled!

Reviewed-by: Michael Kelley <[email protected]>

Reply via email to