mirror of https://github.com/xemu-project/xemu.git
spapr: Pass sPAPR machine state to some RTAS events handling functions
Some functions in hw/ppc/spapr_events.c get a pointer to the machine state using qdev_get_machine(). Convert them to get it from their caller when possible. Signed-off-by: Greg Kurz <groug@kaod.org> Message-Id: <20201209170052.1431440-6-groug@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
56cca10eb5
commit
0ff6b52094
|
@ -480,9 +480,8 @@ static SpaprEventLogEntry *rtas_event_log_dequeue(SpaprMachineState *spapr,
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool rtas_event_log_contains(uint32_t event_mask)
|
static bool rtas_event_log_contains(SpaprMachineState *spapr, uint32_t event_mask)
|
||||||
{
|
{
|
||||||
SpaprMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
|
|
||||||
SpaprEventLogEntry *entry = NULL;
|
SpaprEventLogEntry *entry = NULL;
|
||||||
|
|
||||||
QTAILQ_FOREACH(entry, &spapr->pending_events, next) {
|
QTAILQ_FOREACH(entry, &spapr->pending_events, next) {
|
||||||
|
@ -509,10 +508,10 @@ static void spapr_init_v6hdr(struct rtas_event_log_v6 *v6hdr)
|
||||||
v6hdr->company = cpu_to_be32(RTAS_LOG_V6_COMPANY_IBM);
|
v6hdr->company = cpu_to_be32(RTAS_LOG_V6_COMPANY_IBM);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void spapr_init_maina(struct rtas_event_log_v6_maina *maina,
|
static void spapr_init_maina(SpaprMachineState *spapr,
|
||||||
|
struct rtas_event_log_v6_maina *maina,
|
||||||
int section_count)
|
int section_count)
|
||||||
{
|
{
|
||||||
SpaprMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
|
|
||||||
struct tm tm;
|
struct tm tm;
|
||||||
int year;
|
int year;
|
||||||
|
|
||||||
|
@ -560,7 +559,7 @@ static void spapr_powerdown_req(Notifier *n, void *opaque)
|
||||||
entry->extended_length = sizeof(*new_epow);
|
entry->extended_length = sizeof(*new_epow);
|
||||||
|
|
||||||
spapr_init_v6hdr(v6hdr);
|
spapr_init_v6hdr(v6hdr);
|
||||||
spapr_init_maina(maina, 3 /* Main-A, Main-B and EPOW */);
|
spapr_init_maina(spapr, maina, 3 /* Main-A, Main-B and EPOW */);
|
||||||
|
|
||||||
mainb->hdr.section_id = cpu_to_be16(RTAS_LOG_V6_SECTION_ID_MAINB);
|
mainb->hdr.section_id = cpu_to_be16(RTAS_LOG_V6_SECTION_ID_MAINB);
|
||||||
mainb->hdr.section_length = cpu_to_be16(sizeof(*mainb));
|
mainb->hdr.section_length = cpu_to_be16(sizeof(*mainb));
|
||||||
|
@ -613,7 +612,7 @@ static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,
|
||||||
entry->extended_length = sizeof(*new_hp);
|
entry->extended_length = sizeof(*new_hp);
|
||||||
|
|
||||||
spapr_init_v6hdr(v6hdr);
|
spapr_init_v6hdr(v6hdr);
|
||||||
spapr_init_maina(maina, 3 /* Main-A, Main-B, HP */);
|
spapr_init_maina(spapr, maina, 3 /* Main-A, Main-B, HP */);
|
||||||
|
|
||||||
mainb->hdr.section_id = cpu_to_be16(RTAS_LOG_V6_SECTION_ID_MAINB);
|
mainb->hdr.section_id = cpu_to_be16(RTAS_LOG_V6_SECTION_ID_MAINB);
|
||||||
mainb->hdr.section_length = cpu_to_be16(sizeof(*mainb));
|
mainb->hdr.section_length = cpu_to_be16(sizeof(*mainb));
|
||||||
|
@ -808,9 +807,9 @@ static uint32_t spapr_mce_get_elog_type(PowerPCCPU *cpu, bool recovered,
|
||||||
return summary;
|
return summary;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void spapr_mce_dispatch_elog(PowerPCCPU *cpu, bool recovered)
|
static void spapr_mce_dispatch_elog(SpaprMachineState *spapr, PowerPCCPU *cpu,
|
||||||
|
bool recovered)
|
||||||
{
|
{
|
||||||
SpaprMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
|
|
||||||
CPUState *cs = CPU(cpu);
|
CPUState *cs = CPU(cpu);
|
||||||
CPUPPCState *env = &cpu->env;
|
CPUPPCState *env = &cpu->env;
|
||||||
uint64_t rtas_addr;
|
uint64_t rtas_addr;
|
||||||
|
@ -927,7 +926,7 @@ void spapr_mce_req_event(PowerPCCPU *cpu, bool recovered)
|
||||||
warn_report("Received a fwnmi while migration was in progress");
|
warn_report("Received a fwnmi while migration was in progress");
|
||||||
}
|
}
|
||||||
|
|
||||||
spapr_mce_dispatch_elog(cpu, recovered);
|
spapr_mce_dispatch_elog(spapr, cpu, recovered);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void check_exception(PowerPCCPU *cpu, SpaprMachineState *spapr,
|
static void check_exception(PowerPCCPU *cpu, SpaprMachineState *spapr,
|
||||||
|
@ -980,7 +979,7 @@ static void check_exception(PowerPCCPU *cpu, SpaprMachineState *spapr,
|
||||||
* interrupts.
|
* interrupts.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < EVENT_CLASS_MAX; i++) {
|
for (i = 0; i < EVENT_CLASS_MAX; i++) {
|
||||||
if (rtas_event_log_contains(EVENT_CLASS_MASK(i))) {
|
if (rtas_event_log_contains(spapr, EVENT_CLASS_MASK(i))) {
|
||||||
const SpaprEventSource *source =
|
const SpaprEventSource *source =
|
||||||
spapr_event_sources_get_source(spapr->event_sources, i);
|
spapr_event_sources_get_source(spapr->event_sources, i);
|
||||||
|
|
||||||
|
@ -1007,7 +1006,7 @@ static void event_scan(PowerPCCPU *cpu, SpaprMachineState *spapr,
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < EVENT_CLASS_MAX; i++) {
|
for (i = 0; i < EVENT_CLASS_MAX; i++) {
|
||||||
if (rtas_event_log_contains(EVENT_CLASS_MASK(i))) {
|
if (rtas_event_log_contains(spapr, EVENT_CLASS_MASK(i))) {
|
||||||
const SpaprEventSource *source =
|
const SpaprEventSource *source =
|
||||||
spapr_event_sources_get_source(spapr->event_sources, i);
|
spapr_event_sources_get_source(spapr->event_sources, i);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue