qemu-e2k/hw
David Gibson e5c0d3ce40 target-ppc: Add helpers for updating a CPU's SDR1 and external HPT
When a Power cpu with 64-bit hash MMU has it's hash page table (HPT)
pointer updated by a write to the SDR1 register we need to update some
derived variables.  Likewise, when the cpu is configured for an external
HPT (one not in the guest memory space) some derived variables need to be
updated.

Currently the logic for this is (partially) duplicated in ppc_store_sdr1()
and in spapr_cpu_reset().  In future we're going to need it in some other
places, so make some common helpers for this update.

In addition the new ppc_hash64_set_external_hpt() helper also updates
SDR1 in KVM - it's not updated by the normal runtime KVM <-> qemu CPU
synchronization.  In a sense this belongs logically in the
ppc_hash64_set_sdr1() helper, but that is called from
kvm_arch_get_registers() so can't itself call cpu_synchronize_state()
without infinite recursion.  In practice this doesn't matter because
the only other caller is TCG specific.

Currently there aren't situations where updating SDR1 at runtime in KVM
matters, but there are going to be in future.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
2016-03-16 09:55:06 +11:00
..
9pfs all: Clean up includes 2016-02-23 12:43:05 +00:00
acpi nvdimm acpi: emulate dsm method 2016-03-11 16:59:11 +02:00
alpha loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
arm vfio: Generalize region support 2016-03-10 20:03:16 -07:00
audio all: Clean up includes 2016-02-23 12:43:05 +00:00
block fdc: add function to determine drive chs limits 2016-03-11 14:55:15 +02:00
bt hw: Clean up includes 2016-01-29 15:07:25 +00:00
char ui: Shorten references into InputEvent 2016-03-05 10:41:55 +01:00
core loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
cpu hw/intc/arm_gic.c: Implement GICv2 GICC_DIR 2016-03-04 11:30:22 +00:00
cris loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
display qxl: lock current_async update in qxl_soft_reset 2016-03-01 07:51:32 +01:00
dma i8257: fix Terminal Count status 2016-03-07 13:18:28 +01:00
gpio ARM: PL061: Checking register r/w accesses to reserved area 2016-02-26 15:09:42 +00:00
i2c hw: Clean up includes 2016-01-29 15:07:25 +00:00
i386 hw/acpi: fix GSI links UID 2016-03-15 16:16:57 +02:00
ide ahci: prohibit "restarting" the FIS or CLB engines 2016-02-10 13:29:40 -05:00
input ui: Shorten references into InputEvent 2016-03-05 10:41:55 +01:00
intc msi_supported -> msi_nonbroken 2016-03-11 16:45:21 +02:00
ipack hw: Clean up includes 2016-01-29 15:07:25 +00:00
ipmi ipmi: add some local variables in ipmi_sdr_init 2016-03-11 16:59:13 +02:00
isa ich9lpc: fix typo 2016-03-11 16:45:21 +02:00
lm32 loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
m68k loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
mem pc-dimm: fix error handling in pc_dimm_check_memdev_is_busy() 2016-03-11 14:55:15 +02:00
microblaze loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
mips loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
misc memory: Drop MemoryRegion.ram_addr 2016-03-07 13:26:29 +01:00
moxie loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
net rocker: allow user to specify rocker world by property 2016-03-08 15:34:18 +08:00
nvram fw_cfg: expose control register size in fw_cfg.h 2016-03-08 10:46:30 +01:00
openrisc loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
pci msi_supported -> msi_nonbroken 2016-03-11 16:45:21 +02:00
pci-bridge pxb: cleanup 2016-03-11 16:59:12 +02:00
pci-host loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
pcmcia hw: Clean up includes 2016-01-29 15:07:25 +00:00
ppc target-ppc: Add helpers for updating a CPU's SDR1 and external HPT 2016-03-16 09:55:06 +11:00
s390x vhost, virtio, pci, pc, acpi 2016-03-15 16:43:48 +00:00
scsi scsi-bus: Remove tape command from scsi_req_xfer 2016-03-07 17:56:23 +01:00
sd sdhci: Implement DeviceClass reset 2016-03-04 11:30:17 +00:00
sh4 sh4: Clean up includes 2016-01-29 15:07:24 +00:00
smbios hw: Clean up includes 2016-01-29 15:07:25 +00:00
sparc loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
sparc64 loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
ssi hw: Clean up includes 2016-01-29 15:07:25 +00:00
timer tusb6010: move from hw/timer to hw/usb 2016-02-23 10:38:00 +01:00
tpm hw: Clean up includes 2016-01-29 15:07:25 +00:00
tricore loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
unicore32 unicore: Clean up includes 2016-01-29 15:07:22 +00:00
usb usb-redirect: Avoid double free of data 2016-02-29 11:45:26 +01:00
vfio vfio/pci: replace fixed string limit by g_strdup_printf 2016-03-10 20:50:43 -07:00
virtio virtio-pci: call pci reset variant when guest requests reset. 2016-03-11 16:45:21 +02:00
watchdog watchdog/diag288: avoid race condition on expired watchdog 2016-03-01 12:15:28 +01:00
xen xen: drop XenXC and associated interface wrappers 2016-02-10 12:01:24 +00:00
xenpv xen: Clean up includes 2016-01-29 15:07:23 +00:00
xtensa loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
Makefile.objs Add a base IPMI interface 2015-12-22 18:39:19 +02:00