]> Git Repo - qemu.git/log
qemu.git
7 years agoppc4xx_i2c: Move to hw/i2c
BALATON Zoltan [Sun, 20 Aug 2017 17:23:05 +0000 (19:23 +0200)]
ppc4xx_i2c: Move to hw/i2c

Signed-off-by: BALATON Zoltan <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc4xx_i2c: QOMify
BALATON Zoltan [Sun, 20 Aug 2017 17:23:05 +0000 (19:23 +0200)]
ppc4xx_i2c: QOMify

Signed-off-by: BALATON Zoltan <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc4xx: Split off 4xx I2C emulation from ppc405_uc to its own file
BALATON Zoltan [Sun, 20 Aug 2017 17:23:05 +0000 (19:23 +0200)]
ppc4xx: Split off 4xx I2C emulation from ppc405_uc to its own file

This device appears in other SoCs as well not just in 405 ones and
subsequent patches will modify it, so move it out of ppc405_uc.c in
preparation

Signed-off-by: BALATON Zoltan <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc4xx: Make MAL emulation more generic
BALATON Zoltan [Sun, 20 Aug 2017 17:23:05 +0000 (19:23 +0200)]
ppc4xx: Make MAL emulation more generic

Allow MAL with more RX and TX channels as found in newer versions.

Signed-off-by: BALATON Zoltan <[email protected]>
Reviewed-by: David Gibson <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc4xx: Move MAL from ppc405_uc to ppc4xx_devs
BALATON Zoltan [Sun, 20 Aug 2017 17:23:05 +0000 (19:23 +0200)]
ppc4xx: Move MAL from ppc405_uc to ppc4xx_devs

This device appears in other SoCs as well not just in 405 ones

Signed-off-by: BALATON Zoltan <[email protected]>
Reviewed-by: David Gibson <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_iommu: Realloc guest visible TCE table when hot(un)plugging vfio-pci
Alexey Kardashevskiy [Thu, 20 Jul 2017 07:22:29 +0000 (17:22 +1000)]
spapr_iommu: Realloc guest visible TCE table when hot(un)plugging vfio-pci

This replaces g_malloc() with spapr_tce_alloc_table() as this is
the standard way of allocating tables and this allows moving the table
back to KVM when unplugging a VFIO PCI device and VFIO TCE acceleration
support is not present in the KVM.

Although spapr_tce_alloc_table() is expected to fail with EBUSY
if called when previous fd is not closed yet, in practice we will not
see it because cap_spapr_vfio is false at the moment.

Signed-off-by: Alexey Kardashevskiy <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc64: introduce e6500
KONRAD Frederic [Mon, 7 Aug 2017 15:50:48 +0000 (17:50 +0200)]
ppc64: introduce e6500

This introduces e6500 core.

Signed-off-by: KONRAD Frederic <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agobooke206: allow to specify an mmucfg value at the init
KONRAD Frederic [Mon, 7 Aug 2017 15:50:47 +0000 (17:50 +0200)]
booke206: allow to specify an mmucfg value at the init

This allows to init the MMUCFG SPR with a non NULL value.

Signed-off-by: KONRAD Frederic <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agobooke206: fix tlbnps for fixed size TLB
KONRAD Frederic [Mon, 7 Aug 2017 15:50:46 +0000 (17:50 +0200)]
booke206: fix tlbnps for fixed size TLB

Some OS don't populate the TSIZE field when using a fixed size TLB which result
in a 1KB TLB. When the TLB is a fixed size TLB the TSIZE field should be
ignored.

Fix this wrong behavior with MAV 2.0.

Signed-off-by: KONRAD Frederic <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agobooke206: fix booke206_tlbnps for mav 2.0
KONRAD Frederic [Mon, 7 Aug 2017 15:50:45 +0000 (17:50 +0200)]
booke206: fix booke206_tlbnps for mav 2.0

This fixes booke206_tlbnps for MAV 2.0 by checking the MMUCFG register and
return directly the right tlbnps instead of computing it from non existing
field.

Signed-off-by: KONRAD Frederic <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc: spapr: Make VCPU ID handling private to SPAPR
Sam Bobroff [Wed, 9 Aug 2017 05:38:56 +0000 (15:38 +1000)]
ppc: spapr: Make VCPU ID handling private to SPAPR

The concept of a VCPU ID that differs from the CPU's index
(cpu->cpu_index) exists only within SPAPR machines so, move the
functions ppc_get_vcpu_id() and ppc_get_cpu_by_vcpu_id() into spapr.c
and rename them appropriately.

Signed-off-by: Sam Bobroff <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoppc: spapr: Rename cpu_dt_id to vcpu_id
Sam Bobroff [Thu, 3 Aug 2017 06:28:44 +0000 (16:28 +1000)]
ppc: spapr: Rename cpu_dt_id to vcpu_id

This field actually records the VCPU ID used by KVM and, although the
value is also used in the device tree it is primarily the VCPU ID so
rename it as such.

Signed-off-by: Sam Bobroff <[email protected]>
[dwg: Updated comment missed in cpu.h]
Reviewed-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agoe500: Use cpu_index instead of vcpu_dt_id
Sam Bobroff [Thu, 3 Aug 2017 06:28:36 +0000 (16:28 +1000)]
e500: Use cpu_index instead of vcpu_dt_id

The e500 platform code uses the function ppc_get_vcpu_dt_id() to get
an id to put in its device tree.  Which seems like it makes sense, but
ppc_get_vcpu_dt_id() is actually badly named - it only differs from
cpu_index in cases where you're running on KVM HV and the host's
number of threads differs from the guests.  Since KVM HV only supports
PAPR, not e500, it doesn't make sense to use it here.

Simply use the cpu_index instead (which is 'i' in this context
because qemu_get_cpu(i) returns the cpu with cpu_index == i).

Signed-off-by: Sam Bobroff <[email protected]>
Reviewed-by: Greg Kurz <[email protected]>
[dwg: Rewrote commit message]
Signed-off-by: David Gibson <[email protected]>
7 years agospapr: add pseries-2.11 machine type
Greg Kurz [Tue, 25 Jul 2017 18:01:12 +0000 (20:01 +0200)]
spapr: add pseries-2.11 machine type

Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_iommu: unregister vmstate at unrealize time
Greg Kurz [Tue, 25 Jul 2017 18:00:22 +0000 (20:00 +0200)]
spapr_iommu: unregister vmstate at unrealize time

Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_iommu: pass object ownership to parent/owner
Michael Roth [Tue, 25 Jul 2017 18:00:09 +0000 (20:00 +0200)]
spapr_iommu: pass object ownership to parent/owner

TCE table objects attach themselves to an owner as a child
property. unref afterward to allow them to be finalized
when their owner is finalized.

Signed-off-by: Michael Roth <[email protected]>
Reviewed-by: Paolo Bonzini <[email protected]>
Reviewed-by: David Gibson <[email protected]>
Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_drc: pass object ownership to parent/owner
Michael Roth [Tue, 25 Jul 2017 17:59:56 +0000 (19:59 +0200)]
spapr_drc: pass object ownership to parent/owner

DRC objects attach themselves to an owner as a child
property. unref afterward to allow them to be finalized
when their owner is finalized.

Signed-off-by: Michael Roth <[email protected]>
Reviewed-by: Paolo Bonzini <[email protected]>
Reviewed-by: David Gibson <[email protected]>
Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_drc: add unrealize method to physical DRC class
Greg Kurz [Tue, 25 Jul 2017 17:59:44 +0000 (19:59 +0200)]
spapr_drc: add unrealize method to physical DRC class

When hot-unplugging a PHB, all its PCI DRC connectors get unrealized. This
patch adds an unrealize method to the physical DRC class, in order to undo
registrations performed in realize_physical().

Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_pci: parent the MSI memory region to the PHB
Greg Kurz [Tue, 25 Jul 2017 17:59:18 +0000 (19:59 +0200)]
spapr_pci: parent the MSI memory region to the PHB

This memory region should be owned by the PHB. This ensures the PHB
cannot be finalized as long as the the region is guest visible, or
used by a CPU or a device.

Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_iommu: convert TCE table object to realize()
Greg Kurz [Tue, 25 Jul 2017 17:59:06 +0000 (19:59 +0200)]
spapr_iommu: convert TCE table object to realize()

Signed-off-by: Greg Kurz <[email protected]>
Reviewed-by: Alexey Kardashevskiy <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_drc: use g_strdup_printf() instead of snprintf()
Greg Kurz [Tue, 25 Jul 2017 17:58:53 +0000 (19:58 +0200)]
spapr_drc: use g_strdup_printf() instead of snprintf()

Passing a stack allocated buffer of arbitrary length to snprintf()
without checking the return value can cause the resultant strings
to be silently truncated.

Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_iommu: use g_strdup_printf() instead of snprintf()
Greg Kurz [Tue, 25 Jul 2017 17:58:40 +0000 (19:58 +0200)]
spapr_iommu: use g_strdup_printf() instead of snprintf()

Passing a stack allocated buffer of arbitrary length to snprintf()
without checking the return value can cause the resultant strings
to be silently truncated.

Signed-off-by: Greg Kurz <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agospapr_pci: use memory_region_add_subregion() with DMA windows
Greg Kurz [Tue, 25 Jul 2017 17:58:28 +0000 (19:58 +0200)]
spapr_pci: use memory_region_add_subregion() with DMA windows

Passing a null priority to memory_region_add_subregion_overlap() is
strictly equivalent to calling memory_region_add_subregion().

Signed-off-by: Greg Kurz <[email protected]>
Reviewed-by: Alexey Kardashevskiy <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agohw/ppc: CAS reset on early device hotplug
Daniel Henrique Barboza [Wed, 30 Aug 2017 18:21:41 +0000 (15:21 -0300)]
hw/ppc: CAS reset on early device hotplug

This patch is a follow up on the discussions made in patch
"hw/ppc: disable hotplug before CAS is completed" that can be
found at [1].

At this moment, we do not support CPU/memory hotplug in early
boot stages, before CAS. When a hotplug occurs, the event is logged
in an internal RTAS event log queue and an IRQ pulse is fired. In
regular conditions, the guest handles the interrupt by executing
check_exception, fetching the generated hotplug event and enabling
the device for use.

In early boot, this IRQ isn't caught (SLOF does not handle hotplug
events), leaving the event in the rtas event log queue. If the guest
executes check_exception due to another hotplug event, the re-assertion
of the IRQ ends up de-queuing the first hotplug event as well. In short,
a device hotplugged before CAS is considered coldplugged by SLOF.
This leads to device misbehavior and, in some cases, guest kernel
Ooops when trying to unplug the device.

A proper fix would be to turn every device hotplugged before CAS
as a colplugged device. This is not trivial to do with the current
code base though - the FDT is written in the guest memory at
ppc_spapr_reset and can't be retrieved without adding extra state
(fdt_size for example) that will need to managed and migrated. Adding
the hotplugged DT in the middle of CAS negotiation via the updated DT
tree works with CPU devs, but panics the guest kernel at boot. Additional
analysis would be necessary for LMBs and PCI devices. There are
questions to be made in QEMU/SLOF/kernel level about how we can make
this change in a sustainable way.

With Linux guests, a fix would be the kernel executing check_exception
at boot time, de-queueing the events that happened in early boot and
processing them. However, even if/when the newer kernels start
fetching these events at boot time, we need to take care of older
kernels that won't be doing that.

This patch works around the situation by issuing a CAS reset if a hotplugged
device is detected during CAS:

- the DRC conditions that warrant a CAS reset is the same as those that
triggers a DRC migration - the DRC must have a device attached and
the DRC state is not equal to its ready_state. With that in mind, this
patch makes use of 'spapr_drc_needed' to determine if a CAS reset
is needed.

- In the middle of CAS negotiations, the function
'spapr_hotplugged_dev_before_cas' goes through all the DRCs to see
if there are any DRC that requires a reset, using spapr_drc_needed. If
that happens, returns '1' in 'spapr_h_cas_compose_response' which will set
spapr->cas_reboot to true, causing the machine to reboot.

No changes are made for coldplug devices.

[1] http://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02855.html

Signed-off-by: Daniel Henrique Barboza <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agohw/ppc: clear pending_events on machine reset
Daniel Henrique Barboza [Wed, 30 Aug 2017 18:21:40 +0000 (15:21 -0300)]
hw/ppc: clear pending_events on machine reset

The sPAPR machine isn't clearing up the pending events QTAILQ on
machine reboot. This allows for unprocessed hotplug/epow events
to persist in the queue after reset and, when reasserting the IRQs in
check_exception later on, these will be being processed by the OS.

This patch implements a new function called 'spapr_clear_pending_events'
that clears up the pending_events QTAILQ. This helper is then called
inside ppc_spapr_reset to clear up the events queue, preventing
old/deprecated events from persisting after a reset.

Signed-off-by: Daniel Henrique Barboza <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agohw/ppc/spapr_drc.c: change spapr_drc_needed to use drc->dev
Daniel Henrique Barboza [Wed, 30 Aug 2017 18:21:39 +0000 (15:21 -0300)]
hw/ppc/spapr_drc.c: change spapr_drc_needed to use drc->dev

This patch makes a small fix in 'spapr_drc_needed' to change how we detect
if a DRC has a device attached. Previously it used dr_entity_sense for this,
which  works for physical DRCs.

However, for logical DRCs, it didn't cover the case where a logical DRC has
a drc->dev but the state is LOGICAL_UNUSABLE (e.g. a hotplugged CPU before
CAS). In this case, the dr_entity_sense of this DRC returns UNUSABLE and the
code was considering that there were no dev attached, making spapr_drc_needed
return 'false' when in fact we would like to migrate the DRC.

Changing it to check for drc->dev instead works for all DRC types.

Signed-off-by: Daniel Henrique Barboza <[email protected]>
Signed-off-by: David Gibson <[email protected]>
7 years agotcg/ppc: Use constant pool for movi
Richard Henderson [Mon, 31 Jul 2017 06:03:03 +0000 (06:03 +0000)]
tcg/ppc: Use constant pool for movi

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/ppc: Look for shifted constants
Richard Henderson [Mon, 31 Jul 2017 04:54:02 +0000 (04:54 +0000)]
tcg/ppc: Look for shifted constants

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/ppc: Change TCG_REG_RA to TCG_REG_TB
Richard Henderson [Mon, 31 Jul 2017 04:16:10 +0000 (04:16 +0000)]
tcg/ppc: Change TCG_REG_RA to TCG_REG_TB

At this point the conversion is a wash.  Loading of TB+ofs is
smaller, but the actual return address from exit_tb is larger.
There are a few more insns required to transition between TBs.

But the expectation is that accesses to the constant pool will
on the whole be smaller.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/arm: Use constant pool for call
Richard Henderson [Fri, 28 Jul 2017 04:12:24 +0000 (21:12 -0700)]
tcg/arm: Use constant pool for call

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/arm: Use constant pool for movi
Richard Henderson [Fri, 28 Jul 2017 03:47:56 +0000 (20:47 -0700)]
tcg/arm: Use constant pool for movi

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/arm: Extract INSN_NOP
Richard Henderson [Fri, 28 Jul 2017 03:45:38 +0000 (20:45 -0700)]
tcg/arm: Extract INSN_NOP

We'll want this for tcg_out_nop_fill.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/arm: Code rearrangement
Richard Henderson [Fri, 28 Jul 2017 03:43:30 +0000 (20:43 -0700)]
tcg/arm: Code rearrangement

Move constants before all of the functions.
Move tcg_out_<format> functions before all
of the others.  No functional change.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/arm: Tighten tlb indexing offset test
Richard Henderson [Thu, 27 Jul 2017 20:26:33 +0000 (13:26 -0700)]
tcg/arm: Tighten tlb indexing offset test

We are not going to use ldrd for loading the comparator
for 32-bit guests, so don't limit cmp_off to 8 bits then.
This eliminates one insn in the tlb load for some guests.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/arm: Improve tlb load for armv7
Richard Henderson [Thu, 27 Jul 2017 20:16:16 +0000 (13:16 -0700)]
tcg/arm: Improve tlb load for armv7

Use UBFX to avoid limitation on CPU_TLB_BITS.  Since we're dropping
the initial shift, we need to replace the page masking.  We can use
MOVW+BIC to do this without shifting.  The result is the same size
as the armv6 path with one less conditional instruction.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/sparc: Use constant pool for movi
Richard Henderson [Wed, 26 Jul 2017 18:30:35 +0000 (21:30 +0300)]
tcg/sparc: Use constant pool for movi

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/sparc: Introduce TCG_REG_TB
Richard Henderson [Wed, 26 Jul 2017 17:27:55 +0000 (20:27 +0300)]
tcg/sparc: Introduce TCG_REG_TB

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/aarch64: Use constant pool for movi
Richard Henderson [Wed, 26 Jul 2017 07:29:49 +0000 (00:29 -0700)]
tcg/aarch64: Use constant pool for movi

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/s390: Use constant pool for cmpi
Richard Henderson [Wed, 26 Jul 2017 00:10:29 +0000 (20:10 -0400)]
tcg/s390: Use constant pool for cmpi

Also use CHI/CGHI for 16-bit signed constants.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/s390: Use constant pool for xori
Richard Henderson [Tue, 25 Jul 2017 23:42:51 +0000 (19:42 -0400)]
tcg/s390: Use constant pool for xori

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/s390: Use constant pool for ori
Richard Henderson [Tue, 25 Jul 2017 23:21:36 +0000 (19:21 -0400)]
tcg/s390: Use constant pool for ori

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/s390: Use constant pool for andi
Richard Henderson [Tue, 25 Jul 2017 22:59:13 +0000 (18:59 -0400)]
tcg/s390: Use constant pool for andi

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/s390: Use constant pool for movi
Richard Henderson [Tue, 1 Aug 2017 02:16:02 +0000 (19:16 -0700)]
tcg/s390: Use constant pool for movi

Split out maybe_out_small_movi for use with other operations
that want to add to the constant pool.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/s390: Fix sign of patch_reloc addend
Richard Henderson [Sun, 30 Jul 2017 20:58:01 +0000 (13:58 -0700)]
tcg/s390: Fix sign of patch_reloc addend

We were passing in -2 instead of +2, but then ignoring
the actual contents of addend in the calculation.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/s390: Introduce TCG_REG_TB
Richard Henderson [Tue, 25 Jul 2017 18:53:50 +0000 (11:53 -0700)]
tcg/s390: Introduce TCG_REG_TB

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg/i386: Store out-of-range call targets in constant pool
Richard Henderson [Fri, 21 Jul 2017 05:56:42 +0000 (19:56 -1000)]
tcg/i386: Store out-of-range call targets in constant pool

Already it saves 2 bytes per call, but also the constant pool
entry may well be shared across multiple calls.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg: Infrastructure for managing constant pools
Richard Henderson [Sun, 30 Jul 2017 20:13:21 +0000 (13:13 -0700)]
tcg: Infrastructure for managing constant pools

A new shared header tcg-pool.inc.c adds new_pool_label,
for registering a tcg_target_ulong to be emitted after
the generated code, plus relocation data to install a
pointer to the data.

A new pointer is added to the TCGContext, so that we
dump the constant pool as data, not code.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg: Rearrange ldst label tracking
Richard Henderson [Sun, 30 Jul 2017 19:30:41 +0000 (12:30 -0700)]
tcg: Rearrange ldst label tracking

Dispense with TCGBackendData, as it has never been used for more than
holding a single pointer.  Use a define in the cpu/tcg-target.h to
signal requirement for TCGLabelQemuLdst, so that we can drop the no-op
tcg-be-null.h stubs.  Rename tcg-be-ldst.h to tcg-ldst.inc.c.

Reviewed-by: Paolo Bonzini <[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
7 years agotcg: Move USE_DIRECT_JUMP discriminator to tcg/cpu/tcg-target.h
Richard Henderson [Tue, 1 Aug 2017 05:02:31 +0000 (22:02 -0700)]
tcg: Move USE_DIRECT_JUMP discriminator to tcg/cpu/tcg-target.h

Replace the USE_DIRECT_JUMP ifdef with a TCG_TARGET_HAS_direct_jump
boolean test.  Replace the tb_set_jmp_target1 ifdef with an unconditional
function tb_target_set_jmp_target.

While we're touching all backends, add a parameter for tb->tc_ptr;
we're going to need it shortly for some backends.

Move tb_set_jmp_target and tb_add_jump from exec-all.h to cpu-exec.c.

This opens the possibility for TCG_TARGET_HAS_direct_jump to be
a runtime decision -- based on host cpu capabilities, the size of
code_gen_buffer, or a future debugging switch.

Signed-off-by: Richard Henderson <[email protected]>
7 years agotarget/hppa: Convert to TranslatorOps
Richard Henderson [Sat, 15 Jul 2017 08:25:35 +0000 (22:25 -1000)]
target/hppa: Convert to TranslatorOps

Signed-off-by: Richard Henderson <[email protected]>
7 years agotarget/hppa: Convert to DisasContextBase
Richard Henderson [Sat, 15 Jul 2017 07:00:32 +0000 (21:00 -1000)]
target/hppa: Convert to DisasContextBase

Signed-off-by: Richard Henderson <[email protected]>
7 years agotarget/hppa: Convert to DisasJumpType
Richard Henderson [Sat, 15 Jul 2017 06:56:35 +0000 (20:56 -1000)]
target/hppa: Convert to DisasJumpType

Signed-off-by: Richard Henderson <[email protected]>
7 years agotarget/alpha: Switch to do_transaction_failed() hook
Peter Maydell [Tue, 8 Aug 2017 12:42:52 +0000 (13:42 +0100)]
target/alpha: Switch to do_transaction_failed() hook

Switch the alpha target from the old unassigned_access hook
to the new do_transaction_failed hook. This allows us to
resolve a ??? in the old hook implementation.

The only part of the alpha target that does physical
memory accesses is reading the page table -- add a
TODO comment there to the effect that we should handle
bus faults on page table walks. (Since the palcode
doesn't actually do anything useful on a bus fault anyway
it's a bit moot for now.)

Signed-off-by: Peter Maydell <[email protected]>
Message-Id: <1502196172[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
7 years agotarget/alpha: Convert to TranslatorOps
Richard Henderson [Fri, 14 Jul 2017 23:47:59 +0000 (13:47 -1000)]
target/alpha: Convert to TranslatorOps

Signed-off-by: Richard Henderson <[email protected]>
7 years agotarget/alpha: Convert to DisasContextBase
Richard Henderson [Fri, 14 Jul 2017 23:32:08 +0000 (13:32 -1000)]
target/alpha: Convert to DisasContextBase

Signed-off-by: Richard Henderson <[email protected]>
7 years agotarget/alpha: Convert to DisasJumpType
Richard Henderson [Fri, 14 Jul 2017 23:17:03 +0000 (13:17 -1000)]
target/alpha: Convert to DisasJumpType

Signed-off-by: Richard Henderson <[email protected]>
7 years agoconfigure: Drop AIX host support
Peter Maydell [Mon, 4 Sep 2017 17:19:00 +0000 (18:19 +0100)]
configure: Drop AIX host support

Nobody has mentioned AIX host support on the mailing list for years,
and we have no test systems for it so it is most likely broken.
We've advertised in configure for two releases now that we plan
to drop support for this host OS, and have had no complaints.
Drop the AIX host support code.

We can also drop the now-unused AIX version of sys_cache_info().

Note that the _CALL_AIX define used in the PPC tcg backend is
also used for Linux PPC64, and so that code should not be removed.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Reviewed-by: Greg Kurz <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
Message-id: 1504545540[email protected]

7 years agotcg/tci: Add TCG_TARGET_DEFAULT_MO
Richard Henderson [Thu, 7 Sep 2017 17:54:30 +0000 (10:54 -0700)]
tcg/tci: Add TCG_TARGET_DEFAULT_MO

Missed being added as part of 71650df7b0ee.

Signed-off-by: Richard Henderson <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2017-09-06' into staging
Peter Maydell [Thu, 7 Sep 2017 16:53:59 +0000 (17:53 +0100)]
Merge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2017-09-06' into staging

nbd patches for 2017-09-06

- Daniel P. Berrange: [0/2] Fix / skip recent iotests with LUKS driver
- Eric Blake: [0/3] nbd: Use common read/write-all qio functions

# gpg: Signature made Wed 06 Sep 2017 16:17:55 BST
# gpg:                using RSA key 0xA7A16B4A2527436A
# gpg: Good signature from "Eric Blake <[email protected]>"
# gpg:                 aka "Eric Blake (Free Software Programmer) <[email protected]>"
# gpg:                 aka "[jpeg image of size 6874]"
# Primary key fingerprint: 71C2 CC22 B1C4 6029 27D2  F3AA A7A1 6B4A 2527 436A

* remotes/ericb/tags/pull-nbd-2017-09-06:
  nbd: Use new qio_channel_*_all() functions
  io: Add new qio_channel_read{, v}_all_eof functions
  io: Yield rather than wait when already in coroutine
  iotests: blacklist 194 with the luks driver
  iotests: rewrite 192 to use _launch_qemu to fix LUKS support

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20170907' into...
Peter Maydell [Thu, 7 Sep 2017 15:42:55 +0000 (16:42 +0100)]
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20170907' into staging

target-arm:
 * cleanups converting to DEFINE_PROP_LINK
 * allwinner-a10: mark as not user-creatable
 * initial patches working towards ARMv8M support
 * implement generating aborts on memory transaction failures
 * make BXJ behave correctly (ie not UNDEF) on ARMv6-and-later

# gpg: Signature made Thu 07 Sep 2017 14:26:07 BST
# gpg:                using RSA key 0x3C2525ED14360CDE
# gpg: Good signature from "Peter Maydell <[email protected]>"
# gpg:                 aka "Peter Maydell <[email protected]>"
# gpg:                 aka "Peter Maydell <[email protected]>"
# Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE

* remotes/pmaydell/tags/pull-target-arm-20170907: (31 commits)
  target/arm: Add Jazelle feature
  target/arm: Implement new do_transaction_failed hook
  hw/arm: Set ignore_memory_transaction_failures for most ARM boards
  boards.h: Define new flag ignore_memory_transaction_failures
  target/arm: Implement BXNS, and banked stack pointers
  target/arm: Move regime_is_secure() to target/arm/internals.h
  target/arm: Make CFSR register banked for v8M
  target/arm: Make MMFAR banked for v8M
  target/arm: Make CCR register banked for v8M
  target/arm: Make MPU_CTRL register banked for v8M
  target/arm: Make MPU_RNR register banked for v8M
  target/arm: Make MPU_RBAR, MPU_RLAR banked for v8M
  target/arm: Make MPU_MAIR0, MPU_MAIR1 registers banked for v8M
  target/arm: Make VTOR register banked for v8M
  nvic: Add NS alias SCS region
  target/arm: Make CONTROL register banked for v8M
  target/arm: Make FAULTMASK register banked for v8M
  target/arm: Make PRIMASK register banked for v8M
  target/arm: Make BASEPRI register banked for v8M
  target/arm: Add MMU indexes for secure v8M
  ...

# Conflicts:
# target/arm/translate.c

7 years agoMerge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20170906a' into...
Peter Maydell [Thu, 7 Sep 2017 14:26:06 +0000 (15:26 +0100)]
Merge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20170906a' into staging

migration pull 2017-09-06

# gpg: Signature made Wed 06 Sep 2017 19:39:23 BST
# gpg:                using RSA key 0x0516331EBC5BFDE7
# gpg: Good signature from "Dr. David Alan Gilbert (RH2) <[email protected]>"
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A  9FA9 0516 331E BC5B FDE7

* remotes/dgilbert/tags/pull-migration-20170906a:
  migration: dump str in migrate_set_state trace
  snapshot/tests: Try loadvm twice
  migration: Reset rather than destroy main_thread_load_event
  runstate/migrate: Two more transitions
  host-utils: Simplify pow2ceil()
  host-utils: Proactively fix pow2floor(), switch to unsigned
  xbzrle: Drop unused cache_resize()
  migration: Report when bdrv_inactivate_all fails

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/rth/tags/pull-tgt-20170906' into staging
Peter Maydell [Thu, 7 Sep 2017 13:34:25 +0000 (14:34 +0100)]
Merge remote-tracking branch 'remotes/rth/tags/pull-tgt-20170906' into staging

tcg generic translate loop v15

# gpg: Signature made Wed 06 Sep 2017 17:02:31 BST
# gpg:                using RSA key 0x64DF38E8AF7E215F
# gpg: Good signature from "Richard Henderson <[email protected]>"
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A  05C0 64DF 38E8 AF7E 215F

* remotes/rth/tags/pull-tgt-20170906: (32 commits)
  target/arm: Perform per-insn cross-page check only for Thumb
  target/arm: Split out thumb_tr_translate_insn
  target/arm: Move ss check to init_disas_context
  target/arm: [a64] Move page and ss checks to init_disas_context
  target/arm: [tcg] Port to generic translation framework
  target/arm: [tcg,a64] Port to disas_log
  target/arm: [tcg] Port to disas_log
  target/arm: [tcg,a64] Port to tb_stop
  target/arm: [tcg] Port to tb_stop
  target/arm: [tcg,a64] Port to translate_insn
  target/arm: [tcg] Port to translate_insn
  target/arm: [tcg,a64] Port to breakpoint_check
  target/arm: [tcg,a64] Port to insn_start
  target/arm: [tcg] Port to insn_start
  target/arm: [tcg] Port to tb_start
  target/arm: [tcg,a64] Port to init_disas_context
  target/arm: [tcg] Port to init_disas_context
  target/arm: [tcg] Port to DisasContextBase
  target/i386: [tcg] Port to generic translation framework
  target/i386: [tcg] Port to disas_log
  ...

Signed-off-by: Peter Maydell <[email protected]>
7 years agotarget/arm: Add Jazelle feature
Portia Stephens [Thu, 7 Sep 2017 12:54:55 +0000 (13:54 +0100)]
target/arm: Add Jazelle feature

This adds a feature bit indicating support of the (trivial) Jazelle
implementation if ARM_FEATURE_V6 is set or if the processor is arm926
or arm1026.  This fixes the issue that any BXJ instruction will
result in an illegal_op.  BXJ instructions will now check if the
architecture supports ARM_FEATURE_JAZELLE.

Signed-off-by: Portia Stephens <[email protected]>
Reviewed-by: Alistair Francis <[email protected]>
Message-id: 20170905211232[email protected]
[PMM: edited commit message and comment text a bit]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
7 years agotarget/arm: Implement new do_transaction_failed hook
Peter Maydell [Thu, 7 Sep 2017 12:54:55 +0000 (13:54 +0100)]
target/arm: Implement new do_transaction_failed hook

Implement the new do_transaction_failed hook for ARM, which should
cause the CPU to take a prefetch abort or data abort.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Edgar E. Iglesias <[email protected]>
Message-id: 1504626814[email protected]

7 years agohw/arm: Set ignore_memory_transaction_failures for most ARM boards
Peter Maydell [Thu, 7 Sep 2017 12:54:54 +0000 (13:54 +0100)]
hw/arm: Set ignore_memory_transaction_failures for most ARM boards

Set the MachineClass flag ignore_memory_transaction_failures
for almost all ARM boards. This means they retain the legacy
behaviour that accesses to unimplemented addresses will RAZ/WI
rather than aborting, when a subsequent commit adds support
for external aborts.

The exceptions are:
 * virt -- we know that guests won't try to prod devices
   that we don't describe in the device tree or ACPI tables
 * mps2 -- this board was written to use unimplemented-device
   for all the ranges with devices we don't yet handle

New boards should not set the flag, but instead be written
like the mps2.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Alistair Francis <[email protected]>
Message-id: 1504626814[email protected]
For the Xilinx boards:
Reviewed-by: Edgar E. Iglesias <[email protected]>
7 years agoboards.h: Define new flag ignore_memory_transaction_failures
Peter Maydell [Thu, 7 Sep 2017 12:54:54 +0000 (13:54 +0100)]
boards.h: Define new flag ignore_memory_transaction_failures

Define a new MachineClass field ignore_memory_transaction_failures.
If this is flag is true then the CPU will ignore memory transaction
failures which should cause the CPU to take an exception due to an
access to an unassigned physical address; the transaction will
instead return zero (for a read) or be ignored (for a write).  This
should be set only by legacy board models which rely on the old
RAZ/WI behaviour for handling devices that QEMU does not yet model.
New board models should instead use "unimplemented-device" for all
memory ranges where the guest will attempt to probe for a device that
QEMU doesn't implement and a stub device is required.

We need this for ARM boards, where we're about to implement support for
generating external aborts on memory transaction failures. Too many
of our legacy board models rely on the RAZ/WI behaviour and we
would break currently working guests when their "probe for device"
code provoked an external abort rather than a RAZ.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Alistair Francis <[email protected]>
Message-id: 1504626814[email protected]

7 years agotarget/arm: Implement BXNS, and banked stack pointers
Peter Maydell [Thu, 7 Sep 2017 12:54:54 +0000 (13:54 +0100)]
target/arm: Implement BXNS, and banked stack pointers

Implement the BXNS v8M instruction, which is like BX but will do a
jump-and-switch-to-NonSecure if the branch target address has bit 0
clear.

This is the first piece of code which implements "switch to the
other security state", so the commit also includes the code to
switch the stack pointers around, which is the only complicated
part of switching security state.

BLXNS is more complicated than just "BXNS but set the link register",
so we leave it for a separate commit.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Move regime_is_secure() to target/arm/internals.h
Peter Maydell [Thu, 7 Sep 2017 12:54:54 +0000 (13:54 +0100)]
target/arm: Move regime_is_secure() to target/arm/internals.h

Move the regime_is_secure() utility function to internals.h;
we are going to want to call it from translate.c.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make CFSR register banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:54 +0000 (13:54 +0100)]
target/arm: Make CFSR register banked for v8M

Make the CFSR register banked if v8M security extensions are enabled.

Not all the bits in this register are banked: the BFSR
bits [15:8] are shared between S and NS, and we store them
in the NS copy of the register.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make MMFAR banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:54 +0000 (13:54 +0100)]
target/arm: Make MMFAR banked for v8M

Make the MMFAR register banked if v8M security extensions are
enabled.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make CCR register banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:54 +0000 (13:54 +0100)]
target/arm: Make CCR register banked for v8M

Make the CCR register banked if v8M security extensions are enabled.

This is slightly more complicated than the other "add banking"
patches because there is one bit in the register which is not
banked. We keep the live data in the NS copy of the register,
and adjust it on register reads and writes. (Since we don't
currently implement the behaviour that the bit controls, there
is nowhere else that needs to care.)

This patch includes the enforcement of the bits which are newly
RES1 in ARMv8M.

Signed-off-by: Peter Maydell <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make MPU_CTRL register banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:53 +0000 (13:54 +0100)]
target/arm: Make MPU_CTRL register banked for v8M

Make the MPU_CTRL register banked if v8M security extensions are
enabled.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make MPU_RNR register banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:53 +0000 (13:54 +0100)]
target/arm: Make MPU_RNR register banked for v8M

Make the MPU_RNR register banked if v8M security extensions are
enabled.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make MPU_RBAR, MPU_RLAR banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:53 +0000 (13:54 +0100)]
target/arm: Make MPU_RBAR, MPU_RLAR banked for v8M

Make the MPU registers MPU_MAIR0 and MPU_MAIR1 banked if v8M security
extensions are enabled.

We can freely add more items to vmstate_m_security without
breaking migration compatibility, because no CPU currently
has the ARM_FEATURE_M_SECURITY bit enabled and so this
subsection is not yet used by anything.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make MPU_MAIR0, MPU_MAIR1 registers banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:53 +0000 (13:54 +0100)]
target/arm: Make MPU_MAIR0, MPU_MAIR1 registers banked for v8M

Make the MPU registers MPU_MAIR0 and MPU_MAIR1 banked if v8M security
extensions are enabled.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make VTOR register banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:53 +0000 (13:54 +0100)]
target/arm: Make VTOR register banked for v8M

Make the VTOR register banked if v8M security extensions are enabled.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agonvic: Add NS alias SCS region
Peter Maydell [Thu, 7 Sep 2017 12:54:53 +0000 (13:54 +0100)]
nvic: Add NS alias SCS region

For v8M the range 0xe002e000..0xe002efff is an alias region which
for secure accesses behaves like a NonSecure access to the main
SCS region. (For nonsecure accesses including when the security
extension is not implemented, it is RAZ/WI.)

Signed-off-by: Peter Maydell <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make CONTROL register banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:53 +0000 (13:54 +0100)]
target/arm: Make CONTROL register banked for v8M

Make the CONTROL register banked if v8M security extensions are enabled.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make FAULTMASK register banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:52 +0000 (13:54 +0100)]
target/arm: Make FAULTMASK register banked for v8M

Make the FAULTMASK register banked if v8M security extensions are enabled.

Note that we do not yet implement the functionality of the new
AIRCR.PRIS bit (which allows the effect of the NS copy of FAULTMASK to
be restricted).

This patch includes the code to determine for v8M which copy
of FAULTMASK should be updated on exception exit; further
changes will be required to the exception exit code in general
to support v8M, so this is just a small piece of that.

The v8M ARM ARM introduces a notation where individual paragraphs
are labelled with R (for rule) or I (for information) followed
by a random group of subscript letters. In comments where we want
to refer to a particular part of the manual we use this convention,
which should be more stable across document revisions than using
section or page numbers.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make PRIMASK register banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:52 +0000 (13:54 +0100)]
target/arm: Make PRIMASK register banked for v8M

Make the PRIMASK register banked if v8M security extensions are enabled.

Note that we do not yet implement the functionality of the new
AIRCR.PRIS bit (which allows the effect of the NS copy of PRIMASK to
be restricted).

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Make BASEPRI register banked for v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:52 +0000 (13:54 +0100)]
target/arm: Make BASEPRI register banked for v8M

Make the BASEPRI register banked if v8M security extensions are enabled.

Note that we do not yet implement the functionality of the new
AIRCR.PRIS bit (which allows the effect of the NS copy of BASEPRI to
be restricted).

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Add MMU indexes for secure v8M
Peter Maydell [Thu, 7 Sep 2017 12:54:52 +0000 (13:54 +0100)]
target/arm: Add MMU indexes for secure v8M

Now that MPU lookups can return different results for v8M
when the CPU is in secure vs non-secure state, we need to
have separate MMU indexes; add the secure counterparts
to the existing three M profile MMU indexes.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Register second AddressSpace for secure v8M CPUs
Peter Maydell [Thu, 7 Sep 2017 12:54:52 +0000 (13:54 +0100)]
target/arm: Register second AddressSpace for secure v8M CPUs

If a v8M CPU supports the security extension then we need to
give it two AddressSpaces, the same way we do already for
an A profile core with EL3.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Add state field, feature bit and migration for v8M secure state
Peter Maydell [Thu, 7 Sep 2017 12:54:52 +0000 (13:54 +0100)]
target/arm: Add state field, feature bit and migration for v8M secure state

As the first step in implementing ARM v8M's security extension:
 * add a new feature bit ARM_FEATURE_M_SECURITY
 * add the CPU state field that indicates whether the CPU is
   currently in the secure state
 * add a migration subsection for this new state
   (we will add the Secure copies of banked register state
   to this subsection in later patches)
 * add a #define for the one new-in-v8M exception type
 * make the CPU debug log print S/NS status

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Implement new PMSAv8 behaviour
Peter Maydell [Thu, 7 Sep 2017 12:54:51 +0000 (13:54 +0100)]
target/arm: Implement new PMSAv8 behaviour

Implement the behavioural side of the new PMSAv8 specification.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agotarget/arm: Implement ARMv8M's PMSAv8 registers
Peter Maydell [Thu, 7 Sep 2017 12:54:51 +0000 (13:54 +0100)]
target/arm: Implement ARMv8M's PMSAv8 registers

As part of ARMv8M, we need to add support for the PMSAv8 MPU
architecture.

PMSAv8 differs from PMSAv7 both in register/data layout (for instance
using base and limit registers rather than base and size) and also in
behaviour (for example it does not have subregions); rather than
trying to wedge it into the existing PMSAv7 code and data structures,
we define separate ones.

This commit adds the data structures which hold the state for a
PMSAv8 MPU and the register interface to it.  The implementation of
the MPU behaviour will be added in a subsequent commit.

Signed-off-by: Peter Maydell <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Message-id: 1503414539[email protected]

7 years agohw/arm/allwinner-a10: Mark the allwinner-a10 device with user_creatable = false
Thomas Huth [Thu, 7 Sep 2017 12:54:51 +0000 (13:54 +0100)]
hw/arm/allwinner-a10: Mark the allwinner-a10 device with user_creatable = false

QEMU currently exits unexpectedly when the user accidentially
tries to do something like this:

$ aarch64-softmmu/qemu-system-aarch64 -S -M integratorcp -nographic
QEMU 2.9.93 monitor - type 'help' for more information
(qemu) device_add allwinner-a10
Unsupported NIC model: smc91c111

Exiting just due to a "device_add" should not happen. Looking closer
at the the realize and instance_init function of this device also
reveals that it is using serial_hds and nd_table directly there, so
this device is clearly not creatable by the user and should be marked
accordingly.

