mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
ppc queue :
* debug facility improvements * timebase and decrementer fixes * record-replay fixes * TCG fixes * XIVE model improvements for multichip -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmT4WKoACgkQUaNDx8/7 7KHjOg//bwENCptopnvX5XVTdGLRgBKoMWPkQhWPv4aHYz4t+bxHVWopdMU7i0aL hge+ZCCkMKsg2rADczbpWytAvC3vo1Pn4zZhZNQuEvYKIpiWVN6hSflmXWP/bN1I AGHlptKvNYKlPfGsmzZ2OZ2yItzrOwKFC/PnPSEc6dxjWfe9hEwzApxaAkOfX8wf C+oH8DPvFmh3PH3rI4psCn/xYtxAPW1zosBtgT7Ii1XreABMHLIfIpOmPPh1yF0d J7BgBdmxIvsN+syH/vh5jTtU4N/gQVorwyds9MX82Y3j0roxBVVLqH8rFjJA3Jsq c/g8WTi1hHiDd8G4m1JcLI1VAhsgh1KhqG9pDaSdQXhP0E4p8N/XjxOR5ro+KxM3 Dz/Q77VoEKuat+AXg71kc68i11CninhTVSyGnjI80ISWWYvHFQ2Sv8J9U6sS/d0m +fo6hed7DDgfXg4OMtedF4HMmc6JAfm9eBzHUoanaoIzX0vX6vetXeMfWh6iceYW KNcQuUi3Pvvh/AjE36jusqTkbTleP5Yo4OKNJz4pEP4sU2wQPYU32Lo7Kg7p4WPA j+emWmWX4gcn9zTvm2LPYwkdgQ5HgigUJzq9i9qlMqfOOCpRwAsE7V0KxyV0NwDT cAAOBCdNm4t94Ni3KEING7xuDzERvJ7H2D6uRQjVsre8cMUO0QE= =BUg6 -----END PGP SIGNATURE----- Merge tag 'pull-ppc-20230906' of https://github.com/legoater/qemu into staging ppc queue : * debug facility improvements * timebase and decrementer fixes * record-replay fixes * TCG fixes * XIVE model improvements for multichip # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmT4WKoACgkQUaNDx8/7 # 7KHjOg//bwENCptopnvX5XVTdGLRgBKoMWPkQhWPv4aHYz4t+bxHVWopdMU7i0aL # hge+ZCCkMKsg2rADczbpWytAvC3vo1Pn4zZhZNQuEvYKIpiWVN6hSflmXWP/bN1I # AGHlptKvNYKlPfGsmzZ2OZ2yItzrOwKFC/PnPSEc6dxjWfe9hEwzApxaAkOfX8wf # C+oH8DPvFmh3PH3rI4psCn/xYtxAPW1zosBtgT7Ii1XreABMHLIfIpOmPPh1yF0d # J7BgBdmxIvsN+syH/vh5jTtU4N/gQVorwyds9MX82Y3j0roxBVVLqH8rFjJA3Jsq # c/g8WTi1hHiDd8G4m1JcLI1VAhsgh1KhqG9pDaSdQXhP0E4p8N/XjxOR5ro+KxM3 # Dz/Q77VoEKuat+AXg71kc68i11CninhTVSyGnjI80ISWWYvHFQ2Sv8J9U6sS/d0m # +fo6hed7DDgfXg4OMtedF4HMmc6JAfm9eBzHUoanaoIzX0vX6vetXeMfWh6iceYW # KNcQuUi3Pvvh/AjE36jusqTkbTleP5Yo4OKNJz4pEP4sU2wQPYU32Lo7Kg7p4WPA # j+emWmWX4gcn9zTvm2LPYwkdgQ5HgigUJzq9i9qlMqfOOCpRwAsE7V0KxyV0NwDT # cAAOBCdNm4t94Ni3KEING7xuDzERvJ7H2D6uRQjVsre8cMUO0QE= # =BUg6 # -----END PGP SIGNATURE----- # gpg: Signature made Wed 06 Sep 2023 06:47:06 EDT # gpg: using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1 # gpg: Good signature from "Cédric Le Goater <clg@redhat.com>" [unknown] # gpg: aka "Cédric Le Goater <clg@kaod.org>" [unknown] # 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: A0F6 6548 F048 95EB FE6B 0B60 51A3 43C7 CFFB ECA1 * tag 'pull-ppc-20230906' of https://github.com/legoater/qemu: (35 commits) ppc/xive: Add support for the PC MMIOs ppc/xive: Handle END triggers between chips with MMIOs ppc/xive: Introduce a new XiveRouter end_notify() handler ppc/xive: Use address_space routines to access the machine RAM target/ppc: Fix the order of kvm_enable judgment about kvmppc_set_interrupt() hw/ppc/e500: fix broken snapshot replay target/ppc: Flush inputs to zero with NJ in ppc_store_vscr target/ppc: Fix LQ, STQ register-pair order for big-endian tests/avocado: ppc64 reverse debugging tests for pseries and powernv tests/avocado: reverse-debugging cope with re-executing breakpoints tests/avocado: boot ppc64 pseries replay-record test to Linux VFS mount spapr: Fix record-replay machine reset consuming too many events spapr: Fix machine reset deadlock from replay-record target/ppc: Fix timebase reset with record-replay target/ppc: Fix CPU reservation migration for record-replay hw/ppc: Read time only once to perform decrementer write hw/ppc: Reset timebase facilities on machine reset target/ppc: Migrate DECR SPR hw/ppc: Always store the decrementer value target/ppc: Sign-extend large decrementer to 64-bits ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
269e60635a
34 changed files with 925 additions and 205 deletions
|
@ -255,8 +255,7 @@ class ReplayKernelNormal(ReplayKernelBase):
|
|||
kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
|
||||
|
||||
kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=hvc0'
|
||||
# icount is not good enough for PPC64 for complete boot yet
|
||||
console_pattern = 'Kernel command line: %s' % kernel_command_line
|
||||
console_pattern = 'VFS: Cannot open root device'
|
||||
self.run_rr(kernel_path, kernel_command_line, console_pattern)
|
||||
|
||||
def test_ppc64_powernv(self):
|
||||
|
|
|
@ -150,16 +150,33 @@ class ReverseDebugging(LinuxKernelTest):
|
|||
self.check_pc(g, addr)
|
||||
logger.info('found position %x' % addr)
|
||||
|
||||
logger.info('seeking to the end (icount %s)' % (last_icount - 1))
|
||||
vm.qmp('replay-break', icount=last_icount - 1)
|
||||
# continue - will return after pausing
|
||||
g.cmd(b'c', b'T02thread:01;')
|
||||
# visit the recorded instruction in forward order
|
||||
logger.info('stepping forward')
|
||||
for addr in steps:
|
||||
self.check_pc(g, addr)
|
||||
self.gdb_step(g)
|
||||
logger.info('found position %x' % addr)
|
||||
|
||||
# set breakpoints for the instructions just stepped over
|
||||
logger.info('setting breakpoints')
|
||||
for addr in steps:
|
||||
# hardware breakpoint at addr with len=1
|
||||
g.cmd(b'Z1,%x,1' % addr, b'OK')
|
||||
|
||||
# this may hit a breakpoint if first instructions are executed
|
||||
# again
|
||||
logger.info('continuing execution')
|
||||
vm.qmp('replay-break', icount=last_icount - 1)
|
||||
# continue - will return after pausing
|
||||
# This could stop at the end and get a T02 return, or by
|
||||
# re-executing one of the breakpoints and get a T05 return.
|
||||
g.cmd(b'c')
|
||||
if self.vm_get_icount(vm) == last_icount - 1:
|
||||
logger.info('reached the end (icount %s)' % (last_icount - 1))
|
||||
else:
|
||||
logger.info('hit a breakpoint again at %x (icount %s)' %
|
||||
(self.get_pc(g), self.vm_get_icount(vm)))
|
||||
|
||||
logger.info('running reverse continue to reach %x' % steps[-1])
|
||||
# reverse continue - will return after stopping at the breakpoint
|
||||
g.cmd(b'bc', b'T05thread:01;')
|
||||
|
@ -216,3 +233,32 @@ class ReverseDebugging_AArch64(ReverseDebugging):
|
|||
|
||||
self.reverse_debugging(
|
||||
args=('-kernel', kernel_path))
|
||||
|
||||
class ReverseDebugging_ppc64(ReverseDebugging):
|
||||
"""
|
||||
:avocado: tags=accel:tcg
|
||||
"""
|
||||
|
||||
REG_PC = 0x40
|
||||
|
||||
# unidentified gitlab timeout problem
|
||||
@skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
|
||||
def test_ppc64_pseries(self):
|
||||
"""
|
||||
:avocado: tags=arch:ppc64
|
||||
:avocado: tags=machine:pseries
|
||||
"""
|
||||
# SLOF branches back to its entry point, which causes this test
|
||||
# to take the 'hit a breakpoint again' path. That's not a problem,
|
||||
# just slightly different than the other machines.
|
||||
self.endian_is_le = False
|
||||
self.reverse_debugging()
|
||||
|
||||
@skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab')
|
||||
def test_ppc64_powernv(self):
|
||||
"""
|
||||
:avocado: tags=arch:ppc64
|
||||
:avocado: tags=machine:powernv
|
||||
"""
|
||||
self.endian_is_le = False
|
||||
self.reverse_debugging()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue