qemu/hw/ppc
David Gibson 47a9b55154 spapr: Clean up handling of LPCR power-saving exit bits
To prevent spurious wakeups on cpus that are supposed to be disabled, we
need to clear the LPCR bits which control certain wakeup events.
spapr_cpu_reset() has separate cases here for boot and non-boot (initially
inactive) cpus.  rtas_start_cpu() then turns the LPCR bits on when the
non-boot cpus are activated.

But explicit checks against first_cpu are not how we usually do things:
instead spapr_cpu_reset() generally sets things up for non-boot (inactive)
cpus, then spapr_machine_reset() and/or rtas_start_cpu() override as
necessary.

So, do that instead.  Because the LPCR activation is identical for boot
cpus and non-boot cpus just activated with rtas_start_cpu() we can put the
code common in spapr_cpu_set_entry_state().

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Tested-by: Cédric Le Goater <clg@kaod.org>
2018-05-04 15:00:37 +10:00
..
e500-ccsr.h
e500.c ppc: e500: switch E500 based machines to full machine definition 2018-04-27 18:05:23 +10:00
e500.h ppc: e500: switch E500 based machines to full machine definition 2018-04-27 18:05:23 +10:00
e500plat.c ppc: e500: switch E500 based machines to full machine definition 2018-04-27 18:05:23 +10:00
fdt.c target/ppc: Split page size information into a separate allocation 2018-04-27 18:05:22 +10:00
mac_newworld.c uninorth: rename UNINState to UNINHostState 2018-04-27 18:05:22 +10:00
mac_oldworld.c mac_oldworld: move wiring of macio IRQs to macio_oldworld_realize() 2018-04-27 18:05:22 +10:00
mac.h uninorth: rename UNINState to UNINHostState 2018-04-27 18:05:22 +10:00
Makefile.objs ppc: Add aCube Sam460ex board 2018-03-06 13:16:29 +11:00
mpc8544_guts.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
mpc8544ds.c ppc: e500: switch E500 based machines to full machine definition 2018-04-27 18:05:23 +10:00
pnv_bmc.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
pnv_core.c ppc/pnv: fix XSCOM core addressing on POWER9 2018-01-17 09:35:24 +11:00
pnv_lpc.c target/ppc: more use of the PPC_*() macros 2018-01-10 12:53:00 +11:00
pnv_occ.c ppc/pnv: Add OCC model stub with interrupt support 2017-04-26 12:00:42 +10:00
pnv_psi.c ppc/pnv: change powernv_ prefix to pnv_ for overall naming consistency 2018-01-10 12:53:00 +11:00
pnv_xscom.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
pnv.c target/ppc: Fold slb_nr into PPCHash64Options 2018-04-27 18:05:22 +10:00
ppc4xx_devs.c ppc: replace cpu_model with cpu_type on ref405ep,taihu boards 2017-10-17 10:34:00 +11:00
ppc4xx_pci.c pci: Rename root bus initialization functions for clarity 2017-12-05 19:13:45 +02:00
ppc405_boards.c hw/ppc: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:29:26 +01:00
ppc405_uc.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
ppc405.h ppc4xx: Export ECB and PLB emulation 2017-09-08 09:30:55 +10:00
ppc440_bamboo.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
ppc440_pcix.c ppc440_pcix: Change some error_report to qemu_log_mask(LOG_UNIMP, ...) 2018-03-18 18:27:23 +11:00
ppc440_uc.c sam460ex: Fix timer frequency and clock multipliers 2018-04-10 10:05:38 +10:00
ppc440.h ppc4xx: Add device models found in PPC440 core SoCs 2018-02-16 14:06:07 +11:00
ppc_booke.c ppc_booke: drop useless assignment 2017-05-07 09:57:51 +03:00
ppc.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
ppce500_spin.c hw/ppc: QOM'ify ppce500_spin.c 2017-01-31 10:10:13 +11:00
prep_systemio.c prep: add PReP System I/O 2017-01-31 10:10:13 +11:00
prep.c hw/ppc/prep: Fix implicit creation of "-drive if=scsi" devices 2018-03-18 18:27:23 +11:00
rs6000_mc.c prep: add IBM RS/6000 7020 (40p) memory controller 2017-01-31 10:10:13 +11:00
sam460ex.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
spapr_caps.c ppc/spapr-caps: Define the pseries-2.12-sxxm machine type 2018-03-06 13:16:29 +11:00
spapr_cpu_core.c spapr: Clean up handling of LPCR power-saving exit bits 2018-05-04 15:00:37 +10:00
spapr_drc.c qdict qlist: Make most helper macros functions 2018-02-09 13:52:15 +01:00
spapr_events.c spapr_events: drop bogus cell from "interrupt-ranges" property 2017-12-15 09:49:24 +11:00
spapr_hcall.c spapr: Clean up LPCR updates from hypercalls 2018-05-04 15:00:37 +10:00
spapr_iommu.c spapr/iommu: Enable in-kernel TCE acceleration via VFIO KVM device 2018-02-06 11:08:24 -07:00
spapr_ovec.c spapr: replace debug printf with trace points 2017-02-22 11:28:28 +11:00
spapr_pci_vfio.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
spapr_pci.c spapr_pci: fix MSI/MSIX selection 2018-01-29 14:24:41 +11:00
spapr_rng.c spapr_rng: Convert to DEFINE_PROP_LINK 2017-07-14 12:04:43 +02:00
spapr_rtas_ddw.c spapr_pci/spapr_pci_vfio: Support Dynamic DMA Windows (DDW) 2016-07-05 14:31:08 +10:00
spapr_rtas.c spapr: Clean up handling of LPCR power-saving exit bits 2018-05-04 15:00:37 +10:00
spapr_rtc.c qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
spapr_vio.c spapr: fix LSI interrupt specifiers in the device tree 2017-12-15 09:49:24 +11:00
spapr.c spapr: Make a helper to set up cpu entry point state 2018-05-04 15:00:37 +10:00
trace-events ppc440: Add emulation of plb-pcix controller found in some 440 SoCs 2018-03-06 13:16:29 +11:00
virtex_ml507.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00