04ca164ad3
hw/scsi: Rearrange meson.build
...
We will modify this file shortly. Re-arrange it slightly first,
declaring source sets first.
No logical change.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230524093744.88442-4-philmd@linaro.org >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
2023-06-23 02:54:44 -04:00
8f691f1cb7
hw/scsi: Introduce VHOST_SCSI_COMMON symbol in Kconfig
...
Instead of adding 'vhost-scsi-common.c' twice (for VHOST_SCSI and
VHOST_USER_SCSI), have it depend on VHOST_SCSI_COMMON, selected by
both symbols.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230524093744.88442-3-philmd@linaro.org >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
2023-06-23 02:54:44 -04:00
b3b408ffb9
softmmu: Introduce qemu_target_page_mask() helper
...
Since TARGET_PAGE_MASK is poisoned in target-agnostic code,
introduce the qemu_target_page_mask() helper to get this
value from target-agnostic code at runtime.
Reviewed-by: Thomas Huth <thuth@redhat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230524093744.88442-2-philmd@linaro.org >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
2023-06-23 02:54:44 -04:00
5c33f9783a
cryptodev-vhost-user: add asymmetric crypto support
...
Add asymmetric crypto support in vhost_user backend.
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com >
Message-Id: <20230516083139.2349744-1-gmuthukrishn@marvell.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-23 02:54:44 -04:00
bafe030832
hw/cxl/events: Add injection of Memory Module Events
...
These events include a copy of the device health information at the
time of the event. Actually using the emulated device health would
require a lot of controls to manipulate that state. Given the aim
of this injection code is to just test the flows when events occur,
inject the contents of the device health state as well.
Future work may add more sophisticate device health emulation
including direct generation of these records when events occur
(such as a temperature threshold being crossed). That does not
reduce the usefulness of this more basic generation of the events.
Acked-by: Markus Armbruster <armbru@redhat.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Reviewed-by: Ira Weiny <ira.weiny@intel.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230530133603.16934-8-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-23 02:54:40 -04:00
b90a324eda
hw/cxl/events: Add injection of DRAM events
...
Defined in CXL r3.0 8.2.9.2.1.2 DRAM Event Record, this event
provides information related to DRAM devices.
Example injection command in QMP:
{ "execute": "cxl-inject-dram-event",
"arguments": {
"path": "/machine/peripheral/cxl-mem0",
"log": "informational",
"flags": 1,
"dpa": 1000,
"descriptor": 3,
"type": 3,
"transaction-type": 192,
"channel": 3,
"rank": 17,
"nibble-mask": 37421234,
"bank-group": 7,
"bank": 11,
"row": 2,
"column": 77,
"correction-mask": [33, 44, 55,66]
}}
Acked-by: Markus Armbruster <armbru@redhat.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Reviewed-by: Ira Weiny <ira.weiny@intel.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230530133603.16934-7-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-22 18:55:14 -04:00
ea9b6d647f
hw/cxl/events: Add injection of General Media Events
...
To facilitate testing provide a QMP command to inject a general media
event. The event can be added to the log specified.
Signed-off-by: Ira Weiny <ira.weiny@intel.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Acked-by: Markus Armbruster <armbru@redhat.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230530133603.16934-6-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-22 18:55:14 -04:00
6676bb973b
hw/cxl/events: Add event interrupt support
...
Replace the stubbed out CXL Get/Set Event interrupt policy mailbox
commands. Enable those commands to control interrupts for each of the
event log types.
Skip the standard input mailbox length on the Set command due to DCD
being optional. Perform the checks separately.
Signed-off-by: Ira Weiny <ira.weiny@intel.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Reviewed-by: Davidlohr Bueso <dave@stgolabs.net >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230530133603.16934-5-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-22 18:55:14 -04:00
22d7e3be07
hw/cxl/events: Wire up get/clear event mailbox commands
...
CXL testing is benefited from an artificial event log injection
mechanism.
Add an event log infrastructure to insert, get, and clear events from
the various logs available on a device.
Replace the stubbed out CXL Get/Clear Event mailbox commands with
commands that operate on the new infrastructure.
Signed-off-by: Ira Weiny <ira.weiny@intel.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230530133603.16934-4-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-22 18:55:14 -04:00
2f6b8c8f42
hw/cxl: Move CXLRetCode definition to cxl_device.h
...
Following patches will need access to the mailbox return code
type so move it to the header.
Reviewed-by: Ira Weiny <ira.weiny@intel.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230530133603.16934-3-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-22 18:55:14 -04:00
d7b84ddc3b
hw/cxl/events: Add event status register
...
The device status register block was defined. However, there were no
individual registers nor any data wired up.
Define the event status register [CXL 3.0; 8.2.8.3.1] as part of the
device status register block. Wire up the register and initialize the
event status for each log.
To support CXL 3.0 the version of the device status register block needs
to be 2. Change the macro to allow for setting the version.
Signed-off-by: Ira Weiny <ira.weiny@intel.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230530133603.16934-2-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-22 18:55:14 -04:00
6bda41a69b
hw/cxl: Add clear poison mailbox command support.
...
Current implementation is very simple so many of the corner
cases do not exist (e.g. fragmenting larger poison list entries)
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Reviewed-by: Ira Weiny <ira.weiny@intel.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230526170010.574-5-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-22 18:55:14 -04:00
ff04b207a0
hw/cxl: Add poison injection via the mailbox.
...
Very simple implementation to allow testing of corresponding
kernel code. Note that for now we track each 64 byte section
independently. Whilst a valid implementation choice, it may
make sense to fuse entries so as to prove out more complex
corners of the kernel code.
Reviewed-by: Ira Weiny <ira.weiny@intel.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230526170010.574-4-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-22 18:55:14 -04:00
9547754f40
hw/cxl: QMP based poison injection support
...
Inject poison using QMP command cxl-inject-poison to add an entry to the
poison list.
For now, the poison is not returned CXL.mem reads, but only via the
mailbox command Get Poison List. So a normal memory read to an address
that is on the poison list will not yet result in a synchronous exception
(and similar for partial cacheline writes).
That is left for a future patch.
See CXL rev 3.0, sec 8.2.9.8.4.1 Get Poison list (Opcode 4300h)
Kernel patches to use this interface here:
https://lore.kernel.org/linux-cxl/cover.1665606782.git.alison.schofield@intel.com/
To inject poison using QMP (telnet to the QMP port)
{ "execute": "qmp_capabilities" }
{ "execute": "cxl-inject-poison",
"arguments": {
"path": "/machine/peripheral/cxl-pmem0",
"start": 2048,
"length": 256
}
}
Adjusted to select a device on your machine.
Note that the poison list supported is kept short enough to avoid the
complexity of state machine that is needed to handle the MORE flag.
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Reviewed-by: Ira Weiny <ira.weiny@intel.com >
Acked-by: Markus Armbruster <armbru@redhat.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230526170010.574-3-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-22 18:55:14 -04:00
14180d6221
bswap: Add the ability to store to an unaligned 24 bit field
...
CXL has 24 bit unaligned fields which need to be stored to. CXL is
specified as little endian.
Define st24_le_p() and the supporting functions to store such a field
from a 32 bit host native value.
The use of b, w, l, q as the size specifier is limiting. So "24" was
used for the size part of the function name.
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Ira Weiny <ira.weiny@intel.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230526170010.574-2-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-06-22 18:55:14 -04:00
b455ce4c2f
Merge tag 'q800-for-8.1-pull-request' of https://github.com/vivier/qemu-m68k into staging
...
Q800 branch pull request 20230622
Cleanup to introduce support of MacOS Classic
# -----BEGIN PGP SIGNATURE-----
#
# iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAmST/loSHGxhdXJlbnRA
# dml2aWVyLmV1AAoJEPMMOL0/L748dQcQAKjU2vMketVOc5jXCtF7Jej/F6j21kpk
# Wmt/XuR8FDeohHVyWvQ1quxcewn6DfA+aPx1xqnn0nRBcnuqT/g4IHdXFzwMUxMo
# R3CSUHhMbT/tv8gkbn0q+vg1DffGRr65tc+UUOSkyIttF0Lw6ZgZSoUIcUN4zCvk
# zx+Z8T7UEJl/EMGGe6awS2cuCZcFB4pdLzkKUKOrAtaJ35eBnBPTClfijHwW7c+5
# tsiH/O/AenRP4oxYu/r4Z2tsYTSIkU8a5MAFQNxEIuupbrLDYixoV3yS7NuR9Ylg
# KurOLqdNIlW4vhH2080JijMm1JeX9oXboPc5XMe69v+jFEcdBbpKLvd8ryIhG9SA
# RItGkTJDOBp9ALho9rdQDH/W3JxSDX3ohsDVdn8e3nCR9UBRIlO/OFrLS73siHcD
# mOatC1mMjZwo+6/liTQwhKvCjSkQp+vh7bw/+zhyprmHkkZXs9FASr8EGLrryq4G
# 5wV0qIyNmRrpRXBGcMKGlnmXZ4CZ1XqcGL9xvG5VYVImcjJMEJBBs2aNYLrW1d4Q
# 8FkuqeFunRIf5LcG2EMBgBnIBA28Rgm5AtUMAeu6N8kM5oLYG8mFPOevvN4Da8Mp
# Fluyjtl4vT6xwqV4l0dGcxYtHnV98j7oXXuKx7g2L5ko7l7ZpfrNbkgF9bD4VnWv
# 7HTL0KK8nLEs
# =f/mF
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu 22 Jun 2023 09:55:06 AM CEST
# gpg: using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C
# gpg: issuer "laurent@vivier.eu "
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com >" [undefined]
# gpg: aka "Laurent Vivier <laurent@vivier.eu >" [undefined]
# gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com >" [undefined]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg: There is no indication that the signature belongs to the owner.
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C
* tag 'q800-for-8.1-pull-request' of https://github.com/vivier/qemu-m68k : (24 commits)
mac_via: fix rtc command decoding for the PRAM seconds registers
mac_via: fix rtc command decoding from PRAM addresses 0x0 to 0xf
q800: move macfb device to Q800MachineState
q800: don't access Nubus bus directly from the mac-nubus-bridge device
q800: move mac-nubus-bridge device to Q800MachineState
q800: move SWIM device to Q800MachineState
q800: move ESP device to Q800MachineState
q800: move escc_orgate device to Q800MachineState
q800: move ESCC device to Q800MachineState
q800: move dp8393x device to Q800MachineState
hw/net/dp8393x.c: move TYPE_DP8393X and dp8393xState into dp8393x.h
q800: move VIA2 device to Q800MachineState
q800: move VIA1 device to Q800MachineState
q800: reimplement mac-io region aliasing using IO memory region
q800: introduce mac-io container memory region
q800: move GLUE device to Q800MachineState
q800-glue.c: switch TypeInfo registration to use DEFINE_TYPES() macro
q800: move GLUE device into separate q800-glue.c file
q800: move ROM memory region to Q800MachineState
q800: move CPU object into Q800MachineState
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-06-22 10:18:32 +02:00
532009054b
mac_via: fix rtc command decoding for the PRAM seconds registers
...
Analysis of the MacOS toolbox ROM code shows that on startup it attempts 2
separate reads of the seconds registers with commands 0x9d...0x91 followed by
0x8d..0x81 without resetting the command to its initial value. The PRAM seconds
value is only accepted when the values of the 2 separate reads match.
From this we conclude that bit 4 of the rtc command is not decoded or we don't
care about its value when reading the PRAM seconds registers. Implement this
decoding change so that both reads return successfully which allows the MacOS
toolbox ROM to correctly set the date/time.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-25-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:31:18 +02:00
ce47d531c3
mac_via: fix rtc command decoding from PRAM addresses 0x0 to 0xf
...
A comparison between the rtc command table included in the comment and the code
itself shows that the decoding for PRAM addresses 0x0 to 0xf is being done on
the raw command, and not the shifted version held in value.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-24-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:30:44 +02:00
7a1f3acb3f
q800: move macfb device to Q800MachineState
...
Also change the instantiation of the macfb device to use object_initialize_child().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-23-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:30:11 +02:00
464085e8f6
q800: don't access Nubus bus directly from the mac-nubus-bridge device
...
Instead use the qdev_get_child_bus() function which is intended for this exact
purpose.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230621085353.113233-22-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:29:37 +02:00
36df1c5a63
q800: move mac-nubus-bridge device to Q800MachineState
...
Also change the instantiation of the mac-nubus-bridge device to use
object_initialize_child() and map the Nubus address space using
memory_region_add_subregion() instead of sysbus_mmio_map().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230621085353.113233-21-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:29:04 +02:00
01f35a4f1c
q800: move SWIM device to Q800MachineState
...
Also change the instantiation of the SWIM device to use object_initialize_child().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-20-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:28:30 +02:00
e78d17ca7d
q800: move ESP device to Q800MachineState
...
Also change the instantiation of the ESP device to use object_initialize_child().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-19-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:27:54 +02:00
1a7a3f004c
q800: move escc_orgate device to Q800MachineState
...
Also change the instantiation of the escc_orgate device to use object_initialize_child().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-18-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:27:21 +02:00
836126c773
q800: move ESCC device to Q800MachineState
...
Also change the instantiation of the ESCC device to use object_initialize_child().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-17-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:26:47 +02:00
804ae67ee6
q800: move dp8393x device to Q800MachineState
...
Also change the instantiation of the dp8393x device to use object_initialize_child().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
CC: Jason Wang <jasowang@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-16-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:26:13 +02:00
2db48d0364
hw/net/dp8393x.c: move TYPE_DP8393X and dp8393xState into dp8393x.h
...
This is to enable them to be used outside of dp8393x.c.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
CC: Jason Wang <jasowang@redhat.com >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230621085353.113233-15-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:25:40 +02:00
d7942e166a
q800: move VIA2 device to Q800MachineState
...
Also change the instantiation of the VIA2 device to use object_initialize_child().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-14-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:25:05 +02:00
6d32c0643f
q800: move VIA1 device to Q800MachineState
...
Also change the instantiation of the VIA1 device to use object_initialize_child().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-13-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:24:31 +02:00
f18a288632
q800: reimplement mac-io region aliasing using IO memory region
...
The current use of aliased memory regions causes us 2 problems: firstly the
output of "info qom-tree" is absolutely huge and difficult to read, and
secondly we have already reached the internal limit for memory regions as
adding any new memory region into the mac-io region causes QEMU to assert
with "phys_section_add: Assertion `map->sections_nb < TARGET_PAGE_SIZE'
failed".
Implement the mac-io region aliasing using a single IO memory region that
applies IO_SLICE_MASK representing the maximum size of the aliased region and
then forwarding the access to the existing mac-io memory region using the
address space API.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-12-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:23:56 +02:00
7527c52fd0
q800: introduce mac-io container memory region
...
Move all devices from the IO region to within the container in preparation
for updating the IO aliasing mechanism.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230621085353.113233-11-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:23:23 +02:00
1ecc6ec1ff
q800: move GLUE device to Q800MachineState
...
Also change the instantiation of the GLUE device to use object_initialize_child().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-10-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:22:49 +02:00
101b4764c7
q800-glue.c: switch TypeInfo registration to use DEFINE_TYPES() macro
...
The use of the DEFINE_TYPES() macro will soon be recommended over the use of
calling type_init() directly.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230621085353.113233-9-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:22:15 +02:00
8e0932802f
q800: move GLUE device into separate q800-glue.c file
...
This will allow the q800-glue.h header to be included separately so that the
GLUE device can be referenced externally.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230621085353.113233-8-mark.cave-ayland@ilande.co.uk >
[lv: update comment]
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:21:57 +02:00
0b9b41fb8b
q800: move ROM memory region to Q800MachineState
...
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-7-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:00:12 +02:00
36e2e338b3
q800: move CPU object into Q800MachineState
...
Also change the instantiation of the CPU to use object_initialize_child()
followed by a separate realisation.
Restrict valid CPU types to m68040.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230621085353.113233-6-mark.cave-ayland@ilande.co.uk >
[lv: update commit message]
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 09:00:00 +02:00
1a514d3a8a
q800: rename q800_init() to q800_machine_init()
...
This will enable us later to distinguish between QOM initialisation and machine
initialisation.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230621085353.113233-5-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 08:57:02 +02:00
a8019229c4
q800: introduce Q800MachineState
...
This provides an overall container and owner for Machine-related objects such
as MemoryRegions.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230621085353.113233-4-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 08:57:02 +02:00
cbba124319
q800: add missing space after parent object in GLUEState
...
This brings GLUEState in line with our current QOM guidelines.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Message-Id: <20230621085353.113233-3-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 08:57:02 +02:00
26fcbf0022
q800: fix up minor spacing issues in hw_compat_q800 GlobalProperty array
...
Ensure there is a space before the final closing brace for all global
properties.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Reviewed-by: Laurent Vivier <laurent@vivier.eu >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230621085353.113233-2-mark.cave-ayland@ilande.co.uk >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-06-22 08:57:02 +02:00
67fe6ae41d
Merge tag 'pull-tricore-20230621-1' of https://github.com/bkoppelmann/qemu into staging
...
- Implement privilege levels for TriCore
- Fix missing REG_PAIR() for insns using two 32 regs
- Fix erroneously saving PSW.CDC on CALL insns
- Added some missing v1.6.2 insns
# -----BEGIN PGP SIGNATURE-----
#
# iQJTBAABCgA9FiEEbmNqfoPy3Qz6bm43CtLGOWtpyhQFAmSTIWsfHGtiYXN0aWFu
# QG1haWwudW5pLXBhZGVyYm9ybi5kZQAKCRAK0sY5a2nKFEVCEACQFRGj/7ADOWm3
# lhkHGgkwpTgx+YKgeI4rfQ5/AKie9b7BUNljPVp1m2AvPFHU/r/0POzziCTDM+Ty
# M90h5gsEgxNRRVS1T+VkfFTKop7yImo48niDBF4mByP9DZGweCvGEvPD2g/FYvLP
# 0Up13F0NiWKMvocKp/jjI5qejpJqwtn1hjWHTpEXya3u+K/iEku1alI72Xo2oMKW
# pKW2iO/mC4cuEzOdpZt4LSzs9ZMsVpFzVn81VIda9CU2rlSpu+oQevgdWWJhgZGa
# 520JnIsrervsJumBWPxh9R0nrjuhHu34I4HXD38eGhD+Ioz2DQnHy2bA99pIVR7B
# qtHoDNhl7wqWgXBqntS9HvnvDAFyYdVM6aLqw9C7AxKXdRBuxy14R3/hrwMZghRs
# vYx3GUcFHSMJT1tkc8a/P14/mz5SB6/cdjVgPQtTCPBJccly4oc4EG3qn7wYqowZ
# Pbq48h+3+QZ7BsC9sT2AiPq+AmLjxRZRq7SE6YrYrjRDIJz/3IoTR600KW5XsFsj
# gZu/SYWdbNXAVr4c7CCg77lXXQ2/GhPHgCYFjL3djIKwlPP79bhT4cvLXK71yF/4
# 3RcCBt9kRggxDz6E/4I+u5cE4oMbyN1f6AoIn80GUheDstWMACYph5RhbIskxRhY
# PWwJ8ML0c7SOy0A74UbCT82gn1He1A==
# =IKrz
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed 21 Jun 2023 06:12:27 PM CEST
# gpg: using RSA key 6E636A7E83F2DD0CFA6E6E370AD2C6396B69CA14
# gpg: issuer "kbastian@mail.uni-paderborn.de "
# gpg: Good signature from "Bastian Koppelmann <kbastian@mail.uni-paderborn.de >" [undefined]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg: There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 6E63 6A7E 83F2 DD0C FA6E 6E37 0AD2 C639 6B69 CA14
* tag 'pull-tricore-20230621-1' of https://github.com/bkoppelmann/qemu :
target/tricore: Fix ICR.IE offset in RESTORE insn
target/tricore: Honour privilege changes on PSW write
target/tricore: Implement privilege level for all insns
target/tricore: Introduce priv tb flag
target/tricore: Indirect jump insns use tcg_gen_lookup_and_goto_ptr()
target/tricore: ENABLE exit to main-loop
target/tricore: Introduce DISAS_TARGET_EXIT
target/tricore: Fix RR_JLI clobbering reg A[11]
target/tricore: Fix helper_ret() not correctly restoring PSW
target/tricore: Add CHECK_REG_PAIR() for insn accessing 64 bit regs
target/tricore: Correctly fix saving PSW.CDE to CSA on call
target/tricore: Fix out-of-bounds index in imask instruction
target/tricore: Add DISABLE insn variant
target/tricore: Implement SYCSCALL insn
target/tricore: Add shuffle insn
target/tricore: Add crc32.b insn
target/tricore: Add crc32l.w insn
target/tricore: Add LHA insn
target/tricore: Add popcnt.w insn
target/tricore: Introduce ISA 1.6.2 feature
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-06-21 20:08:48 +02:00
a9c37abdff
target/tricore: Fix ICR.IE offset in RESTORE insn
...
from ISA v1.6.1 onwards the bit position of ICR.IE changed.
ctx->icr_ie_offset contains the correct value for the ISA version used
by the vCPU. We also need to exit this tb here, as we might have enabled
interrupts.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Message-Id: <20230621142302.1648383-9-kbastian@mail.uni-paderborn.de >
2023-06-21 18:09:54 +02:00
19a18edd88
target/tricore: Honour privilege changes on PSW write
...
the CPU can change the privilege level by writing the corresponding bits
in PSW. If this happens all instructions after this 'mtcr' in the TB are
translated with the wrong privilege level. So we have to exit to the
cpu_loop() and start translating again with the new privilege level.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Message-Id: <20230621142302.1648383-8-kbastian@mail.uni-paderborn.de >
2023-06-21 18:09:54 +02:00
57b9c589b6
target/tricore: Implement privilege level for all insns
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Message-Id: <20230621142302.1648383-7-kbastian@mail.uni-paderborn.de >
2023-06-21 18:09:54 +02:00
878d1b6a90
target/tricore: Introduce priv tb flag
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Message-Id: <20230621142302.1648383-6-kbastian@mail.uni-paderborn.de >
2023-06-21 18:09:54 +02:00
d8f466af7c
target/tricore: Indirect jump insns use tcg_gen_lookup_and_goto_ptr()
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Message-Id: <20230621142302.1648383-5-kbastian@mail.uni-paderborn.de >
2023-06-21 18:09:54 +02:00
2dbd73bf17
target/tricore: ENABLE exit to main-loop
...
so we can recognize exceptions after re-enabling interrupts.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reported-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Message-Id: <20230621142302.1648383-4-kbastian@mail.uni-paderborn.de >
2023-06-21 18:09:54 +02:00
1706e04f6e
target/tricore: Introduce DISAS_TARGET_EXIT
...
this replaces all calls to tcg_gen_exit_tb() and moves them to
tricore_tb_stop().
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Message-Id: <20230621142302.1648383-3-kbastian@mail.uni-paderborn.de >
2023-06-21 18:09:54 +02:00
8da70480f5
target/tricore: Fix RR_JLI clobbering reg A[11]
...
if A[r1] == A[11], then we would overwrite the destination address of
the jump with the return address.
Reported-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Message-Id: <20230621142302.1648383-2-kbastian@mail.uni-paderborn.de >
2023-06-21 18:09:54 +02:00
82736612e7
target/tricore: Fix helper_ret() not correctly restoring PSW
...
We are always taking the TRICORE_FEATURE_13 branch as every CPU has TRICORE_FEATURE_13.
For CPUs with ISA > 1.3 we have to take the else branch.
We fix this by inverting the condition. We check for
TRICORE_FEATURE_131, which every CPU except TRICORE_FEATURE_13 CPUs
have.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1700
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de >
Message-Id: <20230612113245.56667-5-kbastian@mail.uni-paderborn.de >
2023-06-21 18:09:54 +02:00