From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 555F0C433E0 for ; Tue, 19 Jan 2021 22:21:55 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BD22422E01 for ; Tue, 19 Jan 2021 22:21:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BD22422E01 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:36078 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1zNp-0001pY-QE for qemu-devel@archiver.kernel.org; Tue, 19 Jan 2021 17:21:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51344) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1zMq-000142-VE for qemu-devel@nongnu.org; Tue, 19 Jan 2021 17:20:53 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:56791) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l1zMo-0006GH-Qd for qemu-devel@nongnu.org; Tue, 19 Jan 2021 17:20:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1611094849; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gFV6e+THBKcnwn0D4UHEghxOGVe0w5Jmn4CoZrGWmms=; b=hB+BSAVmsrNHfPbZsRyAEdHlWI8RIqZib0Cvm0RI7sl/tkzu//RYyK0/wcWySewRMiONwX 1IRQ9lpTK+FoPgcHaOqEBNgQLkLkpr95MUU/BpNM04IvoulRsY1nb0PQckJIZfRQpaYjrK YgsBdU6S43OarelENTDyjAzzu9TFkZ8= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-10-n5lL2z9FMYGYpVtAgJDJVA-1; Tue, 19 Jan 2021 17:20:46 -0500 X-MC-Unique: n5lL2z9FMYGYpVtAgJDJVA-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id DAAAF107ACE3; Tue, 19 Jan 2021 22:20:44 +0000 (UTC) Received: from [10.3.113.116] (ovpn-113-116.phx2.redhat.com [10.3.113.116]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 757935C8A7; Tue, 19 Jan 2021 22:20:40 +0000 (UTC) Subject: Re: [PATCH RFC 1/2] qdev: add debug interface to kick/call eventfd To: Dongli Zhang , qemu-devel@nongnu.org References: <20210115002730.1279-1-dongli.zhang@oracle.com> <20210115002730.1279-2-dongli.zhang@oracle.com> From: Eric Blake Organization: Red Hat, Inc. Message-ID: <40324953-8c06-f4c9-60d0-224c1c9adff3@redhat.com> Date: Tue, 19 Jan 2021 16:20:39 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: <20210115002730.1279-2-dongli.zhang@oracle.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=eblake@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Received-SPF: pass client-ip=170.10.133.124; envelope-from=eblake@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -22 X-Spam_score: -2.3 X-Spam_bar: -- X-Spam_report: (-2.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.195, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: berrange@redhat.com, ehabkost@redhat.com, mst@redhat.com, joe.jin@oracle.com, dgilbert@redhat.com, armbru@redhat.com, pbonzini@redhat.com, joao.m.martins@oracle.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" On 1/14/21 6:27 PM, Dongli Zhang wrote: > The virtio device/driver (e.g., vhost-scsi) may hang due to the lost of IRQ s/lost/loss/ > or the lost of doorbell register kick, e.g., and again > > https://lists.gnu.org/archive/html/qemu-devel/2018-12/msg01711.html > > This patch adds a new debug interface 'DeviceEvent' to DeviceClass to help > narrow down if the issue is due to lost of irq/kick. So far the new and again > interface handles only two events: 'call' and 'kick'. Any device (e.g., > e1000e or vhost-scsi) may implement (e.g., via eventfd, MSI-X or legacy > IRQ). > > The 'call' is to inject irq on purpose by admin for a specific device (e.g., > vhost-scsi) from QEMU/host to VM, while the 'kick' is to kick the doorbell > on purpose by admin at QEMU/host side for a specific device. > > Signed-off-by: Dongli Zhang > --- > +++ b/qapi/qdev.json > @@ -124,3 +124,33 @@ > ## > { 'event': 'DEVICE_DELETED', > 'data': { '*device': 'str', 'path': 'str' } } > + > +## > +# @x-debug-device-event: > +# > +# Generate device event for a specific device queue > +# > +# @dev: device path > +# > +# @event: event (e.g., kick or call) to trigger > +# > +# @queue: queue id > +# > +# Returns: Nothing on success > +# > +# Since: 5.3 The next release is named 6.0, not 5.3. > +# > +# Notes: This is used to debug VM driver hang issue. The 'kick' event is to > +# send notification to QEMU/vhost while the 'call' event is to > +# interrupt VM on purpose. > +# > +# Example: > +# > +# -> { "execute": "x-debug-device_event", > +# "arguments": { "dev": "/machine/peripheral/vscsi0", "event": "kick", > +# "queue": "1" } } Your example has queue typed as a string... > +# <- { "return": {} } > +# > +## > +{ 'command': 'x-debug-device-event', > + 'data': {'dev': 'str', 'event': 'str', 'queue': 'int'} } ...which does not match its actual type as an integer. event should be an enum type (the finite choice of 'kick' or 'call', and introspectible if we add new choices in the future) rather than an open-coded str. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org