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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 40FCBC433EF for ; Sun, 3 Oct 2021 08:02:48 +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 F2B7A61B3E for ; Sun, 3 Oct 2021 08:02:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org F2B7A61B3E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:43784 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mWwSN-0003MI-3C for qemu-devel@archiver.kernel.org; Sun, 03 Oct 2021 04:02:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36956) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mWw9S-00046N-7j for qemu-devel@nongnu.org; Sun, 03 Oct 2021 03:43:14 -0400 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]:44567) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mWw9Q-00010B-L9 for qemu-devel@nongnu.org; Sun, 03 Oct 2021 03:43:13 -0400 Received: by mail-ed1-x532.google.com with SMTP id v18so50892741edc.11 for ; Sun, 03 Oct 2021 00:43:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=svEcy2fQeXi6q4rkfuuA5NEXM1FDvAAdImtJmYURyR8=; b=ihIyc8o4PAX2E4Wv3Alah3VQt/bXnrSlA9jO7yo3ayhfNFN4gmxURiWIgzUahjILbX ytVjP03xyKCFQ/dwTsEvxKdVcgLg/NlDFrRrYYHdXa1RGthizCoJ2yqrrrlCg4mgl7Q5 gnhpmuTbtcS0SHo0ctLDy8c/Ff2oXyxQ1rShy3wGcq6EUsMaRw/Y1yW6+8YJUNd/V6TZ gcUouuWDC4gTWIYQhKZEsxRuRaM+EVJR3zOmekVGieJWVjl56BqSRsSrOb+nSAlJ4OZh xDIodtQ61Q2ujNJvu32IrdS+LUvUwF4RIVh75OChYhKikZYYkd3vPgRKhdq4qT2M+8t3 LCLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=svEcy2fQeXi6q4rkfuuA5NEXM1FDvAAdImtJmYURyR8=; b=N3GZr/B7ObLrhclJOHYcVlSgbMYW2l+H4DNUXw0DeKShyOeM6XG8YW61loj44IeOEi kHrl+rVng7TVyWHb+T39niCKLj0XcfBEhD7mmL1+FOvZmvuR7huip/nJ1HLFsZHqmaxY 1V9p06JPG3rGHMjQwizWyEecZ6bxqm30A9xhCcNIU6q82JMEKFoYTlcy8MGeCWyU6IsR DlnbRbBd9PWSkerEkwM1pfwKTjtIVrdPpNwapNxykosvV/8GMuTIO8/QSGj6BeqKjxcb SduyB0lgyiCrcIivA9oAyAL3A98iag9Uk5ed4b0abaY5yVsQATGB8IgVl6ArrVz7Bkay 81bw== X-Gm-Message-State: AOAM531dG7lYZiEwjluGRqnqQd0zgNQbW2LMCjHIBb5nhJW5JT87Bj5M Zw0dlSQimPUUommYj7jo9dvHa+qqylo= X-Google-Smtp-Source: ABdhPJwrRZFreOA799SzNtq23mDfDoB1C7IYFL7PfalSUdfOknUyTdQDfdN2ylbkP19vEP/deTaHFw== X-Received: by 2002:a17:906:848b:: with SMTP id m11mr9126096ejx.270.1633246991351; Sun, 03 Oct 2021 00:43:11 -0700 (PDT) Received: from avogadro.lan ([2001:b07:6468:f312:c8dd:75d4:99ab:290a]) by smtp.gmail.com with ESMTPSA id n6sm5560856eds.10.2021.10.03.00.43.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 Oct 2021 00:43:11 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 26/30] monitor: Rate-limit MEMORY_DEVICE_SIZE_CHANGE qapi events per device Date: Sun, 3 Oct 2021 09:42:46 +0200 Message-Id: <20211003074250.60869-27-pbonzini@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211003074250.60869-1-pbonzini@redhat.com> References: <20211003074250.60869-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::532; envelope-from=paolo.bonzini@gmail.com; helo=mail-ed1-x532.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: Markus Armbruster , David Hildenbrand Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: David Hildenbrand We want to rate-limit MEMORY_DEVICE_SIZE_CHANGE events per device, otherwise we can lose some events for devices. We can now use the qom-path to reliably map an event to a device and make rate-limiting device-aware. This was noticed by starting a VM with two virtio-mem devices that each have a requested size > 0. The Linux guest will initialize both devices in parallel, resulting in losing MEMORY_DEVICE_SIZE_CHANGE events for one of the devices. Fixes: 722a3c783ef4 ("virtio-pci: Send qapi events when the virtio-mem size changes") Suggested-by: Markus Armbruster Reviewed-by: Markus Armbruster Signed-off-by: David Hildenbrand Message-Id: <20210929162445.64060-4-david@redhat.com> Signed-off-by: Paolo Bonzini --- monitor/monitor.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/monitor/monitor.c b/monitor/monitor.c index 46a171bca6..21c7a68758 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -474,6 +474,10 @@ static unsigned int qapi_event_throttle_hash(const void *key) hash += g_str_hash(qdict_get_str(evstate->data, "node-name")); } + if (evstate->event == QAPI_EVENT_MEMORY_DEVICE_SIZE_CHANGE) { + hash += g_str_hash(qdict_get_str(evstate->data, "qom-path")); + } + return hash; } @@ -496,6 +500,11 @@ static gboolean qapi_event_throttle_equal(const void *a, const void *b) qdict_get_str(evb->data, "node-name")); } + if (eva->event == QAPI_EVENT_MEMORY_DEVICE_SIZE_CHANGE) { + return !strcmp(qdict_get_str(eva->data, "qom-path"), + qdict_get_str(evb->data, "qom-path")); + } + return TRUE; } -- 2.31.1