10. Protocols PCI Bus Support Test#
10.1. EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL Test#
Reference Document:
UEFI Specification, EFI_PCI_ROOT_BRIDGE_IO_ PROTOCOL Section.
Configuration
Some checkpoints in the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL test are device related. If the user needs to check the protocol on the specified device, the related profile needs to be updated to provide the specified information about this device.
For the format of the profile, please refer to A.2.
10.1.1. PollMem()#
Number | GUID | Assertion | Test Description |
5.8.1.1.1 | 0xa10d3292, 0x6908, 0x446f, 0x9b, 0xfa, 0x38, 0x67, 0x75, 0xc6, 0x3e, 0x2e | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem – PollMem() with the correct value written to the destination address before delay time out returns EFI_SUCCESS | 1. Call Mem.Write() to write specific value to destination address before the PollMem() delay times out. 2. Call PollMem() to poll the specific value on destination address. It should return EFI_SUCCESS when required value is written to destination address. |
5.8.1.1.2 | 0xec6af458, 0x3dc1, 0x4022, 0xae, 0x0a, 0x7a, 0xd5, 0x61, 0x58, 0xdc, 0x5c | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem – PollMem() returns EFI_SUCCESS immediately when required value has been written to destination address. | 1. Call Mem.Write() to write specific value to destination address before call of PollMem(). 2. Call PollMem() to poll the specific value on destination address. It should return EFI_SUCCESS immediately. |
5.8.1.1.3 | 0x6f82fa28, 0x8c61, 0x4af9, 0x8b, 0x77, 0xc9, 0xab, 0x26, 0x64, 0x10, 0x30 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem – PollMem() with delay as 0 returns EFI_SUCCESS immediately. | 1. Call PollMem() to poll the specific value on destination address with delay as 0. It should return EFI_SUCCESS immediately. |
5.8.1.1.4 | 0x2f0c1ddc, 0x53f3, 0x4053, 0xa8, 0xce, 0x37, 0x0f, 0xff, 0xac, 0x56, 0x05 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem – PollMem() with the invalid value written to the destination address before delay time out returns EFI_TIME_OUT | 1. Call Mem.Write() to write specific value to destination address before the PollMem() delay time out. 2. Call PollMem() to poll the different value on destination address. The return code should be EFI_TIME_OUT after delay time out. |
5.8.1.1.5 | 0x1d028ad2, 0xd563, 0x445e, 0x8c, 0x68, 0x92, 0x6f, 0x66, 0x35, 0x12, 0xa5 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem – PollMem() with Width as EfiPciWidthMaximum returns EFI_INVALID_PARAMETER. | 1. Call PollMem() with Width as EfiPciWidthMaximum. The return code should be EFI_INVALID_PARAMETER |
5.8.1.1.6 | 0x78d809be, 0xa958, 0x4c16, 0xb7, 0xbc, 0xbd, 0xb0, 0x26, 0xa0, 0x10, 0x48 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem – PollMem() with Width as EfiPciWidthFifoUintX returns EFI_INVALID_PARAMETER. | 1. Call PollMem() with Width as EfiPciWidthFifoUintX. The return code should be EFI_INVALID_PARAMETER |
5.8.1.1.7 | 0x87dc296a, 0xa156, 0x4601, 0x8c, 0xfb, 0x25, 0xd5, 0xa5, 0xcb, 0x64, 0x11 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem – PollMem() with Width as EfiPciWidthFillUintX returns EFI_INVALID_PARAMETER. | 1. Call PollMem() with Width as EfiPciWidthFillUintX. The return code should be EFI_INVALID_PARAMETER |
5.8.1.1.8 | 0x4e02eeec, 0x660d, 0x4782, 0xb2, 0xec, 0x2f, 0x5a, 0x66, 0x6c, 0xf2, 0xb7 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem – PollMem() with Width as -1 returns EFI_INVALID_PARAMETER. | 1. Call PollMem() with Width as -1. The return code should be EFI_INVALID_PARAMETER |
5.8.1.1.9 | 0x438d7bdd, 0x3e1b, 0x44dc, 0xb3, 0x53, 0x54, 0xf1, 0x9f, 0x02, 0x2d, 0x88 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollMem – PollMem() with Result as NULL returns EFI_INVALID_PARAMETER. | 1. Call PollMem() with Result as NULL. The return code should be EFI_INVALID_PARAMETER |
10.1.2. PollIo()#
Number | GUID | Assertion | Test Description |
5.8.1.2.1 | 0x7f89a139, 0x7bba, 0x41da, 0xaa, 0x92, 0x1c, 0xe3, 0xc4, 0x77, 0x97, 0x68 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo – PollIo() with the correct value written to the destination Io address before delay time out returns EFI_SUCCESS | 1. Call Io.Write() to write specific value to destination Io address before the PollIo() delay time out. 2. Call PollIo() to poll the specific value on destination Io address. It should return EFI_SUCCESS when required value is written to destination address. |
5.8.1.2.2 | 0xf6882063, 0xc841, 0x4822, 0xa9, 0x86, 0x16, 0x7e, 0xce, 0x5b, 0x2c, 0x76 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo – PollIo() returns EFI_SUCCESS immediately when required value has been written to destination address. | 1. Call Io.Write() to write specific value to destination address before call of PollIo(). 2. Call PollIo() to poll the specific value on destination address. It should return EFI_SUCCESS immediately. |
5.8.1.2.3 | 0x2ba92ffe, 0x557b, 0x4e2e, 0xa1, 0x22, 0x7c, 0x12, 0x36, 0x87, 0xdf, 0x6a | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo – PollIo() with delay as 0 returns EFI_SUCCESS immediately. | 1. Call PollIo() to poll the specific value on destination address with delay as 0. It should return EFI_SUCCESS immediately. |
5.8.1.2.4 | 0x424cfc17, 0x7335, 0x49d5, 0xb7, 0x9f, 0xa5, 0xfd, 0x90, 0xf2, 0xc5, 0x5e | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo – PollIo() with the invalid value written to the destination address before delay time out returns EFI_TIME_OUT | 1. Call Io.Write() to write specific value to destination address before the PollIo() delay time out. 2. Call PollIo() to poll the different value on destination address. The return code should be EFI_TIME_OUT after delay time out. |
5.8.1.2.5 | 0xb46d5e49, 0xe908, 0x4874, 0x96, 0x2f, 0xf8, 0x4e, 0x21, 0x6d, 0xcb, 0x54 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo – PollIo() with Width as EfiPciWidthMaximum returns EFI_INVALID_PARAMETER. | 1. Call PollIo() with Width as EfiPciWidthMaximum. The return code should be EFI_INVALID_PARAMETER |
5.8.1.2.6 | 0x90f1257b, 0x115e, 0x4d5d, 0xa1, 0x83, 0x09, 0xed, 0xc9, 0x5c, 0x18, 0x08 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo – PollIo() with Width as EfiPciWidthFifoUintX returns EFI_INVALID_PARAMETER. | 1. Call PollIo() with Width as EfiPciWidthFifoUintX. The return code should be EFI_INVALID_PARAMETER |
5.8.1.2.7 | 0xf557d70d, 0x4418, 0x4903, 0x8a, 0xb7, 0x66, 0x6f, 0x11, 0x1a, 0xd3, 0x37 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo – PollIo() with Width as EfiPciWidthFillUintX returns EFI_INVALID_PARAMETER. | 1. Call PollIo() with Width as EfiPciWidthFillUintX. The return code should be EFI_INVALID_PARAMETER |
5.8.1.2.8 | 0xd00129f5, 0x35d4, 0x4c01, 0xa7, 0x41, 0x00, 0xc7, 0xd5, 0xa5, 0x19, 0x0f | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo – PollIo() with Width as -1 returns EFI_INVALID_PARAMETER. | 1. Call PollIo() with Width as -1. The return code should be EFI_INVALID_PARAMETER |
5.8.1.2.9 | 0x7465fa90, 0xa357, 0x442f, 0xa8, 0xec, 0xf8, 0x86, 0x5f, 0xb6, 0xe2, 0xca | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.PollIo – PollIo() with Result as NULL returns EFI_INVALID_PARAMETER. | 1. Call PollIo() with Result as NULL. The return code should be EFI_INVALID_PARAMETER |
10.1.3. Mem.Read()#
Number | GUID | Assertion | Test Description |
5.8.1.3.1 | 0x122320b0, 0x435d, 0x449b, 0x9c, 0xc0, 0x99, 0xd5, 0x95, 0xc9, 0xd2, 0x3d | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Mem.Read() with data width as EfiPciWidthUintX(X=8,16,32) to read Mem address contents to buffer. The return code should be EFI_SUCCESS. |
5.8.1.3.2 | 0xc29f3981, 0x0a68, 0x48f0, 0x99, 0xfe, 0xc2, 0xe4, 0x84, 0xe8, 0xd2, 0x9d | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Mem.Read() with data width as EfiPciWidthUintX(X=8,16,32) to read Mem address contents to backup buffer. 2. Call Mem.Write() to write backup buffer contents to Mem address. 3. Call Mem.Read() again to read Mem address contents to another buffer. The return code should be EFI_SUCCESS. |
5.8.1.3.3 | 0x57e2d8b2, 0xed4c, 0x4856, 0x82, 0xb6, 0xa0, 0xfd, 0x80, 0xd0, 0xb2, 0x55 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with EfiPciWidthUintX returns the contents written by Mem.Write(). | 1. Call Mem.Read() with data width as EfiPciWidthUintX(X=8,16,32) to read Mem address contents to backup buffer. 2. Call Mem.Write() to write backup buffer contents to Mem address. 3. Call Mem.Read() again to read Mem address contents to another buffer. The read contents in buffer should be the same as backup buffer. |
5.8.1.3.4 | 0x729ba46d, 0x7962, 0x4a2b, 0xb5, 0x20, 0xbf, 0x52, 0xa2, 0x02, 0x3c, 0xbe | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with EfiPciWidthFifoUintX returns EFI_SUCCESS. | 1. Call Mem.Read() with data width as EfiPciWidthFifoUintX(X=8,16,32) to read Mem address contents to buffer. The return code should be EFI_SUCCESS. |
5.8.1.3.5 | 0x701e90f7, 0xd218, 0x411f, 0xba, 0x7d, 0xb5, 0xab, 0x92, 0x2a, 0xcb, 0x93 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with EfiPciWidthFifoUintX only increases buffer for each of the count operations performed. | 1. Call Mem.Write() with EfiPciWidthUintX to write Buffer1 to memory address. 2. Call Mem.Read() with data width as EfiPciWidthFifoUintX from the same memory address to Buffer2. All units of Buffer2 should be the first unit of Buffer1. |
5.8.1.3.6 | 0x383c6e62, 0xf92f, 0x4719, 0x9a, 0x11, 0x70, 0x95, 0x08, 0x31, 0x19, 0xad | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with EfiPciWidthFillUintX returns EFI_SUCCESS. | 1. Call Mem.Read() with data width as EfiPciWidthFillUintX(X=8,16,32) to read Mem address contents to buffer. The return code should be EFI_SUCCESS. |
5.8.1.3.7 | 0x596a5971, 0x11d4, 0x43b0, 0x82, 0x4d, 0xe5, 0xcc, 0x41, 0x81, 0x9e, 0x14 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with EfiPciWidthFillUintX only increases address for each of the count operations performed. | 1. Call Mem.Write() with EfiPciWidthUintX to write Buffer1 to memory address. 2. Set all units of Buffer2 with the same value. 2. Call Mem.Read() with data width as EfiPciWidthFillUintX from the same memory address to Buffer2. The first unit of Buffer2 should be same as the last unit of Buffer1 and other units of Buffer2 should remain unchanged. |
5.8.1.3.8 | 0x28ba919b, 0xbc04, 0x464a, 0xbb, 0xa0, 0x87, 0xee, 0xda, 0xc1, 0x0f, 0x33 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with Width as EfiPciWidthMaximum returns EFI_INVALID_PARAMETER. | 1. Call Mem.Read() with Width as EfiPciWidthMaximum. The return code should be EFI_INVALID_PARAMETER |
5.8.1.3.9 | 0xbc884213, 0xe80e, 0x41e6, 0x81, 0x69, 0xbc, 0x46, 0x7d, 0x53, 0x40, 0x86 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with Width as -1 returns EFI_INVALID_PARAMETER. | 1. Call Mem.Read() with Width as -1. The return code should be EFI_INVALID_PARAMETER |
5.8.1.3.10 | 0x8cc49d7f, 0x87be, 0x4a2e, 0x82, 0xc0, 0xce, 0xc2, 0xbf, 0xcb, 0xb1, 0x3d | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with buffer as NULL returns EFI_INVALID_PARAMETER. | 1. Call Mem.Read() with buffer as NULL. The return code should be EFI_INVALID_PARAMETER |
5.8.1.3.11 | 0xbbf33c06, 0xa3a0, 0x4e13, 0xa3, 0xc7, 0x49, 0x23, 0x37, 0x07, 0xc9, 0x0d | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Read – Mem.Read() with unsupported Width from profile returns EFI_INVALID_PARAMETER. | 1. Call Mem.Read() with unsupported Width from profile. The return code should be EFI_INVALID_PARAMETER |
10.1.4. Mem.Write()#
Number | GUID | Assertion | Test Description |
5.8.1.4.1 | 0x9dac86c8, 0xb700, 0x47ec, 0x95, 0x27, 0x9e, 0xf2, 0x39, 0x56, 0xbc, 0xca | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Write() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Mem.Write() with data width as EfiPciWidthUintX(X=8,16,32) to write buffer to Mem address. The return code should be EFI_SUCCESS. |
5.8.1.4.2 | 0x1ed536a0, 0x7dbb, 0x4f97, 0xa7, 0xcd, 0xeb, 0xb4, 0xc4, 0x84, 0xab, 0x2b | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Read() with EfiPciWidthUintX returns the contents written by Mem.Write(). | 1. Call Mem.Read() to read Mem address contents to backup buffer. 2. Call Mem.Write() with data width as EfiPciWidthUintX(X=8,16,32) to write backup buffer contents to Mem address. 3. Call Mem.Read() again to read Mem address contents to another buffer. The read contents in buffer should be the same as backup buffer. |
5.8.1.4.3 | 0xd2f05d14, 0xff03, 0x4b2d, 0x94, 0xbc, 0x11,0xd7, 0x7a, 0x56, 0x20, 0x5e | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Write() with EfiPciWidthFifoUintX returns EFI_SUCCESS. | 1. Call Mem.Write() with data width as EfiPciWidthFifoUintX(X=8,16,32) to write buffer contents to Mem address. The return code should be EFI_SUCCESS. |
5.8.1.4.4 | 0x2e0a75e3, 0x04f3, 0x47f4, 0x85, 0x8f, 0x75, 0x1a, 0x29, 0xcf, 0x1c, 0x6a | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Write() with EfiPciWidthFifoUintX only increases buffer for each of the count operations performed. | 1. Call Mem.Read() with EfiPciWidthUintX to read memory address contents to Buffer1. 2. Call Mem.Write() with EfiPciWidthFifoUintX to write Buffer1 to memory address. 3. Call Mem.Read() with data width as EfiPciWidthUintX from the same memory address to Buffer2. The first unit of Buffer2 should be the same as the last unit of Buffer1, and other units of Buffer2 should be the same as corresponding units of Buffer1. |
5.8.1.4.5 | 0xd220d6da, 0xa7b9, 0x477f, 0xa6, 0xfb, 0xc1, 0x52, 0x43, 0xe9, 0x52, 0x5e | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Write() with EfiPciWidthFillUintX returns EFI_SUCCESS. | 1. Call Mem.Write() with data width as EfiPciWidthFillUintX(X=8,16,32) to write buffer contents to Mem address. The return code should be EFI_SUCCESS. |
5.8.1.4.6 | 0x8283aeec, 0x2896, 0x460b, 0x9e, 0xf1, 0xe7, 0xa6, 0x89, 0xa4, 0x8c, 0x86 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Read() after Mem.Write the data using EfiPciIoWidthFillUintX return EFI_SUCCESS. | 1. Call Mem.Write() with data width as EfiPciWidthFillUintX(X=8,16,32) to write buffer contents to Mem address. 2. Call Mem.Read() with data width as EfiPciWidthUintX to read Mem address contents to buffer. The return code should be EFI_SUCCESS. |
5.8.1.4.7 | 0xcabf0b57, 0x7e2b, 0x40f6, 0x96, 0xa6, 0x3d, 0x4e, 0x92, 0xca, 0x5b, 0x55 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Write() with EfiPciWidthFillUintX only increases address for each of the count operations performed. | 1. Call Mem.Write() with data width as EfiPciWidthFillUintX(X=8,16,32) to write Buffer1 contents to Mem address. 2. Call Mem.Read() with data width as EfiPciWidthUintX to read Mem address contents to Buffer2. All the units of Buffer2 should be the same as the first unit of Buffer1. |
5.8.1.4.8 | 0xaa2e8dd7, 0x501e, 0x4210, 0x8f, 0x10, 0xd0, 0x30, 0x78, 0x30, 0x75, 0x64 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Write() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Mem.Read() with data width as EfiPciWidthUintX(X=8,16,32) to write buffer back to Mem address. The return code should be EFI_SUCCESS. |
5.8.1.4.9 | 0x26aa2144, 0x1c21, 0x4499, 0xb4, 0xdb, 0xda, 0xf4, 0x80, 0x07, 0xfa, 0xd9 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Write() with Width as EfiPciWidthMaximum returns EFI_INVALID_PARAMETER. | 1. Call Mem.Write() with Width as EfiPciWidthMaximum. The return code should be EFI_INVALID_PARAMETER |
5.8.1.4.10 | 0x71b8a5d8, 0xf464, 0x416d, 0xb9, 0x73, 0x4e, 0xb0, 0xc1, 0x06, 0x94, 0x07 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Write() with Width as -1 returns EFI_INVALID_PARAMETER. | 1. Call Mem.Write() with Width as -1. The return code should be EFI_INVALID_PARAMETER |
5.8.1.4.11 | 0x2b698420, 0x82b3, 0x43b3, 0xaa, 0x39, 0x53, 0xc2, 0x9d, 0x1d, 0x91, 0x13 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Write() with buffer as NULL returns EFI_INVALID_PARAMETER. | 1. Call Mem.Write() with buffer as NULL. The return code should be EFI_INVALID_PARAMETER |
5.8.1.4.12 | 0xcf2417f3, 0x1491, 0x44ea, 0x93, 0xec, 0xad, 0x0b, 0x5b, 0xc0, 0x2b, 0xc6 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Mem.Write – Mem.Write() with unsupported Width from profile returns EFI_INVALID_PARAMETER. | 1. Call Mem.Write() with unsupported Width from profile. The return code should be EFI_INVALID_PARAMETER |
10.1.5. Io.Read()#
Number | GUID | Assertion | Test Description |
5.8.1.5.1 | 0xf6d5c145, 0x15c9, 0x4bc5, 0xa5, 0x1c, 0xd5, 0xfd, 0xba, 0xf0, 0x73, 0xe9 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Io.Read() with data width as EfiPciWidthUintX(X=8,16,32) to read Io address contents to buffer. The return code should be EFI_SUCCESS. |
5.8.1.5.2 | 0x12a1078a, 0xc78a, 0x446d, 0x90, 0x37, 0x22, 0xd8, 0xd0, 0x88, 0xfb, 0x2d | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Io.Read() with data width as EfiPciWidthUintX(X=8,16,32) to read Io address contents to backup buffer. 2. Call Io.Write() to write backup buffer contents to Io address. 3. Call Io.Read() again to read Io address contents to another buffer. The return code should be EFI_SUCCESS. |
5.8.1.5.3 | 0xcc985605, 0x262d, 0x4954, 0xb4, 0x1c, 0xa9, 0x4c, 0xd0, 0x15, 0x7b, 0x96 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with EfiPciWidthUintX returns the contents written by Io.Write(). | 1. Call Io.Read() with data width as EfiPciWidthUintX(X=8,16,32) to read Io address contents to backup buffer. 2. Call Io.Write() to write backup buffer contents to Io address. 3. Call Io.Read() again to read Io address contents to another buffer. The read contents in buffer should be the same as backup buffer. |
5.8.1.5.4 | 0x0d6630e0, 0x4a9e, 0x4720, 0xa2, 0xe1, 0x4e, 0xf3, 0xef, 0x81, 0x5f, 0x41 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with EfiPciWidthFifoUintX returns EFI_SUCCESS. | 1. Call Io.Read() with data width as EfiPciWidthFifoUintX(X=8,16,32) to read Io address contents to buffer. The return code should be EFI_SUCCESS. |
5.8.1.5.5 | 0xddb273f7, 0xd3d7, 0x4ab2, 0xa2, 0x41, 0xcb, 0x78, 0x05, 0x76, 0x79, 0xe0 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with EfiPciWidthFifoUintX only increases buffer for each of the count operations performed. | 1. Call Io.Write() with EfiPciWidthUintX to write Buffer1 to Io address. 2. Call Io.Read() with data width as EfiPciWidthFifoUintX from the same Io address to Buffer2. All units of Buffer2 should be the first unit of Buffer1. |
5.8.1.5.6 | 0x349eb44d, 0x2db1, 0x4fa7, 0xa3, 0xf2, 0x1a, 0x08, 0x8d, 0xa9, 0x0e, 0x3c | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with EfiPciWidthFillUintX returns EFI_SUCCESS. | 1. Call Io.Read() with data width as EfiPciWidthFillUintX(X=8,16,32) to read Io address contents to buffer. The return code should be EFI_SUCCESS. |
5.8.1.5.7 | 0x3dcc7e09, 0x598c, 0x4fdb, 0xbb, 0x03, 0xda, 0xa6, 0x1a, 0xc9, 0x9f, 0x28 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with EfiPciWidthFillUintX only increases address for each of the count operations performed. | 1. Call Io.Write() with EfiPciWidthUintX to write Buffer1 to Io address. 2. Set all units of Buffer2 with the same value. 2. Call Io.Read() with data width as EfiPciWidthFillUintX from the same Io address to Buffer2. The first unit of Buffer2 should be same as the last unit of Buffer1 and other units of Buffer2 should remain unchanged. |
5.8.1.5.8 | 0xb7153211, 0xaf3b, 0x4a10, 0x85, 0x16, 0x5d, 0x5b, 0x13, 0x1d, 0x9e, 0x67 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with Width as EfiPciWidthMaximum returns EFI_INVALID_PARAMETER. | 1. Call Io.Read() with Width as EfiPciWidthMaximum. The return code should be EFI_INVALID_PARAMETER |
5.8.1.5.9 | 0x8578f6de, 0xc396, 0x42f7, 0x92, 0x42, 0x74, 0x37, 0x13, 0xdb, 0xbf, 0x6d | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with Width as -1 returns EFI_INVALID_PARAMETER. | 1. Call Io.Read() with Width as -1. The return code should be EFI_INVALID_PARAMETER |
5.8.1.5.10 | 0x50b7d46a, 0x73b5, 0x4bba, 0xa7, 0x36, 0x8a, 0xae, 0x97, 0x5c, 0x42, 0x6b | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with buffer as NULL returns EFI_INVALID_PARAMETER. | 1. Call Io.Read() with buffer as NULL. The return code should be EFI_INVALID_PARAMETER |
5.8.1.5.11 | 0xb24b8daa, 0x5ea2, 0x47d0, 0x88, 0xc0, 0x32, 0x3b, 0x26, 0x43, 0x2f, 0xbc | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Read – Io.Read() with unsupported Width from profile returns EFI_INVALID_PARAMETER. | 1. Call Io.Read() with unsupported Width from profile. The return code should be EFI_INVALID_PARAMETER |
10.1.6. Io.Write()#
Number | GUID | Assertion | Test Description |
5.8.1.6.1 | 0xa0954c3a, 0x86d9, 0x43a8, 0xb0, 0xcb, 0x13, 0xcf, 0x13, 0xe2, 0x82, 0x50 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Write() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Io.Write() with data width as EfiPciWidthUintX(X=8,16,32) to write buffer to Io address. The return code should be EFI_SUCCESS. |
5.8.1.6.2 | 0xe401d5de, 0x3a4e, 0x4e21, 0xb1, 0x4c, 0x34, 0x90, 0xc6, 0xe8, 0xf3, 0xd8 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Read() with EfiPciWidthUintX returns the contents written by Io.Write(). | 1. Call Io.Read() to read Io address contents to backup buffer. 2. Call Io.Write() with data width as EfiPciWidthUintX(X=8,16,32) to write backup buffer contents to Io address. 3. Call Io.Read() again to read Io address contents to another buffer. The read contents in buffer should be the same as backup buffer. |
5.8.1.6.3 | 0xef5142b5, 0xe421, 0x43b8, 0xb1, 0xd5, 0x17, 0x60, 0x46, 0x60, 0x72, 0x3a | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Write() with EfiPciWidthFifoUintX returns EFI_SUCCESS. | 1. Call Io.Write() with data width as EfiPciWidthFifoUintX(X=8,16,32) to write buffer contents to Io address. The return code should be EFI_SUCCESS. |
5.8.1.6.4 | 0xd2f5dadf, 0x82f7, 0x4d25, 0x9a, 0x96, 0x50, 0xd5, 0xb6, 0xfe, 0x86, 0xbf | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Write() with EfiPciWidthFifoUintX only increases buffer for each of the count operations performed. | 1. Call Io.Read() with EfiPciWidthUintX to read Io address contents to Buffer1. 2. Call Io.Write() with EfiPciWidthFifoUintX to write Buffer1 to Io address. 3. Call Io.Read() with data width as EfiPciWidthUintX from the same Io address to Buffer2. The first unit of Buffer2 should be the same as the last unit of Buffer1, and other units of Buffer2 should be the same as corresponding units of Buffer1. |
5.8.1.6.5 | 0xf6433206, 0xe359, 0x4a42, 0x82, 0x68, 0xb6, 0xbb, 0x68, 0x90, 0x6a, 0x3a | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Write() with EfiPciWidthFillUintX returns EFI_SUCCESS. | 1. Call Io.Write() with data width as EfiPciWidthFillUintX(X=8,16,32) to write buffer contents to Io address. The return code should be EFI_SUCCESS. |
5.8.1.6.6 | 0x8912391c, 0xf457, 0x4e51, 0x82, 0xb4, 0xe8, 0xaf, 0x1c, 0x5a, 0x18, 0xc2 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Write() with EfiPciWidthFillUintX only increases address for each of the count operations performed. | 1. Call Io.Write() with data width as EfiPciWidthFillUintX(X=8,16,32) to write Buffer1 contents to Io address. 2. Call Io.Read() with data width as EfiPciWidthUintX to read Io address contents to Buffer2. All the units of Buffer2 should be the same as the first unit of Buffer1. |
5.8.1.6.7 | 0xe347d0ed, 0x8fbd, 0x46c4, 0xbd, 0xfe, 0x27, 0x2f, 0x81, 0x3a, 0x84, 0x85 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Write() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Io.Read() with data width as EfiPciWidthUintX(X=8,16,32) to write buffer back to Io address. The return code should be EFI_SUCCESS. |
5.8.1.6.8 | 0x21d34064, 0x9df8, 0x4edf, 0x81, 0xd8, 0xeb, 0x90, 0x9c, 0xe7, 0x53, 0xd5 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Write() with Width as EfiPciWidthMaximum returns EFI_INVALID_PARAMETER. | 1. Call Io.Write() with Width as EfiPciWidthMaximum. The return code should be EFI_INVALID_PARAMETER |
5.8.1.6.9 | 0x9174967b, 0x1639, 0x46b0, 0xab, 0x66, 0x70, 0x59, 0x4e, 0x5a, 0x3f, 0x57 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Write() with Width as -1 returns EFI_INVALID_PARAMETER. | 1. Call Io.Write() with Width as -1. The return code should be EFI_INVALID_PARAMETER |
5.8.1.6.10 | 0x429ab4d0, 0x8d64, 0x4308, 0xa3, 0x08, 0x3e, 0x48, 0xa5, 0x66, 0x70, 0x4b | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Write() with buffer as NULL returns EFI_INVALID_PARAMETER. | 1. Call Io.Write() with buffer as NULL. The return code should be EFI_INVALID_PARAMETER |
5.8.1.6.11 | 0x3d761cee, 0x9d62, 0x4942, 0x91, 0xde, 0xa9, 0xca, 0x93, 0xe4, 0xd5, 0x31 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Io.Write – Io.Write() with unsupported Width from profile returns EFI_INVALID_PARAMETER. | 1. Call Io.Write() with unsupported Width from profile. The return code should be EFI_INVALID_PARAMETER |
10.1.7. Pci.Read()#
Number | GUID | Assertion | Test Description |
5.8.1.7.1 | 0x0a24c289, 0xe2b2, 0x465e, 0x93, 0x03, 0x20, 0x4e, 0xae, 0x23, 0x88, 0xd5 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Pci.Read() with data width as EfiPciWidthUintX(X=8,16,32) to read Pci address contents to buffer. The return code should be EFI_SUCCESS. |
5.8.1.7.2 | 0x6a0884db, 0x48e2, 0x4330, 0x97, 0xa7, 0xf5, 0x26, 0x92, 0x4a, 0xf5, 0xea | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Pci.Read() with data width as EfiPciWidthUintX(X=8,16,32) to read Pci address contents to backup buffer. 2. Call Pci.Write() to write backup buffer contents to Pci address. 3. Call Pci.Read() again to read Pci address contents to another buffer. The return code should be EFI_SUCCESS. |
5.8.1.7.3 | 0x34b35b73, 0xdb30, 0x4343, 0x85, 0x9a, 0x13, 0xb9, 0xac, 0x6e, 0x88, 0x9a | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with EfiPciWidthUintX returns the contents written by Pci.Write(). | 1. Call Pci.Read() with data width as EfiPciWidthUintX(X=8,16,32) to read Pci address contents to backup buffer. 2. Call Pci.Write() to write backup buffer contents to Pci address. 3. Call Pci.Read() again to read Pci address contents to another buffer. The read contents in buffer should be the same as backup buffer. |
5.8.1.7.4 | 0x0cb1fa0c, 0xfb2d, 0x4eed, 0x8d, 0x72, 0xb1, 0x65, 0x14, 0xcf, 0x95, 0xee | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with EfiPciWidthFifoUintX returns EFI_SUCCESS. | 1. Call Pci.Read() with data width as EfiPciWidthFifoUintX(X=8,16,32) to read Pci address contents to buffer. The return code should be EFI_SUCCESS. |
5.8.1.7.5 | 0x95094926, 0x51ab, 0x43c1, 0xb6, 0xb3, 0x77, 0xba, 0x39, 0x8b, 0x4a, 0x94 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with EfiPciWidthFifoUintX only increases buffer for each of the count operations performed. | 1. Call Pci.Write() with EfiPciWidthUintX to write Buffer1 to Pci address. 2. Call Pci.Read() with data width as EfiPciWidthFifoUintX from the same Pci address to Buffer2. All units of Buffer2 should be the first unit of Buffer1. |
5.8.1.7.6 | 0xfb4b5e93, 0x494b, 0x4865, 0x9e, 0xb0, 0x8c, 0xb5, 0xeb, 0x0d, 0x86, 0x64 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with EfiPciWidthFillUintX returns EFI_SUCCESS. | 1. Call Pci.Read() with data width as EfiPciWidthFillUintX(X=8,16,32) to read Pci address contents to buffer. The return code should be EFI_SUCCESS. |
5.8.1.7.7 | 0x711d56d9, 0x90d4, 0x422b, 0xad, 0x2b, 0xfe, 0xe9, 0x01, 0x2c, 0xfd, 0x7a | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with EfiPciWidthFillUintX only increases address for each of the count operations performed. | 1. Call Pci.Write() with EfiPciWidthUintX to write Buffer1 to Pci address. 2. Set all units of Buffer2 with the same value. 2. Call Pci.Read() with data width as EfiPciWidthFillUintX from the same Pci address to Buffer2. The first unit of Buffer2 should be same as the last unit of Buffer1 and other units of Buffer2 should remain unchanged. |
5.8.1.7.8 | 0xbeed4e4f, 0xf7aa, 0x480e, 0x97, 0xfd, 0x3d, 0xd8, 0x83, 0x5f, 0x47, 0x09 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with Width as EfiPciWidthMaximum returns EFI_INVALID_PARAMETER. | 1. Call Pci.Read() with Width as EfiPciWidthMaximum. The return code should be EFI_INVALID_PARAMETER |
5.8.1.7.9 | 0x1698aaaf, 0x8a6e, 0x4a56, 0xb6, 0xd5, 0x4e, 0xa4, 0x1d, 0x12, 0x2c, 0xb3 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with Width as -1 returns EFI_INVALID_PARAMETER. | 1. Call Pci.Read() with Width as -1. The return code should be EFI_INVALID_PARAMETER |
5.8.1.7.10 | 0x201fdef9, 0xdc84, 0x4c9d, 0x85, 0x98, 0x86, 0xf7, 0xca, 0x3f, 0xef, 0x81 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with buffer as NULL returns EFI_INVALID_PARAMETER. | 1. Call Pci.Read() with buffer as NULL. The return code should be EFI_INVALID_PARAMETER |
5.8.1.7.11 | 0xe0a36a5f, 0x3be9, 0x4b11, 0x9e, 0xfb, 0x90, 0x07, 0x1c, 0x73, 0x99, 0xc9 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read – Pci.Read() with unsupported Width from profile returns EFI_INVALID_PARAMETER. | 1. Call Pci.Read() with unsupported Width from profile. The return code should be EFI_INVALID_PARAMETER |
10.1.8. Pci.Write()#
Number | GUID | Assertion | Test Description |
5.8.1.8.1 | 0x22abcbe1, 0x5a58, 0x47d0, 0xb7, 0x3a, 0x6d, 0x3c, 0x55, 0x7a, 0xe9, 0x7c | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Write() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Pci.Write() with data width as EfiPciWidthUintX(X=8,16,32) to write buffer to Pci address. The return code should be EFI_SUCCESS. |
5.8.1.8.2 | 0xb4e49e1b, 0xbe09, 0x4cdc, 0xbb, 0x56, 0xaa, 0x44, 0x4b, 0x86, 0xa6, 0x4a | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Read() with EfiPciWidthUintX returns the contents written by Pci.Write(). | 1. Call Pci.Read() to read Pci address contents to backup buffer. 2. Call Pci.Write() with data width as EfiPciWidthUintX(X=8,16,32) to write backup buffer contents to Pci address. 3. Call Pci.Read() again to read Pci address contents to another buffer. The read contents in buffer should be the same as backup buffer. |
5.8.1.8.3 | 0xd753202a, 0xbe16, 0x4a58, 0x88, 0x3a, 0xcb, 0x5b, 0x82, 0xdf, 0xb8, 0xe8 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Write() with EfiPciWidthFifoUintX returns EFI_SUCCESS. | 1. Call Pci.Write() with data width as EfiPciWidthFifoUintX(X=8,16,32) to write buffer contents to Pci address. The return code should be EFI_SUCCESS. |
5.8.1.8.4 | 0x241e4d94, 0xa5a2, 0x4192, 0x93, 0x66, 0x6d, 0x25, 0x8b, 0x20, 0x9b, 0xfc | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Write() with EfiPciWidthFifoUintX only increases buffer for each of the count operations performed. | 1. Call Pci.Read() with EfiPciWidthUintX to read Pci address contents to Buffer1. 2. Call Pci.Write() with EfiPciWidthFifoUintX to write Buffer1 to Pci address. 3. Call Pci.Read() with data width as EfiPciWidthUintX from the same Pci address to Buffer2. The first unit of Buffer2 should be the same as the last unit of Buffer1, and other units of Buffer2 should be the same as corresponding units of Buffer1. |
5.8.1.8.5 | 0xadff8bd8, 0x7efd, 0x4368, 0x9b, 0x72, 0x0e, 0x9b, 0x10, 0xca, 0x13, 0x39 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Write() with EfiPciWidthFillUintX returns EFI_SUCCESS. | 1. Call Pci.Write() with data width as EfiPciWidthFillUintX(X=8,16,32) to write buffer contents to Pci address. The return code should be EFI_SUCCESS. |
5.8.1.8.6 | 0xe9a41aa8, 0xd9be, 0x4b34, 0x99, 0xab, 0x40, 0x89, 0x08, 0x76, 0xc4, 0xe0 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Write() with EfiPciWidthFillUintX only increases address for each of the count operations performed. | 1. Call Pci.Write() with data width as EfiPciWidthFillUintX(X=8,16,32) to write Buffer1 contents to Pci address. 2. Call Pci.Read() with data width as EfiPciWidthUintX to read Pci address contents to Buffer2. All the units of Buffer2 should be the same as the first unit of Buffer1. |
5.8.1.8.7 | 0x91076895, 0x66a6, 0x4d26, 0x84, 0xca, 0x8d, 0x38, 0xeb, 0x96, 0xd7, 0x5f | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Write() with EfiPciWidthUintX returns EFI_SUCCESS. | 1. Call Pci.Read() with data width as EfiPciWidthUintX(X=8,16,32) to write buffer back to Pci address. The return code should be EFI_SUCCESS. |
5.8.1.8.8 | 0x7ff7a44c, 0x8647, 0x46de, 0x94, 0xe9, 0xe4, 0x0d, 0x30, 0xd1, 0x52, 0x41 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Write() with Width as EfiPciWidthMaximum returns EFI_INVALID_PARAMETER. | 1. Call Pci.Write() with Width as EfiPciWidthMaximum. The return code should be EFI_INVALID_PARAMETER |
5.8.1.8.9 | 0x5928ba78, 0x13d0, 0x48bd, 0x8f, 0xf7, 0xa6, 0xee, 0x82, 0x79, 0xef, 0xea | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Write() with Width as -1 returns EFI_INVALID_PARAMETER. | 1. Call Pci.Write() with Width as -1. The return code should be EFI_INVALID_PARAMETER |
5.8.1.8.10 | 0xb04a41bf, 0xa881, 0x4f93, 0xb6, 0x81, 0x14, 0x5c, 0xea, 0xaf, 0xa6, 0xa8 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Write() with buffer as NULL returns EFI_INVALID_PARAMETER. | 1. Call Pci.Write() with buffer as NULL. The return code should be EFI_INVALID_PARAMETER |
5.8.1.8.11 | 0x009e4d36, 0xdc7e, 0x45a6, 0xa7, 0xa5, 0xfa, 0x8b, 0x79, 0x11, 0xfb, 0x0c | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Write – Pci.Write() with unsupported Width from profile returns EFI_INVALID_PARAMETER. | 1. Call Pci.Write() with unsupported Width from profile. The return code should be EFI_INVALID_PARAMETER |
10.1.9. CopyMem()#
Number | GUID | Assertion | Test Description |
5.8.1.9.1 | 0x73a0ec23, 0x176e, 0x4560, 0xb2, 0xa3, 0x77, 0x13, 0xae, 0x8e, 0x42, 0xd2 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – CopyMem() between non-overlapping regions regions returns EFI_SUCCESS. | 1. Set Buffer1 with specific value. Call Mem.Write() to write Buffer1 to Address1 with count units. 2. Call CopyMem() to copy Mem from Address1 to Address1+ BufferSize with count units. The return code should be EFI_SUCCESS. |
5.8.1.9.2 | 0x6fd31187, 0xf3e6, 0x4b1d, 0x90, 0x61, 0xdc, 0xd8, 0x36, 0x98, 0xe6, 0xfc | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – The data in destination address should be the same as the source address after call of CopyMem() between non-overlapping regions. | 1. Set Buffer1 with specific value. Call Mem.Write() to write Buffer1 to Address1 with count units. 2. Call CopyMem() to copy Mem from Address1 to Address1+ BufferSize with count units. 3. Call Mem.Read() to read data of Address1+BufferSize to Buffer2. All units of Buffer2 should be the same as Buffer1. |
5.8.1.9.3 | 0x4110b651, 0xb45e, 0x4684, 0xae, 0x38, 0x72, 0x8d, 0x01, 0xbb, 0x00, 0x97 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – CopyMem() between overlapping regions with destination address > source address returns EFI_SUCCESS. | 1. Set Buffer1 with specific value. Call Mem.Write() to write Buffer1 to Address1 with count units. 2. Call CopyMem() to copy Mem from Address1 to Address1+ BufferSize/2 with count units. The return code should be EFI_SUCCESS. |
5.8.1.9.4 | 0x2f84ec07, 0xa38a, 0x4db2, 0xac, 0x0f, 0x66, 0x4f, 0x91, 0x3b, 0xb3, 0xea | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – After call of CopyMem() between overlapping regions, the data in destination address should be the same as the buffer contents written to the source address. | 1. Set Buffer1 with specific value. Call Mem.Write() to write Buffer1 to Address1 with count units. 2. Call CopyMem() to copy Mem from Address1 to Address1+ BufferSize/2 with count units. 3. Call Mem.Read() to read data of Address1+BufferSize/2 to Buffer2. All units of Buffer2 should be the same as Buffer1. |
5.8.1.9.5 | 0x4081f6bf, 0xf332, 0x44de, 0xb8, 0x62, 0x19, 0xe5, 0xaa, 0xdb, 0x43, 0x7e | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – CopyMem() between overlapping regions with destination address < source address returns EFI_SUCCESS. | 1. Set Buffer1 with specific value. Call Mem.Write() to write Buffer1 to Address1+ BufferSize/2 with count units. 2. Call CopyMem() to copy Mem from Address1+ BufferSize/2 to Address1 with count units. The return code should be EFI_SUCCESS. |
5.8.1.9.6 | 0x8fb4d613, 0x2bde, 0x4f40, 0x9c, 0x70, 0xe1, 0x60, 0x34, 0xdc, 0x3b, 0xbc | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – After call of CopyMem() between overlapping regions, the data in destination address should be the same as the buffer contents written to the source address. | 1. Set Buffer1 with specific value. Call Mem.Write() to write Buffer1 to Address1+ BufferSize/2 with count units. 2. Call CopyMem() to copy Mem from Address1+ BufferSize/2 to Address1 with count units. 3. Call Mem.Read() to read data of Address1 to Buffer2. All units of Buffer2 should be the same as Buffer1. |
5.8.1.9.7 | 0x0bcb82fb, 0x7052, 0x4d0f, 0xad, 0x73, 0xd3, 0xe7, 0x25, 0xae, 0x46, 0xb5 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – CopyMem() with Width as EfiPciWidthMaximum returns EFI_INVALID_PARAMETER. | 1. Call CopyMem() with Width as EfiPciWidthMaximum. The return code should be EFI_INVALID_PARAMETER |
5.8.1.9.8 | 0x9f7bf606, 0xf898, 0x42f2, 0xb7, 0x7f, 0xc1, 0x39, 0xa5, 0x90, 0x65, 0x6c | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – CopyMem() with Width as -1 returns EFI_INVALID_PARAMETER. | 1. Call CopyMem() with Width as -1. The return code should be EFI_INVALID_PARAMETER |
5.8.1.9.9 | 0x5762a830, 0x4fd5, 0x4858, 0x82, 0x1f, 0x76, 0xab, 0x12, 0xe9, 0xa9, 0x80 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – CopyMem() with Width as EfiPciWidthFifoUintX returns EFI_INVALID_PARAMETER. | 1. Call CopyMem() with Width as EfiPciWidthFifoUintX. The return code should be EFI_INVALID_PARAMETER |
5.8.1.9.10 | 0x09154449, 0xd6bc, 0x47b3, 0x8a, 0x47, 0x25, 0xd3, 0x08, 0x81, 0xa5, 0x0f | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – CopyMem() with Width as EfiPciWidthFillUintX returns EFI_INVALID_PARAMETER. | 1. Call CopyMem() with Width as EfiPciWidthFillUintX. The return code should be EFI_INVALID_PARAMETER |
5.8.1.9.11 | 0x6ea5136c, 0x0060, 0x4e70, 0xa1, 0x7a, 0xc1, 0xf0, 0xbf, 0x9c, 0x74, 0x89 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.CopyMem – CopyMem() with unsupported Width from profile returns EFI_INVALID_PARAMETER. | 1. Call CopyMem() with unsupported Width from profile. The return code should be EFI_INVALID_PARAMETER. |
10.1.10. Map()#
Number | GUID | Assertion | Test Description |
5.8.1.10.1 | 0xb5eadff4, 0x6bbc, 0x45a2, 0xb9, 0x05, 0x85, 0x49, 0x78, 0xf3, 0xa6, 0x27 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map with EfiPciOperationBusMasterRead returns EFI_SUCCESS. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterRead to map the address of Buffer to device address. The return code should be EFI_SUCCESS. |
5.8.1.10.2 | 0x93950131, 0x0bc3, 0x429d, 0xad, 0x2d, 0x10, 0x47, 0x70, 0x76, 0x6c, 0xce | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map with EfiPciOperationBusMasterRead returns non-0 NumberOfBytes. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterRead to map the address of Buffer to device address. The return value of NumberOfBytes should not be 0. |
5.8.1.10.3 | 0x1a041b96, 0x79ea, 0x4732, 0xb9, 0xaa, 0x1c, 0xd4, 0x3b, 0x8c, 0x36, 0xcc | [DELETED] | |
5.8.1.10.4 | 0x11e33211, 0xbc86, 0x4d69, 0xb9, 0xdf, 0x2d, 0x0a, 0xb5, 0xa0, 0x94, 0x46 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterRead64 returns EFI_SUCCESS. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterRead64 to map the address of Buffer to device address. The return code should be EFI_SUCCESS. |
5.8.1.10.5 | 0x42e6a8c6, 0x0b28, 0x422d, 0xae, 0x3d, 0x86, 0x4d, 0xbf, 0x7b, 0x55, 0xee | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterRead64 returns non-0 NumberOfBytes. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterRead64 to map the address of Buffer to device address. The return value of NumberOfBytes should not be 0. |
5.8.1.10.6 | 0x84f186ad, 0x3c1e, 0x46c4, 0x95, 0x52, 0xff, 0xd9, 0xdc, 0xbf, 0x80, 0x9d | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – After Map() with EfiPciOperationBusMasterRead64, the data read from device address is the same as original data. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterRead64 to map the address of Buffer to device address. The data read from device address must be the same as original data. |
5.8.1.10.7 | 0xe10594a2, 0xfd97, 0x4383, 0x82, 0x5c, 0x62, 0x14, 0x54, 0x62, 0xd9, 0x5e | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterWrite returns EFI_SUCCESS. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterWrite to map the address of Buffer to device address. The return code should be EFI_SUCCESS. |
5.8.1.10.8 | 0x07e366fc, 0x5d2e, 0x474f, 0xba, 0xd3, 0xf8, 0xe4, 0x0a, 0x50, 0xf1, 0xd9 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterWrite returns non-0 NumberOfBytes. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterWrite to map the address of Buffer to device address. The return value of NumberOfBytes should not be 0. |
5.8.1.10.9 | 0xbceb0ddc, 0x1145, 0x4fcd, 0x89, 0x1c, 0x53, 0x2f, 0x71, 0xb1, 0xf4, 0xe7 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterWrite does not change data in host address. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterWrite to map the address of Buffer to device address. Data in Buffer should not be changed. |
5.8.1.10.10 | 0x5288b979, 0x9a17, 0x474a, 0xaf, 0xa0, 0x68, 0x61, 0x88, 0x48, 0xb3, 0xc1 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterWrite64 returns EFI_SUCCESS. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterWrite64 to map the address of Buffer to device address. The return code should be EFI_SUCCESS. |
5.8.1.10.11 | 0x65d95c94, 0xd3b9, 0x4e4b, 0x88, 0x38, 0x49, 0x96, 0x0d, 0xb8, 0xfb, 0x24 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterWrite returns non-0 NumberOfBytes. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterWrite64 to map the address of Buffer to device address. The return value of NumberOfBytes should not be 0. |
5.8.1.10.12 | 0x29fc59bc, 0x9f0d, 0x463d, 0xb4, 0x4a, 0x5a, 0xd2, 0x2d, 0x11, 0xa2, 0x26 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterWrite64 does not change data in host address. | 1. Allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterWrite64 to map the address of Buffer to device address. Data in Buffer should not be changed. |
5.8.1.10.13 | 0xb674ab5a, 0xc030, 0x4832, 0x9d, 0x69, 0xbb, 0x18, 0x27, 0xb3, 0x39, 0x8e | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterCommonBuffer returns EFI_SUCCESS. | 1. Call AllocateBuffer() to allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterCommonBuffer to map the address of Buffer to device address. The return code should be EFI_SUCCESS. |
5.8.1.10.14 | 0xebb4be23, 0x25c7, 0x46ce, 0xb8, 0x52, 0xde, 0xc7, 0x18, 0x2a, 0xc2, 0x07 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterCommonBuffer returns non-0 NumberOfBytes. | 1. Call AllocateBuffer() to allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterCommonBuffer to map the address of Buffer to device address. The return value of NumberOfBytes should not be 0. |
5.8.1.10.18 | 0x8120df74, 0xae1e, 0x47f9, 0xaa, 0x45, 0x8e, 0x70, 0xa7, 0xe3, 0x31, 0x19 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterCommonBuffer64 returns EFI_SUCCESS. | 1. Call AllocateBuffer() to allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterCommonBuffer64 to map the address of Buffer to device address. The return code should be EFI_SUCCESS. |
5.8.1.10.19 | 0xb93854ce, 0x5237, 0x492f, 0xbd, 0x55, 0x27, 0xd3, 0x82, 0xc1, 0xce, 0x53 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterCommonBuffer64 returns non-0 NumberOfBytes. | 1. Call AllocateBuffer() to allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterCommonBuffer64 to map the address of Buffer to device address. The return value of NumberOfBytes should not be 0. |
5.8.1.10.20 | 0x3ec7dc5b, 0x3c99, 0x47e1, 0x87, 0xff, 0xb2, 0x4d, 0x08, 0x95, 0x04, 0x96 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – After Map() with EfiPciOperationBusMasterCommonBuffer64, the data read from device address is the same as original data. | 1. Call AllocateBuffer() to allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterCommonBuffer64 to map the address of Buffer to device address. The data read from device address must be the same as original data. |
5.8.1.10.21 | 0xb4df6e6e, 0x4e30, 0x457e, 0xa1, 0xf8, 0x39, 0xf4, 0x52, 0xf6, 0x11, 0x2f | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – After Map() with EfiPciOperationBusMasterCommonBuffer64, the data in original host address remains in sync with mapped device address. | 1. Call AllocateBuffer() to allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterCommonBuffer64 to map the address of Buffer to device address. 3. Call BS.SetMem() to change contents of mapped device address. Data in host address should change also and be equal to data in device address. |
5.8.1.10.22 | 0xc4451e9d, 0x538e, 0x4cda, 0xa7, 0xa6, 0x0c, 0xa1, 0x50, 0x06, 0x03, 0x87 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – After Map() with EfiPciOperationBusMasterCommonBuffer64, the data in mapped device address remains in sync with original host address. | 1. Call AllocateBuffer() to allocate memory to Buffer. 2. Call Map() with EfiPciOperationBusMasterCommonBuffer64 to map the address of Buffer to device address. 3. Call BS.SetMem() to change contents of host address. Data in mapped device address should change also and be equal to data in device address. |
5.8.1.10.23 | 0xc79ed36f, 0xe0b3, 0x426c, 0x85, 0xc1, 0x7d, 0xfe, 0xb8, 0xcf, 0xdf, 0x07 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with invalid Operation as EfiPciOperationMaximum returns EFI_INVALID_PARAMETER. | 1. Call Map() with invalid Operation: EfiPciOperationMaximum. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.10.24 | 0x04b07426, 0x3d17, 0x4f18, 0x8b, 0x1c, 0xbd, 0x59, 0xae, 0x99, 0xe5, 0xf8 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with invalid Operation as -1 returns EFI_INVALID_PARAMETER. | 1. Call Map() with invalid Operation: -1. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.10.25 | 0xf8a42643, 0x912a, 0x4731, 0xb9, 0x04, 0x47, 0xbc, 0x87, 0x7f, 0xdd, 0xcf | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with HostAddress as NULL returns EFI_INVALID_PARAMETER. | 1. Call Map() with HostAddress as NULL. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.10.26 | 0x13513dbf, 0xc4da, 0x4952, 0xa4, 0x37, 0x44, 0x22, 0x28, 0x13, 0xdb, 0xfd | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with NumberOfBytes as NULL returns EFI_INVALID_PARAMETER. | 1. Call Map() with NumberOfBytes as NULL. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.10.27 | 0x8bfb7a69, 0xd816, 0x4315, 0xbe, 0x27, 0xe2, 0xa9, 0x03, 0x44, 0x69, 0x8e | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with DeviceAddress as NULL returns EFI_INVALID_PARAMETER. | 1. Call Map() with DeviceAddress as NULL. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.10.28 | 0x6fe65b18, 0x7638, 0x4584, 0xb9, 0x5f, 0x90, 0x2c, 0x0f, 0x80, 0xf6, 0x9b | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with Mapping as NULL returns EFI_INVALID_PARAMETER. | 1. Call Map() with Mapping as NULL. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.10.29 | 0xd6b631c7, 0xd459, 0x40cd, 0xa1, 0xca, 0x6d, 0x28, 0x7b, 0x61, 0xaa, 0xd9 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterCommonBuffer and HostAddress + NumberofBytes > 4GB returns EFI_UNSUPPORTED. | 1. Call Map() with HostAddress + NumberofBytes > 4GB. The return code should be EFI_UNSUPPORTED. |
5.8.1.10.30 | 0x04030971, 0xedb2, 0x498b, 0x84, 0x94, 0xf0, 0x19, 0x24, 0x28, 0xd4, 0x14 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Map – Map() with EfiPciOperationBusMasterCommonBuffer64 and HostAddress + NumberofBytes > 4GB returns EFI_UNSUPPORTED. | 1. Call Map() with HostAddress + NumberofBytes > 4GB. The return code should be EFI_UNSUPPORTED. |
10.1.11. Unmap()#
Number | GUID | Assertion | Test Description |
5.8.1.11.1 | 0xb4a084d7, 0x48de, 0x48de, 0x97, 0xa0, 0x27, 0x10, 0x07, 0x9f, 0xcc, 0x04 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterRead returns EFI_SUCCESS. | 1. Call Map() with EfiPciOperationBusMasterRead to map the address of Buffer to device address.. 2. Call Unmap() to release resources of mapping. The return code should be EFI_SUCCESS. |
5.8.1.11.2 | 0xa4ef56f6, 0x597b, 0x47a4, 0xa3, 0xed, 0x00, 0xba, 0x87, 0xcd, 0x47, 0xd8 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterRead does not change contents in host address. | 1. Set specific value to Buffer. 2. Call Map() with EfiPciOperationBusMasterRead to map the address of Buffer to device address. 3. Call Unmap with mapping value gotten from Map(). The data in Buffer should remain unchanged. |
5.8.1.11.3 | 0xd211369e, 0x2b2d, 0x4d95, 0xa7, 0x30, 0x7c, 0x7c, 0xf5, 0xd6, 0xfc, 0x13 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterRead64 returns EFI_SUCCESS. | 1. Call Map() with EfiPciOperationBusMasterRead64 to map the address of Buffer to device address.. 2. Call Unmap() to release resources of mapping. The return code should be EFI_SUCCESS. |
5.8.1.11.4 | 0xa32ec004, 0x1e89, 0x4553, 0xac, 0x80, 0x9d, 0x3b, 0x14, 0xe6, 0x09, 0x49 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterRead64 does not change contents in host address. | 1. Set specific value to Buffer. 2. Call Map() with EfiPciOperationBusMasterRead64 to map the address of Buffer to device address. 3. Call Unmap with mapping value gotten from Map(). The data in Buffer should remain unchanged. |
5.8.1.11.5 | 0x8a2ffff4, 0x186b, 0x4624, 0xa5, 0x4a, 0x1a, 0x8f, 0xaf, 0xe4, 0x06, 0x2a | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterWrite returns EFI_SUCCESS. | 1. Call Map() with EfiPciOperationBusMasterWrite to map the address of Buffer to device address. 2. Call Unmap() to release resources of mapping. The return code should be EFI_SUCCESS. |
5.8.1.11.6 | 0x8874b727, 0x7a35, 0x4e6e, 0x96, 0x19, 0x7e, 0x5b, 0x22, 0xcb, 0x3f, 0xf8 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterWrite does not change contents in host address. | 1. Set specific value to Buffer. 2. Call Map() with EfiPciOperationBusMasterWrite to map the address of Buffer to device address. 3. Call Unmap with mapping value gotten from Map(). The data in Buffer should remain unchanged. |
5.8.1.11.7 | 0xffd39873, 0xa3da, 0x49fd, 0xae, 0x87, 0x5c, 0x09, 0xb5, 0xa1, 0x01, 0x73 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterWrite returns EFI_SUCCESS. | 1. Call Map() with EfiPciOperationBusMasterWrite to map the address of Buffer to device address. 2. Call Unmap() to release resources of mapping. The return code should be EFI_SUCCESS. |
5.8.1.11.8 | 0xd8eedc25, 0xea92, 0x4d1b, 0x8f, 0xe7, 0x7c, 0xb1, 0x87, 0xb2, 0xc0, 0xa6 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterWrite, does not change contents in host address. | 1. Set specific value to the Buffer. 2. Call Map() with EfiPciOperationBusMasterWrite to map the address of the Buffer to the device address. 3. Call Unmap() with mapping value gotten from Map(). The data in the Buffer should remain unchanged. |
5.8.1.11.9 | 0xe543e036, 0x3948, 0x4773, 0xa8, 0x0e, 0x89, 0x2c, 0xd3, 0xcc, 0xf0, 0xdf | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterCommonBuffer returns EFI_SUCCESS. | 1. Call Map() with EfiPciOperationBusMasterCommonBuffer to map the address of the Buffer to the device address. 2. Call Unmap() to release resources of mapping. The return code should be EFI_SUCCESS. |
5.8.1.11.10 | 0xd2368593, 0x122a, 0x41e7, 0x83, 0x34, 0x65, 0x7e, 0x78, 0xed, 0x12, 0xbc | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterCommonBuffer does not change contents in host address. | 1. Call AllocateBuffer() to allocate memory to the Buffer. 2. Call Map() with EfiPciOperationBusMasterCommonBuffer to map the address of the Buffer to the device address. 3. Call Unmap() with mapping value gotten from Map(). The data in the Buffer should remain unchanged. |
5.8.1.11.11 | 0x9356285b, 0x21b2, 0x40a3, 0x95, 0xed, 0xd6, 0xfe, 0x27, 0x5a, 0x2b, 0xba | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterCommonBuffer64 returns EFI_SUCCESS. | 1. Call Map() with EfiPciOperationBusMasterCommonBuffer64 to map the address of the Buffer to the device address. 2. Call Unmap() to release resources of mapping. The return code should be EFI_SUCCESS. |
5.8.1.11.12 | 0x0c44017c, 0x078d, 0x475c, 0x90, 0x0c, 0x4a, 0x36, 0xe6, 0x8b, 0x72, 0x04 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Unmap – Unmap() with mapping value gotten from Map() of EfiPciOperationBusMasterCommonBuffer64 does not change contents in host address | 1. Call AllocateBuffer() to allocate memory to the Buffer. 2. Call Map() with EfiPciOperationBusMasterCommonBuffer64 to map the address of the Buffer to the device address. 3. Call Unmap with mapping value gotten from Map(). The data in the Buffer should remain unchanged. |
10.1.12. AllocateBuffer()#
Number |
GUID |
Assertion |
Test Description |
---|---|---|---|
5.8.1.12.1 |
0x58a99166, 0xfdbe, 0x4963, 0xb9, 0x56, 0x00, 0x4f, 0x97, 0xcc, 0xe5, 0x20 |
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.AllocateBuffer – AllocateBuffer() with valid parameter returns EFI_SUCCESS. |
1. Call AllocateBuffer() with valid parameter. The return code should be EFI_SUCCESS. |
5.8.1.12.2 |
0x193efb14, 0x0c2a, 0x494d, 0xa2, 0xfc, 0xe1, 0x28, 0xb0, 0xe7, 0xb6, 0x5c |
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.AllocateBuffer – AllocateBuffer() with invalid memory types -1 returns EFI_INVALID_PARAMETER. |
1. Call AllocateBuffer() with invalid memory types -1. The return code should be EFI_INVALID_PARAMETER |
5.8.1.12.3 |
0x08d81bb3, 0x1db0, 0x4ce3, 0x8e, 0xe0, 0xa6, 0x7c, 0x46, 0xf1, 0xa8, 0x9b |
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.AllocateBuffer – AllocateBuffer() with invalid memory types returns EFI_INVALID_PARAMETER. |
1. Call AllocateBuffer() with invalid memory types. The return code should be EFI_INVALID_PARAMETER |
5.8.1.12.4 |
0x66bd765c, 0x6b86, 0x4a29, 0xbe, 0x88, 0x10, 0xab, 0xfe, 0x5a, 0xef, 0xbd |
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.AllocateBuffer – AllocateBuffer() with HostAddress as NULL returns EFI_INVALID_PARAMETER. |
1. Call AllocateBuffer() with HostAddress as NULL. The return code should be EFI_INVALID_PARAMETER |
5.8.1.12.5 |
0xf2e8d30e, 0x40d8, 0x4823, 0x97, 0xb2, 0x08, 0x32, 0x11, 0x9f, 0x78, 0xd3 |
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.AllocateBuffer – AllocateBuffer() with unsupported Attributes returns EFI_UNSUPPORTED. |
1. Call AllocateBuffer() with unsupported Attributes. The return code should be EFI_UNSUPPORTED. |
10.1.13. FreeBuffer()#
Number | GUID | Assertion | Test Description |
5.8.1.13.1 | 0xf2ec6740, 0x6416, 0x4890, 0xaf, 0xe6, 0xad, 0x67, 0x91, 0xf0, 0x22, 0xaf | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.FreeBuffer – FreeBuffer() with valid parameter returns EFI_SUCCESS. | 1. Call AllocateBuffer() to allocate memory to buffer. 2. Call FreeBuffer() to free buffer memory. The return code should be EFI_SUCCESS. |
10.1.14. Flush()#
Number | GUID | Assertion | Test Description |
5.8.1.14.1 | 0x8ce74cd6, 0x0409, 0x4513, 0x98, 0xdd, 0x3d, 0x0f, 0x96, 0x97, 0x4f, 0xe8 |
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Flush – Flush() with valid parameter returns EFI_SUCCESS. | 1. Call Flush() with valid parameter. The return code should be EFI_SUCCESS. |
10.1.15. GetAttributes()#
Number | GUID | Assertion | Test Description |
5.8.1.15.1 | 0x8e661c40, 0xf56f, 0x4ce8, 0x8e, 0x7e, 0xf4, 0x07, 0x28, 0x57, 0xf9, 0x5b | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.GetAttributes – GetAttributes() to get current attributes and supported attributes returns EFI_SUCCESS. | 1. Call GetAttributes() to get current attributes and supported attributes. The return code should be EFI_SUCCESS. |
5.8.1.15.2 | 0x54d94c0e, 0x70d7, 0x4a7a, 0x9e, 0x81, 0xf5, 0xb1, 0x63, 0x05, 0x93, 0xbe | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.GetAttributes – Current attributes must within Supported attributes. | 1. Call GetAttributes() to get current attributes and supported attributes. 2. Current attributes must within Supported attributes. |
5.8.1.15.3 | 0x727cabec, 0x1a1b, 0x4e9d, 0xb1, 0xde, 0x3b, 0x3e, 0xda, 0x55, 0x84, 0x44 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.GetAttributes – GetAttributes() to only get current attributes returns EFI_SUCCESS. | 1. Call GetAttributes() to only get current attributes. The return code should be EFI_SUCCESS. |
5.8.1.15.4 | 0x66fb3230, 0xa799, 0x4efe, 0x89, 0xfa, 0xbf, 0x86, 0xdf, 0x23, 0xb0, 0xf7 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.GetAttributes – The second call of GetAttributes() returns the same current attributes as the first time. | 1. Call GetAttributes() to get current attributes and supported attributes. 2. Call GetAttributes() for the second time to only get current attributes. It should return the same current attribute as the first time. |
5.8.1.15.5 | 0x2176073a, 0x7dfa, 0x463a, 0xa2, 0xf1, 0xab, 0xba, 0x92, 0x42, 0xe0, 0xea | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.GetAttributes - GetAttributes() to only get supported attributes returns EFI_SUCCESS. | 1. Call GetAttributes() to only get supported attributes. The return code should be EFI_SUCCESS. |
5.8.1.15.6 | 0x5a5c6253, 0x1202, 0x4abd, 0x95, 0x6f, 0x23, 0x0a, 0x1b, 0x2f, 0x45, 0xc0 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.GetAttributes – The second call of GetAttributes() returns the same supported attributes as the first time. | 1. Call GetAttributes() to get current attributes and supported attributes. 2. Call GetAttributes() for the second time to only get supported attributes. It should return the same supported attribute as the first time. |
5.8.1.15.7 | 0x8f25b1c3, 0x4571, 0x4101, 0x95, 0xf1, 0x36, 0xc1, 0xe5, 0x83, 0xc0, 0x23 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.GetAttributes – GetAttributes() with both Attributes and Supports as NULL returns EFI_INVALID_PARAMETER. | 1. Call GetAttributes() with both Attributes and Supports as NULL. The return code should be EFI_INVALID_PARAMETER |
10.1.16. SetAttributes()#
Number | GUID | Assertion | Test Description |
5.8.1.16.1 | 0xb9ee4bd9, 0x5a92, 0x4521, 0xbf, 0xaa, 0x80, 0x7f, 0x8b, 0x20, 0xac, 0xaa | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() to set supported attributes returns EFI_SUCCESS. | 1. Call GetAttributes() to get supported attributes. 2. Call SetAttributes() to set supported attributes. The return code should be EFI_SUCCESS. |
5.8.1.16.2 | 0x1dbb0bee, 0x7ebf, 0x4a3f, 0xa8, 0xaf, 0xb8, 0x24, 0x76, 0x29, 0xd6, 0x7c | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() to set supported attributes changes current attributes as expected. | 1. Call GetAttributes() to get supported attributes. 2. Call SetAttributes() to set supported attributes. 3. Call GetAttributes() to get current attributes. The supported attributes bits should be set. |
5.8.1.16.3 | 0x697e0d03, 0xca02, 0x4a21, 0x87, 0xf6, 0xd5, 0xd5, 0xeb, 0xb3, 0xab, 0xdb | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() to set supported attributes that require a resource returns EFI_SUCCESS. | 1. Call GetAttributes() to get supported attributes. 2. Call SetAttributes() to set MEMORY_WRITE_COMBINE, MEMORY_CACHED or MEMORY_DISABLE if they are supported. The return code should be EFI_SUCCESS. |
5.8.1.16.4 | 0x1f27d46e, 0x53b4, 0x4687, 0xaa, 0x9a, 0x5d, 0x46, 0xfb, 0x05, 0xa3, 0x65 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() to set supported attributes changes current attributes as expected. | 1. Call GetAttributes() to get supported attributes. 2. Call SetAttributes() to set MEMORY_WRITE_COMBINE, MEMORY_CACHED or MEMORY_DISABLE if they are supported. 3. Call GetAttributes() to get current attributes. The supported attribute bits specified by SetAttributes() should be set. |
5.8.1.16.5 | 0x405511dd, 0x38b4, 0x4aed, 0x9a, 0x7e, 0x18, 0xaa, 0xd1, 0x21, 0x67, 0x68 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() with unsupported attributes that do not need resources returns EFI_UNSUPPORTED. | 1. Call GetAttributes() to get current attributes and supported attributes. 2. Call SetAttributes() with unsupported attributes that do not need resources. The return code should be EFI_UNSUPPORTED. |
5.8.1.16.6 | 0x0150f584, 0x775b, 0x422d, 0xb3, 0xd7, 0xb8, 0x0d, 0x34, 0x56, 0x26, 0x47 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() with unsupported attributes that need resources returns EFI_UNSUPPORTED. | 1. Call GetAttributes() to get current attributes and supported attributes. 2. Call SetAttributes() with unsupported attributes that need resources. The return code should be EFI_UNSUPPORTED. |
5.8.1.16.7 | 0xdbf3baef, 0x35e9, 0x4d10, 0x8a, 0xbb, 0xcc, 0xca, 0x70, 0x5e, 0x99, 0x86 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() with unsupported attributes does not change current attributes. | 1. Call GetAttributes() to get current attributes and supported attributes. 2. Call SetAttributes() with unsupported attributes that not resource. 3. Call GetAttributes() to get current attributes. It should remain unchanged. |
5.8.1.16.8 | 0x186fee52, 0x7b8d, 0x4589, 0x8d, 0x87, 0x8e, 0x4f, 0x6b, 0x67, 0x9c, 0x6c | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE and ResourceBase as NULL returns EFI_INVALID_PARAMETER. | 1. Call SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE and ResourceBase as NULL. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.16.9 | 0x5a06217c, 0xcbf1, 0x4faa, 0x94, 0x04, 0x3b, 0xaf, 0x39, 0x6d, 0x04, 0x1d | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE and ResourceLength as NULL returns EFI_INVALID_PARAMETER. | 1. Call SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE and ResourceLength as NULL. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.16.10 | 0x7d1e8194, 0x0732, 0x4ca0, 0xac, 0x50, 0xdb, 0x62, 0x18, 0xe0, 0x69, 0xdd | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_CACHED and ResourceBase as NULL returns EFI_INVALID_PARAMETER. | 1. Call SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_CACHED and ResourceBase as NULL. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.16.11 | 0x037c66ae, 0x79a4, 0x4909, 0x93, 0xa4, 0xa6, 0xb7, 0xb8, 0xee, 0x58, 0xd6 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_CACHED and ResourceLength as NULL returns EFI_INVALID_PARAMETER. | 1. Call SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_CACHED and ResourceLength as NULL. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.16.12 | 0x117de9ad, 0xbc79, 0x49c2, 0xa7, 0x0f, 0x80, 0xc8, 0x80, 0x48, 0x6c, 0x91 | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_DISABLE and ResourceBase as NULL returns EFI_INVALID_PARAMETER. | 1. Call SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_DISABLE and ResourceBase as NULL. The return code should be EFI_INVALID_PARAMETER. |
5.8.1.16.13 | 0x363d5f12, 0x4c82, 0x4117, 0xa7, 0x6c, 0xc3, 0xd3, 0x70, 0x8f, 0xdb, 0xda | EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.SetAttributes – SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_DISABLE and ResourceLength as NULL returns EFI_INVALID_PARAMETER. | 1. Call SetAttributes() with EFI_PCI_ATTRIBUTE_MEMORY_DISABLE and ResourceLength as NULL. The return code should be EFI_INVALID_PARAMETER. |
10.1.17. Configuration()#
Number |
GUID |
Assertion |
Test Description |
---|---|---|---|
5.8.1.17.1 |
0xe65742bb, 0x7693, 0x4de1, 0xb0, 0x7b, 0x74, 0xfd, 0x64, 0x43, 0x6b, 0xf5 |
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Configuration – Configuration() to get the resource list returns EFI_SUCCESS. |
1. Call Configuration() to get the resource list. The return code should be EFI_SUCCESS. |
5.8.1.17.2 |
0xa5982933, 0x6b43, 0x4947, 0xb0, 0x29, 0xa8, 0xd5, 0x66, 0x72, 0xaa, 0xce |
EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Configuration – Resource returned by Configuration points to a valid ACPI 2.0 QWord descriptor. |
1. Call Configuration() to get the Resource list. The return Resource should be a valid ACPI 2.0 QWord descriptor. |
10.2. EFI_PCI_IO_PROTOCOL Test#
Reference Document:
UEFI Specification, EFI_PCI_ IO_ PROTOCOL Section.
Configuration
Some checkpoints in the EFI_PCI_IO_PROTOCOL test are device related. If the user needs to check the protocol on the specified device, the related profile needs to be updated to provide the specified information about this device.
For the format of the profile, please refer to
EFI_PCI_IO_PROTOCOL Test Profile.
10.2.1. PollMem()#
Number | GUID | Assertion | Test Description |
5.8.2.1.1 | 0xaef16eb4, 0x40ad, 0x4dcf, 0x8c, 0x57, 0x20, 0x92, 0xa7, 0x43, 0xa9, 0x78 | EFI_PCI_IO_PROTOCOL.PollMem - PollMem() with valid value returns EFI_SUCCESS. | 1. Call Mem.Write() to set the Alternate Value on the address. 2. Start a 3 second timer event. The event handler writes the Target Value to the address. 3. Call PollMem() for the Target Value with Delay as 5 seconds on the address -- PollMem() must return EFI_SUCCESS with Result as the Target Value. |
5.8.2.1.2 | 0x6e8a67fe, 0x4ad1, 0x4317, 0xa6, 0xfe, 0x76, 0x88, 0x02, 0x49, 0x0f, 0xbc | EFI_PCI_IO_PROTOCOL.PollMem - PollMem() with valid value again returns EFI_SUCCESS. | 1. Call Mem.Write() to set the Alternate Value on the address. 2. Start a 3 second timer event. The event handler writes the Target Value to the address. 3. Call PollMem() for the Target Value with Delay as 5 seconds on the address -- PollMem() must return EFI_SUCCESS with Result as the Target Value. 4. Call PollMem() for the Target Value again on the address. -- PollMem() must return EFI_SUCCESS with Result as the expected value. |
5.8.2.1.3 | 0x3b2cfc3e, 0xf167, 0x4c1f, 0x99, 0x8e, 0x2b, 0xca, 0x0b, 0x17, 0x6d, 0x39 | EFI_PCI_IO_PROTOCOL.PollMem - PollMem() with delay equals 0 and invalid destination address, returns EFI_SUCCESS. | 1. Call Mem.Write() to set the Alternate Value on the address. 2. PollMem() for the Target Value on the address with Delay as 0. -- PollMem() must return EFI_SUCCESS, with Result as the Alternate Value. |
5.8.2.1.4 | 0x600c99fb, 0x31d0, 0x4a94, 0x8e, 0xa3, 0xbd, 0x59, 0x54, 0xd0, 0xa5, 0x2b | EFI_PCI_IO_PROTOCOL.PollMem - PollMem() with 5 seconds delay and invalid destination address, returns EFI_TIMEOUT. | 1. Call Mem.Write() to set the Alternate Value on the address. 2. PollMem() for the Target on the address with Delay as 5 seconds. – PollMem() must return EFI_TIMEOUT, with Result as the Alternate Value. |
5.8.2.1.5 | 0x5a9e8b1e, 0xdc0d, 0x461f, 0x9f, 0xd5, 0xf4, 0x4c, 0xb9, 0x6e, 0xff, 0xfa | EFI_PCI_IO_PROTOCOL.PollMem - With Width as EfiPciWidthMaximum, the return status is EFI_INVALID_PARAMETER. | 1. Call PollMem() with Width as EfiPciWidthMaximum. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.1.6 | 0x3c29ad4d, 0x8bad, 0x4862, 0xab, 0x3a, 0x9b, 0xde, 0xee, 0xd6, 0x2e, 0x19 | EFI_PCI_IO_PROTOCOL.PollMem - With Width as EfiPciWidthFifoUintX, the return status is EFI_INVALID_PARAMETER. | 1. Call PollMem() with Width as EfiPciWidthFifoUintX. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.1.7 | 0xb9b9ebdc, 0x09e9, 0x4cc6, 0xaf, 0x45, 0xf1, 0xae, 0x28, 0x06, 0x17, 0x70 | EFI_PCI_IO_PROTOCOL.PollMem - With Width as EfiPciWidthFillUintX, the return status is EFI_INVALID_PARAMETER. | 1. Call PollMem() with Width as EfiPciWidthFillUintX. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.1.8 | 0x9007c300, 0x0782, 0x4f3e, 0xae, 0x40, 0xd5, 0x9d, 0x95, 0xce, 0x55, 0xf6 | EFI_PCI_IO_PROTOCOL.PollMem - With Width as -1, the return status is EFI_INVALID_PARAMETER | 1. Call PollMem() with Width as -1. The return status must be EFI_INVALID_PARAMETER |
5.8.2.1.9 | 0xdb14a663, 0x3a39, 0x4cf1, 0x90, 0xe6, 0x7a, 0xfe, 0x00, 0x6c, 0x66, 0xe2 | EFI_PCI_IO_PROTOCOL.PollMem - With Result as NULL, the return status is EFI_INVALID_PARAMETER. | 1. Call PollMem() with Result as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.1.10 | 0x47e2f242, 0xf876, 0x46ed, 0x9c, 0x91, 0x82, 0xd6, 0xd6, 0xb6, 0x7d, 0xb5 | EFI_PCI_IO_PROTOCOL.PollMem - With Offset beyond the range of BAR, the return status is EFI_UNSUPPORTED. | 1. Call PollMem() with Offset beyond the range of BAR. The return status must be EFI_UNSUPPORTED. |
5.8.2.1.11 | 0x02b6ac92, 0x4984, 0x42d8, 0xab, 0xda, 0xb1, 0x87, 0x8e, 0xa0, 0xd6, 0xc8 | EFI_PCI_IO_PROTOCOL.PollMem - With invalid BAR Index the return status is EFI_UNSUPPORTED. | 1. Call PollMem() with invalid BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.1.12 | 0x668ccc4e, 0xb0b2, 0x4980, 0xab, 0x43, 0xff, 0xfd, 0x11, 0x83, 0x91, 0x75 | EFI_PCI_IO_PROTOCOL.PollMem - With Io BAR Index the return status is EFI_UNSUPPORTED. | 1. Call PollMem() with Io BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.1.13 | 0x47a63a3d, 0xa134, 0x4a04, 0xb0, 0xd2, 0x10, 0xf1, 0x64, 0x88, 0xb0, 0xfb | EFI_PCI_IO_PROTOCOL.PollMem - With invalid Width the return status is EFI_INVALID_PARAMETER. | 1. Call PollMem() with invalid Width. The return status must be EFI_INVALID_PARAMETER. |
10.2.2. PollIo()#
Number | GUID | Assertion | Test Description |
5.8.2.2.1 | 0x6dfeb4fd, 0xdd98, 0x40db, 0x8e, 0x42, 0x67, 0x8a, 0xfb, 0x92, 0x6a, 0xe9 | EFI_PCI_IO_PROTOCOL.PollIo - PollIo() with valid value returns EFI_SUCCESS. | 1. Call Mem.Write() to set the Alternate Value on the address. 2. Start a 3 second timer event. The event handler writes the Target Value to the address. 3. Call PollMem() for the Target Value with Delay as 5 seconds on the address -- PollMem() must return EFI_SUCCESS with Result as the Target Value. |
5.8.2.2.2 | 0x427eb5db, 0x6e41, 0x4b01, 0xad, 0xb0, 0x31, 0xff, 0xd9, 0x99, 0x6a, 0x5b | EFI_PCI_IO_PROTOCOL.PollIo - PollIo() with valid value again returns EFI_SUCCESS. | 1. Call Io.Write() to set the Alternate Value on the address. 2. Start a 3 second timer event. The event handler writes the Target Value to the address. 3. Call PollIo() for the Target Value with Delay as 5 seconds on the address -- PollIo() must return EFI_SUCCESS with Result as the Target Value. 4. Call PollIo() for the Target Value again on the address. -- PollIo() must return EFI_SUCCESS with Result as the expected value |
5.8.2.2.3 | 0xdff400ef, 0x9e72, 0x448f, 0xad, 0x6b, 0xb1, 0x34, 0x25, 0x45, 0xc7, 0x02 | EFI_PCI_IO_PROTOCOL.PollIo - PollIo() with delay equal 0 and invalid destination address returns EFI_SUCCESS. | 1. Call Io.Write() to set the Alternate Value on the address. 2. PollIo() for the Target Value on the address with Delay as 0. -- PollIo() must return EFI_SUCCESS, with Result as the Alternate Value. |
5.8.2.2.4 | 0x6071974c, 0x35c0, 0x4599, 0xa6, 0x53, 0xe4, 0xbe, 0xc7, 0x34, 0xf7, 0x2c | EFI_PCI_IO_PROTOCOL.PollIo - PollIo() with 5 seconds delay and invalid destination address returns EFI_TIMEOUT. | 1. Call Io.Write() to set the Alternate Value on the address. 2. PollIo() for the Target on the address with Delay as 5 seconds. – PollIo() must return EFI_TIMEOUT, with Result as the Alternate Value. |
5.8.2.2.5 | 0xc113fe3f, 0x0fae, 0x4266, 0xbf, 0xb4, 0xfd, 0x41, 0xed, 0x41, 0xea, 0x39 | EFI_PCI_IO_PROTOCOL.PollIo - With Width as EfiPciWidthMaximum the return status is EFI_INVALID_PARAMETER. | 1. Call PollIo() with Width as EfiPciWidthMaximum. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.2.6 | 0x11466e1f, 0xd7e6, 0x4622, 0x84, 0x73, 0xfd, 0x57, 0xbf, 0x2f, 0x8f, 0x8e | EFI_PCI_IO_PROTOCOL.PollIo - With Width as EfiPciWidthFifoUintX the return status is EFI_INVALID_PARAMETER. | 1. Call PollIo() with Width as EfiPciWidthFifoUintX. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.2.7 | 0x251113eb, 0x968c, 0x4c70, 0xbf, 0xa0, 0x0d, 0xf6, 0x74, 0x7f, 0xfa, 0x9a | EFI_PCI_IO_PROTOCOL.PollIo - With Width as EfiPciWidthFillUintX the return status is EFI_INVALID_PARAMETER. | 1. Call PollIo() with Width as EfiPciWidthFillUintX. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.2.8 | 0xc6e532e8, 0xacc8, 0x4d48, 0x84, 0x69, 0xfd, 0xb0, 0xc1, 0xe0, 0xe5, 0x34 | EFI_PCI_IO_PROTOCOL.PollIo - With Width as -1 the return status is EFI_INVALID_PARAMETER. | 1. Call PollIo() with Width as -1. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.2.9 | 0xdd0e653a, 0x9da8, 0x4f32, 0x9d, 0x0a, 0xe3, 0x29, 0xe1, 0x17, 0x19, 0x0e | EFI_PCI_IO_PROTOCOL.PollIo - With Result as NULL the return status is EFI_INVALID_PARAMETER. | 1. Call PollIo() with Result as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.2.10 | 0xda044ef5, 0xe73b, 0x415c, 0xaf, 0x03, 0xaf, 0x3c, 0xb0, 0x00, 0x3f, 0x45 | EFI_PCI_IO_PROTOCOL.PollIo - With Offset beyond the range of BAR the return status is EFI_UNSUPPORTED. | 1. Call PollIo() with Offset beyond the range of BAR. The return status must be EFI_UNSUPPORTED. |
5.8.2.2.11 | 0x0929e753, 0x7659, 0x4b6b, 0x80, 0x1a, 0x8b, 0xd6, 0xb6, 0x37, 0x4d, 0xf6 | EFI_PCI_IO_PROTOCOL.PollIo - With invalid BAR Index the return status is EFI_UNSUPPORTED. | 1. Call PollIo() with invalid BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.2.12 | 0x64e878f6, 0xa53d, 0x4b4f, 0xa3, 0xca, 0x18, 0x9e, 0x37, 0x23, 0x4a, 0x99 | EFI_PCI_IO_PROTOCOL.PollIo - With Mem BAR Index the return status is EFI_UNSUPPORTED. | 1. Call PollIo() with Mem BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.2.13 | 0xf2e6563e, 0x0881, 0x4efc, 0xae, 0x69, 0x6d, 0x08, 0xdf, 0x1c, 0xb2, 0x80 | EFI_PCI_IO_PROTOCOL.PollIo - With invalid Width the return status is EFI_INVALID_PARAMETER. | 1. Call PollIo() with invalid Width. The return status must be EFI_INVALID_PARAMETER. |
10.2.3. Mem.Read()#
Number | GUID | Assertion | Test Description |
5.8.2.3.1 | 0xa52d8d69, 0x77cb, 0x4012, 0x9d, 0x3f, 0xfa, 0x19, 0xe3, 0x2f, 0x17, 0x6c | EFI_PCI_IO_PROTOCOL.Mem.Read - Mem.Read() reads data out and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units The return status should be EFI_SUCCESS. |
5.8.2.3.2 | 0x44e5c09e, 0xce91, 0x419d, 0xbe, 0xaf, 0xd6, 0x60, 0x73, 0xdf, 0x4e, 0xe3 | EFI_PCI_IO_PROTOCOL.Mem.Read - Mem.Read() read out the data from the address space and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write the buffer into the address range. 4. Call Mem.Read() to read out the data in destination address range. The return status should be EFI_SUCCESS. |
5.8.2.3.3 | 0x8ac05fc7, 0x0378, 0x4b5e, 0xba, 0x48, 0xb8, 0x53, 0x3d, 0x9e, 0xf2, 0x4c | EFI_PCI_IO_PROTOCOL.Mem.Read - The data read out is the same as that written in. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write the buffer into the address range. 4. Call Mem.Read() to read out the data in destination address range. 5. Compare the data read out with data written in. |
5.8.2.3.4 | 0xca3a1290, 0x652f, 0x490c, 0x8a, 0x3f, 0xea, 0x94, 0x45, 0xa4, 0xd3, 0x81 | EFI_PCI_IO_PROTOCOL.Mem.Read - Mem.Read() reads out the data with EfiPciIoWidthFifoX returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write the buffer into the address range. 4. Call Mem.Read() to read out the data using EfiPciIoWidthFifoUintX. The return status should be EFI_SUCCESS. |
5.8.2.3.5 | 0x99bb7423, 0xa29c, 0x442e, 0x9a, 0x29, 0x7b, 0xf8, 0xf1, 0x88, 0xa8, 0x7e | EFI_PCI_IO_PROTOCOL.Mem.Read - With EfiPciIoWidthFifoX, the data read out is the same as the first data unit. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write the buffer into the address range. 4. Call Mem.Read() to read out the data using EfiPciIoWidthFifoUintX. 5. Compare the each data unit in the buffer with the data at the Starting Address of the address range. |
5.8.2.3.6 | 0x4b9fef07, 0x3a4f, 0x40a0, 0xad, 0x43, 0xd1, 0x6a, 0x59, 0x8c, 0x22, 0x04 | EFI_PCI_IO_PROTOCOL.Mem.Read - Mem.Read() reads out the data with EfiPciIoWidthFillX and returns EFI_SUCCESS. | 1. Allocate a bufferthat matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write the buffer into the address range. 4. Call Mem.Read() to read out the data using EfiPciIoWidthFillUintX. The return status should be EFI_SUCCESS. |
5.8.2.3.7 | 0xd0bb89cc, 0x3838, 0x48bd, 0xb9, 0xd8, 0x1b, 0x8e, 0x3d, 0xef, 0x77, 0xd5 | EFI_PCI_IO_PROTOCOL.Mem.Read - With EfiPciIoWidthFillX, the data read out from the first unit in buffer equals the last unit in the address space. | 1. Allocate a bufferthat matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write the buffer into the address range. 4. Call Mem.Read() to read out the data using EfiPciIoWidthFillUintX. 5. Compare the first data unit in the output buffer with the last data unit in the address range. Compare other data units in the output buffer with the original data. |
5.8.2.3.8 | 0xd282dcc9, 0x004f, 0x4733, 0xb2, 0xa6, 0xb5, 0x56, 0x6b, 0x4c, 0xaf, 0x91 | EFI_PCI_IO_PROTOCOL.Mem.Read - With Width as EfiPciIoWidthMaximum the return status is EFI_INVALID_PARAMETER. | 1. Call Mem.Read() with Width as EfiPciWidthMaximum. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.3.9 | 0x927ad37d, 0x5ee5, 0x4d7a, 0x9f, 0x2e, 0x49, 0x9d, 0x7a, 0x49, 0x87, 0xb9 | EFI_PCI_IO_PROTOCOL.Mem.Read - With invalid Width type -1 the return status is EFI_INVALID_PARAMETER. | 1. Call Mem.Read() with Width as -1. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.3.10 | 0x99d41dcf, 0x75ee, 0x48bf, 0xac, 0x3d, 0x86, 0xce, 0xe6, 0x67, 0x11, 0x1c | EFI_PCI_IO_PROTOCOL.Mem.Read - With Buffer as NULL the return status is EFI_INVALID_PARAMETER. | 1. Call Mem.Read() with Buffer as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.3.11 | 0xa6d04a84, 0x2808, 0x48c7, 0xa0, 0x0b, 0xc2, 0xd6, 0xab, 0xad, 0xd5, 0x91 | EFI_PCI_IO_PROTOCOL.Mem.Read - With address out of BAR range the return status is EFI_UNSUPPORTED. | 1. Call Mem.Read() with address out of BAR range. The return status must be EFI_UNSUPPORTED. |
5.8.2.3.12 | 0xe8417927, 0xe158, 0x4094, 0x90, 0xf6, 0x03, 0x15, 0xf7, 0x2f, 0x61, 0xdc | EFI_PCI_IO_PROTOCOL.Mem.Read - With address out of BAR range the return status is EFI_UNSUPPORTED. | 1. Call Mem.Read() with address out of BAR range. The return status must be EFI_UNSUPPORTED. |
5.8.2.3.13 | 0x80720d1b, 0xa3dd, 0x465f, 0x8d, 0xe8, 0x9b, 0x6b, 0xb9, 0x64, 0x76, 0xda | EFI_PCI_IO_PROTOCOL.Mem.Read - With invalid BAR Index the return status is EFI_UNSUPPORTED. | 1. Call Mem.Read() with invalid BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.3.14 | 0x3b9e11c1, 0x6fea, 0x4742, 0x81, 0xfd, 0xf2, 0xfb, 0xd6, 0x9c, 0xb6, 0xba | EFI_PCI_IO_PROTOCOL.Mem.Read - With Io Type BAR the return status is EFI_UNSUPPORTED. | 1. Call Mem.Read() with Io Type BAR. The return status must be EFI_UNSUPPORTED. |
5.8.2.3.15 | 0xa043ffdf, 0x568b, 0x4128, 0x80, 0xf8, 0x61, 0x29, 0x0c, 0xd8, 0x8d, 0x57 | EFI_PCI_IO_PROTOCOL.Mem.Read - With invalid Width the return status is EFI_INVALID_PARAMETER. | 1. Call Mem.Read() with invalid Width. The return status must be EFI_INVALID_PARAMETER. |
10.2.4. Mem.Write()#
Number | GUID | Assertion | Test Description |
5.8.2.4.1 | 0x5847e586, 0x1f02, 0x466c, 0xa8, 0x33, 0x27, 0x23, 0x0d, 0x8d, 0xd9, 0xfd | EFI_PCI_IO_PROTOCOL.Mem.Write - Mem.Write() writes data to the memory address space and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write the buffer into the address range The return status should be EFI_SUCCESS. |
5.8.2.4.2 | 0x6790de90, 0x56b2, 0x456e, 0x8e, 0x7a, 0xd1, 0x65, 0x77, 0xb9, 0xce, 0x39 | EFI_PCI_IO_PROTOCOL.Mem.Write - The data read out is the same as that written in. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write the buffer into the address range. 4. Call Mem.Read() to read out the data in destination address range. 5. Compare the data read out with data written in. |
5.8.2.4.3 | 0x148a380b, 0xdbe0, 0x496b, 0xbd, 0x51, 0x56, 0xe6, 0xde, 0xcc, 0xf7, 0xca | EFI_PCI_IO_PROTOCOL.Mem.Write - Mem.Write() writes the data with EfiPciIoWidthFifoX and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write to the starting address of address range using EfiPciIoWidthFifoUintX. The return status should be EFI_SUCCESS. |
5.8.2.4.4 | 0xf641e745, 0x9f3c, 0x42bf, 0x94, 0x23, 0x04, 0x20, 0x56, 0x46, 0x4b, 0x6b | EFI_PCI_IO_PROTOCOL.Mem.Write - With EfiPciIoWidthFifoX, the first data unit is the same as the last data unit. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units 3. Call Mem.Write() to write to the starting address of address range using EfiPciIoWidthFifoUintX. 4. Call Mem.Read() to read out the data using EfiPciIoWidthFifoUintX. 5. Compare the data in the starting address with the last data unit. Compare other data units with original data. |
5.8.2.4.5 | 0xbb3f0bad, 0x6680, 0x4aaa, 0xbe, 0x39, 0x70, 0xe4, 0x13, 0x02, 0xf8, 0x5d | EFI_PCI_IO_PROTOCOL.Mem.Write - Mem.Write() writes the data with EfiPciIoWidthFillX and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write to address range using EfiPciIoWidthFillUintX. The return status should be EFI_SUCCESS. |
5.8.2.4.6 | 0x787dfda9, 0xcbfd, 0x4aae, 0x82, 0x98, 0xb1, 0xd4, 0x74, 0x15, 0x89, 0xb2 | EFI_PCI_IO_PROTOCOL.Mem.Write - With EfiPciIoWidthFillX, all the data units read out are the same as the first data unit in the address space. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write to address range using EfiPciIoWidthFillUintX. 4. Call Mem.Read() to read out the data using EfiPciIoWidthFillUintX. 5. Compare all the data units with the first data unit. |
5.8.2.4.7 | 0x2d6920fd, 0x05a9, 0x480b, 0x8c, 0x74, 0x2a, 0xfc, 0x0f, 0xa7, 0x83, 0x3a | EFI_PCI_IO_PROTOCOL.Mem.Write - Mem.Write() writes back the Data and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Mem.Read() to fill in the buffer with the predefined data units. 3. Call Mem.Write() to write the buffer into the address range. 4. Call Mem.Read() to read out the data in destination address range. 5. Call Mem.Write() to write the data back. The return status should be EFI_SUCCESS. |
5.8.2.4.8 | 0x4fe0f156, 0x0cb2, 0x464a, 0xb1, 0xbd, 0x23, 0x14, 0x9e, 0x3e, 0x09, 0x60 | EFI_PCI_IO_PROTOCOL.Mem.Write - With Width as EfiPciIoWidthMaximum the return status is EFI_INVALID_PARAMETER. | 1. Call Mem.Write() with Width as EfiPciWidthMaximum. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.4.9 | 0xb868ce7a, 0xfff0, 0x4c3c, 0x98, 0x00, 0xf5, 0xc7, 0xc2, 0x13, 0xaa, 0x09 | EFI_PCI_IO_PROTOCOL.Mem.Write - With invalid Width type -1 the return status is EFI_INVALID_PARAMETER. | 1. Call Mem.Write() with Width as -1. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.4.10 | 0x2fe9804a, 0xa418, 0x40b7, 0xa6, 0x8c, 0xaa, 0x40, 0xc3, 0xe6, 0x2f, 0x84 | EFI_PCI_IO_PROTOCOL.Mem.Write - With Buffer as NULL the return status is EFI_INVALID_PARAMETER. | 1. Call Mem.Write() with Buffer as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.4.11 | 0xdac9a8dc, 0x172e, 0x4c6d, 0xb2, 0xe7, 0xf1, 0x65, 0x94, 0xfe, 0x89, 0x39 | EFI_PCI_IO_PROTOCOL.Mem.Write - With address out of BAR range the return status is EFI_UNSUPPORTED. | 1. Call Mem.Write() with address out of BAR range. The return status must be EFI_UNSUPPORTED. |
5.8.2.4.12 | 0x99fca122, 0xd9dc, 0x4d3b, 0xbb, 0xb0, 0x2a, 0xf5, 0x3d, 0xd1, 0x39, 0x0e | EFI_PCI_IO_PROTOCOL.Mem.Write - With address out of BAR range the return status is EFI_UNSUPPORTED. | 1. Call Mem.Write() with address out of BAR range. The return status must be EFI_UNSUPPORTED. |
5.8.2.4.13 | 0xd5c1f492, 0x5dbf, 0x4b4d, 0x9e, 0x09, 0xd5, 0x1a, 0x23, 0x47, 0x37, 0xcc | EFI_PCI_IO_PROTOCOL.Mem.Write - With invalid BAR Index the return status is EFI_UNSUPPORTED. | 1. Call Mem.Write() with invalid BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.4.14 | 0x1af1b78c, 0x8ca2, 0x4146, 0x97, 0x69, 0x94, 0x29, 0xac, 0x48, 0x11, 0x65 | EFI_PCI_IO_PROTOCOL.Mem.Write - With Io Type BAR the return status is EFI_UNSUPPORTED. | 1. Call Mem.Write() with Io Type BAR. The return status must be EFI_UNSUPPORTED. |
5.8.2.4.15 | 0xa154d373, 0xc12b, 0x4939, 0xa3, 0xb2, 0xc0, 0x14, 0xc1, 0x09, 0xd3, 0x68 | EFI_PCI_IO_PROTOCOL.Mem.Write - With invalid Width the return status is EFI_INVALID_PARAMETER. | 1. Call Mem.Write() with invalid Width. The return status must be EFI_INVALID_PARAMETER. |
10.2.5. Io.Read()#
Number | GUID | Assertion | Test Description |
5.8.2.5.1 | 0x36e0b044, 0x2b2b, 0x484b, 0xb4, 0x80, 0x85, 0x99, 0xa9, 0x99, 0xa9, 0x35 | EFI_PCI_IO_PROTOCOL.Io.Read - Io.Read() reads data out and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. The return status should be EFI_SUCCESS. |
5.8.2.5.2 | 0xe65f66cb, 0xb1cb, 0x4a7a, 0x8c, 0x68, 0xb2, 0x0c, 0x69, 0x58, 0xdd, 0x6a | EFI_PCI_IO_PROTOCOL.Io.Read - Io.Read() reads out the data from Io address space and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write the buffer into the address range. 4. Call Io.Read() to read out the data in destination address range. The return status should be EFI_SUCCESS. |
5.8.2.5.3 | 0xec27b5c5, 0x59fb, 0x4954, 0x9c, 0x51, 0xad, 0xf4, 0x46, 0x7e, 0xe7, 0xe6 | EFI_PCI_IO_PROTOCOL.Io.Read - The data read out is the same as that written in. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write the buffer into the address range. 4. Call Io.Read() to read out the data in destination address range. 5. Compare the data read out with data written in. |
5.8.2.5.4 | 0x271e3b70, 0x6617, 0x4f5f, 0xb5, 0x12, 0x46, 0xb1, 0xe3, 0x1d, 0xe3, 0x79 | EFI_PCI_IO_PROTOCOL.Io.Read - Io.Read() reads out the data with EfiPciIoWidthFifoUnintX and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write the buffer into the address range. 4. Call Io.Read() to read out the data using EfiPciIoWidthFifoUintX. The return status should be EFI_SUCCESS. |
5.8.2.5.5 | 0xccf3806e, 0x25fa, 0x4697, 0xb7, 0x08, 0x8d, 0xc1, 0x5b, 0x47, 0xba, 0x8d | EFI_PCI_IO_PROTOCOL.Io.Read – All the data read out with EfiPciIoWidthFifoX is equal with the first data unit. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write the buffer into the address range. 4. Call Io.Read() to read out the data using EfiPciIoWidthFifoUintX. 5. Compare each data unit in the buffer with the data at the Starting Address of the address range. |
5.8.2.5.6 | 0x080ea87f, 0xc265, 0x4a33, 0xab, 0x09, 0x78, 0xf8, 0x94, 0x58, 0x03, 0x2b | EFI_PCI_IO_PROTOCOL.Io.Read - Io.Read() reads out the data with EfiPciIoWidthFillX and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write the buffer into the address range. 4. Call Io.Read() to read out the data using EfiPciIoWidthFillUintX. The return status should be EFI_SUCCESS. |
5.8.2.5.7 | 0x543fda6a, 0x651a, 0x4560, 0xaf, 0xfd, 0x6a, 0x95, 0x76, 0x54, 0x07, 0x30 | EFI_PCI_IO_PROTOCOL.Io.Read - Reads out the data with EfiPciIoWidthFillX. The first data unit eqauls the last data unit in destination address. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write the buffer into the address range. 4. Call Io.Read() to read out the data using EfiPciIoWidthFillUintX. 5. Compare the first data unit in the output buffer with the last data unit in the address range. Compare other data units in the output buffer with the original data. |
5.8.2.5.8 | 0x65b3c515, 0x1fe1, 0x4021, 0xb2, 0x02, 0xdd, 0xc9, 0x7a, 0x0d, 0xb2, 0x11 | EFI_PCI_IO_PROTOCOL.Io.Read - With Width as EfiPciIoWidthMaximum, the return status is EFI_INVALID_PARAMETER. | 1. Call Io.Read() with Width as EfiPciWidthMaximum. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.5.9 | 0x8ef36cf9, 0x84b7, 0x4961, 0xaa, 0xcc, 0xf7, 0x41, 0x21, 0x96, 0xc0, 0xdc | EFI_PCI_IO_PROTOCOL.Io.Read - With invalid Width type -1, the return status is EFI_INVALID_PARAMETER. | 1. Call Io.Read() with Width as -1. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.5.10 | 0x4cac979d, 0x6b8c, 0x458c, 0xb3, 0xca, 0x75, 0x30, 0x6f, 0x59, 0xa9, 0xb7 | EFI_PCI_IO_PROTOCOL.Io.Read - With Buffer as NULL, the return status is EFI_INVALID_PARAMETER. | 1. Call Io.Read() with Buffer as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.5.11 | 0xaf51e635, 0x89c8, 0x49db, 0xa7, 0x11, 0xb6, 0xc6, 0xb8, 0x96, 0xf9, 0x79 | EFI_PCI_IO_PROTOCOL.Io.Read - With address out of BAR range, the return status is EFI_UNSUPPORTED. | 1. Call Io.Read() with address out of BAR range. The return status must be EFI_UNSUPPORTED. |
5.8.2.5.12 | 0x8d878934, 0x8270, 0x48a7, 0xad, 0x51, 0x65, 0xa8, 0x8d, 0xac, 0x36, 0x93 | EFI_PCI_IO_PROTOCOL.Io.Read - With address out of BAR range, the return status is EFI_UNSUPPORTED. | 1. Call Io.Read() with address out of BAR range. The return status must be EFI_UNSUPPORTED. |
5.8.2.5.13 | 0x53cc0e1e, 0xf3aa, 0x4f15, 0xaf, 0xec, 0xc3, 0x04, 0x8f, 0x0f, 0xa5, 0xb8 | EFI_PCI_IO_PROTOCOL.Io.Read - With invalid BAR Index, the return status is EFI_UNSUPPORTED. | 1. Call Io.Read() with invalid BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.5.14 | 0x2fb4dc13, 0xb3f5, 0x4e19, 0xba, 0xe2, 0x76, 0x47, 0x10, 0x4d, 0xf7, 0x79 | EFI_PCI_IO_PROTOCOL.Io.Read - With Mem Type BAR, the return status is EFI_UNSUPPORTED. | 1. Call Io.Read() with Mem Type BAR. The return status must be EFI_UNSUPPORTED. |
5.8.2.5.15 | 0x44b6de4e, 0xc968, 0x4d97, 0xbe, 0x01, 0x3f, 0xf3, 0xdd, 0xfc, 0x53, 0xe0 | EFI_PCI_IO_PROTOCOL.Io.Read - With invalid Width, the return status is EFI_INVALID_PARAMETER. | 1. Call Io.Read() with invalid Width. The return status must be EFI_INVALID_PARAMETER. |
10.2.6. Io.Write()#
Number | GUID | Assertion | Test Description |
5.8.2.6.1 | 0x7b1ed2c6, 0xa84e, 0x4858, 0xa7, 0x8b, 0xa6, 0xd9, 0x32, 0x03, 0x22, 0xbe | EFI_PCI_IO_PROTOCOL.Io.Write - Io.Write() writes data to Io address space, returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write the buffer into the address range. The return status should be EFI_SUCCESS. |
5.8.2.6.2 | 0xd1704c13, 0xd0df, 0x4f7c, 0xb8, 0xb6, 0xd9, 0x5b, 0xe6, 0xdc, 0xea, 0x87 | EFI_PCI_IO_PROTOCOL.Io.Write - The data read equals the data written in. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write the buffer into the address range. 4. Call Io.Read() to read out the data in destination address range. 5. Compare the data read out with data written in. |
5.8.2.6.3 | 0xafb5070c, 0x1d07, 0x4df3, 0x9a, 0xd5, 0x6f, 0x91, 0x7e, 0x48, 0xc5, 0xed | EFI_PCI_IO_PROTOCOL.Io.Write - Io.Write() writes the data with EfiPciIoWidthFifoX and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write to the starting address of address range using EfiPciIoWidthFifoUintX. The return status should be EFI_SUCCESS. |
5.8.2.6.4 | 0xee8d1797, 0x1474, 0x4d80, 0x85, 0x82, 0x35, 0x78, 0x61, 0x2b, 0x26, 0x01 | EFI_PCI_IO_PROTOCOL.Io.Write - With EfiPciIoWidthFifoUintX, the first data unit is the last data unit. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write to the starting address of address range using EfiPciIoWidthFifoUintX. 4. Call Io.Read() to read out the data using EfiPciIoWidthFifoUintX. 5. Compare the data in the starting address with the last data unit. Compare other data units with original data. |
5.8.2.6.5 | 0x4a6378ee, 0x5058, 0x42b2, 0x8a, 0x03, 0x1f, 0x1c, 0xff, 0x05, 0x15, 0xcc | EFI_PCI_IO_PROTOCOL.Io.Write - Io.Write() writes the data with EfiPciIoWidthFillX and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write to address range using EfiPciIoWidthFillUintX. The return status should be EFI_SUCCESS. |
5.8.2.6.6 | 0x15b81460, 0xbc5e, 0x4be3, 0x9c, 0xc5, 0xb6, 0x59, 0x06, 0x83, 0x28, 0x5e | EFI_PCI_IO_PROTOCOL.Io.Write - With EfiPciIoWidthFillUintX, all the data units read out are the same as the first data units in the address space. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write to address range using EfiPciIoWidthFillUintX. 4. Call Io.Read() to read out the data using EfiPciIoWidthFillUintX. 5. Compare all the data units with the first data unit. |
5.8.2.6.7 | 0x8e854d61, 0x2048, 0x446f, 0xb6, 0x47, 0x3c, 0x37, 0x17, 0x14, 0xac, 0xf6 | EFI_PCI_IO_PROTOCOL.Io.Write - Io.Write() writes back the data and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Io.Read() to fill in the buffer with the predefined data units. 3. Call Io.Write() to write the buffer into the address range. 4. Call Io.Read() to read out the data in destination address range. 5. Call Io.Write() to write the data back. The return status should be EFI_SUCCESS. |
5.8.2.6.8 | 0xb96af4e4, 0x988f, 0x4362, 0x8c, 0x63, 0x1f, 0x08, 0xeb, 0xfd, 0xa3, 0x5f | EFI_PCI_IO_PROTOCOL.Io.Write - With Width as EfiPciIoWidthMaximum, return status is EFI_INVALID_PARAMETER. | 1. Call Io.Write() with Width as EfiPciWidthMaximum. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.6.9 | 0x8cb298d4, 0x5831, 0x48ce, 0x87, 0x8d, 0xf3, 0xf8, 0x20, 0x62, 0xea, 0xf3 | EFI_PCI_IO_PROTOCOL.Io.Write - With invalid Width type -1, the return status is EFI_INVALID_PARAMETER. | 1. Call Io.Write() with Width as ‑1. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.6.10 | 0x175943ee, 0x4d2d, 0x480f, 0xa3, 0xf1, 0x88, 0xc9, 0x7c, 0x6b, 0x04, 0x77 | EFI_PCI_IO_PROTOCOL.Io.Write - With Buffer as NULL, the return status is EFI_INVALID_PARAMETER. | 1. Call Io.Write() with Buffer as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.6.11 | 0x4617468a, 0xd228, 0x4a84, 0x88, 0x56, 0x21, 0x8c, 0x3f, 0x39, 0x46, 0xd1 | EFI_PCI_IO_PROTOCOL.Io.Write - With address out of BAR range the return status is EFI_UNSUPPORTED. | 1. Call Io.Write() with address out of BAR range. The return status must be EFI_UNSUPPORTED. |
5.8.2.6.12 | 0x03dd4807, 0xe461, 0x4e97, 0x9d, 0xf9, 0xea, 0x73, 0x38, 0x15, 0xd5, 0x62 | EFI_PCI_IO_PROTOCOL.Io.Write - With address out of BAR range the return status is EFI_UNSUPPORTED. | 1. Call Io.Write() with address out of BAR range. The return status must be EFI_UNSUPPORTED. |
5.8.2.6.13 | 0xd6b9d51d, 0x2676, 0x4449, 0xa4, 0xd6, 0x3d, 0xa0, 0x17, 0x36, 0x2e, 0xa6 | EFI_PCI_IO_PROTOCOL.Io.Write - With invalid BAR Index the return status is EFI_UNSUPPORTED. | 1. Call Io.Write() with invalid BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.6.14 | 0x648a859d, 0x3b72, 0x41a6, 0x86, 0xad, 0x3f, 0xff, 0x66, 0xd8, 0x61, 0x2f | EFI_PCI_IO_PROTOCOL.Io.Write - With Mem Type BAR the return status is EFI_UNSUPPORTED. | 1. Call Io.Write() with Mem Type BAR. The return status must be EFI_UNSUPPORTED. |
5.8.2.6.15 | 0xfdc9b3f3, 0x2b80, 0x4a99, 0xa9, 0xba, 0xa5, 0x5e, 0xf9, 0xf8, 0x26, 0x19 | EFI_PCI_IO_PROTOCOL.Io.Write - With invalid Width the return status is EFI_INVALID_PARAMETER. | 1. Call Io.Write() with invalid Width. The return status must be EFI_INVALID_PARAMETER. |
10.2.7. Pci.Read()#
Number | GUID | Assertion | Test Description |
5.8.2.7.1 | 0xea2a44d0, 0xc8d1, 0x465b, 0xb5, 0x50, 0x58, 0xd6, 0xef, 0x4e, 0x38, 0xd4 | EFI_PCI_IO_PROTOCOL.Pci.Read - Pci.Read() reads data out into backup buffer and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. The return status should be EFI_SUCCESS. |
5.8.2.7.2 | 0xe30bb837, 0x1d06, 0x4ee2, 0x80, 0x85, 0x18, 0xd4, 0x6b, 0x1c, 0x99, 0x66 | EFI_PCI_IO_PROTOCOL.Pci.Read - Pci.Read() reads out the data from PCI configuration space and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write the buffer into the address range. 4. Call Pci.Read() to read out the data in destination address range. The return status should be EFI_SUCCESS. |
5.8.2.7.3 | 0x2f9274d9, 0x7a14, 0x492f, 0x87, 0xc0, 0x40, 0x81, 0x4f, 0x66, 0x1b, 0xb4 | EFI_PCI_IO_PROTOCOL.Pci.Read – The data read out from the PCI configuration space with PciIoWidthUintX equals the data written in. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write the buffer into the address range. 4. Call Pci.Read() to read out the data in destination address range. 5. Compare the data read out with data written in. |
5.8.2.7.4 | 0x59ba5b67, 0x9e17, 0x4b60, 0xb5, 0x79, 0x5f, 0xd3, 0x26, 0x16, 0xe6, 0x6a | EFI_PCI_IO_PROTOCOL.Pci.Read - Pci.Read() reads out the data with EfiPciIoWidthFifoX and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write the buffer into the address range. 4. Call Pci.Read() to read out the data using EfiPciIoWidthFifoUintX. The return status should be EFI_SUCCESS. |
5.8.2.7.5 | 0xd3b49ee4, 0x131a, 0x4fa3, 0xab, 0x81, 0x9f, 0x86, 0x33, 0xdf, 0x2d, 0xc7 | EFI_PCI_IO_PROTOCOL.Pci.Read - Reads out the data with EfiPciIoWidthFifoX. The data read out is the same as the first data unit. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write the buffer into the address range. 4. Call Pci.Read() to read out the data using EfiPciIoWidthFifoUintX. 5. Compare the each data unit in the buffer with the data at the Starting Address of the address range. |
5.8.2.7.6 | 0x6e5881b2, 0x262d, 0x41ec, 0xa8, 0xd4, 0xcf, 0x28, 0x71, 0x1e, 0x5c, 0x15 | EFI_PCI_IO_PROTOCOL.Pci.Read - Pci.Read() reads out the data with EfiPciIoWidthFillX and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write the buffer into the address range. 4. Call Pci.Read() to read out the data using EfiPciIoWidthFillUintX. The return status should be EFI_SUCCESS. |
5.8.2.7.7 | 0x4595bbca, 0xbad7, 0x417f, 0xaf, 0x8d, 0x37, 0xec, 0x32, 0xf8, 0x03, 0x80 | EFI_PCI_IO_PROTOCOL.Pci.Read - Reads out the data with EfiPciIoWidthFillX. The first data unit equals the last data unit in Destination address range. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write the buffer into the address range. 4. Call Pci.Read() to read out the data using EfiPciIoWidthFillUintX. 5. Compare the first data unit in the output buffer with the last data unit in the address range. Compare other data units in the output buffer with the original data. |
5.8.2.7.8 | 0x94d0a3d8, 0x7b61, 0x4147, 0xad, 0x9a, 0xea, 0xbb, 0x5f, 0x30, 0x59, 0xc2 | EFI_PCI_IO_PROTOCOL.Pci.Read - With Width as EfiPciIoWidthMaximum, the return status is EFI_INVALID_PARAMETER. | 1. Call Pci.Read() with Width as EfiPciWidthMaximum. The return status must be EFI_INVALID_PARAMETER |
5.8.2.7.9 | 0x18cf01fe, 0xa703, 0x4639, 0xb8, 0xe0, 0x8e, 0xd7, 0x3c, 0xbe, 0xa0, 0xb6 | EFI_PCI_IO_PROTOCOL.Pci.Read - With invalid Width type -1, the return status is EFI_INVALID_PARAMETER. | 1. Call Pci.Read() with Width as -1. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.7.10 | 0xa7710b95, 0x114d, 0x4096, 0xa8, 0x3c, 0xf6, 0x5f, 0x63, 0x00, 0xbd, 0xab | EFI_PCI_IO_PROTOCOL.Pci.Read - With Buffer as NULL the return status is EFI_INVALID_PARAMETER. | 1. Call Pci.Read() with Buffer as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.7.11 | 0x147279d7, 0xf685, 0x4658, 0xb8, 0x09, 0xdf, 0xd1, 0xd7, 0x75, 0xe0, 0xb5 | EFI_PCI_IO_PROTOCOL.Pci.Read - With Offset + Count * Width > 255, the return status is EFI_UNSUPPORTED. | 1. Call Pci.Read() with Offset + Count * Width > 255. The return status must be EFI_UNSUPPORTED. |
5.8.2.7.12 | 0xf070aeda, 0x2e6b, 0x4911, 0xae, 0x80, 0x1b, 0x21, 0xcc, 0xef, 0x30, 0x50 | EFI_PCI_IO_PROTOCOL.Pci.Read - With Offset + Count * Width > 255 the return status is EFI_UNSUPPORTED. | 1. Call Pci.Read() with Offset + Count * Width > 255. The return status must be EFI_UNSUPPORTED. |
5.8.2.7.13 | 0x85111b07, 0x5d78, 0x4e62, 0x90, 0x48, 0x69, 0xca, 0x37, 0x4a, 0xdc, 0xb3 | EFI_PCI_IO_PROTOCOL.Pci.Read - With invalid Width the return status is EFI_INVALID_PARAMETER. | 1. Call Pci.Read() with invalid Width. The return status must be EFI_INVALID_PARAMETER. |
10.2.8. Pci.Write()#
Number | GUID | Assertion | Test Description |
5.8.2.8.1 | 0x1c65f03c, 0x6d87, 0x435e, 0x94, 0x2e, 0x41, 0x4f, 0xfa, 0x1d, 0x69, 0xb8 | EFI_PCI_IO_PROTOCOL.Pci.Write - Pci.Write() writes data to the PCI configuration space and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write the buffer into the address range The return status should be EFI_SUCCESS. |
5.8.2.8.2 | 0xb175434f, 0xf038, 0x43a2, 0xa1, 0xa8, 0xef, 0xab, 0x71, 0x57, 0x7f, 0xac | EFI_PCI_IO_PROTOCOL.Pci.Write – Data read out from PCI configuration space with PciIoWidthUintX equals the data written in. | 1. Allocate a buffer that matches the size of the address range 2. Call Pci.Read() to fill in the buffer with the predefined data units 3. Call Pci.Write() to write the buffer into the address range 4. Call Pci.Read() to read out the data in destination address range. 5. Compare the data read out with data written in. |
5.8.2.8.3 | 0xfbc65a77, 0xd113, 0x4584, 0xa6, 0xe0, 0x40, 0x6d, 0xc7, 0xd9, 0x24, 0x1f | EFI_PCI_IO_PROTOCOL.Pci.Write - Pci.Write() writes the data with EfiPciIoWidthFifoX and returns EFI_SUCCESS | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write to the starting address of address range using EfiPciIoWidthFifoUintX. The return status should be EFI_SUCCESS. |
5.8.2.8.4 | 0x1dd97ca1, 0x6920, 0x41db, 0xa2, 0x0c, 0xcf, 0x62, 0x78, 0xbd, 0x07, 0x47 | EFI_PCI_IO_PROTOCOL.Pci.Write - With PciIoWidthFifoUintX, the first data unit is equal to the last data unit, and the other data units are unchanged. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write to the starting address of address range using EfiPciIoWidthFifoUintX. 4. Call Pci.Read() to read out the data using EfiPciIoWidthFifoUintX. 5. Compare the data in the starting address with the last data unit. Compare other data units with original data. |
5.8.2.8.5 | 0x3ea04425, 0xbf3d, 0x465a, 0xbd, 0x5b, 0xf7, 0x77, 0xc5, 0x41, 0x21, 0x6a | EFI_PCI_IO_PROTOCOL.Pci.Write - Pci.Write() writes the data with EfiPciIoWidthFillX and returns EFI_SUCCESS. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write to address range using EfiPciIoWidthFillUintX. The return status should be EFI_SUCCESS. |
5.8.2.8.6 | 0x74ff6a17, 0xdf28, 0x434a, 0x8a, 0xd7, 0xbf, 0xa3, 0xe9, 0xc5, 0x1f, 0x12 | EFI_PCI_IO_PROTOCOL.Pci.Write - With PciIoWidthFillX, all the data units read out are equal to the first data unit in the address space. | 1. Allocate a buffer that matches the size of the address range. 2. Call Pci.Read() to fill in the buffer with the predefined data units. 3. Call Pci.Write() to write to address range using EfiPciIoWidthFillUintX. 4. Call Pci.Read() to read out the data using EfiPciIoWidthFillUintX. 5. Compare all the data units with the first data unit. |
5.8.2.8.7 | 0xc355e57b, 0x93ef, 0x4ca6, 0x91, 0x2f, 0x65, 0x6e, 0x4f, 0x2e, 0x2a, 0x13 | EFI_PCI_IO_PROTOCOL.Pci.Write - Pci.Write() writes data back with EfiPciIoWidthX and returns EFI_SUCCESS | 1. Allocate a buffer that matches the size of the address range 2. Call Pci.Read() to fill in the buffer with the predefined data units 3. Call Pci.Write() to write the buffer into the address range 4. Call Pci.Read() to read out the data in destination address range. 5. Call Pci.Write() to write the data back. The return status should be EFI_SUCCESS |
5.8.2.8.8 | 0x8a26f93b, 0xc0a3, 0x4e08, 0x9f, 0xf1, 0xd6, 0xf1, 0xac, 0x2e, 0x63, 0x9a | EFI_PCI_IO_PROTOCOL.Pci.Write - With Width as EfiPciIoWidthMaximum the return status is EFI_INVALID_PARAMETER | 1. Call Pci.Write() with Width as EfiPciWidthMaximum. The return status must be EFI_INVALID_PARAMETER |
5.8.2.8.9 | 0xfeab0187, 0x541b, 0x45da, 0x92, 0x1f, 0x49, 0x01, 0x00, 0xb7, 0xdd, 0x7a | EFI_PCI_IO_PROTOCOL.Pci.Write - With invalid Width type -1 the return status is EFI_INVALID_PARAMETER | 1. Call Pci.Write() with Width as -1. The return status must be EFI_INVALID_PARAMETER |
5.8.2.8.10 | 0x686732db, 0xa12b, 0x4ed7, 0x90, 0xfb, 0x66, 0x92, 0xbb, 0xd7, 0xe8, 0x4c | EFI_PCI_IO_PROTOCOL.Pci.Write - With Buffer as NULL the return status is EFI_INVALID_PARAMETER | 1. Call Pci.Write() with Buffer as NULL. The return status must be EFI_INVALID_PARAMETER |
5.8.2.8.11 | 0x11cf0b51, 0x6f50, 0x4bba, 0xa9, 0xd7, 0x3e, 0x53, 0x28, 0xb3, 0x1f, 0x30 | EFI_PCI_IO_PROTOCOL.Pci.Write - With Offset + Count * Width > 255 the return status is EFI_UNSUPPORTED | 1. Call Pci.Write() with Offset + Count * Width > 255. The return status must be EFI_UNSUPPORTED |
5.8.2.8.12 | 0x4e4617a2, 0x4e8a, 0x46c8, 0xb2, 0x4b, 0xa4, 0x91, 0x55, 0xf2, 0x3a, 0x0d | EFI_PCI_IO_PROTOCOL.Pci.Write - With Offset + Count * Width > 255 the return status is EFI_UNSUPPORTED | 1. Call Pci.Write() with Offset + Count * Width > 255. The return status must be EFI_UNSUPPORTED |
5.8.2.8.13 | 0xc6dbb28e, 0xbf42, 0x40e3, 0xbc, 0x93, 0x5f, 0x9b, 0x11, 0xa2, 0x46, 0x5f | EFI_PCI_IO_PROTOCOL.Pci.Write - With invalid Width the return status is EFI_INVALID_PARAMETER | 1. Call Pci.Write() with invalid Width. The return status must be EFI_INVALID_PARAMETER |
10.2.9. CopyMem()#
Number | GUID | Assertion | Test Description |
5.8.2.9.1 | 0x8d728b05, 0xc64e, 0x4ef0, 0x80, 0x68, 0x51, 0xbc, 0xe3, 0x9f, 0xc5, 0x0c | EFI_PCI_IO_PROTOCOL.CopyMem - CopyMem() copying Data between non-overlapping regions returns EFI_SUCCESS. | 1. Allocate a buffer, the size of which is: BufferSize = Address Range Size / Width / 2 * Width. 2. Call Mem.Write() to write the buffer into the beginning address. 3. Call CopyMem() to copy Data between non-overlapping regions. The return status should be EFI_SUCCESS. |
5.8.2.9.2 | 0x73f80e2c, 0xe2d9, 0x4c6b, 0xbe, 0xc0, 0x85, 0xd7, 0xa4, 0x27, 0x07, 0xd0 | EFI_PCI_IO_PROTOCOL.CopyMem – Data copied between non‑overlapping regions is equal. | 1. Allocate a buffer, the size of which is: BufferSize = Address Range Size / Width / 2 * Width. 2. Call Mem.Write() to write the buffer into the beginning address. 3. Call CopyMem() to copy Data between non-overlapping regions. 4. Call Mem.Read() to read out the data. 5. Compare the data read out with the data written in. |
5.8.2.9.3 | 0x459bcee9, 0x16f7, 0x41ae, 0x81, 0x55, 0x7e, 0x49, 0xec, 0x98, 0x56, 0x7d | EFI_PCI_IO_PROTOCOL.CopyMem - CopyMem() copying Data between overlapping regions (destination address > source address) returns EFI_SUCCESS. | 1. Allocate a buffer, the size of which is: BufferSize = Address Range Size / Width / 2 * Width. 2. Call Mem.Write() to write the buffer into the beginning address. 3. Call CopyMem() to copy Data between overlapping regions (destination address > source address). The return status should be EFI_SUCCESS. |
5.8.2.9.4 | 0x9ca6f1d4, 0xfb7c, 0x416c, 0xa6, 0x09, 0x06, 0xa4, 0xcb, 0x0f, 0x44, 0x59 | EFI_PCI_IO_PROTOCOL.CopyMem – When copying Data between overlapping regions (destination > source), the data is copied. | 1. Allocate a buffer, the size of which is: BufferSize = Address Range Size / Width / 2 * Width. 2. Call Mem.Write() to write the buffer into the beginning address. 3. Call CopyMem() to copy Data between overlapping regions (destination address > source address). 4. Call Mem.Read() to read out the data 5. Compare the data read out with the data written in. |
5.8.2.9.5 | 0xb8eb3987, 0x9915, 0x40d2, 0x93, 0xc6, 0xe1, 0x83, 0x7e, 0x49, 0x4e, 0x1a | EFI_PCI_IO_PROTOCOL.CopyMem - CopyMem() copying Data between overlapping regions (destination address < source address) returns EFI_SUCCESS. | 1. Allocate a buffer, the size of which is: BufferSize = Address Range Size / Width / 2 * Width. 2. Call Mem.Write() to write the buffer into the beginning address. 3. Call CopyMem() to copy Data between overlapping regions (destination address < source address). The return status should be EFI_SUCCESS. |
5.8.2.9.6 | 0x3294319c, 0xc3f0, 0x46f2, 0x81, 0xfd, 0x14, 0xc0, 0xd0, 0x61, 0xc4, 0x42 | EFI_PCI_IO_PROTOCOL.CopyMem – When copying Data between overlapping regions (destination < source) the data is copied. | 1. Allocate a buffer, the size of which is: BufferSize = Address Range Size / Width / 2 * Width. 2. Call Mem.Write() to write the buffer into the beginning address. 3. Call CopyMem() to copy Data between overlapping regions (destination address < source address). 4. Call Mem.Read() to read out the data. 5. Compare the data read out with the data written in. |
5.8.2.9.7 | 0xd0b52eb3, 0x3d19, 0x4b72, 0xb5, 0xba, 0xe3, 0xa3, 0x7c, 0xd0, 0xcb, 0x93 | EFI_PCI_IO_PROTOCOL.CopyMem - CopyMem() copying Data between different BARs returns EFI_SUCCESS. | 1. Allocate a buffer, the size of which is: BufferSize = Address Range Size / Width / 2 * Width. 2. Call Mem.Write() to write the buffer into the beginning address. 3. Call CopyMem() to copy Data between different BARs. The return status should be EFI_SUCCESS. |
5.8.2.9.8 | 0xe0863095, 0x4854, 0x4099, 0x89, 0xf0, 0x01, 0xbf, 0xda, 0x41, 0xa4, 0xe3 | EFI_PCI_IO_PROTOCOL.CopyMem – When copying Data between different BARs the data is copied. | 1. Allocate a buffer, the size of which is: BufferSize = Address Range Size / Width / 2 * Width. 2. Call Mem.Write() to write the buffer into the beginning address. 3. Call CopyMem() to copy Data between different BARs. 4. Call Mem.Read() to read out the data. 5. Compare the data read out with the data written in. |
5.8.2.9.9 | 0x45056bf8, 0xe6e4, 0x4397, 0xb7, 0xe1, 0x89, 0x0b, 0x42, 0x4d, 0xe3, 0x54 | EFI_PCI_IO_PROTOCOL.CopyMem - With Width as EfiPciIoWidthMaximum the return status is EFI_INVALID_PARAMETER. | 1. Call CopyMem() with Width as EfiPciWidthMaximum. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.9.10 | 0xf780b74f, 0x6b93, 0x4e64, 0x8a, 0xb5, 0x05, 0x77, 0xdd, 0x99, 0xc1, 0xfa | EFI_PCI_IO_PROTOCOL.CopyMem - With invalid Width type ‑1 the return status is EFI_INVALID_PARAMETER. | 1. Call CopyMem() with Width as -1. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.9.11 | 0xebf7fa5c, 0xb4c9, 0x406c, 0x8d, 0x12, 0x90, 0x3a, 0x81, 0x85, 0x26, 0x17 | EFI_PCI_IO_PROTOCOL.CopyMem - With Width as EfiPciWidthFifoUintX the return status is EFI_INVALID_PARAMETER. | 1. Call CopyMem() with Width as EfiPciWidthFifoUintX. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.9.12 | 0xc07ea144, 0x18b5, 0x40e5, 0xa0, 0xa0, 0xd4, 0xca, 0x6c, 0x82, 0xc2, 0x9d | EFI_PCI_IO_PROTOCOL.CopyMem - With Width as EfiPciWidthFillUintX, the return status is EFI_INVALID_PARAMETER. | 1. Call CopyMem() with Width as EfiPciWidthFillUintX. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.9.13 | 0x299293a3, 0xe8db, 0x43a4, 0x9b, 0x3f, 0x5e, 0x23, 0xb2, 0x9e, 0x37, 0x31 | EFI_PCI_IO_PROTOCOL.CopyMem - With Source Address area out of BAR range, the return status is EFI_UNSUPPORTED. | 1. Call CopyMem() with Source Address area out of BAR range. The return status must be EFI_UNSUPPORTED. |
5.8.2.9.14 | 0x33c447ae, 0x5caf, 0x4904, 0xaf, 0x90, 0x66, 0x78, 0x17, 0x45, 0x0e, 0x12 | EFI_PCI_IO_PROTOCOL.CopyMem - With Destination Address area out of BAR range, the return status is EFI_UNSUPPORTED. | 1. Call CopyMem() with Destination Address area out of BAR range. The return status must be EFI_UNSUPPORTED. |
5.8.2.9.15 | 0xe2dd0321, 0xac26, 0x4aac, 0xa6, 0x28, 0xc2, 0x59, 0xbc, 0x8a, 0xd5, 0x2c | EFI_PCI_IO_PROTOCOL.CopyMem - With invalid Source BAR Index, return status is EFI_UNSUPPORTED. | 1. Call CopyMem() with invalid Source BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.9.16 | 0x110a96a1, 0x7a2e, 0x4eab, 0xbc, 0x11, 0xf3, 0xda, 0x30, 0xd0, 0xa2, 0xff | EFI_PCI_IO_PROTOCOL.CopyMem - With invalid Destination, BAR Index return status is EFI_UNSUPPORTED. | 1. Call CopyMem() with invalid Destination BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.9.17 | 0x7d1c3de1, 0xa7b8, 0x4923, 0x94, 0x13, 0x76, 0x49, 0x05, 0x01, 0xf6, 0x9f | EFI_PCI_IO_PROTOCOL.CopyMem - With Source BAR Index as an IO type BAR, the return status is EFI_UNSUPPORTED. | 1. Call CopyMem() with Source BAR Index as an IO type BAR. The return status must be EFI_UNSUPPORTED. |
5.8.2.9.18 | 0xaacfb1ec, 0xd6fb, 0x4c3a, 0xa4, 0x8c, 0x4a, 0xc2, 0x77, 0xfb, 0xc8, 0xe3 | EFI_PCI_IO_PROTOCOL.CopyMem - With Destination BAR Index as an IO type BAR, the return status is EFI_UNSUPPORTED. | 1. Call CopyMem() with Destination BAR Index as an IO type BAR. The return status must be EFI_UNSUPPORTED. |
5.8.2.9.19 | 0x83b30e84, 0x528f, 0x420d, 0x87, 0x48, 0x7d, 0x96, 0x36, 0x8e, 0x33, 0x58 | EFI_PCI_IO_PROTOCOL.CopyMem - With invalid Width, the return status is EFI_INVALID_PARAMETER. | 1. Call CopyMem() with invalid Width. The return status must be EFI_INVALID_PARAMETER. |
10.2.10. Map()#
Number | GUID | Assertion | Test Description |
5.8.2.10.1 | 0x720e6fdc, 0x91c8, 0x4fd5, 0xb5, 0xde, 0xb1, 0xcc, 0x3b, 0x0c, 0x0c, 0xba | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Read returns EFI_SUCCESS. | 1. Allocate a buffer (4K + 1 Bytes). 2. Fill in the buffer with some data. 3. Call Map() with Operation as EfiPciIoOperationBusMasterRead to map this range to a new DMA capable location. The return status should be EFI_SUCCESS. |
5.8.2.10.2 | 0xbf7f859c, 0x20e5, 0x4418, 0x8e, 0x21, 0x87, 0x60, 0x60, 0x58, 0x73, 0xa2 | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Read, mapped bytes are > 0. | 1. Allocate a buffer (4K + 1 Bytes). 2. Fill in the buffer with some data. 3. Call Map() with Operation as EfiPciIoOperationBusMasterRead to map this range to a new DMA capable location. 4. Check if the number of bytes mapped great than 0. |
5.8.2.10.3 | 0xd56b3a96, 0x7c58, 0x4209, 0x85, 0xe9, 0x90, 0xb2, 0x07, 0x90, 0x6d, 0x55 | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Read, the mapped area equals original area. | 1. Allocate a buffer (4K + 1 Bytes). 2. Fill in the buffer with some data. 3. Call Map() with Operation as EfiPciIoOperationBusMasterRead to map this range to a new DMA capable location. 4. Check if data of mapped area ishe same as the data of original area. |
5.8.2.10.4 | 0x5539608f, 0xed60, 0x4172, 0x94, 0x4e, 0xe9, 0x4a, 0x0f, 0x61, 0xf7, 0xe8 | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Write returns EFI_SUCCESS. | 1. Allocate a buffer (4K + 1 Bytes) . 2. Fill in the buffer with some data. 3. Call Map() with Operation as EfiPciIoOperationBusMasterWrite to map this range to a new DMA capable location The return status should be EFI_SUCCESS. |
5.8.2.10.5 | 0xb4019165, 0x7b45, 0x4ec4, 0xa7, 0xeb, 0xc5, 0x67, 0x71, 0x07, 0xd9, 0x4c | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Write, mapped bytes are > 0. | 1. Allocate a buffer (4K + 1 Bytes). 2. Fill in the buffer with some data. 3. Call Map() with Operation as EfiPciIoOperationBusMasterWrite to map this range to a new DMA capable location. 4. Check if the number of bytes mapped great than 0. |
5.8.2.10.6 | 0x6b4e9c1e, 0xa1e7, 0x4cf5, 0x8d, 0x0f, 0xdd, 0x68, 0x80, 0xcd, 0x8f, 0x43 | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Write, original data remains unchanged immediatelyafter mapping. | 1. Allocate a buffer (4K + 1 Bytes) . 2. Fill in the buffer with some data. 3. Call Map() with Operation as EfiPciIoOperationBusMasterWrite to map this range to a new DMA capable location. 4. Check if the data of the original area is unchanged. |
5.8.2.10.7 | 0x9a37eb62, 0x4bab, 0x4fce, 0x81, 0x9d, 0x0d, 0x80, 0x42, 0xea, 0x46, 0x7e | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Common, the Buffer returns EFI_SUCCESS. | 1. Allocate a buffer (4K + 1 Bytes) 2. Fill in the buffer with some data 3. Call Map() with Operation as EfiPciIoOperationBusMasterCommon to map this range to a new DMA capable location The return status should be EFI_SUCCESS. |
5.8.2.10.8 | 0x4d562d9c, 0xb028, 0x43ff, 0xb7, 0xfc, 0x92, 0xdb, 0x62, 0x40, 0xd5, 0x9a | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Common, the Buffer mapped bytes are > 0. | 1. Allocate a buffer (4K + 1 Bytes) . 2. Fill in the buffer with some data. 3. Call Map() with Operation as EfiPciIoOperationBusMasterCommon to map this range to a new DMA capable location. 4. Check if the number of bytes mapped are greater than 0. |
5.8.2.10.9 | 0x8bd3ecc4, 0x43ea, 0x4f9e, 0x84, 0x79, 0x8c, 0x36, 0xde, 0x51, 0x13, 0x2f | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Common, the Buffer mapped area equalsthe original area after mapping. | 1. Allocate a buffer (4K + 1 Bytes). 2. Fill in the buffer with some data. 3. Call Map() with Operation as EfiPciIoOperationBusMasterCommon to map this range to a new DMA capable location. 4. Check if the data of mapped areais is the same as the data of the original area. |
5.8.2.10.10 | 0x673d01f2, 0xdabf, 0x49bb, 0xbe, 0xc5, 0xe7, 0xa0, 0x3a, 0xd7, 0x71, 0xbc | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Common, the Buffer data of the original area is sync’d with the mapped area. | 1. Allocate a buffer (4K + 1 Bytes). 2. Fill in the buffer with some data. 3. Call Map() with Operation as EfiPciIoOperationBusMasterCommon to map this range to a new DMA capable location. 4. Call SetMem() to fill in mapped address with some fixed data. 5. Check if the data of the original area is synchronized with the mapped area. |
5.8.2.10.11 | 0xbd5fcf21, 0xdb42, 0x4f4f, 0xb0, 0xfb, 0x56, 0x62, 0xd5, 0x1a, 0xba, 0x68 | EFI_PCI_IO_PROTOCOL.Map - Map() with Bus Master Common, the Buffer data of the mapped area syncs with original area. | 1. Allocate a buffer (4K + 1 Bytes) . 2. Fill in the buffer with some data. 3. Call Map() with Operation as EfiPciIoOperationBusMasterCommon to map this range to a new DMA capable location. 4. Call SetMem() to fill in original address with some fixed data. 5. Check if the data of mapped area is synchronized with the original area. |
5.8.2.10.12 | 0xe2fa9ae5, 0xea93, 0x48b2, 0xba, 0x85, 0xa3, 0x74, 0xe2, 0xdb, 0xe2, 0xaf | EFI_PCI_IO_PROTOCOL.Map - Mapping with Operation as EfiPciIoOperationMaximum returns a status of EFI_INVALID_PARAMETER. | 1. Call Map() with Operation as EfiPciIoOperationMaximum. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.10.13 | 0x3b337461, 0x98da, 0x4117, 0xab, 0xef, 0x57, 0x60, 0x34, 0xfd, 0xc6, 0x22 | EFI_PCI_IO_PROTOCOL.Map - Mapping with Operation as EfiPciIoOperationMaximum + 1 returns a status of EFI_INVALID_PARAMETER. | 1. Call Map() with Operation as EfiPciIoOperationMaximum + 1. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.10.14 | 0xdce36bfb, 0xde48, 0x4f84, 0x9d, 0xc1, 0xde, 0x92, 0xa4, 0x40, 0x50, 0xbb | EFI_PCI_IO_PROTOCOL.Map - Mapping with Operation as -1 returns a status of EFI_INVALID_PARAMETER. | 1. Call Map() with Operation as -1. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.10.15 | 0x8aa3c1cb, 0x5c8d, 0x4a74, 0x83, 0x81, 0x4b, 0x15, 0x3a, 0xf8, 0xff, 0x17 | EFI_PCI_IO_PROTOCOL.Map - Mapping with HostAddress as NULL returns a status of EFI_INVALID_PARAMETER | 1. Call Map() with HostAddress as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.10.16 | 0x495cff3e, 0x5f7a, 0x4888, 0x85, 0x9f, 0xb7, 0x26, 0x0b, 0xb4, 0x18, 0xaf | EFI_PCI_IO_PROTOCOL.Map - Mapping with NumberOfBytes as NULL returns a status of EFI_INVALID_PARAMETER | 1. Call Map() with NumberOfBytes as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.10.17 | 0x7e34b406, 0x0821, 0x4b95, 0xa4, 0x18, 0xc2, 0x0e, 0xfc, 0xfc, 0x00, 0xef | EFI_PCI_IO_PROTOCOL.Map - Mapping with DeviceAddress as NULL returns a status of EFI_INVALID_PARAMETER | 1. Call Map() with DeviceAddress as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.10.18 | 0x6b450eae, 0x225c, 0x4ff1, 0x93, 0xd1, 0x55, 0xf9, 0xae, 0x35, 0x3e, 0xf8 | EFI_PCI_IO_PROTOCOL.Map - Mapping with Mapping as NULL returns a status of EFI_INVALID_PARAMETER. | 1. Call Map() with Mapping as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.10.19 | 0x07a924a7, 0xe637, 0x4f46, 0x9b, 0x3c, 0x04, 0x63, 0x86, 0xfb, 0xf6, 0xf0 | EFI_PCI_IO_PROTOCOL.Map - Mapping with HostAddress + NumberOfByte > 4G returns a status of EFI_UNSUPPORTED. | 1. Call Map() with HostAddress + NumberOfByte > 4G. The return status must be EFI_UNSUPPORTED. |
10.2.11. Unmap()#
Number | GUID | Assertion | Test Description |
5.8.2.11.1 | 0xd9f80cd4, 0x8f0b, 0x4a27, 0x99, 0x16, 0x1a, 0x47, 0xfd, 0x8f, 0x07, 0x25 | EFI_PCI_IO_PROTOCOL.Unmap - Unmap() area mapped wih BusMasterRead returns EFI_SUCCESS | 1. Allocate a buffer (4K + 1 Bytes) 2. Fill in the buffer with some data 3. Call Map() with Operation as EfiPciIoOperationBusMasterRead to map this range to a new DMA capable location 4. Call Unmap() to release the mapped resources The return status should be EFI_SUCCESS |
5.8.2.11.2 | 0x8f86dbbf, 0xcc86, 0x40d0, 0x89, 0xb3, 0x97, 0xd6, 0xf1, 0xe8, 0xd7, 0x80 | EFI_PCI_IO_PROTOCOL.Unmap - Unmap()leaves data in the original area mapped wih BusMasterRead unchangedafter Unmap | 1. Allocate a buffer (4K + 1 Bytes) 2. Fill in the buffer with some data 3. Call Map() with Operation as EfiPciIoOperationBusMasterRead to map this range to a new DMA capable location 4. Call Unmap() to release the mapped resources 5. Check if the data in original area remains unchanged |
5.8.2.11.3 | 0xab8555aa, 0x8c45, 0x4bec, 0x90, 0x9a, 0xad, 0xc7, 0xfe, 0xe9, 0xaf, 0xf4 | EFI_PCI_IO_PROTOCOL.Unmap - Unmap() area mapped wih BusMasterWrite returns EFI_SUCCESS | 1. Allocate a buffer (4K + 1 Bytes) 2. Fill in the buffer with some data 3. Call Map() with Operation as EfiPciIoOperationBusMasterWrite to map this range to a new DMA capable location 4. Call Unmap() to release the mapped resources The return status should be EFI_SUCCESS |
5.8.2.11.4 | 0xa6537c2a, 0x34bc, 0x4604, 0x81, 0x48, 0xb1, 0x41, 0x70, 0x46, 0x86, 0xe4 | EFI_PCI_IO_PROTOCOL.Unmap - Unmap() leaves data in the original area mapped wih BusMasterWrite equal with the data written in mapped area | 1. Allocate a buffer (4K + 1 Bytes) 2. Fill in the buffer with some data 3. Call Map() with Operation as EfiPciIoOperationBusMasterWrite to map this range to a new DMA capable location 4. Call Unmap() to release the mapped resources 5. Check if the data in the original area is equal with the data in mapped area |
5.8.2.11.5 | 0x79009fa0, 0x5b72, 0x4e82, 0x84, 0x84, 0x3a, 0x21, 0xe0, 0x57, 0x93, 0xb9 | EFI_PCI_IO_PROTOCOL.Unmap - Unmap() area mapped wih Bus Master Common Read returns EFI_SUCCESS | 1. Allocate a buffer (4K + 1 Bytes) 2. Fill in the buffer with some data 3. Call Map() with Operation as EfiPciIoOperationBusMasterCommon to map this range to a new DMA capable location 4. Call Unmap() to release the mapped resources The return status should be EFI_SUCCESS |
5.8.2.11.6 | 0xda153716, 0xcd62, 0x4612, 0xae, 0x11, 0x71, 0x5e, 0x97, 0xeb, 0x6a, 0x9a | EFI_PCI_IO_PROTOCOL.Unmap - Unmap() leaves data in the original area mapped wih Bus Master Common Read unchanged after Unmap | 1. Allocate a buffer (4K + 1 Bytes) 2. Fill in the buffer with some data 3. Call Map() with Operation as EfiPciIoOperationBusMasterCommon to map this range to a new DMA capable location 4. Call Unmap() to release the mapped resources 5. Check if the data in the original area remains unchanged |
10.2.12. AllocateBuffer()#
Number | GUID | Assertion | Test Description |
5.8.2.12.1 | 0x841e89ab, 0x9c60, 0x48e5, 0xae, 0x7d, 0x51, 0x21, 0xf5, 0x08, 0xe1, 0x0c | EFI_PCI_IO_PROTOCOL.AllocateBuffer - AllocateBuffer() with correct Parameter status returns EFI_SUCCESS | 1. Call AllocateBuffer() with the following parameters having multiple enumerated values: MemoryType – EfiBootServicesData and EfiRuntimeServicesData Attributes – 0, EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE EFI_PCI_ATTRIBUTE_MEMORY_CACHED, and EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE | EFI_PCI_ATTRIBUTE_MEMORY_CACHED The return status should be EFI_SUCCESS |
5.8.2.12.2 | 0x576894ad, 0x9229, 0x4078, 0xa9, 0x69, 0x70, 0x0e, 0x6e, 0x04, 0x4b, 0xb3 | EFI_PCI_IO_PROTOCOL.AllocateBuffer - With invalid memory type the status is EFI_INVALID_PARAMETER | 1. Call AllocateBuffer() with invalid memory type. The return status must be EFI_INVALID_PARAMETER |
5.8.2.12.3 | 0xa0c5c95e, 0xf251, 0x4c00, 0x9f, 0xdf, 0x9c, 0x88, 0xa2, 0xaa, 0x45, 0x6b | EFI_PCI_IO_PROTOCOL.AllocateBuffer - With HostAddress as NULL the status is EFI_INVALID_PARAMETER | 1. Call AllocateBuffer() with HostAddress as NULL. The return status must be EFI_INVALID_PARAMETER |
5.8.2.12.4 | 0xfacb1e1b, 0x0327, 0x4341, 0xa9, 0x42, 0x4d, 0xb9, 0x9f, 0x1d, 0xe5, 0x68 | EFI_PCI_IO_PROTOCOL.AllocateBuffer - With invalid Attributes the status is EFI_UNSUPPORTED | 1. Call AllocateBuffer() with invalid Attributes. The return status must be EFI_UNSUPPORTED |
10.2.13. FreeBuffer()#
Number | GUID | Assertion | Test Description |
5.8.2.13.1 | 0x00312f50, 0x721c, 0x4085, 0x82, 0x63, 0x04, 0xd1, 0x1f, 0x37, 0x2c, 0x6c | EFI_PCI_IO_PROTOCOL.FreeBuffer - FreeBuffer() return status is EFI_SUCCESS | 1. Call AllocateBuffer() with the following parameters having multiple enumerated values: MemoryType – EfiBootServicesData and EfiRuntimeServicesData Attributes – 0, EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE EFI_PCI_ATTRIBUTE_MEMORY_CACHED, and EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE | EFI_PCI_ATTRIBUTE_MEMORY_CACHED 2. Call FreeBuffer() The return status should be EFI_SUCCESS |
10.2.14. Flush()#
Number | GUID | Assertion | Test Description |
5.8.2.14.1 | 0x2c9f36a3, 0x4cab, 0x4434, 0xa8, 0xc1, 0x7b, 0xf6, 0x3c, 0x46, 0x8f, 0x05 | EFI_PCI_IO_PROTOCOL.Flush - Flush() return status is EFI_SUCCESS | 1. Call Flush() The return status should be EFI_SUCCESS |
10.2.15. GetLocation()#
Number | GUID | Assertion | Test Description |
5.8.2.15.1 | 0xfb478a8e, 0x58e2, 0x41b9, 0x89, 0x35, 0x71, 0x7b, 0x5a, 0x90, 0xa1, 0x84 | EFI_PCI_IO_PROTOCOL.GetLocation - GetLocation() return status is EFI_SUCCESS | 1. Call GetLocation() The return status should be EFI_SUCCESS |
5.8.2.15.2 | 0x07b74ac9, 0x96f4, 0x4d00, 0x94, 0xbd, 0x09, 0x60, 0xd4, 0xe9, 0xa6, 0xe7 | EFI_PCI_IO_PROTOCOL.GetLocation - GetLocation()returns a BusNumber < 256 | 1. Call GetLocation() 2. Check if the returned BusNumber is less than 256 |
5.8.2.15.3 | 0xaf7155de, 0x45f4, 0x4b97, 0xb4, 0xac, 0x07, 0x1a, 0x53, 0x43, 0x32, 0x48 | EFI_PCI_IO_PROTOCOL.GetLocation - GetLocation()returns a DeviceNumber < 32 | 1. Call GetLocation() 2. Check if the returned DeviceNumber is less than 32 |
5.8.2.15.4 | 0x838f7bf6, 0xfa36, 0x4149, 0x92, 0x29, 0xce, 0x60, 0x8a, 0x66, 0x35, 0x61 | EFI_PCI_IO_PROTOCOL.GetLocation - GetLocation()returns a FunctionNumber < 8 | 1. Call GetLocation() 2. Check if the returned FunctionNumber is less than 8 |
5.8.2.15.5 | 0xa5510fe8, 0x2178, 0x47e6, 0x9e, 0xcc, 0xe9, 0x0b, 0x92, 0xcf, 0x1b, 0xbb | EFI_PCI_IO_PROTOCOL.GetLocation - With SegmentNumber as NULL, the status is EFI_INVALID_PARAMETER | 1. Call GetLocation() with SegmentNumber as NULL. The return status must be EFI_INVALID_PARAMETER |
5.8.2.15.6 | 0x2a1ff8b2, 0xc540, 0x4f12, 0x9c, 0x06, 0x36, 0x8d, 0x45, 0x7c, 0x02, 0x7c | EFI_PCI_IO_PROTOCOL.GetLocation - With BusNumber as NULL, the status is EFI_INVALID_PARAMETER | 1. Call GetLocation() with BusNumber as NULL. The return status must be EFI_INVALID_PARAMETER |
5.8.2.15.7 | 0x5e74e7e0, 0x36b0, 0x4c5d, 0x88, 0xb8, 0xb7, 0x52, 0xad, 0x2c, 0xbf, 0x61 | EFI_PCI_IO_PROTOCOL.GetLocation - With DeviceNumber as NULL, the status is EFI_INVALID_PARAMETER | 1. Call GetLocation() with DeviceNumber as NULL. The return status must be EFI_INVALID_PARAMETER |
5.8.2.15.8 | 0xb37cb86c, 0xdd05, 0x4082, 0xa6, 0xf1, 0x8c, 0xf9, 0xc3, 0x46, 0x77, 0x7a | EFI_PCI_IO_PROTOCOL.GetLocation - With FunctionNumber as NULL, the status is EFI_INVALID_PARAMETER | 1. Call GetLocation() with FunctionNumber as NULL. The return status must be EFI_INVALID_PARAMETER |
10.2.16. Attributes()#
Number | GUID | Assertion | Test Description |
5.8.2.16.1 | 0x33ca89a5, 0xefa8, 0x4f52, 0x84, 0xf6, 0x2e, 0x95, 0x26, 0x23, 0xb0, 0xe1 | EFI_PCI_IO_PROTOCOL.Attributes - Call Attributes() get current attribute status must be EFI_SUCCESS | 1. Call Attributes() with EfiPciIoAttributeOperationGet to get the current attributes of the PCI controller The return status should be EFI_SUCCESS |
5.8.2.16.2 | 0xa11652df, 0x8818, 0x4a05, 0xbe, 0xd9, 0x27, 0xf9, 0xe5, 0xad, 0x78, 0x3c | EFI_PCI_IO_PROTOCOL.Attributes - Call Attributes() get supported attribute status must be EFI_SUCCESS | 1. Call Attributes() with EfiPciIoAttributeOperationSupported to get the supported attributes of the PCI controller The return status should be EFI_SUCCESS |
5.8.2.16.3 | 0x69ce5213, 0x7180, 0x4beb, 0x9f, 0x39, 0x1d, 0x1f, 0x17, 0x00, 0x59, 0x9a | EFI_PCI_IO_PROTOCOL.Attributes - Current attributes should in supported attributes | 1. Call Attributes() with EfiPciIoAttributeOperationGet to get the current attributes of the PCI controller 2. Call Attributes() with EfiPciIoAttributeOperationSupported to get the supported attributes of the PCI controller 3. Check if the current attributes is a subset of Supported attributes |
5.8.2.16.4 | 0xfac8ddb3, 0xbfae, 0x40ff, 0xb7, 0x31, 0x26, 0x8e, 0x58, 0x29, 0x25, 0xb0 | EFI_PCI_IO_PROTOCOL.Attributes - Call Attributes() set Attributes as Supported attributes return status must be EFI_SUCCESS | 1. Call Attributes() with EfiPciIoAttributeOperationSet with a supported attribute of the PCI controller. The return status should be EFI_SUCCESS |
5.8.2.16.5 | 0xf8e48da6, 0x72e2, 0x4905, 0xa7, 0x19, 0xe3, 0xa5, 0x77, 0xca, 0xa2, 0xa8 | EFI_PCI_IO_PROTOCOL.Attributes - Set Attributes as supported attributes the attributes should really be cleared | 1. Call Attributes() with EfiPciIoAttributeOperationSet with a supported attribute of the PCI controller. 2. Call Attributes() with EfiPciIoAttributeOperationGet to get the attributes of the PCI controller 3. Check if the gotten attributes is the same as the set ones. |
5.8.2.16.6 | 0x02cab1a9, 0x4be9, 0x4c47, 0xb2, 0x75, 0xca, 0xed, 0x59, 0x62, 0x1f, 0x41 | EFI_PCI_IO_PROTOCOL.Attributes - Call Attributes() set Attributes as 0 return status must be EFI_SUCCESS | 1. Call Attributes() with EfiPciIoAttributeOperationSet with an attribute value of 0 to clear all attributes. The return status should be EFI_SUCCESS |
5.8.2.16.7 | 0x88791167, 0xb9f3, 0x42ae, 0x84, 0xd1, 0xa1, 0xb6, 0xd3, 0xeb, 0xb8, 0x2f | EFI_PCI_IO_PROTOCOL.Attributes - Set Attributes as 0 the attributes should really be cleared | 1. Call Attributes() with EfiPciIoAttributeOperationSet with an Attributes value of 0 to clear all attributes. 2. Call Attributes() with EfiPciIoAttributeOperationGet to get the attributes of the PCI controller 3. Check if the gotten attributes is the same as that of set |
5.8.2.16.8 | 0x04479c23, 0xc700, 0x439f, 0xb7, 0x42, 0x91, 0x9a, 0x6b, 0x2e, 0x71, 0x5a | EFI_PCI_IO_PROTOCOL.Attributes - Call Attributes() enable Attributes as original attributes return status must be EFI_SUCCESS | 1. Call Attributes() with EfiPciIoAttributeOperationEnable with supported attributes The return status should be EFI_SUCCESS |
5.8.2.16.9 | 0x1d011f3e, 0xaa23, 0x4b0b, 0xb1, 0x65, 0x8f, 0x6f, 0x21, 0xf3, 0x85, 0x6d | EFI_PCI_IO_PROTOCOL.Attributes - enable Attributes as original attributes the attributes should really be Enabled | 1. Call Attributes() with EfiPciIoAttributeOperationEnable with supported attributes 2. Call Attributes() with EfiPciIoAttributeOperationGet to get the attributes 3. Check if the attributes value is the same as original attributes |
5.8.2.16.10 | 0x35e690e9, 0xd037, 0x41a1, 0x93, 0x44, 0x86, 0x78, 0x02, 0xe2, 0x37, 0xfc | EFI_PCI_IO_PROTOCOL.Attributes - Call Attributes() disable original attributes return status must be EFI_SUCCESS | 1. Call Attributes() with EfiPciIoAttributeOperationDisable with supported attributes The return status should be EFI_SUCCESS |
5.8.2.16.11 | 0xb7376265, 0xfb7f, 0x410c, 0x99, 0xb5, 0x5b, 0x17, 0x37, 0x41, 0xf7, 0x03 | EFI_PCI_IO_PROTOCOL.Attributes - Disable original attributes the attributes should really be disabled | 1. Call Attributes() with EfiPciIoAttributeOperationDisable with supported attributes 2. Call Attributes() with EfiPciIoAttributeOperationGet to get the attributes 3. Check if the attributes is 0 |
5.8.2.16.12 | 0x00c4352a, 0x0747, 0x4175, 0x8d, 0xa6, 0xd1, 0xad, 0xc7, 0x30, 0x31, 0xf4 | EFI_PCI_IO_PROTOCOL.Attributes - Call Attributes() set original attributes return status must be EFI_SUCCESS | 1. Call Attributes() with EfiPciIoAttributeOperationSet with original attributes The return status should be EFI_SUCCESS |
5.8.2.16.13 | 0x7ba1d37a, 0xa654, 0x4738, 0x96, 0x98, 0x11, 0x1b, 0x4b, 0x43, 0xad, 0x6c | EFI_PCI_IO_PROTOCOL.Attributes - Set original attributes the attributes should really be set | 1. Call Attributes() with EfiPciIoAttributeOperationSet with original attributes 2. Call Attributes() with EfiPciIoAttributeOperationGet to get the attributes 3. Check if the attributes is the same as original attributes |
5.8.2.16.14 | 0xca3478fa, 0x7a9a, 0x4452, 0x93, 0x23, 0x98, 0xda, 0xe1, 0xf9, 0x17, 0xde | EFI_PCI_IO_PROTOCOL.Attributes - With Operation as EfiPciIoAttributeOperationMaximum status must be EFI_INVALID_PARAMETER | 1. Call Attributes() with Operation as EfiPciIoAttributeOperationMaximum. The return status must be EFI_INVALID_PARAMETER |
5.8.2.16.15 | 0xf09e9c22, 0xd061, 0x4a52, 0xa6, 0xea, 0xa9, 0x4a, 0x90, 0x2e, 0x15, 0x0e | EFI_PCI_IO_PROTOCOL.Attributes - With Operation as EfiPciIoAttributeOperationMaximum + 1 status must be EFI_INVALID_PARAMETER | 1. Call Attributes() with Operation as EfiPciIoAttributeOperationMaximum + 1. The return status must be EFI_INVALID_PARAMETER |
5.8.2.16.16 | 0x1a5371a2, 0x9f8f, 0x4a0a, 0x90, 0x3c, 0x61, 0xca, 0xf0, 0x47, 0xc4, 0x30 | EFI_PCI_IO_PROTOCOL.Attributes - With Operation as -1 the status must be EFI_INVALID_PARAMETER | 1. Call Attributes() with Operation as -1. The return status must be EFI_INVALID_PARAMETER |
5.8.2.16.17 | 0x63c39f67, 0xb02f, 0x4f78, 0x88, 0x49, 0x63, 0x3a, 0xa9, 0x0b, 0xfd, 0xd8 | EFI_PCI_IO_PROTOCOL.Attributes - With Operation as EfiPciIoAttributeOperationGet and Result as NULL then the status must be EFI_INVALID_PARAMETER | 1. Call Attributes() with Operation as EfiPciIoAttributeOperationGet and Result as NULL. The return status must be EFI_INVALID_PARAMETER |
5.8.2.16.18 | 0xacfb1410, 0x3824, 0x42f0, 0x89, 0xfe, 0x93, 0x0c, 0xda, 0xb7, 0xe0, 0x3a | EFI_PCI_IO_PROTOCOL.Attributes - With Operation as EfiPciIoAttributeOperationSupported and Result as NULL, status is EFI_INVALID_PARAMETER | 1. Call Attributes() with Operation as EfiPciIoAttributeOperationSupported and Result as NULL. The return status must be EFI_INVALID_PARAMETER |
5.8.2.16.19 | 0xabcd2d94, 0x9389, 0x49a5, 0x91, 0xd7, 0x91, 0x83, 0x0b, 0x80, 0xfe, 0xc2 | EFI_PCI_IO_PROTOCOL.Attributes - Setting unsupported Attributes returns a status of EFI_UNSUPPORTED | 1. Find unsupported attributes by this device 2. Call Attributes() with Operation as EfiPciIoAttributeOperationSet and unsupported Attributes. The return status must be EFI_UNSUPPORTED |
5.8.2.16.20 | 0xdbe5ef54, 0x5b5e, 0x45e8, 0x9f, 0x8b, 0x9d, 0xa5, 0x72, 0xdb, 0xcd, 0xb7 | EFI_PCI_IO_PROTOCOL.Attributes - Enabling unsupported Attributes returns a status of EFI_UNSUPPORTED | 1. Find unsupported attributes by this device 2. Call Attributes() with Operation as EfiPciIoAttributeOperationEnable and unsupported Attributes. The return status must be EFI_UNSUPPORTED |
5.8.2.16.21 | 0x781416ce, 0xc545, 0x4542, 0xb5, 0xd8, 0xbc, 0xc0, 0xc4, 0xe0, 0x2a, 0x52 | EFI_PCI_IO_PROTOCOL.Attributes - Disabling unsupported Attributes returns a status of EFI_UNSUPPORTED | 1. Find unsupported attributes by this device 2. Call Attributes() with Operation as EfiPciIoAttributeOperationDisable and unsupported Attributes. The return status must be EFI_UNSUPPORTED |
10.2.17. GetBarAttributes()#
Number | GUID | Assertion | Test Description |
5.8.2.17.1 | 0xbc76b1a7, 0x767b, 0x4f5c, 0x94, 0x03, 0x34, 0x40, 0xfb, 0xd9, 0x40, 0x95 | EFI_PCI_IO_PROTOCOL.GetBarAttributes - Calling GetBarAttributes() returns a status of EFI_SUCCESS. | 1. Call GetBarAttributes() with a valid BAR Index and a valid Resources pointer. The return status should be EFI_SUCCESS. |
5.8.2.17.2 | 0x8414d9a1,0x0339, 0x4d7c, 0xa2,0xa4, 0x45,0x3d, 0xd6,0x8d, 0x6b,0x5f |
EFI_PCI_IO_PROTOCOL.GetBarAttributes - Calling GetBarAttributes() with only Supports is NULL returns status of EFI_SUCCESS. | 1. Call GetBarAttributes() with a valid BAR Index and NULL Supports. The return status should be EFI_SUCCESS. |
5.8.2.17.3 | 0x211c1b15, 0xc4ce, 0x452d, 0x96, 0x93, 0xec, 0xf4, 0xc2, 0x3d, 0x20, 0xfe | EFI_PCI_IO_PROTOCOL.GetBarAttributes - Calling GetBarAttributes() with only Resource is NULL returns a status of EFI_SUCCESS. | 1. Call GetBarAttributes() with a valid BAR Index and NULL Resources pointer. The return status should be EFI_SUCCESS. |
5.8.2.17.4 | 0xcb909d56, 0x1d18, 0x44b5, 0xb0, 0x30, 0xa2, 0x58, 0x30, 0x9e, 0xd6, 0x6c | EFI_PCI_IO_PROTOCOL.GetBarAttributes - The Resource Descriptor List is valid. | 1. Call GetBarAttributes() with a valid BAR Index and a valid Resources pointer. 2. Check that the returned resource descriptor is valid. |
5.8.2.17.5 | 0xc0d61a6d, 0x5d07, 0x4748, 0x9f, 0x14, 0x78, 0x00, 0xb6, 0xcf, 0x4b, 0x47 | EFI_PCI_IO_PROTOCOL.GetBarAttributes - The attributes are in Device Supported Attributes. | 1. Call GetBarAttributes() with a valid BAR Index and a valid Resources pointer. 2. Call Attributes() with EfiPciIoAttributeOperationSupported to get the supported attributes of the PCI controller. 3. Check that the current attributes are a subset of Supported attributes. |
5.8.2.17.6 | 0x50f8ec56, 0xc28c, 0x417c, 0x8f, 0x43, 0x43, 0xfd, 0xfc, 0xbd, 0x4e, 0xdf | EFI_PCI_IO_PROTOCOL.GetBarAttributes - With invalid BAR Index the status is EFI_UNSUPPORTED. | 1. Call GetBarAttributes() with invalid BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.17.7 | 0xf52eed93, 0x6c9d, 0x4008, 0xad, 0x9d, 0xe9, 0xab, 0xc8, 0xa4, 0x88, 0x01 | EFI_PCI_IO_PROTOCOL.GetBarAttributes - With both Supports and Resources as NULL status is EFI_INVALID_PARAMETER. | 1. Call GetBarAttributes() with both Supports and Resources as NULL. The return status must be EFI_INVALID_PARAMETER. |
10.2.18. SetBarAttributes()#
Number | GUID | Assertion | Test Description |
5.8.2.18.1 | 0x51ec0763, 0x0edb, 0x4ad3, 0xb1, 0x0c, 0x2d, 0x3f, 0x88, 0x34, 0x78, 0x44 | EFI_PCI_IO_PROTOCOL.SetBarAttributes - Calling SetBarAttributes() returns a status of EFI_SUCCESS. | 1. Call GetBarAttributes() with a valid BAR Index to get the BAR supported attributes resource. 2. Call SetBarAttributes() with BAR Supported attributes and resource information. The return status should be EFI_SUCCESS. |
5.8.2.18.2 | 0x9cbd1e01, 0x86a4, 0x4b9f, 0xbb, 0x00, 0x3e, 0xff, 0xfb, 0x35, 0xf3, 0xbd | EFI_PCI_IO_PROTOCOL.SetBarAttributes - With invalid BAR Index, the status is EFI_UNSUPPORTED. | 1. Call SetBarAttributes() with invalid BAR Index. The return status must be EFI_UNSUPPORTED. |
5.8.2.18.3 | 0x445e37a9, 0xc8e7, 0x402b, 0xb7, 0xf8, 0x93, 0x96, 0xa0, 0xbd, 0x5e, 0xc5 | EFI_PCI_IO_PROTOCOL.SetBarAttributes - With Offset as NULL, the status is EFI_INVALID_PARAMETER. | 1. Call SetBarAttributes() with Offset as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.18.4 | 0x32edd10b, 0x4a81, 0x4a98, 0x8b, 0x7a, 0xef, 0x1b, 0x9a, 0xe8, 0x25, 0x69 | EFI_PCI_IO_PROTOCOL.SetBarAttributes - With Length as NULL the status is EFI_INVALID_PARAMETER. | 1. Call SetBarAttributes() with Length as NULL. The return status must be EFI_INVALID_PARAMETER. |
5.8.2.18.5 | 0xfbb0d8fc, 0xffcf, 0x4562, 0xba, 0x86, 0x1f, 0x9b, 0x41, 0x45, 0x1f, 0x9c | EFI_PCI_IO_PROTOCOL.SetBarAttributes - With Offset + Length out of the BAR resource range, the status is EFI_UNSUPPORTED. | 1. Call SetBarAttributes() with Offset + Length out of the BAR resourcde range. The return status must be EFI_UNSUPPORTED. |
5.8.2.18.6 | 0x48602f8b, 0xbb69, 0x4421, 0xb0, 0x21, 0x5a, 0x10, 0x78, 0x5b, 0xba, 0xf9 | EFI_PCI_IO_PROTOCOL.SetBarAttributes - With unsupported Attributes the status is EFI_UNSUPPORTED. | 1. Find unsupported attributes by this device 2. Call SetBarAttributes() with unsupported Attributes. The return status must be EFI_UNSUPPORTED. |