Signed-off-by: Thomas Huth <[email protected]>
Reviewed-by: Eduardo Habkost <[email protected]>
Message-id: 1503416789[email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
7 years agoxilinx_axidma: Convert to DEFINE_PROP_LINK
Fam Zheng [Thu, 7 Sep 2017 12:54:51 +0000 (13:54 +0100)]
xilinx_axidma: Convert to DEFINE_PROP_LINK

Signed-off-by: Fam Zheng <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: 20170905131149[email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
7 years agoxilinx_axienet: Convert to DEFINE_PROP_LINK
Fam Zheng [Thu, 7 Sep 2017 12:54:51 +0000 (13:54 +0100)]
xilinx_axienet: Convert to DEFINE_PROP_LINK

Signed-off-by: Fam Zheng <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: 20170905131149[email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
7 years agoxlnx_zynqmp: Convert to DEFINE_PROP_LINK
Fam Zheng [Thu, 7 Sep 2017 12:54:51 +0000 (13:54 +0100)]
xlnx_zynqmp: Convert to DEFINE_PROP_LINK

Signed-off-by: Fam Zheng <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: 20170905131149[email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
7 years agogicv3: Convert to DEFINE_PROP_LINK
Fam Zheng [Thu, 7 Sep 2017 12:54:51 +0000 (13:54 +0100)]
gicv3: Convert to DEFINE_PROP_LINK

Signed-off-by: Fam Zheng <[email protected]>
Message-id: 20170905131149[email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
7 years agoarmv7m: Convert armv7m.memory to DEFINE_PROP_LINK
Fam Zheng [Thu, 7 Sep 2017 12:54:51 +0000 (13:54 +0100)]
armv7m: Convert armv7m.memory to DEFINE_PROP_LINK

Signed-off-by: Fam Zheng <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: 20170905131149[email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
7 years agoarmv7m: Convert bitband.source-memory to DEFINE_PROP_LINK
Fam Zheng [Thu, 7 Sep 2017 12:54:50 +0000 (13:54 +0100)]
armv7m: Convert bitband.source-memory to DEFINE_PROP_LINK

Signed-off-by: Fam Zheng <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-id: 20170905131149[email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/rth/tags/pull-tcg-20170906' into staging
Peter Maydell [Thu, 7 Sep 2017 12:34:32 +0000 (13:34 +0100)]
Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20170906' into staging

Queued tcg patches

# gpg: Signature made Wed 06 Sep 2017 15:27:16 BST
# gpg:                using RSA key 0xAD1270CC4DD0279B
# gpg: Good signature from "Richard Henderson <[email protected]>"
# gpg:                 aka "Richard Henderson <[email protected]>"
# Primary key fingerprint: 9CB1 8DDA F8E8 49AD 2AFC  16A4 AD12 70CC 4DD0 279B

* remotes/rth/tags/pull-tcg-20170906:
  tcg/s390: Use slbgr for setcond le and leu
  tcg/s390: Use load-on-condition-2 facility
  tcg/s390: Use distinct-operands facility
  tcg/s390: Merge ori+xori facilities check to tcg_target_op_def
  tcg/s390: Merge add2i facilities check to tcg_target_op_def
  tcg/s390: Merge muli facilities check to tcg_target_op_def
  tcg/s390: Merge cmpi facilities check to tcg_target_op_def
  tcg/s390: Fully convert tcg_target_op_def
  disas/i386: Add disassembly of rorx
  disas/i386: Add disassembly of vex.0f38.f5
  disas/i386: Fix disassembly of two-byte vex prefixes
  tcg: Implement implicit ordering semantics
  tcg: Add tcg target default memory ordering
  tcg: Remove support for ia64 as host

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Peter Maydell [Thu, 7 Sep 2017 09:45:18 +0000 (10:45 +0100)]
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches

# gpg: Signature made Wed 06 Sep 2017 14:44:41 BST
# gpg:                using RSA key 0x7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <[email protected]>"
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream:
  qcow2: move qcow2_store_persistent_dirty_bitmaps() before cache flushing
  qemu-iotests: add 184 for throttle filter driver
  block: add throttle block filter driver
  block: convert ThrottleGroup to object with QOM
  block: tidy ThrottleGroupMember initializations
  block: add aio_context field in ThrottleGroupMember
  block: move ThrottleGroup membership to ThrottleGroupMember
  block: document semantics of bdrv_co_preadv|pwritev
  qcow: Check failure of bdrv_getlength() and bdrv_truncate()
  qcow: Change signature of get_cluster_offset()
  block: add default implementations for bdrv_co_get_block_status()
  block: remove bdrv_truncate callback in blkdebug
  block: remove unused bdrv_media_changed
  block: pass bdrv_* methods to bs->file by default in block filters

Signed-off-by: Peter Maydell <[email protected]>
7 years agoMerge remote-tracking branch 'remotes/juanquintela/tags/tests/20170906' into staging
Peter Maydell [Thu, 7 Sep 2017 08:59:17 +0000 (09:59 +0100)]
Merge remote-tracking branch 'remotes/juanquintela/tags/tests/20170906' into staging

tests/next for 20170906

# gpg: Signature made Wed 06 Sep 2017 12:42:29 BST
# gpg:                using RSA key 0xF487EF185872D723
# gpg: Good signature from "Juan Quintela <[email protected]>"
# gpg:                 aka "Juan Quintela <[email protected]>"
# Primary key fingerprint: 1899 FF8E DEBF 58CC EE03  4B82 F487 EF18 5872 D723

* remotes/juanquintela/tags/tests/20170906:
  tests: Make vmgenid test compile
  tests: Use real size for iov tests

Signed-off-by: Peter Maydell <[email protected]>
7 years agomigration: dump str in migrate_set_state trace
Peter Xu [Wed, 30 Aug 2017 08:32:01 +0000 (16:32 +0800)]
migration: dump str in migrate_set_state trace

Strings are more readable for debugging.

Reviewed-by: Dr. David Alan Gilbert <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
Message-Id: <1504081950[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
  Fixed up merge with 977c73

7 years agonbd: Use new qio_channel_*_all() functions
Eric Blake [Tue, 5 Sep 2017 19:11:14 +0000 (14:11 -0500)]
nbd: Use new qio_channel_*_all() functions

Rather than open-coding our own read/write-all functions, we
can make use of the recently-added qio code.  It slightly
changes the error message in one of the iotests.

Signed-off-by: Eric Blake <[email protected]>
Message-Id: <20170905191114[email protected]>
Reviewed-by: Daniel P. Berrange <[email protected]>
7 years agoio: Add new qio_channel_read{, v}_all_eof functions
Eric Blake [Tue, 5 Sep 2017 19:11:13 +0000 (14:11 -0500)]
io: Add new qio_channel_read{, v}_all_eof functions

Some callers want to distinguish between clean EOF (no bytes read)
vs. a short read (at least one byte read, but EOF encountered
before reaching the desired length), as it allows clients the
ability to do a graceful shutdown when a server shuts down at
defined safe points in the protocol, rather than treating all
shutdown scenarios as an error due to EOF.  However, we don't want
to require all callers to have to check for early EOF.  So add
another wrapper function that can be used by the callers that care
about the distinction.

Signed-off-by: Eric Blake <[email protected]>
Message-Id: <20170905191114[email protected]>
Acked-by: Daniel P. Berrange <[email protected]>
7 years agoio: Yield rather than wait when already in coroutine
Eric Blake [Tue, 5 Sep 2017 19:11:12 +0000 (14:11 -0500)]
io: Yield rather than wait when already in coroutine

The new qio_channel_{read,write}{,v}_all functions are documented
as yielding until data is available.  When used on a blocking
channel, this yield is done via qio_channel_wait() which spawns
a nested event loop under the hood (so it is that secondary loop
which yields as needed); but if we are already in a coroutine (at
which point QIO_CHANNEL_ERR_BLOCK is only possible if we are a
non-blocking channel), we want to yield the current coroutine
instead of spawning a nested event loop.

Signed-off-by: Eric Blake <[email protected]>
Message-Id: <20170905191114[email protected]>
Acked-by: Daniel P. Berrange <[email protected]>
[commit message updated]
Signed-off-by: Eric Blake <[email protected]>
This page took 0.086625 seconds and 4 git commands to generate.