/src/hbfa-fl/HBFA/UefiHostFuzzTestCasePkg/TestCase/OvmfPkg/Virtio10BlkDxe/TestVirtio10Blk.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_1_0_DEV *VirtioDev; |
44 | 581 | VOID *ConfigRegion; |
45 | 581 | EFI_STATUS Status; |
46 | | |
47 | 581 | VirtioDev = (VIRTIO_1_0_DEV *) AllocateZeroPool (sizeof *VirtioDev); |
48 | 581 | VblkDev = (VBLK_DEV *) AllocateZeroPool (sizeof *VblkDev); |
49 | 581 | ConfigRegion = (VOID *) AllocatePool(sizeof (PCI_CFG_SPACE) + sizeof(VIRTIO_PCI_CAP_COMMON_CONFIG) + sizeof (VIRTIO_BLK_CONFIG) + 0x100); |
50 | | |
51 | 581 | Status = ParseBufferAndInitVirtioPciDev10 (TestBuffer, TestBufferSize, ConfigRegion, (VIRTIO_1_0_DEV *) VirtioDev); |
52 | | |
53 | 581 | if (!EFI_ERROR(Status)) { |
54 | 328 | if (VirtioDev->VirtIo.SubSystemDeviceId == VIRTIO_SUBSYSTEM_BLOCK_DEVICE) { |
55 | 304 | VblkDev->Signature = VBLK_SIG; |
56 | 304 | VblkDev->VirtIo = &VirtioDev->VirtIo; |
57 | 304 | VirtioBlkInit (VblkDev); |
58 | 304 | } |
59 | 328 | } |
60 | | |
61 | 581 | FreePool (ConfigRegion); |
62 | 581 | FreePool (VirtioDev); |
63 | 581 | FreePool (VblkDev); |
64 | 581 | } |