Skip to content

Commit

Permalink
hdata: Adjust various structure offset after relocation
Browse files Browse the repository at this point in the history
ntuple addresses in SPIRAH are relative to payload base. Update various
addresses after relocation so that hostboot can access new address to
capture dump.

Note that we update relocated SPIRAH. So future if we add early OPAL
crash support, hostboot can still collect dump using origianl skiboot
base.

Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
[oliver: rebased]
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
  • Loading branch information
Vasant Hegde authored and oohal committed Aug 15, 2019
1 parent 935fccb commit ed7110e
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions hdata/spira.c
Expand Up @@ -1602,6 +1602,27 @@ static void fixup_spira(void)
spira.ntuples.node_stb_data = spiras->ntuples.node_stb_data;
}

/*
* All the data structure addresses are relative to payload base. Hence adjust
* structures that are needed to capture OPAL dump during MPIPL.
*/
static void update_spirah_addr(void)
{
#if !defined(TEST)
extern uint32_t naca;
uint64_t *spirah_offset = (uint64_t *)&naca;
uint64_t *spira_offset = (uint64_t *)((u64)(&naca) + 0x30);

if (proc_gen < proc_gen_p9)
return;

*spirah_offset = SPIRAH_OFF;
*spira_offset = SPIRA_OFF;
spirah.ntuples.hs_data_area.addr = CPU_TO_BE64(SPIRA_HEAP_BASE - SKIBOOT_BASE);
spirah.ntuples.mdump_res.addr = CPU_TO_BE64(MDRT_TABLE_BASE - SKIBOOT_BASE);
#endif
}

int parse_hdat(bool is_opal)
{
cpu_type = PVR_TYPE(mfspr(SPR_PVR));
Expand All @@ -1610,6 +1631,8 @@ int parse_hdat(bool is_opal)

fixup_spira();

update_spirah_addr();

/*
* Basic DT root stuff
*/
Expand Down

0 comments on commit ed7110e

Please sign in to comment.