OvmfPkg: VirtioBlkDxe: don't clear non-negotiable feature bits

VirtioBlkDxe only recognizes virtio-block feature bits that the device
offers non-negotiably. Nonetheless, in preparation for the following
patches, don't try to clear them even for simplicity.

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
diff --git a/OvmfPkg/VirtioBlkDxe/VirtioBlk.c b/OvmfPkg/VirtioBlkDxe/VirtioBlk.c
index daccc7a..8257eff 100644
--- a/OvmfPkg/VirtioBlkDxe/VirtioBlk.c
+++ b/OvmfPkg/VirtioBlkDxe/VirtioBlk.c
@@ -737,12 +737,11 @@
 

 

   //

-  // step 5 -- Report understood features. There are no virtio-blk specific

-  // features to negotiate in virtio-0.9.5, plus we do not want any of the

-  // device-independent (known or unknown) VIRTIO_F_* capabilities (see

-  // Appendix B).

+  // step 5 -- Report understood features.

   //

-  Status = Dev->VirtIo->SetGuestFeatures (Dev->VirtIo, 0);

+  Features &= VIRTIO_BLK_F_BLK_SIZE | VIRTIO_BLK_F_TOPOLOGY | VIRTIO_BLK_F_RO |

+              VIRTIO_BLK_F_FLUSH;

+  Status = Dev->VirtIo->SetGuestFeatures (Dev->VirtIo, Features);

   if (EFI_ERROR (Status)) {

     goto ReleaseQueue;

   }