summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason M. Bills <jason.m.bills@linux.intel.com>2019-10-05 02:46:11 +0300
committerBills, Jason M <jason.m.bills@intel.com>2019-10-15 20:16:32 +0300
commitf95bcccc8af94761a54c10ccbffd1d1ff0a05c4c (patch)
treeadd235b69eb0d9bad97e7f90cf77bd967f0cc44d
parent9fecb52a7a5cd0afebb98efcffac1359289914fd (diff)
downloadprovingground-f95bcccc8af94761a54c10ccbffd1d1ff0a05c4c.tar.xz
Clean up peci_cmds output
peci_cmds output is not very uniform and leaves out information such as the PECI completion code and library return value that are useful for debug. This change prints the completion code by default and cleans up some of the output to be more uniform. Tested: peci_cmds -c 0 0 PECI target[48]: Pkg Read of Index 00 Param 0000: cc:0x40 0x00050654 peci_cmds -c 0 100 PECI target[48]: Pkg Read of Index 00 Param 0100: cc:0x90 0x00000000 peci_cmds -lw d 0 3 270 15 PECI target[48]: Local PCI Write of 0d:00:03 Reg 270: 0x00000015 cc:0x90 Change-Id: I9094c7c77521ea381006b972aea2bf98e8c200cf Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
-rw-r--r--libpeci/peci_cmds.c191
1 files changed, 80 insertions, 111 deletions
diff --git a/libpeci/peci_cmds.c b/libpeci/peci_cmds.c
index 9aafe06..efc5b86 100644
--- a/libpeci/peci_cmds.c
+++ b/libpeci/peci_cmds.c
@@ -39,7 +39,6 @@ void Usage(char* progname)
printf("\t%s [-a <addr>] [-s <size>] <command> [parameters]\n", progname);
printf("\t\t-a : Address of the target in decimal. Default is 48.\n");
printf("\t\t-s : Size of data to read or write in bytes. Default is 4.\n");
- printf("\t\t-b : Display completion code.\n");
printf("\t\t-n : Ping the target.\n");
printf("\t\t-t : Get the temperature.\n");
printf("\t\t-d : Get the DIB.\n");
@@ -54,15 +53,15 @@ void Usage(char* progname)
"[Reg]>.\n");
printf("\t\t-lw : Local PCI Write for specific hex address <Bus Dev Func "
"[Reg] Data>.\n");
- printf("\t\t-e : Endpoint Local PCI Config Read <Seg Bus Dev Func [Reg]>."
- "\n");
+ printf(
+ "\t\t-e : Endpoint Local PCI Config Read <Seg Bus Dev Func [Reg]>.\n");
printf("\t\t-ew : Endpoint Local PCI Config Write <Seg Bus Dev Func [Reg] "
"Data>.\n");
printf("\t\t-f : Endpoint PCI Config Read <Seg Bus Dev Func [Reg]>.\n");
- printf("\t\t-fw : Endpoint PCI Config Write <Seg Bus Dev Func [Reg] Data>."
- "\n");
- printf("\t\t-g : Endpoint MMIO Read <AType Bar Seg Bus Dev Func [Reg]>."
- "\n");
+ printf(
+ "\t\t-fw : Endpoint PCI Config Write <Seg Bus Dev Func [Reg] Data>.\n");
+ printf(
+ "\t\t-g : Endpoint MMIO Read <AType Bar Seg Bus Dev Func [Reg]>.\n");
printf("\n");
}
@@ -94,12 +93,11 @@ int main(int argc, char* argv[])
uint64_t dib;
uint8_t u8Index = 0;
uint8_t cc = 0;
- bool showCc = false;
//
// Parse arguments.
//
- while (-1 != (c = getopt(argc, argv, "a:s:nbtdp::c::m::l::e::f::g")))
+ while (-1 != (c = getopt(argc, argv, "a:s:ntdp::c::m::l::e::f::g")))
{
switch (c)
{
@@ -113,10 +111,6 @@ int main(int argc, char* argv[])
u8Size = (unsigned char)atoi(optarg);
break;
- case 'b':
- showCc = true;
- break;
-
case 'n':
cnt++;
u8Cmd = PECI_CMD_PING;
@@ -193,23 +187,24 @@ int main(int argc, char* argv[])
//
// Execute the command
//
- printf("PECI target[%u]: ", (int)address);
+ printf("PECI target[%u]: ", address);
switch (u8Cmd)
{
case PECI_CMD_PING:
printf("Pinging ... ");
- (0 == peci_Ping(address)) ? printf("Succeeded.\n")
- : printf("Failed.\n");
+ (0 == peci_Ping(address)) ? printf("Succeeded\n")
+ : printf("Failed\n");
break;
case PECI_CMD_GET_TEMP:
+ printf("GetTemp\n");
ret = peci_GetTemp(address, &temperature);
if (0 != ret)
{
- printf("ERROR: Retrieving temperature failed.\n");
+ printf("ERROR %d: Retrieving temperature failed\n", ret);
break;
}
- printf("Temperature is %04xh (%c%d.%02dC).\n",
+ printf(" %04xh (%c%d.%02dC)\n",
(int)(unsigned int)(unsigned short)temperature,
(0 > temperature) ? '-' : '+',
(int)((unsigned int)ABS(temperature) / 64),
@@ -217,13 +212,14 @@ int main(int argc, char* argv[])
break;
case PECI_CMD_GET_DIB:
+ printf("GetDIB\n");
ret = peci_GetDIB(address, &dib);
if (0 != ret)
{
- printf("ERROR: Retrieving DIB failed.\n");
+ printf("ERROR %d: Retrieving DIB failed\n", ret);
break;
}
- printf("GetDIB Returned: 0x%" PRIx64 "\n", dib);
+ printf(" 0x%" PRIx64 "\n", dib);
break;
case PECI_CMD_RD_PCI_CFG:
@@ -240,21 +236,20 @@ int main(int argc, char* argv[])
u8PciBus = strtoul(argv[--u8Index], NULL, 16);
break;
default:
- printf("ERROR: Unsupported arguments for PCI Write\n");
+ printf("ERROR: Unsupported arguments for PCI Read\n");
goto ErrorExit;
break;
}
+ printf("PCI Read of %02x:%02x:%02x Reg %02x\n", u8PciBus, u8PciDev,
+ u8PciFunc, u16PciReg);
ret = peci_RdPCIConfig(address, u8PciBus, u8PciDev, u8PciFunc,
u16PciReg, (uint8_t*)&u32PciReadVal, &cc);
- if (showCc)
- printf("PCI Read cc:0x%x\n", cc);
if (0 != ret)
{
- printf("ERROR: PCI Read failed or is not supported.\n");
+ printf("ERROR %d: command failed\n", ret);
break;
}
- printf("PCI Read of %02x:%02x:%02x Reg %02x: 0x%0*x\n", u8PciBus,
- u8PciDev, u8PciFunc, u16PciReg, u8Size * 2, u32PciReadVal);
+ printf(" cc:0x%02x 0x%0*x\n", cc, u8Size * 2, u32PciReadVal);
break;
case PECI_CMD_RD_PKG_CFG:
@@ -270,17 +265,16 @@ int main(int argc, char* argv[])
goto ErrorExit;
break;
}
+ printf("Pkg Read of Index %02x Param %04x\n", u8PkgIndex,
+ u16PkgParam);
ret = peci_RdPkgConfig(address, u8PkgIndex, u16PkgParam, u8Size,
(uint8_t*)&u32PkgValue, &cc);
- if (showCc)
- printf("Pkg Read cc:0x%x\n", cc);
if (0 != ret)
{
- printf("ERROR: Read Package failed or is not supported.\n");
+ printf("ERROR %d: command failed\n", ret);
break;
}
- printf("Pkg Read of Index %02x Param %04x: 0x%0*x\n", u8PkgIndex,
- u16PkgParam, u8Size * 2, u32PkgValue);
+ printf(" cc:0x%02x 0x%0*x\n", cc, u8Size * 2, u32PkgValue);
break;
case PECI_CMD_WR_PKG_CFG:
@@ -301,10 +295,12 @@ int main(int argc, char* argv[])
u16PkgParam, u8Size * 2, u32PkgValue);
ret = peci_WrPkgConfig(address, u8PkgIndex, u16PkgParam,
u32PkgValue, u8Size, &cc);
- if (showCc)
- printf("Pkg Write cc:0x%x\n", cc);
- (0 == ret) ? printf("Succeeded.\n")
- : printf("Failed or not supported.\n");
+ if (0 != ret)
+ {
+ printf("ERROR %d: command failed\n", ret);
+ break;
+ }
+ printf(" cc:0x%02x\n", cc);
break;
case PECI_CMD_RD_IA_MSR:
@@ -320,17 +316,16 @@ int main(int argc, char* argv[])
goto ErrorExit;
break;
}
+ printf("MSR Read of Thread %02x MSR %04x\n", u8MsrThread,
+ u16MsrAddr);
ret =
peci_RdIAMSR(address, u8MsrThread, u16MsrAddr, &u64MsrVal, &cc);
- if (showCc)
- printf("MSR Read cc:0x%x\n", cc);
if (0 != ret)
{
- printf("ERROR: Read MSR failed or is not supported. %x\n", ret);
+ printf("ERROR %d: command failed\n", ret);
break;
}
- printf("MSR Read of Thread %02x MSR %04x: 0x%0*" PRIx64 "\n",
- u8MsrThread, u16MsrAddr, u8Size * 2, u64MsrVal);
+ printf(" cc:0x%02x 0x%0*x\n", cc, u8Size * 2, u64MsrVal);
break;
case PECI_CMD_RD_PCI_CFG_LOCAL:
@@ -347,24 +342,21 @@ int main(int argc, char* argv[])
u8PciBus = strtoul(argv[--u8Index], NULL, 16);
break;
default:
- printf(
- "ERROR: Unsupported arguments for Local PCI Write\n");
+ printf("ERROR: Unsupported arguments for Local PCI Read\n");
goto ErrorExit;
break;
}
+ printf("Local PCI Read of %02x:%02x:%02x Reg %02x\n", u8PciBus,
+ u8PciDev, u8PciFunc, u16PciReg);
ret = peci_RdPCIConfigLocal(address, u8PciBus, u8PciDev, u8PciFunc,
u16PciReg, u8Size,
(uint8_t*)&u32PciReadVal, &cc);
- if (showCc)
- printf("Local PCI Read cc:0x%x\n", cc);
if (0 != ret)
{
- printf("ERROR: Local PCI Read failed or is not supported.\n");
+ printf("ERROR %d: command failed\n", ret);
break;
}
- printf("Local PCI Read of %02x:%02x:%02x Reg %02x: 0x%0*x\n",
- u8PciBus, u8PciDev, u8PciFunc, u16PciReg, u8Size * 2,
- u32PciReadVal);
+ printf(" cc:0x%02x 0x%0*x\n", cc, u8Size * 2, u32PciReadVal);
break;
case PECI_CMD_WR_PCI_CFG_LOCAL:
@@ -392,10 +384,12 @@ int main(int argc, char* argv[])
u32PciWriteVal);
ret = peci_WrPCIConfigLocal(address, u8PciBus, u8PciDev, u8PciFunc,
u16PciReg, u8Size, u32PciWriteVal, &cc);
- if (showCc)
- printf("Local PCI Write cc:0x%x\n", cc);
- (0 == ret) ? printf("Succeeded.\n")
- : printf("Failed or not supported.\n");
+ if (0 != ret)
+ {
+ printf("ERROR %d: command failed\n", ret);
+ break;
+ }
+ printf(" cc:0x%02x\n", cc);
break;
case PECI_CMD_RD_END_PT_CFG_LOCAL_PCI:
@@ -411,28 +405,22 @@ int main(int argc, char* argv[])
break;
default:
- printf("ERROR: Unsupported arguments for Endpoint Local"
+ printf("ERROR: Unsupported arguments for Endpoint Local "
"PCI Read\n");
goto ErrorExit;
}
-
+ printf(
+ "Endpoint Local PCI Read of Seg:%02x %02x:%02x:%02x Reg %02x\n",
+ u8Seg, u8PciBus, u8PciDev, u8PciFunc, u16PciReg);
ret = peci_RdEndPointConfigPciLocal(
address, u8Seg, u8PciBus, u8PciDev, u8PciFunc, u16PciReg,
u8Size, (uint8_t*)&u32PciReadVal, &cc);
- if (showCc)
- {
- printf("Endpoint Local PCI Read cc:0x%x\n", cc);
- }
- printf("Seg:%02x %02x:%02x:%02x "
- "Reg %02x: 0x%0*x\n",
- u8Seg, u8PciBus, u8PciDev, u8PciFunc, u16PciReg, u8Size * 2,
- u32PciReadVal);
if (0 != ret)
{
- printf("ERROR: Endpoint Local PCI Read failed or is "
- "not supported.\n");
+ printf("ERROR %d: command failed\n", ret);
break;
}
+ printf(" cc:0x%02x 0x%0*x\n", cc, u8Size * 2, u32PciReadVal);
break;
case PECI_CMD_WR_END_PT_CFG_LOCAL_PCI:
@@ -453,23 +441,19 @@ int main(int argc, char* argv[])
"PCI Write\n");
goto ErrorExit;
}
-
+ printf("Endpoint Local PCI Write of Seg:%02x %02x:%02x:%02x Reg "
+ "%02x: 0x%0*x\n",
+ u8Seg, u8PciBus, u8PciDev, u8PciFunc, u16PciReg, u8Size * 2,
+ u32PciWriteVal);
ret = peci_WrEndPointPCIConfigLocal(address, u8Seg, u8PciBus,
u8PciDev, u8PciFunc, u16PciReg,
u8Size, u32PciWriteVal, &cc);
- if (showCc)
- {
- printf("Endpoint Local PCI Write cc:0x%x\n", cc);
- }
- printf("Seg:%02x %02x:%02x:%02x Reg %02x: 0x%0*x\n", u8Seg,
- u8PciBus, u8PciDev, u8PciFunc, u16PciReg, u8Size * 2,
- u32PciWriteVal);
if (0 != ret)
{
- printf("ERROR: Endpoint Local PCI Write failed "
- "or is not supported.\n");
+ printf("ERROR %d: command failed\n", ret);
break;
}
+ printf(" cc:0x%02x\n", cc);
break;
case PECI_CMD_RD_END_PT_CFG_PCI:
@@ -485,27 +469,21 @@ int main(int argc, char* argv[])
break;
default:
- printf("ERROR: Unsupported arguments for Endpoint PCI Read"
- "\n");
+ printf(
+ "ERROR: Unsupported arguments for Endpoint PCI Read\n");
goto ErrorExit;
}
-
+ printf("Endpoint PCI Read of Seg:%02x %02x:%02x:%02x Reg %02x\n",
+ u8Seg, u8PciBus, u8PciDev, u8PciFunc, u16PciReg);
ret = peci_RdEndPointConfigPci(address, u8Seg, u8PciBus, u8PciDev,
u8PciFunc, u16PciReg, u8Size,
(uint8_t*)&u32PciReadVal, &cc);
- if (showCc)
- {
- printf("Endpoint PCI Read cc:0x%x\n", cc);
- }
- printf("Seg:%02x %02x:%02x:%02x Reg %02x: 0x%0*x\n", u8Seg,
- u8PciBus, u8PciDev, u8PciFunc, u16PciReg, u8Size * 2,
- u32PciReadVal);
if (0 != ret)
{
- printf("ERROR: Endpoint PCI Read failed or is not supported."
- "\n");
+ printf("ERROR %d: command failed\n", ret);
break;
}
+ printf(" cc:0x%02x 0x%0*x\n", cc, u8Size * 2, u32PciReadVal);
break;
case PECI_CMD_WR_END_PT_CFG_PCI:
@@ -522,27 +500,23 @@ int main(int argc, char* argv[])
break;
default:
- printf("ERROR: Unsupported arguments for Endpoint PCI Write"
- "\n");
+ printf("ERROR: Unsupported arguments for Endpoint PCI "
+ "Write\n");
goto ErrorExit;
}
-
+ printf("Endpoint PCI Write of Seg:%02x %02x:%02x:%02x Reg %02x: "
+ "0x%0*x\n",
+ u8Seg, u8PciBus, u8PciDev, u8PciFunc, u16PciReg, u8Size * 2,
+ u32PciWriteVal);
ret = peci_WrEndPointPCIConfig(address, u8Seg, u8PciBus, u8PciDev,
u8PciFunc, u16PciReg, u8Size,
u32PciWriteVal, &cc);
- if (showCc)
- {
- printf("Endpoint PCI Write cc:0x%x\n", cc);
- }
- printf("Seg:%02x %02x:%02x:%02x Reg %02x: 0x%0*x\n", u8Seg,
- u8PciBus, u8PciDev, u8PciFunc, u16PciReg, u8Size * 2,
- u32PciWriteVal);
if (0 != ret)
{
- printf("ERROR: Endpoint PCI Write failed or is not supported."
- "\n");
+ printf("ERROR %d: command failed\n", ret);
break;
}
+ printf(" cc:0x%02x\n", cc);
break;
case PECI_CMD_RD_END_PT_CFG_MMIO:
@@ -560,28 +534,23 @@ int main(int argc, char* argv[])
break;
default:
- printf("ERROR: Unsupported arguments for Endpoint MMIO Read"
- "\n");
+ printf("ERROR: Unsupported arguments for Endpoint MMIO "
+ "Read\n");
goto ErrorExit;
}
-
+ printf("Endpoint MMIO Read of Seg:%02x %02x:%02x:%02x AType:%02x "
+ "Bar:%02x Offset:0x%" PRIx64 "\n",
+ u8Seg, u8PciBus, u8PciDev, u8PciFunc, u8AddrType, u8Bar,
+ u64Offset);
ret = peci_RdEndPointConfigMmio(
address, u8Seg, u8PciBus, u8PciDev, u8PciFunc, u8Bar,
u8AddrType, u64Offset, u8Size, (uint8_t*)&u32PciReadVal, &cc);
- if (showCc)
- {
- printf("Endpoint MMIO Read cc:0x%x\n", cc);
- }
- printf("Seg:%02x %02x:%02x:%02x AType:%02x Bar:%02x "
- "Offset:0x%" PRIx64 " Data:0x%0*x\n",
- u8Seg, u8PciBus, u8PciDev, u8PciFunc, u8AddrType, u8Bar,
- u64Offset, u8Size * 2, u32PciReadVal);
if (0 != ret)
{
- printf("ERROR: Endpoint MMIO Read failed or is not supported."
- "\n");
+ printf("ERROR %d: command failed\n", ret);
break;
}
+ printf(" cc:0x%02x 0x%0*x\n", cc, u8Size * 2, u32PciReadVal);
break;
default: