History log of /openbmc/qemu/hw/intc/ (Results 1151 – 1175 of 1840)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
527d296f14-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Implement the virtual interface registers

Implement the read and write functions for the virtual interface of the
virtualization extensions in the GICv2.

One mirror region per CPU is

intc/arm_gic: Implement the virtual interface registers

Implement the read and write functions for the virtual interface of the
virtualization extensions in the GICv2.

One mirror region per CPU is also created, which maps to that specific
CPU id. This is required by the GIC architecture specification.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20180727095421.386-16-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

2c679ac714-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Wire the vCPU interface

Add the read/write functions to handle accesses to the vCPU interface.
Those accesses are forwarded to the real CPU interface, with the CPU id
being converted t

intc/arm_gic: Wire the vCPU interface

Add the read/write functions to handle accesses to the vCPU interface.
Those accesses are forwarded to the real CPU interface, with the CPU id
being converted to the corresponding vCPU id (vCPU id = CPU id +
GIC_NCPU).

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Message-id: 20180727095421.386-15-luc.michel@greensocs.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

7eb079ec14-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Implement virtualization extensions in gic_cpu_(read|write)

Implement virtualization extensions in the gic_cpu_read() and
gic_cpu_write() functions. Those are the last bits missing to

intc/arm_gic: Implement virtualization extensions in gic_cpu_(read|write)

Implement virtualization extensions in the gic_cpu_read() and
gic_cpu_write() functions. Those are the last bits missing to fully
support virtualization extensions in the CPU interface path.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20180727095421.386-14-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

02f2e22d14-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Implement virtualization extensions in gic_(deactivate|complete_irq)

Implement virtualization extensions in the gic_deactivate_irq() and
gic_complete_irq() functions.

When the guest w

intc/arm_gic: Implement virtualization extensions in gic_(deactivate|complete_irq)

Implement virtualization extensions in the gic_deactivate_irq() and
gic_complete_irq() functions.

When the guest writes an invalid vIRQ to V_EOIR or V_DIR, since the
GICv2 specification is not entirely clear here, we adopt the behaviour
observed on real hardware:
* When V_CTRL.EOIMode is false (EOI split is disabled):
- In case of an invalid vIRQ write to V_EOIR:
-> If some bits are set in H_APR, an invalid vIRQ write to V_EOIR
triggers a priority drop, and increments V_HCR.EOICount.
-> If V_APR is already cleared, nothing happen

- An invalid vIRQ write to V_DIR is ignored.

* When V_CTRL.EOIMode is true:
- In case of an invalid vIRQ write to V_EOIR:
-> If some bits are set in H_APR, an invalid vIRQ write to V_EOIR
triggers a priority drop.
-> If V_APR is already cleared, nothing happen

- An invalid vIRQ write to V_DIR increments V_HCR.EOICount.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Message-id: 20180727095421.386-13-luc.michel@greensocs.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

439badd614-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Implement virtualization extensions in gic_acknowledge_irq

Implement virtualization extensions in the gic_acknowledge_irq()
function. This function changes the state of the highest pri

intc/arm_gic: Implement virtualization extensions in gic_acknowledge_irq

Implement virtualization extensions in the gic_acknowledge_irq()
function. This function changes the state of the highest priority IRQ
from pending to active.

When the current CPU is a vCPU, modifying the state of an IRQ modifies
the corresponding LR entry. However if we clear the pending flag before
setting the active one, we lose track of the LR entry as it becomes
invalid. The next call to gic_get_lr_entry() will fail.

To overcome this issue, we call gic_activate_irq() before
gic_clear_pending(). This does not change the general behaviour of
gic_acknowledge_irq.

We also move the SGI case in gic_clear_pending_sgi() to enhance
code readability as the virtualization extensions support adds a if-else
level.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20180727095421.386-12-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

a1d7b8d814-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Implement virtualization extensions in gic_(activate_irq|drop_prio)

Implement virtualization extensions in gic_activate_irq() and
gic_drop_prio() and in gic_get_prio_from_apr_bits() ca

intc/arm_gic: Implement virtualization extensions in gic_(activate_irq|drop_prio)

Implement virtualization extensions in gic_activate_irq() and
gic_drop_prio() and in gic_get_prio_from_apr_bits() called by
gic_drop_prio().

