public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Collin Walling <walling@linux.ibm.com>
To: Christian Borntraeger <borntraeger@de.ibm.com>,
	kvm@vger.kernel.org, linux-kselftest@vger.kernel.org
Cc: frankja@linux.ibm.com, david@redhat.com, thuth@redhat.com,
	cohuck@redhat.com, pbonzini@redhat.com, imbrenda@linux.ibm.com
Subject: Re: [PATCH v4] self_tests/kvm: sync_regs test for diag318
Date: Mon, 7 Dec 2020 15:59:46 -0500	[thread overview]
Message-ID: <a3b745cf-d0ed-a200-b01e-907c9ffb4569@linux.ibm.com> (raw)
In-Reply-To: <ed4013bb-ac56-cd16-ca90-008bca8bf52b@de.ibm.com>

On 12/7/20 3:16 PM, Christian Borntraeger wrote:
> 
> 
> On 07.12.20 21:13, Collin Walling wrote:
>> On 12/7/20 3:09 PM, Christian Borntraeger wrote:
>>>
>>>
>>> On 07.12.20 21:06, Collin Walling wrote:
>>>> On 12/7/20 2:32 PM, Christian Borntraeger wrote:
>>>>> On 07.12.20 16:41, Collin Walling wrote:
>>>>>> The DIAGNOSE 0x0318 instruction, unique to s390x, is a privileged call
>>>>>> that must be intercepted via SIE, handled in userspace, and the
>>>>>> information set by the instruction is communicated back to KVM.
>>>>>>
>>>>>> To test the instruction interception, an ad-hoc handler is defined which
>>>>>> simply has a VM execute the instruction and then userspace will extract
>>>>>> the necessary info. The handler is defined such that the instruction
>>>>>> invocation occurs only once. It is up to the caller to determine how the
>>>>>> info returned by this handler should be used.
>>>>>>
>>>>>> The diag318 info is communicated from userspace to KVM via a sync_regs
>>>>>> call. This is tested During a sync_regs test, where the diag318 info is
>>>>>> requested via the handler, then the info is stored in the appropriate
>>>>>> register in KVM via a sync registers call.
>>>>>>
>>>>>> If KVM does not support diag318, then the tests will print a message
>>>>>> stating that diag318 was skipped, and the asserts will simply test
>>>>>> against a value of 0.
>>>>>>
>>>>>> Signed-off-by: Collin Walling <walling@linux.ibm.com>
>>>>>
>>>>> Interestingly enough, this testcase actually trigger a bug:
>>>>> While we gracefully handle this (no crash)
>>>>> debugfs: Directory 'kvm-200206' with parent 's390dbf' already present!
>>>>> is certainly not ideal....
>>>>>
>>>>
>>>> Odd... I wonder what triggered this behavior?
>>>>
>>>> I run my tests with a simple command:
>>>>
>>>> make summary=0 TARGETS=kvm kselftest
>>>>
>>>> This must have something to do with spinning up another VM to get the
>>>> diag318 data. I think if I have the sync_regs test call the diag handler
>>>> first, and then have the sync regs create a VM, that might solve that
>>>> issue...
>>>
>>> Yes, the s390dbf code will try to create a file named kvm-%pid. With
>>> 2 VMs the 2nd one fails. Luckily the kvm will be created anyway and 
>>> also the shutdown seems to be fine, still....
>>>
>>>>
>>>> May I ask how you encountered this bug so I may replicate in on my end?
>>>
>>> I just did
>>> make TARGETS=kvm selftests
>>>
>>> and then the error is on dmesg.
>>>
>>
>> Thanks. v5 with fix incoming.
> 
> I think the test is actually fine and we should rather fix the kvm module to
> gracefully handle a userspace that starts up 2 or more guests.
> 

Looks like the root cause is within the inode.c file used for the debug
filesystem. Essentially, the 2nd VM starts / ends just fine as you
mentioned, but doesn't get a dbfs.

Since this touches the dbfs related area, and I'm unsure how common this
problem is out in the wild, should we ping the kernel list and see if it
catches anyone's attention?

A first thought would be to append a per-userspace incrementing value to
the end of the kvm-%pid part to account for any collisions, but that's
up to the folks that know more than I do.

-- 
Regards,
Collin

Stay safe and stay healthy

  reply	other threads:[~2020-12-07 21:00 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-07 15:41 [PATCH v4] self_tests/kvm: sync_regs test for diag318 Collin Walling
2020-12-07 15:43 ` Collin Walling
2020-12-07 16:55 ` Cornelia Huck
2020-12-07 19:09   ` Collin Walling
2020-12-07 19:12 ` Collin Walling
2020-12-07 19:14   ` Christian Borntraeger
2020-12-07 19:32 ` Christian Borntraeger
2020-12-07 20:06   ` Collin Walling
2020-12-07 20:09     ` Christian Borntraeger
2020-12-07 20:13       ` Collin Walling
2020-12-07 20:16         ` Christian Borntraeger
2020-12-07 20:59           ` Collin Walling [this message]
2020-12-08 10:09             ` Janosch Frank

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=a3b745cf-d0ed-a200-b01e-907c9ffb4569@linux.ibm.com \
    --to=walling@linux.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=thuth@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox