X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=UefiCpuPkg%2FCpuIo2Smm%2FCpuIo2Smm.c;h=619249300f853c36df1a6b7f0a12188b65789367;hp=20b8350fe4a4e189a80dd64b05bd8de65af8cc73;hb=7367cc6c24d01b400d2370ffd58ae02854a56b32;hpb=77695f4da3dc8eedb6fc7fc67f91ef6ccd22daee diff --git a/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.c b/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.c index 20b8350fe4..619249300f 100644 --- a/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.c +++ b/UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.c @@ -1,14 +1,14 @@ /** @file Produces the SMM CPU I/O Protocol. -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ @@ -48,17 +48,17 @@ UINT8 mStride[] = { @param[in] MmioOperation TRUE for an MMIO operation, FALSE for I/O Port operation. @param[in] Width Signifies the width of the I/O operations. - @param[in] Address The base address of the I/O operations. The caller is - responsible for aligning the Address if required. + @param[in] Address The base address of the I/O operations. The caller is + responsible for aligning the Address if required. @param[in] Count The number of I/O operations to perform. - @param[in] Buffer For read operations, the destination buffer to store - the results. For write operations, the source buffer + @param[in] Buffer For read operations, the destination buffer to store + the results. For write operations, the source buffer from which to write data. @retval EFI_SUCCESS The data was read from or written to the device. @retval EFI_UNSUPPORTED The Address is not valid for this system. @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. - + **/ EFI_STATUS CpuIoCheckParameter ( @@ -92,20 +92,20 @@ CpuIoCheckParameter ( if (!MmioOperation && (Width == SMM_IO_UINT64)) { return EFI_INVALID_PARAMETER; } - + // - // Check to see if any address associated with this transfer exceeds the maximum + // Check to see if any address associated with this transfer exceeds the maximum // allowed address. The maximum address implied by the parameters passed in is // Address + Size * Count. If the following condition is met, then the transfer // is not supported. // // Address + Size * Count > (MmioOperation ? MAX_ADDRESS : MAX_IO_PORT_ADDRESS) + 1 // - // Since MAX_ADDRESS can be the maximum integer value supported by the CPU and Count + // Since MAX_ADDRESS can be the maximum integer value supported by the CPU and Count // can also be the maximum integer value supported by the CPU, this range // check must be adjusted to avoid all overflow conditions. - // - // The following form of the range check is equivalent but assumes that + // + // The following form of the range check is equivalent but assumes that // MAX_ADDRESS and MAX_IO_PORT_ADDRESS are of the form (2^n - 1). // Limit = (MmioOperation ? MAX_ADDRESS : MAX_IO_PORT_ADDRESS); @@ -113,7 +113,7 @@ CpuIoCheckParameter ( if (Address > Limit) { return EFI_UNSUPPORTED; } - } else { + } else { MaxCount = RShiftU64 (Limit, Width); if (MaxCount < (Count - 1)) { return EFI_UNSUPPORTED; @@ -122,7 +122,7 @@ CpuIoCheckParameter ( return EFI_UNSUPPORTED; } } - + // // Check to see if Address is aligned // @@ -136,23 +136,23 @@ CpuIoCheckParameter ( /** Reads memory-mapped registers. - The I/O operations are carried out exactly as requested. The caller is - responsible for any alignment and I/O width issues that the bus, device, + The I/O operations are carried out exactly as requested. The caller is + responsible for any alignment and I/O width issues that the bus, device, platform, or type of I/O might require. @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance. @param[in] Width Signifies the width of the I/O operations. - @param[in] Address The base address of the I/O operations. The caller is - responsible for aligning the Address if required. + @param[in] Address The base address of the I/O operations. The caller is + responsible for aligning the Address if required. @param[in] Count The number of I/O operations to perform. - @param[out] Buffer For read operations, the destination buffer to store - the results. For write operations, the source buffer + @param[out] Buffer For read operations, the destination buffer to store + the results. For write operations, the source buffer from which to write data. @retval EFI_SUCCESS The data was read from or written to the device. @retval EFI_UNSUPPORTED The Address is not valid for this system. @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources **/ @@ -196,23 +196,23 @@ CpuMemoryServiceRead ( /** Writes memory-mapped registers. - The I/O operations are carried out exactly as requested. The caller is - responsible for any alignment and I/O width issues that the bus, device, + The I/O operations are carried out exactly as requested. The caller is + responsible for any alignment and I/O width issues that the bus, device, platform, or type of I/O might require. @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance. @param[in] Width Signifies the width of the I/O operations. - @param[in] Address The base address of the I/O operations. The caller is - responsible for aligning the Address if required. + @param[in] Address The base address of the I/O operations. The caller is + responsible for aligning the Address if required. @param[in] Count The number of I/O operations to perform. - @param[in] Buffer For read operations, the destination buffer to store - the results. For write operations, the source buffer + @param[in] Buffer For read operations, the destination buffer to store + the results. For write operations, the source buffer from which to write data. @retval EFI_SUCCESS The data was read from or written to the device. @retval EFI_UNSUPPORTED The Address is not valid for this system. @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources **/ @@ -256,23 +256,23 @@ CpuMemoryServiceWrite ( /** Reads I/O registers. - The I/O operations are carried out exactly as requested. The caller is - responsible for any alignment and I/O width issues that the bus, device, + The I/O operations are carried out exactly as requested. The caller is + responsible for any alignment and I/O width issues that the bus, device, platform, or type of I/O might require. @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance. @param[in] Width Signifies the width of the I/O operations. - @param[in] Address The base address of the I/O operations. The caller is - responsible for aligning the Address if required. + @param[in] Address The base address of the I/O operations. The caller is + responsible for aligning the Address if required. @param[in] Count The number of I/O operations to perform. - @param[out] Buffer For read operations, the destination buffer to store - the results. For write operations, the source buffer + @param[out] Buffer For read operations, the destination buffer to store + the results. For write operations, the source buffer from which to write data. @retval EFI_SUCCESS The data was read from or written to the device. @retval EFI_UNSUPPORTED The Address is not valid for this system. @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources **/ @@ -315,23 +315,23 @@ CpuIoServiceRead ( /** Write I/O registers. - The I/O operations are carried out exactly as requested. The caller is - responsible for any alignment and I/O width issues that the bus, device, + The I/O operations are carried out exactly as requested. The caller is + responsible for any alignment and I/O width issues that the bus, device, platform, or type of I/O might require. @param[in] This The EFI_SMM_CPU_IO2_PROTOCOL instance. @param[in] Width Signifies the width of the I/O operations. - @param[in] Address The base address of the I/O operations. The caller is - responsible for aligning the Address if required. + @param[in] Address The base address of the I/O operations. The caller is + responsible for aligning the Address if required. @param[in] Count The number of I/O operations to perform. - @param[in] Buffer For read operations, the destination buffer to store - the results. For write operations, the source buffer + @param[in] Buffer For read operations, the destination buffer to store + the results. For write operations, the source buffer from which to write data. @retval EFI_SUCCESS The data was read from or written to the device. @retval EFI_UNSUPPORTED The Address is not valid for this system. @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid. - @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a + @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources **/ @@ -370,7 +370,7 @@ CpuIoServiceWrite ( IoWrite32 ((UINTN)Address, *((UINT32 *)Uint8Buffer)); } } - + return EFI_SUCCESS; } @@ -408,6 +408,6 @@ SmmCpuIo2Initialize ( &mSmmCpuIo2 ); ASSERT_EFI_ERROR (Status); - + return Status; }