When the current CPU is a vCPU:
- Use GIC_VIRT_MIN_BPR and GIC_VIRT_NR_APRS instead of their non-virt
counterparts,
- the vCPU APR is stored in the virtual interface, in h_apr.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20180727095421.386-11-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

86b350f014-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Add virtualization enabled IRQ helper functions

Add some helper functions to gic_internal.h to get or change the state
of an IRQ. When the current CPU is not a vCPU, the call is forwar

intc/arm_gic: Add virtualization enabled IRQ helper functions

Add some helper functions to gic_internal.h to get or change the state
of an IRQ. When the current CPU is not a vCPU, the call is forwarded to
the GIC distributor. Otherwise, it acts on the list register matching
the IRQ in the current CPU virtual interface.

gic_clear_active can have a side effect on the distributor, even in the
vCPU case, when the correponding LR has the HW field set.

Use those functions in the CPU interface code path to prepare for the
vCPU interface implementation.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20180727095421.386-10-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

3dd0471b14-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Refactor secure/ns access check in the CPU interface

An access to the CPU interface is non-secure if the current GIC instance
implements the security extensions, and the memory access

intc/arm_gic: Refactor secure/ns access check in the CPU interface

An access to the CPU interface is non-secure if the current GIC instance
implements the security extensions, and the memory access is actually
non-secure. Until then, it was checked with tests such as
if (s->security_extn && !attrs.secure) { ... }
in various places of the CPU interface code.

With the implementation of the virtualization extensions, those tests
must be updated to take into account whether we are in a vCPU interface
or not. This is because the exposed vCPU interface does not implement
security extensions.

This commits replaces all those tests with a call to the
gic_cpu_ns_access() function to check if the current access to the CPU
interface is non-secure. This function takes into account whether the
current CPU is a vCPU or not.

Note that this function is used only in the (v)CPU interface code path.
The distributor code path is left unchanged, as the distributor is not
exposed to vCPUs at all.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20180727095421.386-9-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

4a37e0e414-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Add virtualization extensions helper macros and functions

Add some helper macros and functions related to the virtualization
extensions to gic_internal.h.

The GICH_LR_* macros help ex

intc/arm_gic: Add virtualization extensions helper macros and functions

Add some helper macros and functions related to the virtualization
extensions to gic_internal.h.

The GICH_LR_* macros help extracting specific fields of a list register
value. The only tricky one is the priority field as only the MSB are
stored. The value must be shifted accordingly to obtain the correct
priority value.

gic_is_vcpu() and gic_get_vcpu_real_id() help with (v)CPU id manipulation
to abstract the fact that vCPU id are in the range
[ GIC_NCPU; (GIC_NCPU + num_cpu) [.

gic_lr_* and gic_virq_is_valid() help with the list registers.
gic_get_lr_entry() returns the LR entry for a given (vCPU, irq) pair. It
is meant to be used in contexts where we know for sure that the entry
exists, so we assert that entry is actually found, and the caller can
avoid the NULL check on the returned pointer.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20180727095421.386-8-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

7c2fffd214-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Add virtual interface register definitions

Add the register definitions for the virtual interface of the GICv2.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter

intc/arm_gic: Add virtual interface register definitions

Add the register definitions for the virtual interface of the GICv2.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20180727095421.386-7-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

5773c04914-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Add the virtualization extensions to the GIC state

Add the necessary parts of the virtualization extensions state to the
GIC state. We choose to increase the size of the CPU interfaces

intc/arm_gic: Add the virtualization extensions to the GIC state

Add the necessary parts of the virtualization extensions state to the
GIC state. We choose to increase the size of the CPU interfaces state to
add space for the vCPU interfaces (the GIC_NCPU_VCPU macro). This way,
we'll be able to reuse most of the CPU interface code for the vCPUs.

The only exception is the APR value, which is stored in h_apr in the
virtual interface state for vCPUs. This is due to some complications
with the GIC VMState, for which we don't want to break backward
compatibility. APRs being stored in 2D arrays, increasing the second
dimension would lead to some ugly VMState description. To avoid
that, we keep it in h_apr for vCPUs.

The vCPUs are numbered from GIC_NCPU to (GIC_NCPU * 2) - 1. The
`gic_is_vcpu` function help to determine if a given CPU id correspond to
a physical CPU or a virtual one.

For the in-kernel KVM VGIC, since the exposed VGIC does not implement
the virtualization extensions, we report an error if the corresponding
property is set to true.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20180727095421.386-6-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

50491c5614-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Remove some dead code and put some functions static

Some functions are now only used in arm_gic.c, put them static. Some of
them where only used by the NVIC implementation and are not

intc/arm_gic: Remove some dead code and put some functions static

Some functions are now only used in arm_gic.c, put them static. Some of
them where only used by the NVIC implementation and are not used
anymore, so remove them.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20180727095421.386-4-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

3bb0b03814-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Implement GICD_ISACTIVERn and GICD_ICACTIVERn registers

Implement GICD_ISACTIVERn and GICD_ICACTIVERn registers in the GICv2.
Those registers allow to set or clear the active state of

intc/arm_gic: Implement GICD_ISACTIVERn and GICD_ICACTIVERn registers

Implement GICD_ISACTIVERn and GICD_ICACTIVERn registers in the GICv2.
Those registers allow to set or clear the active state of an IRQ in the
distributor.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20180727095421.386-3-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

67ce697a14-Aug-2018 Luc Michel <luc.michel@greensocs.com>

intc/arm_gic: Refactor operations on the distributor

In preparation for the virtualization extensions implementation,
refactor the name of the functions and macros that act on the GIC
distributor to

intc/arm_gic: Refactor operations on the distributor

In preparation for the virtualization extensions implementation,
refactor the name of the functions and macros that act on the GIC
distributor to make that fact explicit. It will be useful to
differentiate them from the ones that will act on the virtual
interfaces.

Signed-off-by: Luc Michel <luc.michel@greensocs.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Sai Pavan Boddu <sai.pavan.boddu@xilinx.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20180727095421.386-2-luc.michel@greensocs.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

c4379b4814-Aug-2018 Julia Suvorova <jusual@mail.ru>

nvic: Change NVIC to support ARMv6-M

The differences from ARMv7-M NVIC are:
* ARMv6-M only supports up to 32 external interrupts
(configurable feature already). The ICTR is reserved.
* Active

nvic: Change NVIC to support ARMv6-M

The differences from ARMv7-M NVIC are:
* ARMv6-M only supports up to 32 external interrupts
(configurable feature already). The ICTR is reserved.
* Active Bit Register is reserved.
* ARMv6-M supports 4 priority levels against 256 in ARMv7-M.

Signed-off-by: Julia Suvorova <jusual@mail.ru>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

22ab346014-Aug-2018 Julia Suvorova <jusual@mail.ru>

arm: Add ARMv6-M programmer's model support

Forbid stack alignment change. (CCR)
Reserve FAULTMASK, BASEPRI registers.
Report any fault as a HardFault. Disable MemManage, BusFault and
UsageFault, so

arm: Add ARMv6-M programmer's model support

Forbid stack alignment change. (CCR)
Reserve FAULTMASK, BASEPRI registers.
Report any fault as a HardFault. Disable MemManage, BusFault and
UsageFault, so they always escalated to HardFault. (SHCSR)

Signed-off-by: Julia Suvorova <jusual@mail.ru>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 20180718095628.26442-1-jusual@mail.ru
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

7c9140af14-Aug-2018 Julia Suvorova <jusual@mail.ru>

nvic: Handle ARMv6-M SCS reserved registers

Handle SCS reserved registers listed in ARMv6-M ARM D3.6.1.
All reserved registers are RAZ/WI. ARM_FEATURE_M_MAIN is used for the
checks, because these re

nvic: Handle ARMv6-M SCS reserved registers

Handle SCS reserved registers listed in ARMv6-M ARM D3.6.1.
All reserved registers are RAZ/WI. ARM_FEATURE_M_MAIN is used for the
checks, because these registers are reserved in ARMv8-M Baseline too.

Signed-off-by: Julia Suvorova <jusual@mail.ru>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

341823c106-Aug-2018 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_common: Move gicd shift bug handling to gicv3_post_load

The code currently in gicv3_gicd_no_migration_shift_bug_post_load()
that handles migration from older QEMU versions with a p

hw/intc/arm_gicv3_common: Move gicd shift bug handling to gicv3_post_load

The code currently in gicv3_gicd_no_migration_shift_bug_post_load()
that handles migration from older QEMU versions with a particular
bug is misplaced. We need to run this after migration in all cases,
not just the cases where the "arm_gicv3/gicd_no_migration_shift_bug"
subsection is present, so it must go in a post_load hook for the
top level VMSD, not for the subsection. Move it.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-id: 20180806123445.1459-6-peter.maydell@linaro.org

show more ...

326049cc06-Aug-2018 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_common: Move post_load hooks to top-level VMSD

Contrary to the the impression given in docs/devel/migration.rst,
the migration code does not run the pre_load hook for a
subsection

hw/intc/arm_gicv3_common: Move post_load hooks to top-level VMSD

Contrary to the the impression given in docs/devel/migration.rst,
the migration code does not run the pre_load hook for a
subsection unless the subsection appears on the wire, and so
this is not a place where you can set the default value for
state for the "subsection not present" case. Instead this needs
to be done in a pre_load hook for whatever is the parent VMSD
of the subsection.

We got this wrong in two of the subsection definitions in
the GICv3 migration structs; fix this.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-id: 20180806123445.1459-5-peter.maydell@linaro.org

show more ...

adc4fda606-Aug-2018 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_common: Combine duplicate .subsections in vmstate_gicv3_cpu

Commit 6692aac411199064 accidentally introduced a second initialization
of the .subsections field of vmstate_gicv3_cpu,

hw/intc/arm_gicv3_common: Combine duplicate .subsections in vmstate_gicv3_cpu

Commit 6692aac411199064 accidentally introduced a second initialization
of the .subsections field of vmstate_gicv3_cpu, instead of adding
the new subsection to the existing list. The effect of this was
probably that migration of GICv3 with virtualization enabled was
broken (or alternatively that migration of ICC_SRE_EL1 was broken,
depending on which of the two initializers the compiler used).
Combine the two into a single list.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20180806123445.1459-3-peter.maydell@linaro.org

show more ...

78e9ddd706-Aug-2018 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3_common: Give no-migration-shift-bug subsection a needed function

Currently the migration code incorrectly treats a subsection with
no .needed function pointer as if it was the subs

hw/intc/arm_gicv3_common: Give no-migration-shift-bug subsection a needed function

Currently the migration code incorrectly treats a subsection with
no .needed function pointer as if it was the subsection list
terminator -- it is ignored and so is everything after it.
Work around this by giving vmstate_gicv3_gicd_no_migration_shift_bug
a 'needed' function that always returns true.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20180806123445.1459-2-peter.maydell@linaro.org

show more ...


/openbmc/qemu/VERSION
/openbmc/qemu/backends/cryptodev-vhost-user.c
/openbmc/qemu/block/file-posix.c
/openbmc/qemu/block/qapi.c
/openbmc/qemu/block/qcow.c
/openbmc/qemu/block/qcow2.c
/openbmc/qemu/docs/devel/testing.rst
/openbmc/qemu/hw/arm/iotkit.c
/openbmc/qemu/hw/i386/acpi-build.c
arm_gicv3_common.c
/openbmc/qemu/hw/misc/macio/cuda.c
/openbmc/qemu/hw/misc/macio/macio.c
/openbmc/qemu/hw/misc/macio/pmu.c
/openbmc/qemu/hw/misc/tz-mpc.c
/openbmc/qemu/hw/ppc/ppc440_pcix.c
/openbmc/qemu/hw/ppc/sam460ex.c
/openbmc/qemu/hw/s390x/sclp.c
/openbmc/qemu/hw/virtio/vhost.c
/openbmc/qemu/include/block/block.h
/openbmc/qemu/include/hw/i386/pc.h
/openbmc/qemu/linux-user/host/ppc64/safe-syscall.inc.S
/openbmc/qemu/linux-user/mmap.c
/openbmc/qemu/monitor.c
/openbmc/qemu/qapi/block-core.json
/openbmc/qemu/qemu-img-cmds.hx
/openbmc/qemu/qemu-img.c
/openbmc/qemu/qemu-img.texi
/openbmc/qemu/target/arm/helper.c
/openbmc/qemu/target/i386/cpu.c
/openbmc/qemu/target/i386/cpu.h
/openbmc/qemu/target/i386/machine.c
/openbmc/qemu/target/i386/misc_helper.c
/openbmc/qemu/target/i386/smm_helper.c
/openbmc/qemu/tcg/optimize.c
/openbmc/qemu/tests/acpi-test-data/pc/SRAT.dimmpxm
/openbmc/qemu/tests/acpi-test-data/pc/SRAT.memhp
/openbmc/qemu/tests/acpi-test-data/pc/SRAT.numamem
/openbmc/qemu/tests/acpi-test-data/q35/SRAT.dimmpxm
/openbmc/qemu/tests/acpi-test-data/q35/SRAT.memhp
/openbmc/qemu/tests/acpi-test-data/q35/SRAT.numamem
/openbmc/qemu/tests/qemu-iotests/082
/openbmc/qemu/tests/qemu-iotests/082.out
/openbmc/qemu/tests/qemu-iotests/103.out
/openbmc/qemu/tests/qemu-iotests/137.out
/openbmc/qemu/tests/qemu-iotests/226
/openbmc/qemu/tests/qemu-iotests/227
/openbmc/qemu/tests/qemu-iotests/227.out
/openbmc/qemu/tests/qemu-iotests/group
/openbmc/qemu/tests/tcg/multiarch/test-mmap.c
/openbmc/qemu/util/qemu-timer.c
942566ff27-Jul-2018 Peter Maydell <peter.maydell@linaro.org>

armv7m_nvic: Fix m-security subsection name

The vmstate save/load code insists that subsections of a VMState must
have names which include their parent VMState's name as a leading
substring. Unfort

armv7m_nvic: Fix m-security subsection name

The vmstate save/load code insists that subsections of a VMState must
have names which include their parent VMState's name as a leading
substring. Unfortunately it neither documents this nor checks it on
device init or state save, but instead fails state load with a
confusing error message ("Missing section footer for armv7m_nvic").

Fix the name of the m-security subsection of the NVIC, so that
state save/load works correctly for the security-enabled NVIC.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20180727113854.20283-2-peter.maydell@linaro.org

show more ...

1a5182c023-Jul-2018 Peter Maydell <peter.maydell@linaro.org>

target/arm: Escalate to correct HardFault when AIRCR.BFHFNMINS is set

When we escalate a v8M exception to HardFault, if AIRCR.BFHFNMINNS is
set then we need to decide whether it should become a secu

target/arm: Escalate to correct HardFault when AIRCR.BFHFNMINS is set

When we escalate a v8M exception to HardFault, if AIRCR.BFHFNMINNS is
set then we need to decide whether it should become a secure HardFault
or a nonsecure HardFault. We should always escalate to the same
target security state as the original exception. The current code
tries to test this using the 'secure' bool, which is not right because
that flag indicates whether the target security state only for
banked exceptions; the effect was that we were incorrectly escalating
always-secure exceptions like SecureFault to a nonsecure HardFault.

Fix this by defining, logging and using a new 'targets_secure' bool
which tracks the condition we actually want.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20180723123457.2038-1-peter.maydell@linaro.org

show more ...

042374c923-Jul-2018 Peter Maydell <peter.maydell@linaro.org>

hw/intc/arm_gicv3: Check correct HCR_EL2 bit when routing IRQ

In icc_dir_write() we were incorrectly checking HCR_EL2.FMO
when determining whether IRQ should be routed to EL2; this should
be HCR_EL2

hw/intc/arm_gicv3: Check correct HCR_EL2 bit when routing IRQ

In icc_dir_write() we were incorrectly checking HCR_EL2.FMO
when determining whether IRQ should be routed to EL2; this should
be HCR_EL2.IMO (compare the GICv3 pseudocode ICC_DIR_EL1[]).
Use the correct mask.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20180723180337.17378-1-peter.maydell@linaro.org

show more ...

1ddc9b9823-Jul-2018 Thomas Huth <thuth@redhat.com>

hw/intc/exynos4210_gic: Turn instance_init into realize function

The instance_init function of the "exynos4210.gic" device creates a
new "arm_gic" device and immediately realizes it with qdev_init_n

hw/intc/exynos4210_gic: Turn instance_init into realize function

The instance_init function of the "exynos4210.gic" device creates a
new "arm_gic" device and immediately realizes it with qdev_init_nofail().
This will leave a lot of object in the QOM tree during introspection of
the "exynos4210.gic" device, e.g. reproducible by starting QEMU like this:

qemu-system-aarch64 -M none -nodefaults -nographic -monitor stdio

And then by running "info qom-tree" at the HMP monitor, followed by
"device_add exynos4210.gic,help" and finally checking "info qom-tree"
again.

Also note that qdev_init_nofail() can exit QEMU in case of errors - and
this must never happen during an instance_init function, otherwise QEMU
could terminate unexpectedly during introspection of a device.

Since most of the code that follows the qdev_init_nofail() depends on
the realized "gicbusdev", the easiest solution to the problem is to
turn the whole instance_init function into a realize function instead.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-id: 1532337784-334-1-git-send-email-thuth@redhat.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...


/openbmc/qemu/VERSION
/openbmc/qemu/accel/tcg/translate-all.c
/openbmc/qemu/block/throttle-groups.c
/openbmc/qemu/docs/devel/tracing.txt
/openbmc/qemu/hw/arm/allwinner-a10.c
/openbmc/qemu/hw/arm/spitz.c
/openbmc/qemu/hw/arm/stm32f205_soc.c
/openbmc/qemu/hw/arm/xlnx-zynqmp.c
/openbmc/qemu/hw/char/serial.c
/openbmc/qemu/hw/core/hotplug.c
/openbmc/qemu/hw/core/qdev.c
/openbmc/qemu/hw/display/xlnx_dp.c
/openbmc/qemu/hw/i386/multiboot.c
/openbmc/qemu/hw/i386/pc.c
exynos4210_gic.c
/openbmc/qemu/hw/microblaze/xlnx-zynqmp-pmu.c
/openbmc/qemu/hw/misc/auxbus.c
/openbmc/qemu/hw/misc/hyperv_testdev.c
/openbmc/qemu/hw/net/e1000e_core.c
/openbmc/qemu/hw/net/e1000e_core.h
/openbmc/qemu/hw/riscv/riscv_hart.c
/openbmc/qemu/hw/riscv/sifive_e.c
/openbmc/qemu/hw/riscv/sifive_u.c
/openbmc/qemu/hw/riscv/spike.c
/openbmc/qemu/hw/riscv/virt.c
/openbmc/qemu/hw/scsi/virtio-scsi.c
/openbmc/qemu/hw/sd/bcm2835_sdhost.c
/openbmc/qemu/include/hw/hotplug.h
/openbmc/qemu/include/hw/misc/auxbus.h
/openbmc/qemu/linux-user/elfload.c
/openbmc/qemu/linux-user/ppc/signal.c
/openbmc/qemu/linux-user/qemu.h
/openbmc/qemu/linux-user/syscall.c
/openbmc/qemu/net/tap.c
/openbmc/qemu/po/Makefile
/openbmc/qemu/po/bg.po
/openbmc/qemu/po/de_DE.po
/openbmc/qemu/po/fr_FR.po
/openbmc/qemu/po/hu.po
/openbmc/qemu/po/it.po
/openbmc/qemu/po/messages.po
/openbmc/qemu/po/tr.po
/openbmc/qemu/po/zh_CN.po
/openbmc/qemu/qemu-options.hx
/openbmc/qemu/target/arm/helper.c
/openbmc/qemu/target/i386/arch_dump.c
/openbmc/qemu/target/i386/hyperv.c
/openbmc/qemu/target/i386/hyperv.h
/openbmc/qemu/target/i386/kvm-stub.c
/openbmc/qemu/target/i386/kvm.c
/openbmc/qemu/target/i386/kvm_i386.h
/openbmc/qemu/target/s390x/cpu_models.c
/openbmc/qemu/tcg/aarch64/tcg-target.inc.c
/openbmc/qemu/tests/vhost-user-test.c
/openbmc/qemu/trace/control.c
/openbmc/qemu/trace/control.h
/openbmc/qemu/util/qemu-option.c

1...<<41424344454647484950>>...74