powerpc/powernv/pci: Dynamically allocate PHB diag data
Diagnostic data for PHBs currently works by allocated a fixed-sized buffer. This is simple, but either wastes memory (though only a few kilobytes) or in the case of PHB4 isn't enough to fit the whole data blob. For machines that don't describe the diagnostic data size in the device tree, use the hardcoded buffer size as before. For those that do, only allocate exactly what's needed. In the special case of P7IOC (which has two types of diag data), the larger should be specified in the device tree. Signed-off-by: Russell Currey <ruscur@russell.cc> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
31bbd45af3
commit
5cb1f8fddd
@@ -172,13 +172,9 @@ struct pnv_phb {
|
||||
unsigned int pe_rmap[0x10000];
|
||||
} ioda;
|
||||
|
||||
/* PHB and hub status structure */
|
||||
union {
|
||||
unsigned char blob[PNV_PCI_DIAG_BUF_SIZE];
|
||||
struct OpalIoP7IOCPhbErrorData p7ioc;
|
||||
struct OpalIoPhb3ErrorData phb3;
|
||||
struct OpalIoP7IOCErrorData hub_diag;
|
||||
} diag;
|
||||
/* PHB and hub diagnostics */
|
||||
unsigned int diag_data_size;
|
||||
u8 *diag_data;
|
||||
|
||||
/* Nvlink2 data */
|
||||
struct npu {
|
||||
|
Reference in New Issue
Block a user