/src/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/VirtioBlkDxe/TestVirtioBlk.c
Line | Count | Source |
1 | | /** @file |
2 | | |
3 | | Copyright (c) 2018, Intel Corporation. All rights reserved.<BR> |
4 | | SPDX-License-Identifier: BSD-2-Clause-Patent |
5 | | |
6 | | **/ |
7 | | |
8 | | #include <stdio.h> |
9 | | #include <stdlib.h> |
10 | | #include <string.h> |
11 | | #include <assert.h> |
12 | | |
13 | | #include <Uefi.h> |
14 | | |
15 | | #include <Library/BaseLib.h> |
16 | | #include <Library/DebugLib.h> |
17 | | #include <Library/BaseMemoryLib.h> |
18 | | #include <Library/MemoryAllocationLib.h> |
19 | | #include <Library/VirtioBlkStubLib.h> |
20 | | #include <Library/VirtioPciDeviceStubLib.h> |
21 | | |
22 | 3.23k | #define TOTAL_SIZE (512 * 1024) |
23 | | #define BLOCK_SIZE (512) |
24 | | #define IO_ALIGN (1) |
25 | | |
26 | | UINTN |
27 | | EFIAPI |
28 | | GetMaxBufferSize ( |
29 | | VOID |
30 | | ) |
31 | 3.23k | { |
32 | 3.23k | return TOTAL_SIZE; |
33 | 3.23k | } |
34 | | |
35 | | VOID |
36 | | EFIAPI |
37 | | RunTestHarness( |
38 | | IN VOID *TestBuffer, |
39 | | IN UINTN TestBufferSize |
40 | | ) |
41 | 581 | { |
42 | 581 | VBLK_DEV *VblkDev; |
43 | 581 | VIRTIO_PCI_DEVICE *VirtioDev; |
44 | 581 | EFI_PCI_IO_PROTOCOL *PciIo; |
45 | 581 | VOID *ConfigRegion; |
46 | 581 | EFI_STATUS Status; |
47 | | |
48 | 581 | VirtioDev = (VIRTIO_PCI_DEVICE *) AllocateZeroPool (sizeof *VirtioDev); |
49 | 581 | VblkDev = (VBLK_DEV *) AllocateZeroPool (sizeof *VblkDev); |
50 | 581 | PciIo = (EFI_PCI_IO_PROTOCOL *)AllocateZeroPool(sizeof (*PciIo)); |
51 | 581 | ConfigRegion = (VOID *) AllocatePool(sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_HDR) + sizeof (VIRTIO_BLK_CONFIG)); |
52 | | |
53 | 581 | Status = ParseBufferAndInitVirtioPciDev (TestBuffer, TestBufferSize, PciIo, ConfigRegion, VirtioDev); |
54 | | |
55 | 581 | if (!EFI_ERROR(Status)) { |
56 | 328 | if (VirtioDev->VirtioDevice.SubSystemDeviceId == VIRTIO_SUBSYSTEM_BLOCK_DEVICE) { |
57 | 304 | VblkDev->Signature = VBLK_SIG; |
58 | 304 | VblkDev->VirtIo = &VirtioDev->VirtioDevice; |
59 | 304 | VirtioBlkInit (VblkDev); |
60 | 304 | } |
61 | 328 | } |
62 | | |
63 | 581 | FreePool (ConfigRegion); |
64 | 581 | FreePool (VirtioDev); |
65 | 581 | FreePool (VblkDev); |
66 | 581 | FreePool (PciIo); |
67 | 581 | } |