[PATCH 1/3] powerpc/powernv/pci: Reduce spam when dumping PEST
Andrew Donnellan
andrew.donnellan at au1.ibm.com
Tue May 30 16:12:00 AEST 2017
On 30/05/17 15:44, Russell Currey wrote:
> Dumping the PE State Tables (PEST) can be highly verbose if a number of PEs
> are affected, especially in the case where the whole PHB is frozen and 512
> lines get printed. Check for duplicates when dumping the PEST to reduce
> useless output.
>
> For example:
>
> PE[0f8] A/B: 9700002600000000 80000080d00000f8
> PE[0f9] A/B: 8000000000000000 0000000000000000
> PE[..0fe] A/B: as above
> PE[0ff] A/B: 8440002b00000000 0000000000000000
>
> instead of:
>
> PE[0f8] A/B: 9700002600000000 80000080d00000f8
> PE[0f9] A/B: 8000000000000000 0000000000000000
> PE[0fa] A/B: 8000000000000000 0000000000000000
> PE[0fb] A/B: 8000000000000000 0000000000000000
> PE[0fc] A/B: 8000000000000000 0000000000000000
> PE[0fd] A/B: 8000000000000000 0000000000000000
> PE[0fe] A/B: 8000000000000000 0000000000000000
> PE[0ff] A/B: 8440002b00000000 0000000000000000
>
> and you can imagine how much worse it can get for 512 PEs.
>
> Signed-off-by: Russell Currey <ruscur at russell.cc>
Minor comments below
Reviewed-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>
> ---
> This is essentially V2 of a previous patch I submitted, with some changes
> thanks to feedback from Gavin.
> ---
> arch/powerpc/platforms/powernv/pci.c | 50 +++++++++++++++++++++---------------
> 1 file changed, 30 insertions(+), 20 deletions(-)
>
> diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c
> index 935ccb249a8a..4852ac8d0b4d 100644
> --- a/arch/powerpc/platforms/powernv/pci.c
> +++ b/arch/powerpc/platforms/powernv/pci.c
> @@ -227,11 +227,38 @@ void pnv_teardown_msi_irqs(struct pci_dev *pdev)
> }
> #endif /* CONFIG_PCI_MSI */
>
> +/* Nicely print the contents of the PE State Tables (PEST). */
> +static void pnv_pci_dump_pest(__be64 pestA[], __be64 pestB[], int pest_size)
> +{
> + __be64 prevA = ULONG_MAX, prevB = ULONG_MAX;
> + bool dup = false;
> + int i;
> +
> + for (i = 0; i < pest_size; i++) {
> + __be64 peA = be64_to_cpu(pestA[i]);
> + __be64 peB = be64_to_cpu(pestB[i]);
> +
> + if (peA != prevA || peB != prevB) {
> + if (dup) {
> + pr_info("PE[..%03x] A/B: as above\n", i-1);
> + dup = false;
> + }
> + prevA = peA;
> + prevB = peB;
> + if (peA >> 63 || peB >> 63)
> + pr_info("PE[%03x] A/B: %016llx %016llx\n",
> + i, peA, peB);
> + } else if (!dup && (peA >> 63 || peB >> 63)) {
I'd prefer "peA >> 63" to be expressed as "peA & PPC_BIT(0)" but that
might just be me?
> + /* Don't need to track zeroes */
This comment is less than clear
> + dup = true;
> + }
> + }
> +}
> +
--
Andrew Donnellan OzLabs, ADL Canberra
andrew.donnellan at au1.ibm.com IBM Australia Limited
More information about the Linuxppc-dev
mailing list