From: David Hildenbrand <david@redhat.com>
To: Ilya Leoshkevich <iii@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Sven Schnelle <svens@linux.ibm.com>,
kvm@vger.kernel.org, linux-s390@vger.kernel.org,
linux-kernel@vger.kernel.org,
Jens Freimann <jfreimann@redhat.com>
Subject: Re: [PATCH v2 1/6] KVM: s390: interrupt: Fix single-stepping into interrupt handlers
Date: Mon, 24 Jul 2023 10:56:56 +0200 [thread overview]
Message-ID: <dba4395d-400a-7bea-5eba-a44cab80ce0e@redhat.com> (raw)
In-Reply-To: <5394773f1d872f086625439cc515c50d2374a161.camel@linux.ibm.com>
On 24.07.23 10:42, Ilya Leoshkevich wrote:
> On Mon, 2023-07-24 at 10:22 +0200, David Hildenbrand wrote:
>> On 21.07.23 13:57, Ilya Leoshkevich wrote:
>>> After single-stepping an instruction that generates an interrupt,
>>> GDB
>>> ends up on the second instruction of the respective interrupt
>>> handler.
>>>
>>> The reason is that vcpu_pre_run() manually delivers the interrupt,
>>> and
>>> then __vcpu_run() runs the first handler instruction using the
>>> CPUSTAT_P flag. This causes a KVM_SINGLESTEP exit on the second
>>> handler
>>> instruction.
>>>
>>> Fix by delaying the KVM_SINGLESTEP exit until after the manual
>>> interrupt delivery.
>>>
>>> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
>>> ---
>>> arch/s390/kvm/interrupt.c | 10 ++++++++++
>>> arch/s390/kvm/kvm-s390.c | 4 ++--
>>> 2 files changed, 12 insertions(+), 2 deletions(-)
>
> [...]
>>
>
>> Can we add a comment like
>>
>> /*
>> * We delivered at least one interrupt and modified the PC. Force a
>> * singlestep event now.
>> */
>
> Ok, will do.
>
>>> + if (delivered && guestdbg_sstep_enabled(vcpu)) {
>>> + struct kvm_debug_exit_arch *debug_exit = &vcpu-
>>>> run->debug.arch;
>>> +
>>> + debug_exit->addr = vcpu->arch.sie_block->gpsw.addr;
>>> + debug_exit->type = KVM_SINGLESTEP;
>>> + vcpu->guest_debug |= KVM_GUESTDBG_EXIT_PENDING;
>>> }
>>
>> I do wonder if we, instead, want to do this whenever we modify the
>> PSW.
>>
>> That way we could catch any PC changes and only have to add checks
>> for
>> guestdbg_exit_pending().
>
> Wouldn't this break a corner case where the first instruction of the
> interrupt handler causes the same interrupt?
Could be, there are many possible corner cases (PGM interrupt at the
first instruction of PGM interrupt handler -- our PSW address might not
even change)
--
Cheers,
David / dhildenb
next prev parent reply other threads:[~2023-07-24 8:58 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-21 11:57 [PATCH v2 0/6] KVM: s390: interrupt: Fix stepping into interrupt handlers Ilya Leoshkevich
2023-07-21 11:57 ` [PATCH v2 1/6] KVM: s390: interrupt: Fix single-stepping " Ilya Leoshkevich
2023-07-24 8:22 ` David Hildenbrand
2023-07-24 8:42 ` Ilya Leoshkevich
2023-07-24 8:56 ` David Hildenbrand [this message]
2023-07-21 11:57 ` [PATCH v2 2/6] KVM: s390: interrupt: Fix single-stepping into program " Ilya Leoshkevich
2023-07-24 8:26 ` David Hildenbrand
2023-07-21 11:57 ` [PATCH v2 3/6] KVM: s390: interrupt: Fix single-stepping kernel-emulated instructions Ilya Leoshkevich
2023-07-24 8:27 ` David Hildenbrand
2023-07-21 11:57 ` [PATCH v2 4/6] KVM: s390: interrupt: Fix single-stepping userspace-emulated instructions Ilya Leoshkevich
2023-07-24 8:28 ` David Hildenbrand
2023-07-21 11:57 ` [PATCH v2 5/6] KVM: s390: interrupt: Fix single-stepping ISKE Ilya Leoshkevich
2023-07-21 14:23 ` Christian Borntraeger
2023-07-24 8:29 ` David Hildenbrand
2023-07-21 11:57 ` [PATCH v2 6/6] KVM: s390: selftests: Add selftest for single-stepping Ilya Leoshkevich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dba4395d-400a-7bea-5eba-a44cab80ce0e@redhat.com \
--to=david@redhat.com \
--cc=agordeev@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=iii@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=jfreimann@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=svens@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.