powerpc/powernv: Fix corrupted PE allocation bitmap on releasing PE

In pnv_ioda_free_pe(), the PE object (including the associated PE
number) is cleared before resetting the corresponding bit in the
PE allocation bitmap. It means PE#0 is always released to the bitmap
wrongly.

This fixes above issue by caching the PE number before the PE object
is cleared.

Fixes: 1e9167726c41 ("powerpc/powernv: Use PE instead of number during setup and release"
Cc: stable@vger.kernel.org # v4.7+
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>

authored by

Gavin Shan and committed by
Michael Ellerman
caa58f80 b314427a

+2 -1
+2 -1
arch/powerpc/platforms/powernv/pci-ioda.c
··· 162 162 static void pnv_ioda_free_pe(struct pnv_ioda_pe *pe) 163 163 { 164 164 struct pnv_phb *phb = pe->phb; 165 + unsigned int pe_num = pe->pe_number; 165 166 166 167 WARN_ON(pe->pdev); 167 168 168 169 memset(pe, 0, sizeof(struct pnv_ioda_pe)); 169 - clear_bit(pe->pe_number, phb->ioda.pe_alloc); 170 + clear_bit(pe_num, phb->ioda.pe_alloc); 170 171 } 171 172 172 173 /* The default M64 BAR is shared by all PEs */