From patchwork Wed Apr 16 23:59:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Corey Minyard X-Patchwork-Id: 14054634 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id E0B3FC369C2 for ; Thu, 17 Apr 2025 00:04:08 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u5CiH-00041X-9l; Wed, 16 Apr 2025 20:02:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u5CiF-00040h-Vn for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:40 -0400 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u5CiD-0006Or-VR for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:39 -0400 Received: by mail-ot1-x335.google.com with SMTP id 46e09a7af769-72c3b863b8eso121111a34.2 for ; Wed, 16 Apr 2025 17:02:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minyard-net.20230601.gappssmtp.com; s=20230601; t=1744848152; x=1745452952; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=49avEtiZIVlE7rTwMZWJA3fLdy8rYAc28zmvPcaf/6w=; b=AwOiw8YNN5X8my3zMtsrrd+anpWT7JQ5Yjikj/ObAjHulfj4B9x5q/mKCio0ifjBsv 8i0yyRQG7maUB+QdVHO1lmIUIc3pnSou5+jeu5CFTj8k9y9S+R2hUS6BbnooAf1yDrg2 HDuRrjRoIO0vBpmZyOtrIHu5dbuchLQxjwcnAtaEhJE0msb3BBcwAhjwpYLBkQYxZMAU qJFnWEBHfzlEViK/RPezwajROVlpNj0A+eUQjn3tJtfyBdJANzqK0r8OgbzHlIqmBobI lIM8mYgy3GzzWCs2U6X8529sI4Qh9OCtbiiLYdmY5du0HUbRMkiKJQjXIQ8mf6cAVcgf cBjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744848152; x=1745452952; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=49avEtiZIVlE7rTwMZWJA3fLdy8rYAc28zmvPcaf/6w=; b=CenCnNdgXjpHDvEKq3MeOdro1OmSoW+Zo2UMNq9zGAK81I2JVi7dc1HCums3LH7Jk7 c27FfZ2OfTbjrytMZsPf/zso142nRJhZe3adTIBYyojdS5JkSuP4Az3nc8F7koltlxrj Xsqy4iQBnNvqXssraITkkG5wYW65EANt2JQX9U6wHteiSRf9j3lpJfwasW+1CQ6DeDeh nArXysJXowxL5I6u1jdVH9CWKsmhtp+9OkHRriwb893z6nUokTqazZJsF+TeQ47JRSoj D6akHGy97uE0/1pIhizMA1hHspWtkpa8JjOrNkLJc39Nppkh7FB+rTf0ssX58cei1k2y vPjw== X-Gm-Message-State: AOJu0Yx/c590RteNQI5miMr25YbC4Wz0zBDQYA1yFQmq3Dwv2/fFQDJn at1ZL34lD9K7P533jvaSGXIq++z8d55kyK81yN1IzkQbNQAuVSpgbIyMyHiz/Sp6pes6KeQWUDl v X-Gm-Gg: ASbGncslENo6rT3x2jDSmK5EnwCHxYdPyFAtysd7uh3l+7Lm/4OVRMCMf6m7JdBh4PC B7Ff/qQIXM3pAxHmFbs2SfOaCNZvDYOwfXXtQ+CuRbu3mdi5EdtgPLPGQW8UoMu5PNLN5Hyk/MX B+ZWgsdUDVlPjKwOy2xmy3DnKuXHLsmdJE+xVK+adqBt23lDIWl6cSiiKggx6geHrrbZTrnwNqY U7291WAQqovMSLPRsg9EDfSUQKDqzy9UzyHolwjvB0EN2mSml6Nw0AbPXw6mDHZlbtxA82PKa51 N73GG8SLdU0e8PYRMo1/EErrQW0kBdxUphQ= X-Google-Smtp-Source: AGHT+IE9xZ44XXptAnG9EIXn01uqmprDVkzfH0o9US0W+qTgZW62LurG/Ok+6tGwSv7Ig6PZolsrRw== X-Received: by 2002:a05:6830:6288:b0:72c:32a7:8830 with SMTP id 46e09a7af769-72ec6d2735cmr2481008a34.26.1744848152335; Wed, 16 Apr 2025 17:02:32 -0700 (PDT) Received: from localhost ([2001:470:b8f6:1b:8795:e9fb:beca:ef25]) by smtp.gmail.com with UTF8SMTPSA id 586e51a60fabf-2d096cdadd3sm3576836fac.32.2025.04.16.17.02.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 16 Apr 2025 17:02:30 -0700 (PDT) From: Corey Minyard To: qemu-devel@nongnu.org Cc: Corey Minyard , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Fabiano Rosas Subject: [PULL 1/6] hw/ipmi: Move vmsd registration to device class Date: Wed, 16 Apr 2025 18:59:05 -0500 Message-ID: <20250417000224.3830705-2-corey@minyard.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417000224.3830705-1-corey@minyard.net> References: <20250417000224.3830705-1-corey@minyard.net> MIME-Version: 1.0 Received-SPF: none client-ip=2607:f8b0:4864:20::335; envelope-from=corey@minyard.net; helo=mail-ot1-x335.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org It's the right way to do it now, and it handles multiple instances properly. I need multiple instances for some testing I'm doing so this is the right thing to do. Tested by doing: (qemu) migrate -d exec:cat>filen.mig before and after the fix, then: scripts/analyze-migration.py -d desc -f file1.mig >file1.json scripts/analyze-migration.py -d desc -f file2.mig >file2.json diff file1.json file2.json with no differences. Signed-off-by: Corey Minyard Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Fabiano Rosas --- hw/ipmi/ipmi_bmc_extern.c | 3 +-- hw/ipmi/ipmi_bmc_sim.c | 3 +-- hw/ipmi/isa_ipmi_bt.c | 3 +-- hw/ipmi/isa_ipmi_kcs.c | 12 +++++------- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c index d015500254..3e9f8c5a50 100644 --- a/hw/ipmi/ipmi_bmc_extern.c +++ b/hw/ipmi/ipmi_bmc_extern.c @@ -497,8 +497,6 @@ static void ipmi_bmc_extern_realize(DeviceState *dev, Error **errp) qemu_chr_fe_set_handlers(&ibe->chr, can_receive, receive, chr_event, NULL, ibe, NULL, true); - - vmstate_register(NULL, 0, &vmstate_ipmi_bmc_extern, ibe); } static void ipmi_bmc_extern_init(Object *obj) @@ -528,6 +526,7 @@ static void ipmi_bmc_extern_class_init(ObjectClass *oc, void *data) bk->handle_reset = ipmi_bmc_extern_handle_reset; dc->hotpluggable = false; dc->realize = ipmi_bmc_extern_realize; + dc->vmsd = &vmstate_ipmi_bmc_extern; device_class_set_props(dc, ipmi_bmc_extern_properties); } diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c index 6157ac7120..bc0ddc52a9 100644 --- a/hw/ipmi/ipmi_bmc_sim.c +++ b/hw/ipmi/ipmi_bmc_sim.c @@ -2187,8 +2187,6 @@ static void ipmi_sim_realize(DeviceState *dev, Error **errp) register_cmds(ibs); ibs->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, ipmi_timeout, ibs); - - vmstate_register(NULL, 0, &vmstate_ipmi_sim, ibs); } static const Property ipmi_sim_properties[] = { @@ -2212,6 +2210,7 @@ static void ipmi_sim_class_init(ObjectClass *oc, void *data) dc->hotpluggable = false; dc->realize = ipmi_sim_realize; + dc->vmsd = &vmstate_ipmi_sim; device_class_set_props(dc, ipmi_sim_properties); bk->handle_command = ipmi_sim_handle_command; } diff --git a/hw/ipmi/isa_ipmi_bt.c b/hw/ipmi/isa_ipmi_bt.c index a1b66d5ee8..474a792c9a 100644 --- a/hw/ipmi/isa_ipmi_bt.c +++ b/hw/ipmi/isa_ipmi_bt.c @@ -117,8 +117,6 @@ static void isa_ipmi_bt_realize(DeviceState *dev, Error **errp) qdev_set_legacy_instance_id(dev, iib->bt.io_base, iib->bt.io_length); isa_register_ioport(isadev, &iib->bt.io, iib->bt.io_base); - - vmstate_register(NULL, 0, &vmstate_ISAIPMIBTDevice, dev); } static void isa_ipmi_bt_init(Object *obj) @@ -147,6 +145,7 @@ static void isa_ipmi_bt_class_init(ObjectClass *oc, void *data) AcpiDevAmlIfClass *adevc = ACPI_DEV_AML_IF_CLASS(oc); dc->realize = isa_ipmi_bt_realize; + dc->vmsd = &vmstate_ISAIPMIBTDevice; device_class_set_props(dc, ipmi_isa_properties); iic->get_backend_data = isa_ipmi_bt_get_backend_data; diff --git a/hw/ipmi/isa_ipmi_kcs.c b/hw/ipmi/isa_ipmi_kcs.c index d9ebdd5371..94bbe45d35 100644 --- a/hw/ipmi/isa_ipmi_kcs.c +++ b/hw/ipmi/isa_ipmi_kcs.c @@ -72,6 +72,10 @@ static bool vmstate_kcs_before_version2(void *opaque, int version) return version <= 1; } +/* + * Version 1 had an incorrect name, it clashed with the BT IPMI + * device, so receive it, but transmit a different version. + */ static const VMStateDescription vmstate_ISAIPMIKCSDevice = { .name = TYPE_IPMI_INTERFACE, .version_id = 2, @@ -119,13 +123,6 @@ static void ipmi_isa_realize(DeviceState *dev, Error **errp) qdev_set_legacy_instance_id(dev, iik->kcs.io_base, iik->kcs.io_length); isa_register_ioport(isadev, &iik->kcs.io, iik->kcs.io_base); - - /* - * Version 1 had an incorrect name, it clashed with the BT - * IPMI device, so receive it, but transmit a different - * version. - */ - vmstate_register(NULL, 0, &vmstate_ISAIPMIKCSDevice, iik); } static void isa_ipmi_kcs_init(Object *obj) @@ -154,6 +151,7 @@ static void isa_ipmi_kcs_class_init(ObjectClass *oc, void *data) AcpiDevAmlIfClass *adevc = ACPI_DEV_AML_IF_CLASS(oc); dc->realize = ipmi_isa_realize; + dc->vmsd = &vmstate_ISAIPMIKCSDevice; device_class_set_props(dc, ipmi_isa_properties); iic->get_backend_data = isa_ipmi_kcs_get_backend_data; From patchwork Wed Apr 16 23:59:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Corey Minyard X-Patchwork-Id: 14054632 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id DF6EFC369BD for ; Thu, 17 Apr 2025 00:03:53 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u5CiM-00043b-KB; Wed, 16 Apr 2025 20:02:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u5CiH-00041a-BE for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:41 -0400 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u5CiE-0006Oz-4B for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:41 -0400 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-2d4f832069cso37018fac.0 for ; Wed, 16 Apr 2025 17:02:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minyard-net.20230601.gappssmtp.com; s=20230601; t=1744848154; x=1745452954; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jzXuptyfA7vE3ZbsycUlzR4fD6qnLS7kWEbUQxzoB+U=; b=gSzAK2dN/xfq4t6annjx2X7lOU1Mqb+XkvZ+ZBGWd94ZmFMUJ819xGJFa7D2rTw6Ri IC6SRb0uwEdF2Ocrhgu+3nTA963KklVX0WRlKnkd4bJ/YN4jlrUynnz2YjQ3vrNfj6dx rMdkadwlfhXaGtX3hw7lxGtzCxhne6bTK6/y0V/WhUiyCb+V8DC0Q6aubE3lfW71bTmD RgXkiKJCPkfVMKVU8ZiRVvyVMWB4OUgGfSYr0Hz5//sP55YyldA4t9ksVqloa1Wbw4ir PEKwrhMosOe5zAAac+gNXP9Key9D56Te5raCwk8KtJ1WD/ybBkyoxcdnGxNnI1LaG857 b32Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744848154; x=1745452954; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jzXuptyfA7vE3ZbsycUlzR4fD6qnLS7kWEbUQxzoB+U=; b=XE8ZJCGPJSIUhGCMB4ZtlEfOZUXCapXOKf5wGOR0b99iB453fjzWAwTnngdaa9RSyc plQ39WLiOTXHIj9ET7Ddw2Im/tIflQmSnNywl0CktfkiDDoixn35vjAuUlDm/WqGGtPS vIv/RwnuerCsugGLVSNmVgxpM1rvxulK/O7mNDQNW66ISe6TmLe+SKTt75JMIf3+V37c WF8aliJL2Hog1czzNUfEBCX7Saag3lJ0jWYogB3yFgw3Zi1dmSbfCmAQ9kC7axJrSaa9 6a3D7Y6ZWnPjrNffivcAzVqGnHAG0/X7kJ9fN1uhCzkfCtLrkaQv0zjJcFe2OJooCgER EE3g== X-Gm-Message-State: AOJu0YwN5irT6T5pioYb2WMeo5Y5IHqQg9Xv7wk5GXA3O9ShdsAAiw2o BI6/fJ+VCSEeMwSuIuzNBEcjizH7eFBqS80jK6Fp1Sf9AETSJYTvQOMfQGsJGGY7Qb5SHkK0byZ E X-Gm-Gg: ASbGncvQRWc1M0gz3WFHCts2lEkkQV/jbiwVqBfY62ymcjTQR0S0ftou4eAVWCCDYSH Ctfh7XdAQjP6h8csaQm0FY2qRMrE3xGPTRhOPa+k5r2KiVTzuWND3W0DIOV95ED8q2DNzvpyFZG Da2kEc+yUo7b8clwYl5fBE8Xc7UFBGoQD27DLJqJsrm1GBaosZ2lwudedGqDoQ81hE3ofWWeo8w zAEdVnK2EIto7k6ujprTtUvGbdbCt/+fXNTanWqfo1uvQMEcrjiZ9ljxl+yrla/c2zfV43fJ+Y/ jfUgNNzFbRZkwT+vgDInshi5cbgfVpRp0r8= X-Google-Smtp-Source: AGHT+IHHzpy7vlfoXR1mB9zg5dmFIRS8zc6I9ZcIbddgYQgmMDzYeBaDyut9ZbKYtlOp8mL5WJxmsg== X-Received: by 2002:a05:6870:164f:b0:29e:5dfd:1e17 with SMTP id 586e51a60fabf-2d4d2b9da6fmr2097251fac.23.1744848153562; Wed, 16 Apr 2025 17:02:33 -0700 (PDT) Received: from localhost ([2001:470:b8f6:1b:8795:e9fb:beca:ef25]) by smtp.gmail.com with UTF8SMTPSA id 46e09a7af769-72e73e4d81dsm3040194a34.54.2025.04.16.17.02.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 16 Apr 2025 17:02:33 -0700 (PDT) From: Corey Minyard To: qemu-devel@nongnu.org Cc: Nicholas Piggin , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Corey Minyard Subject: [PULL 2/6] ipmi/pci-ipmi-bt: Rename copy-paste variables Date: Wed, 16 Apr 2025 18:59:06 -0500 Message-ID: <20250417000224.3830705-3-corey@minyard.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417000224.3830705-1-corey@minyard.net> References: <20250417000224.3830705-1-corey@minyard.net> MIME-Version: 1.0 Received-SPF: none client-ip=2001:4860:4864:20::29; envelope-from=corey@minyard.net; helo=mail-oa1-x29.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Nicholas Piggin IPMI drivers use p/k suffix in variable names depending on bt or kcs. The pci bt driver must have come from the kcs driver because it's still using k suffixes in some cases. Rename. Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Nicholas Piggin Message-ID: <20250401140153.685523-2-npiggin@gmail.com> Signed-off-by: Corey Minyard --- hw/ipmi/pci_ipmi_bt.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/hw/ipmi/pci_ipmi_bt.c b/hw/ipmi/pci_ipmi_bt.c index afeea6f303..a3b742d22c 100644 --- a/hw/ipmi/pci_ipmi_bt.c +++ b/hw/ipmi/pci_ipmi_bt.c @@ -38,49 +38,49 @@ struct PCIIPMIBTDevice { uint32_t uuid; }; -static void pci_ipmi_raise_irq(IPMIBT *ik) +static void pci_ipmi_raise_irq(IPMIBT *ib) { - PCIIPMIBTDevice *pik = ik->opaque; + PCIIPMIBTDevice *pib = ib->opaque; - pci_set_irq(&pik->dev, true); + pci_set_irq(&pib->dev, true); } -static void pci_ipmi_lower_irq(IPMIBT *ik) +static void pci_ipmi_lower_irq(IPMIBT *ib) { - PCIIPMIBTDevice *pik = ik->opaque; + PCIIPMIBTDevice *pib = ib->opaque; - pci_set_irq(&pik->dev, false); + pci_set_irq(&pib->dev, false); } static void pci_ipmi_bt_realize(PCIDevice *pd, Error **errp) { Error *err = NULL; - PCIIPMIBTDevice *pik = PCI_IPMI_BT(pd); + PCIIPMIBTDevice *pib = PCI_IPMI_BT(pd); IPMIInterface *ii = IPMI_INTERFACE(pd); IPMIInterfaceClass *iic = IPMI_INTERFACE_GET_CLASS(ii); - if (!pik->bt.bmc) { + if (!pib->bt.bmc) { error_setg(errp, "IPMI device requires a bmc attribute to be set"); return; } - pik->uuid = ipmi_next_uuid(); + pib->uuid = ipmi_next_uuid(); - pik->bt.bmc->intf = ii; - pik->bt.opaque = pik; + pib->bt.bmc->intf = ii; + pib->bt.opaque = pib; pci_config_set_prog_interface(pd->config, 0x02); /* BT */ pci_config_set_interrupt_pin(pd->config, 0x01); - pik->bt.use_irq = 1; - pik->bt.raise_irq = pci_ipmi_raise_irq; - pik->bt.lower_irq = pci_ipmi_lower_irq; + pib->bt.use_irq = 1; + pib->bt.raise_irq = pci_ipmi_raise_irq; + pib->bt.lower_irq = pci_ipmi_lower_irq; iic->init(ii, 8, &err); if (err) { error_propagate(errp, err); return; } - pci_register_bar(pd, 0, PCI_BASE_ADDRESS_SPACE_IO, &pik->bt.io); + pci_register_bar(pd, 0, PCI_BASE_ADDRESS_SPACE_IO, &pib->bt.io); } const VMStateDescription vmstate_PCIIPMIBTDevice = { @@ -96,16 +96,16 @@ const VMStateDescription vmstate_PCIIPMIBTDevice = { static void pci_ipmi_bt_instance_init(Object *obj) { - PCIIPMIBTDevice *pik = PCI_IPMI_BT(obj); + PCIIPMIBTDevice *pib = PCI_IPMI_BT(obj); - ipmi_bmc_find_and_link(obj, (Object **) &pik->bt.bmc); + ipmi_bmc_find_and_link(obj, (Object **) &pib->bt.bmc); } static void *pci_ipmi_bt_get_backend_data(IPMIInterface *ii) { - PCIIPMIBTDevice *pik = PCI_IPMI_BT(ii); + PCIIPMIBTDevice *pib = PCI_IPMI_BT(ii); - return &pik->bt; + return &pib->bt; } static void pci_ipmi_bt_class_init(ObjectClass *oc, void *data) From patchwork Wed Apr 16 23:59:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Corey Minyard X-Patchwork-Id: 14054629 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 3DEAFC369C2 for ; Thu, 17 Apr 2025 00:03:26 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u5CiI-00042P-QB; Wed, 16 Apr 2025 20:02:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u5CiH-00041j-Hz for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:41 -0400 Received: from mail-oa1-x36.google.com ([2001:4860:4864:20::36]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u5CiF-0006PT-6I for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:41 -0400 Received: by mail-oa1-x36.google.com with SMTP id 586e51a60fabf-2c873231e7bso87434fac.3 for ; Wed, 16 Apr 2025 17:02:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minyard-net.20230601.gappssmtp.com; s=20230601; t=1744848157; x=1745452957; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WIdhZ2B/3rXlZaDDyS0TejvZV6gKym2suKu1qn0P8JA=; b=DO8BhJqznondnC4X6ZJ5FiU5Yc5XakvIl4JFoN944Ke7wMyY3kEVA8XJQzSr5CJbuT 8lY06wUa9JnQ3ELANJUZ+SqYNMgS50rFAq1FDHI/L1c4B5pTcm3x1qUBLdXVAm7cAPoH P+/DJZXSQULudzEiyDwkay7TYY2z+p4nQpwnDZh8zhrkktrSpq7tg/g0GsZahWVuGeMA TCq/s1xmw4GppXROBlC0Bmbkpft9p9DqQN0zgSEXehbvv4KdMv8im1IO3/8MSUYq7EBL 9gGkMCad+9W4vgVRk4p9RtPq4EV9hXNChF4efP40P67bkpQ2zT5X34S9GD+HrzP6cjjd c32w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744848157; x=1745452957; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WIdhZ2B/3rXlZaDDyS0TejvZV6gKym2suKu1qn0P8JA=; b=j51bjMK/HgciUAqzB+5PK8UNzFWgVBo/oo+2ICzGPRusZhV+D7gRsIfgvHDMFXhV16 ySEBh3U/3rL+wpWIv803i5NmQ+Q9/nwdExFEgvSbrgAzg6S30lQB5fsMf1GdqGthio7z /gxsIB87p/rZp9OaMFJnWJp9KIUuyDimjRorUspm3MXCzoECL7p0HxgJHyWXL7hV6ZhX bsE5R5MM+aXGAhyAYj/VcbpGtcP8urnqnntBj/sx9DQamnKrbSThwqwXSfv6V28JZ5kf SyStR4Leh8CHhJFylXQM7V6QT07ZYIpQvLLnqr+55Le/YUUCFDuJql1UF481qoW9I/dv JmZg== X-Gm-Message-State: AOJu0YxET8V+2lMXWEz1yh+omXFKlEc3v0j8GKs1CzjytHcsmp7a/60H v4L53x4/7k2uCux4WbY97VLCSfMfSfXzxIbgXtIC1NKvK2HyIJ61sb8pxUs9a0Tv1TAgbu325GA g X-Gm-Gg: ASbGnct6j5SoPsiU3elBJ5qE5/MHdK2A7vdO6FkcAXHtuB/vk95y0r+Fa3Ohf4B48d6 BL70C2Zn8YeOKtF/XE7KO1V1iCPzIS3WbAxBGETz/C2V3JCKFNGamVURrZm7s5FCxIWbePQ8k6u WP8sVE/mOjfEJL6osqSN0734eFeId+OILsahi6AOKwBhNoCHri6lGQzKZvJkHyP0AuOZW6U1ONZ q9NWMJXOnEyzkOsl2LECuLm7IUWjnlG0RH7QJwdBWQSs4xcRCaKZi6EnJgM21I6EEThKN1Lhbvf 3VPnVlPx1nU5wqbnChKZLoXzIhIt5Yv4J+U= X-Google-Smtp-Source: AGHT+IG2cMd/BU3tAfNVeKS09RJKPMhdcxjeyIM847yQJD8CKw7fokY9PKdtm4U5oGGF+LcHezpckg== X-Received: by 2002:a05:6870:a691:b0:296:e491:b244 with SMTP id 586e51a60fabf-2d4d2d4cf78mr2309004fac.32.1744848156715; Wed, 16 Apr 2025 17:02:36 -0700 (PDT) Received: from localhost ([2001:470:b8f6:1b:8795:e9fb:beca:ef25]) by smtp.gmail.com with UTF8SMTPSA id 586e51a60fabf-2d0969589c5sm3561396fac.17.2025.04.16.17.02.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 16 Apr 2025 17:02:35 -0700 (PDT) From: Corey Minyard To: qemu-devel@nongnu.org Cc: Nicholas Piggin , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Corey Minyard Subject: [PULL 3/6] ipmi: add fwinfo to pci ipmi devices Date: Wed, 16 Apr 2025 18:59:07 -0500 Message-ID: <20250417000224.3830705-4-corey@minyard.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417000224.3830705-1-corey@minyard.net> References: <20250417000224.3830705-1-corey@minyard.net> MIME-Version: 1.0 Received-SPF: none client-ip=2001:4860:4864:20::36; envelope-from=corey@minyard.net; helo=mail-oa1-x36.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Nicholas Piggin This requires some adjustments to callers to avoid possible behaviour changes for PCI devices. Signed-off-by: Nicholas Piggin Message-ID: <20250401140153.685523-3-npiggin@gmail.com> Reviewed-by: Philippe Mathieu-Daudé [Rename pci_ipmi_bt_get_fwinfo to pci_ipmi_kcs_get_fwinfo in the pci_ipmi_kcs.c file.] Signed-off-by: Corey Minyard --- hw/acpi/ipmi.c | 3 ++- hw/ipmi/isa_ipmi_bt.c | 1 + hw/ipmi/isa_ipmi_kcs.c | 1 + hw/ipmi/pci_ipmi_bt.c | 12 ++++++++++++ hw/ipmi/pci_ipmi_kcs.c | 11 +++++++++++ hw/smbios/smbios_type_38.c | 7 ++++++- include/hw/ipmi/ipmi.h | 5 +++++ 7 files changed, 38 insertions(+), 2 deletions(-) diff --git a/hw/acpi/ipmi.c b/hw/acpi/ipmi.c index a20e57d465..39f8f2f6d6 100644 --- a/hw/acpi/ipmi.c +++ b/hw/acpi/ipmi.c @@ -55,7 +55,8 @@ static Aml *aml_ipmi_crs(IPMIFwInfo *info) abort(); } - if (info->interrupt_number) { + /* Should PCI interrupts also be appended? */ + if (info->irq_source == IPMI_ISA_IRQ && info->interrupt_number) { aml_append(crs, aml_irq_no_flags(info->interrupt_number)); } diff --git a/hw/ipmi/isa_ipmi_bt.c b/hw/ipmi/isa_ipmi_bt.c index 474a792c9a..76585e786e 100644 --- a/hw/ipmi/isa_ipmi_bt.c +++ b/hw/ipmi/isa_ipmi_bt.c @@ -49,6 +49,7 @@ static void isa_ipmi_bt_get_fwinfo(struct IPMIInterface *ii, IPMIFwInfo *info) ISAIPMIBTDevice *iib = ISA_IPMI_BT(ii); ipmi_bt_get_fwinfo(&iib->bt, info); + info->irq_source = IPMI_ISA_IRQ; info->interrupt_number = iib->isairq; info->i2c_slave_address = iib->bt.bmc->slave_addr; info->uuid = iib->uuid; diff --git a/hw/ipmi/isa_ipmi_kcs.c b/hw/ipmi/isa_ipmi_kcs.c index 94bbe45d35..ba3ae208b2 100644 --- a/hw/ipmi/isa_ipmi_kcs.c +++ b/hw/ipmi/isa_ipmi_kcs.c @@ -49,6 +49,7 @@ static void isa_ipmi_kcs_get_fwinfo(IPMIInterface *ii, IPMIFwInfo *info) ISAIPMIKCSDevice *iik = ISA_IPMI_KCS(ii); ipmi_kcs_get_fwinfo(&iik->kcs, info); + info->irq_source = IPMI_ISA_IRQ; info->interrupt_number = iik->isairq; info->uuid = iik->uuid; } diff --git a/hw/ipmi/pci_ipmi_bt.c b/hw/ipmi/pci_ipmi_bt.c index a3b742d22c..7ba8b3ab96 100644 --- a/hw/ipmi/pci_ipmi_bt.c +++ b/hw/ipmi/pci_ipmi_bt.c @@ -38,6 +38,17 @@ struct PCIIPMIBTDevice { uint32_t uuid; }; +static void pci_ipmi_bt_get_fwinfo(struct IPMIInterface *ii, IPMIFwInfo *info) +{ + PCIIPMIBTDevice *pib = PCI_IPMI_BT(ii); + + ipmi_bt_get_fwinfo(&pib->bt, info); + info->irq_source = IPMI_PCI_IRQ; + info->interrupt_number = pci_intx(&pib->dev); + info->i2c_slave_address = pib->bt.bmc->slave_addr; + info->uuid = pib->uuid; +} + static void pci_ipmi_raise_irq(IPMIBT *ib) { PCIIPMIBTDevice *pib = ib->opaque; @@ -125,6 +136,7 @@ static void pci_ipmi_bt_class_init(ObjectClass *oc, void *data) iic->get_backend_data = pci_ipmi_bt_get_backend_data; ipmi_bt_class_init(iic); + iic->get_fwinfo = pci_ipmi_bt_get_fwinfo; } static const TypeInfo pci_ipmi_bt_info = { diff --git a/hw/ipmi/pci_ipmi_kcs.c b/hw/ipmi/pci_ipmi_kcs.c index 05ba97ec58..0aa35143e9 100644 --- a/hw/ipmi/pci_ipmi_kcs.c +++ b/hw/ipmi/pci_ipmi_kcs.c @@ -38,6 +38,16 @@ struct PCIIPMIKCSDevice { uint32_t uuid; }; +static void pci_ipmi_kcs_get_fwinfo(struct IPMIInterface *ii, IPMIFwInfo *info) +{ + PCIIPMIKCSDevice *pik = PCI_IPMI_KCS(ii); + + ipmi_kcs_get_fwinfo(&pik->kcs, info); + info->irq_source = IPMI_PCI_IRQ; + info->interrupt_number = pci_intx(&pik->dev); + info->uuid = pik->uuid; +} + static void pci_ipmi_raise_irq(IPMIKCS *ik) { PCIIPMIKCSDevice *pik = ik->opaque; @@ -125,6 +135,7 @@ static void pci_ipmi_kcs_class_init(ObjectClass *oc, void *data) iic->get_backend_data = pci_ipmi_kcs_get_backend_data; ipmi_kcs_class_init(iic); + iic->get_fwinfo = pci_ipmi_kcs_get_fwinfo; } static const TypeInfo pci_ipmi_kcs_info = { diff --git a/hw/smbios/smbios_type_38.c b/hw/smbios/smbios_type_38.c index 168b886647..e9b856fcd9 100644 --- a/hw/smbios/smbios_type_38.c +++ b/hw/smbios/smbios_type_38.c @@ -72,7 +72,12 @@ static void smbios_build_one_type_38(IPMIFwInfo *info) " SMBIOS, ignoring this entry.", info->register_spacing); return; } - t->interrupt_number = info->interrupt_number; + if (info->irq_source == IPMI_ISA_IRQ) { + t->interrupt_number = info->interrupt_number; + } else { + /* TODO: How to handle PCI? */ + t->interrupt_number = 0; + } SMBIOS_BUILD_TABLE_POST; } diff --git a/include/hw/ipmi/ipmi.h b/include/hw/ipmi/ipmi.h index 77a7213ed9..c8ef04856e 100644 --- a/include/hw/ipmi/ipmi.h +++ b/include/hw/ipmi/ipmi.h @@ -90,6 +90,11 @@ typedef struct IPMIFwInfo { } memspace; int interrupt_number; + enum { + IPMI_NO_IRQ = 0, + IPMI_ISA_IRQ, + IPMI_PCI_IRQ, + } irq_source; enum { IPMI_LEVEL_IRQ, IPMI_EDGE_IRQ From patchwork Wed Apr 16 23:59:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corey Minyard X-Patchwork-Id: 14054635 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 143A5C369BD for ; Thu, 17 Apr 2025 00:04:17 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u5CiM-00043c-KG; Wed, 16 Apr 2025 20:02:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u5CiK-00042v-Bo for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:44 -0400 Received: from mail-oo1-xc2c.google.com ([2607:f8b0:4864:20::c2c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u5CiI-0006QC-Gk for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:44 -0400 Received: by mail-oo1-xc2c.google.com with SMTP id 006d021491bc7-603fd257386so36718eaf.1 for ; Wed, 16 Apr 2025 17:02:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minyard-net.20230601.gappssmtp.com; s=20230601; t=1744848159; x=1745452959; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/AW4tnkOIpzn+hkaLSPNo53y2Z1zRYt/SZox39VKYwQ=; b=dFYhTQShKnK6/K52R5SA/rna2kf7nTu4uFvWFgcf1Cya2ruN9beCfrEGzeeI/8DciV DWypoptbhzO1oazB/mQZLMu+gvXRuogxdOUzp3mAk3LCqtH6F+8yeiD/cLp9R0CuToTl gIh61wsI8r2Ga6G0lVnfrP4OSxCzsYthGvvmj20EFA4AC/r3iGGwj3V29AD8yAjK/2R8 Fs74586aNCAgbMv3/EhZrO7gjNY3oIc93a/6saC5LIWXL2K1X12IlDZ9IIh4qMG2ZgZq c5zb/eQ0qHHMLBAF/MMzeMx0XTXNA26TYSZdqQld7sSzo7JOMeSs6EhdLR6pptOyLdje gSew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744848159; x=1745452959; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/AW4tnkOIpzn+hkaLSPNo53y2Z1zRYt/SZox39VKYwQ=; b=xENZF7xDnG0EU4IWBw816c0PWW4Bou/7oWCbTxGo0AAz+JY6ykngg8cZuffOacmQu1 NOZu12LzDpeYVscAb251RKIc64KY+xUv9AzuVeAK4tM7TYAXP4dTyMp8at6bGrHM1Er8 0EHMUBkXPLni7I609XIm8SgSJjnaLKrwfqmbUcWKzTPsKzs6RjKU+zYFN9kJ4/NAQT+y jKm3x9d4AJhD2Xy4Q9k6ALZ6uLnf75k5ymTxyQTqRnSBKNkfg372xH8vvM6Zl3paiGVC Ik+1W9YFM+zzg7gs4IBkDsRsnUqu+JNVKAvYPWgYjeviqc/5hXbIs8JV7OWF9LeGuMOh GAQg== X-Gm-Message-State: AOJu0Ywy8JwBAEEfpmoUY9Wi6rap7iPoRhnG1n3TVFQbQeAatwXmkHeV xWUkjOV48sGZtYdnSu+wmu3xJIR3kAayYnKqpGVo4NGz/uzbLE1jSVR+XQFRN/cTXZhSOlQZVrv m X-Gm-Gg: ASbGncuJ44bfizIZos9KT7rThLVyY7wkqygCA+DXd41jd4Mn9lkGKEddntfBM8WY/x+ R/imYe0zHZp+7Shiwx8vUkl53iRl+Gy7NZ1geiLdnJJOqd1HGkLKK8hKYtvhe0LdSGNps229z5a dfKHME/OPmTAhVcul9fLitUx1aqwig8Zkte9axABTcjl7EaVR8HS/M0CUCM8LeVxNOQj18GdD5I WB7RlO8GuF5jESgn7C1pPeqMDAuE8Qw+GGOF8q5yYJ/KoHy1LeUbIhDS/KHGvRexrJ6HlkiyUff bvsmbRVxfcHmYfKRKpfwpqZPjKPthASPSfs= X-Google-Smtp-Source: AGHT+IGf3fmN6Dftp8lWka7GnVEDjDvMNgDglg2hGJsI7Z241e3OMiamt8xvqgEcHw3195BZlNuLZA== X-Received: by 2002:a05:6820:509:b0:604:710b:b921 with SMTP id 006d021491bc7-604a8fcacbdmr1941982eaf.0.1744848158441; Wed, 16 Apr 2025 17:02:38 -0700 (PDT) Received: from localhost ([2001:470:b8f6:1b:8795:e9fb:beca:ef25]) by smtp.gmail.com with UTF8SMTPSA id 006d021491bc7-604a5b94c27sm567505eaf.13.2025.04.16.17.02.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 16 Apr 2025 17:02:37 -0700 (PDT) From: Corey Minyard To: qemu-devel@nongnu.org Cc: Nicholas Piggin , Corey Minyard Subject: [PULL 4/6] ipmi/bmc-sim: Add 'Get Channel Info' command Date: Wed, 16 Apr 2025 18:59:08 -0500 Message-ID: <20250417000224.3830705-5-corey@minyard.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417000224.3830705-1-corey@minyard.net> References: <20250417000224.3830705-1-corey@minyard.net> MIME-Version: 1.0 Received-SPF: none client-ip=2607:f8b0:4864:20::c2c; envelope-from=corey@minyard.net; helo=mail-oo1-xc2c.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Nicholas Piggin Linux issues this command when booting a powernv machine. Signed-off-by: Nicholas Piggin Message-ID: <20250401140153.685523-4-npiggin@gmail.com> Signed-off-by: Corey Minyard --- hw/ipmi/ipmi_bmc_sim.c | 68 ++++++++++++++++++++++++++++++++++++++++-- hw/ipmi/ipmi_bt.c | 2 ++ hw/ipmi/ipmi_kcs.c | 1 + include/hw/ipmi/ipmi.h | 10 +++++++ 4 files changed, 79 insertions(+), 2 deletions(-) diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c index bc0ddc52a9..03e58d283e 100644 --- a/hw/ipmi/ipmi_bmc_sim.c +++ b/hw/ipmi/ipmi_bmc_sim.c @@ -70,6 +70,7 @@ #define IPMI_CMD_GET_MSG 0x33 #define IPMI_CMD_SEND_MSG 0x34 #define IPMI_CMD_READ_EVT_MSG_BUF 0x35 +#define IPMI_CMD_GET_CHANNEL_INFO 0x42 #define IPMI_NETFN_STORAGE 0x0a @@ -1020,8 +1021,8 @@ static void send_msg(IPMIBmcSim *ibs, uint8_t *buf; uint8_t netfn, rqLun, rsLun, rqSeq; - if (cmd[2] != 0) { - /* We only handle channel 0 with no options */ + if (cmd[2] != IPMI_CHANNEL_IPMB) { + /* We only handle channel 0h (IPMB) with no options */ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD); return; } @@ -1219,6 +1220,68 @@ static void get_watchdog_timer(IPMIBmcSim *ibs, } } +static void get_channel_info(IPMIBmcSim *ibs, + uint8_t *cmd, unsigned int cmd_len, + RspBuffer *rsp) +{ + IPMIInterface *s = ibs->parent.intf; + IPMIInterfaceClass *k = IPMI_INTERFACE_GET_CLASS(s); + IPMIFwInfo info = {}; + uint8_t ch = cmd[2] & 0x0f; + + /* Only define channel 0h (IPMB) and Fh (system interface) */ + + if (ch == 0x0e) { /* "This channel" */ + ch = IPMI_CHANNEL_SYSTEM; + } + rsp_buffer_push(rsp, ch); + + if (ch != IPMI_CHANNEL_IPMB && ch != IPMI_CHANNEL_SYSTEM) { + /* Not a supported channel */ + rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD); + return; + } + + if (k->get_fwinfo) { + k->get_fwinfo(s, &info); + } + + if (ch == IPMI_CHANNEL_IPMB) { + rsp_buffer_push(rsp, IPMI_CHANNEL_MEDIUM_IPMB); + rsp_buffer_push(rsp, IPMI_CHANNEL_PROTOCOL_IPMB); + } else { /* IPMI_CHANNEL_SYSTEM */ + rsp_buffer_push(rsp, IPMI_CHANNEL_MEDIUM_SYSTEM); + rsp_buffer_push(rsp, info.ipmi_channel_protocol); + } + + rsp_buffer_push(rsp, 0x00); /* Session-less */ + + /* IPMI Enterprise Number for Vendor ID */ + rsp_buffer_push(rsp, 0xf2); + rsp_buffer_push(rsp, 0x1b); + rsp_buffer_push(rsp, 0x00); + + if (ch == IPMI_CHANNEL_SYSTEM) { + uint8_t irq; + + if (info.irq_source == IPMI_ISA_IRQ) { + irq = info.interrupt_number; + } else if (info.irq_source == IPMI_PCI_IRQ) { + irq = 0x10 + info.interrupt_number; + } else { + irq = 0xff; /* no interrupt / unspecified */ + } + + /* Both interrupts use the same irq number */ + rsp_buffer_push(rsp, irq); + rsp_buffer_push(rsp, irq); + } else { + /* Reserved */ + rsp_buffer_push(rsp, 0x00); + rsp_buffer_push(rsp, 0x00); + } +} + static void get_sdr_rep_info(IPMIBmcSim *ibs, uint8_t *cmd, unsigned int cmd_len, RspBuffer *rsp) @@ -2015,6 +2078,7 @@ static const IPMICmdHandler app_cmds[] = { [IPMI_CMD_RESET_WATCHDOG_TIMER] = { reset_watchdog_timer }, [IPMI_CMD_SET_WATCHDOG_TIMER] = { set_watchdog_timer, 8 }, [IPMI_CMD_GET_WATCHDOG_TIMER] = { get_watchdog_timer }, + [IPMI_CMD_GET_CHANNEL_INFO] = { get_channel_info, 3 }, }; static const IPMINetfn app_netfn = { .cmd_nums = ARRAY_SIZE(app_cmds), diff --git a/hw/ipmi/ipmi_bt.c b/hw/ipmi/ipmi_bt.c index 583fc64730..28cf6ab218 100644 --- a/hw/ipmi/ipmi_bt.c +++ b/hw/ipmi/ipmi_bt.c @@ -419,6 +419,8 @@ void ipmi_bt_get_fwinfo(struct IPMIBT *ib, IPMIFwInfo *info) info->interface_type = IPMI_SMBIOS_BT; info->ipmi_spec_major_revision = 2; info->ipmi_spec_minor_revision = 0; + /* BT System Interface Format, IPMI v1.5 */ + info->ipmi_channel_protocol = IPMI_CHANNEL_PROTOCOL_BT_15; info->base_address = ib->io_base; info->register_length = ib->io_length; info->register_spacing = 1; diff --git a/hw/ipmi/ipmi_kcs.c b/hw/ipmi/ipmi_kcs.c index c15977cab4..578dd7cef3 100644 --- a/hw/ipmi/ipmi_kcs.c +++ b/hw/ipmi/ipmi_kcs.c @@ -405,6 +405,7 @@ void ipmi_kcs_get_fwinfo(IPMIKCS *ik, IPMIFwInfo *info) info->interface_type = IPMI_SMBIOS_KCS; info->ipmi_spec_major_revision = 2; info->ipmi_spec_minor_revision = 0; + info->ipmi_channel_protocol = IPMI_CHANNEL_PROTOCOL_KCS; info->base_address = ik->io_base; info->i2c_slave_address = ik->bmc->slave_addr; info->register_length = ik->io_length; diff --git a/include/hw/ipmi/ipmi.h b/include/hw/ipmi/ipmi.h index c8ef04856e..802a2febb0 100644 --- a/include/hw/ipmi/ipmi.h +++ b/include/hw/ipmi/ipmi.h @@ -41,6 +41,15 @@ enum ipmi_op { IPMI_SEND_NMI }; +/* Channel properties */ +#define IPMI_CHANNEL_IPMB 0x00 +#define IPMI_CHANNEL_SYSTEM 0x0f +#define IPMI_CHANNEL_MEDIUM_IPMB 0x01 +#define IPMI_CHANNEL_MEDIUM_SYSTEM 0x0c +#define IPMI_CHANNEL_PROTOCOL_IPMB 0x01 +#define IPMI_CHANNEL_PROTOCOL_KCS 0x05 +#define IPMI_CHANNEL_PROTOCOL_BT_15 0x08 + #define IPMI_CC_INVALID_CMD 0xc1 #define IPMI_CC_COMMAND_INVALID_FOR_LUN 0xc2 #define IPMI_CC_TIMEOUT 0xc3 @@ -76,6 +85,7 @@ typedef struct IPMIFwInfo { int interface_type; uint8_t ipmi_spec_major_revision; uint8_t ipmi_spec_minor_revision; + uint8_t ipmi_channel_protocol; uint8_t i2c_slave_address; uint32_t uuid; From patchwork Wed Apr 16 23:59:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corey Minyard X-Patchwork-Id: 14054630 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 40DBBC369C7 for ; Thu, 17 Apr 2025 00:03:26 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u5CiL-000435-NM; Wed, 16 Apr 2025 20:02:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u5CiJ-00042Q-96 for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:43 -0400 Received: from mail-ot1-x330.google.com ([2607:f8b0:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u5CiH-0006Px-Eg for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:42 -0400 Received: by mail-ot1-x330.google.com with SMTP id 46e09a7af769-72c1419f73eso684786a34.1 for ; Wed, 16 Apr 2025 17:02:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minyard-net.20230601.gappssmtp.com; s=20230601; t=1744848159; x=1745452959; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JocjqZ7axQak0ryaIxlzlPJ7rR7B3nPUKxuLnqDLYbA=; b=Eor6tSOpKcH9dxeld4s7NiG0gQbGKtKm/NTdikg2cmUMaxrZgcxu1G1fsPNPXStlkd yCJeVG7FoGhhoTkViPNtT6PTN60pm6fTjTQJsS7J4MAeY+rwITmZ48IddacmGFcRSDNM 33eIluxj7lE0Xd2FTbkqeSnfyKxdbrFNq4UgWxfvw1Iz8hgafd2M43omcSOR/QBg+3/G cSyVhmHqmsNycg2OtfZfy3U+Qz2kjVOZq2+UVH0CQVnKWiPIZM+nG7f711c7i7DKkd1o CiNEO8yHGL4CxihDhtK6WEiHmAojm+PLhko7v/w4Q/rWhkI/RzGvjztwoTrrxpoJptl5 VwPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744848159; x=1745452959; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JocjqZ7axQak0ryaIxlzlPJ7rR7B3nPUKxuLnqDLYbA=; b=UqLeU9HdoNsSgcYeIBkD91gXivX02fn5rHcjetXafGDgKJsprsn+e9ngNx6W1KTbCg hTF/uRzzL3yCR8AOs4wOtZG+P/00ITzDxN5PtXH+Bk/ve/M/FF3ToPAGcr4qmcplcI5t +2/AYIZ1v4U6mZLd6nXuC1jxbWlr9BW/iqehnIPJlqxSYZZAvsa7czbLXrMzGBaLKF+a nSQ4ZqZtjifgsrC5FewsjkSYEn95eMV1+OZzzVFoo3wyiEi41zTRqlN7UTI+Kf8W2b3z ABNrOD7DvdsmSKWf6r7LJCCN3YUaVaGOAKxqRU9NEO6HELWQxFDkbNP21ibczTPmH5Ug 63bw== X-Gm-Message-State: AOJu0YzKteap0H72jkssCgBS0kfvtMG0q1GQdlqkXe64o9Ke7zDHuxSP osMc8XE3/q7XoSppszZZkZU1C9H64yE1wDW6+rXBjyVlyOakyqOStSEvKZLrk7zJy+JLwFS/2ce t X-Gm-Gg: ASbGncuU6RhBKoODOO1FEIqd3gLR/EZcGwzXB7Db2rDhAqm2ZEQlx7tbqOKbrAsMtOc 5EGxCvkoIu5VtQW/hP1zhiLBWzMu6n8aDxiTXPrJen9bWF9quNn0WnkkjfkHJaiGRkcCj0QWEQy 5xrpe0zh+pUijB+ntNFu7RFD0cWmIf1SRq+V/gZiyZf+w7+eIbxwHhN/z8qHQGtr87MZvIMeDy7 qH21Gm0JYfRaYk2So81eJ8r43P8pxpt5leqush/2flebV9mQ+rgmXhnUNd8PlCpEo8lSP/tXmM7 6pmzMnGL6JkC979gAj66mACxk13leXRIS38= X-Google-Smtp-Source: AGHT+IHoJn4tF9TxRP9AdgllUNZFXaRyUI2bD0axk6wKWNwxt+743nLtFxgSnySKbvS9LP+n6i17Sw== X-Received: by 2002:a05:6830:620f:b0:72a:b2a:476 with SMTP id 46e09a7af769-72f734b66admr494148a34.3.1744848159612; Wed, 16 Apr 2025 17:02:39 -0700 (PDT) Received: from localhost ([2001:470:b8f6:1b:8795:e9fb:beca:ef25]) by smtp.gmail.com with UTF8SMTPSA id 46e09a7af769-72e73d6eb1fsm2989768a34.16.2025.04.16.17.02.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 16 Apr 2025 17:02:39 -0700 (PDT) From: Corey Minyard To: qemu-devel@nongnu.org Cc: Nicholas Piggin , Corey Minyard Subject: [PULL 5/6] ipmi/bmc-sim: implement watchdog dont log flag Date: Wed, 16 Apr 2025 18:59:09 -0500 Message-ID: <20250417000224.3830705-6-corey@minyard.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417000224.3830705-1-corey@minyard.net> References: <20250417000224.3830705-1-corey@minyard.net> MIME-Version: 1.0 Received-SPF: none client-ip=2607:f8b0:4864:20::330; envelope-from=corey@minyard.net; helo=mail-ot1-x330.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Nicholas Piggin If the dont-log flag is set in the 'timer use' field for the 'set watchdog' command, a watchdog timeout will not get logged as a timer use expiration. Signed-off-by: Nicholas Piggin Message-ID: <20250401140153.685523-5-npiggin@gmail.com> Signed-off-by: Corey Minyard --- hw/ipmi/ipmi_bmc_sim.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c index 03e58d283e..4ed66e1ee0 100644 --- a/hw/ipmi/ipmi_bmc_sim.c +++ b/hw/ipmi/ipmi_bmc_sim.c @@ -514,7 +514,8 @@ static void gen_event(IPMIBmcSim *ibs, unsigned int sens_num, uint8_t deassert, static void sensor_set_discrete_bit(IPMIBmcSim *ibs, unsigned int sensor, unsigned int bit, unsigned int val, - uint8_t evd1, uint8_t evd2, uint8_t evd3) + uint8_t evd1, uint8_t evd2, uint8_t evd3, + bool do_log) { IPMISensor *sens; uint16_t mask; @@ -534,7 +535,7 @@ static void sensor_set_discrete_bit(IPMIBmcSim *ibs, unsigned int sensor, return; /* Already asserted */ } sens->assert_states |= mask & sens->assert_suppt; - if (sens->assert_enable & mask & sens->assert_states) { + if (do_log && (sens->assert_enable & mask & sens->assert_states)) { /* Send an event on assert */ gen_event(ibs, sensor, 0, evd1, evd2, evd3); } @@ -544,7 +545,7 @@ static void sensor_set_discrete_bit(IPMIBmcSim *ibs, unsigned int sensor, return; /* Already deasserted */ } sens->deassert_states |= mask & sens->deassert_suppt; - if (sens->deassert_enable & mask & sens->deassert_states) { + if (do_log && (sens->deassert_enable & mask & sens->deassert_states)) { /* Send an event on deassert */ gen_event(ibs, sensor, 1, evd1, evd2, evd3); } @@ -700,6 +701,7 @@ static void ipmi_sim_handle_timeout(IPMIBmcSim *ibs) { IPMIInterface *s = ibs->parent.intf; IPMIInterfaceClass *k = IPMI_INTERFACE_GET_CLASS(s); + bool do_log = !IPMI_BMC_WATCHDOG_GET_DONT_LOG(ibs); if (!ibs->watchdog_running) { goto out; @@ -711,14 +713,16 @@ static void ipmi_sim_handle_timeout(IPMIBmcSim *ibs) ibs->msg_flags |= IPMI_BMC_MSG_FLAG_WATCHDOG_TIMEOUT_MASK; k->do_hw_op(s, IPMI_SEND_NMI, 0); sensor_set_discrete_bit(ibs, IPMI_WATCHDOG_SENSOR, 8, 1, - 0xc8, (2 << 4) | 0xf, 0xff); + 0xc8, (2 << 4) | 0xf, 0xff, + do_log); break; case IPMI_BMC_WATCHDOG_PRE_MSG_INT: ibs->msg_flags |= IPMI_BMC_MSG_FLAG_WATCHDOG_TIMEOUT_MASK; k->set_atn(s, 1, attn_irq_enabled(ibs)); sensor_set_discrete_bit(ibs, IPMI_WATCHDOG_SENSOR, 8, 1, - 0xc8, (3 << 4) | 0xf, 0xff); + 0xc8, (3 << 4) | 0xf, 0xff, + do_log); break; default: @@ -738,24 +742,28 @@ static void ipmi_sim_handle_timeout(IPMIBmcSim *ibs) switch (IPMI_BMC_WATCHDOG_GET_ACTION(ibs)) { case IPMI_BMC_WATCHDOG_ACTION_NONE: sensor_set_discrete_bit(ibs, IPMI_WATCHDOG_SENSOR, 0, 1, - 0xc0, ibs->watchdog_use & 0xf, 0xff); + 0xc0, ibs->watchdog_use & 0xf, 0xff, + do_log); break; case IPMI_BMC_WATCHDOG_ACTION_RESET: sensor_set_discrete_bit(ibs, IPMI_WATCHDOG_SENSOR, 1, 1, - 0xc1, ibs->watchdog_use & 0xf, 0xff); + 0xc1, ibs->watchdog_use & 0xf, 0xff, + do_log); k->do_hw_op(s, IPMI_RESET_CHASSIS, 0); break; case IPMI_BMC_WATCHDOG_ACTION_POWER_DOWN: sensor_set_discrete_bit(ibs, IPMI_WATCHDOG_SENSOR, 2, 1, - 0xc2, ibs->watchdog_use & 0xf, 0xff); + 0xc2, ibs->watchdog_use & 0xf, 0xff, + do_log); k->do_hw_op(s, IPMI_POWEROFF_CHASSIS, 0); break; case IPMI_BMC_WATCHDOG_ACTION_POWER_CYCLE: sensor_set_discrete_bit(ibs, IPMI_WATCHDOG_SENSOR, 2, 1, - 0xc3, ibs->watchdog_use & 0xf, 0xff); + 0xc3, ibs->watchdog_use & 0xf, 0xff, + do_log); k->do_hw_op(s, IPMI_POWERCYCLE_CHASSIS, 0); break; } From patchwork Wed Apr 16 23:59:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corey Minyard X-Patchwork-Id: 14054633 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 909A6C369BD for ; Thu, 17 Apr 2025 00:04:06 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u5CiN-00044B-AX; Wed, 16 Apr 2025 20:02:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u5CiL-00043K-Nq for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:45 -0400 Received: from mail-oa1-x2b.google.com ([2001:4860:4864:20::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u5CiJ-0006QI-6t for qemu-devel@nongnu.org; Wed, 16 Apr 2025 20:02:45 -0400 Received: by mail-oa1-x2b.google.com with SMTP id 586e51a60fabf-2cc57330163so98540fac.2 for ; Wed, 16 Apr 2025 17:02:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minyard-net.20230601.gappssmtp.com; s=20230601; t=1744848161; x=1745452961; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mDzK1+65Mv6a49WJNhPRq8x3vpC29HQLfTAjbcCCOoI=; b=Ami1ZQkHM6zJEPVcwQ6PxQfJzc8urtuJdBtmju82d7pXcaKod0QltkNCF4EAmlvyGy QHPYWni6LmPiL8SbC29FU+aHTbUK7VhAgtgH/HQsC01cx3lM1p3AKjCTNQVoN/ZVmqn6 KLKjoREGSPc6zw6TMYJ4EDIA9crZUtrLoA4Pbh4za0C6M7+eyKwzUyNDvr6sH1IRSsXJ 71g64a3teKeRPxXEJ/kz6YkiP+ZR7mx9WZ7genjXmZPz+HwcqbICNdF9kBpPKhshym7P 19AxonZY6LO45Bs9zuaFFGavcfR0aTfPAiT61Ryg9a6TQzfEhZ6pXixqinalYa5LO2dJ tTwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744848161; x=1745452961; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mDzK1+65Mv6a49WJNhPRq8x3vpC29HQLfTAjbcCCOoI=; b=RgZj7zEIe4aG4Kfein0y+kEpZWZVklBzLIRhsY3PIBXXyaXSCmAm8AHsE8H1hPa5qZ dHvv7qrzRtmEsCXe5D1AMfJVgUQq0RQkla/BGou4Q1o3HZoJbmfjWB670IblEbxnnWrR qgwEorzFP0/DKN+csZplTALQcFQnbn32NRsWXWf68lbsAUu6nVMBguP1xRqCl/7NuSkl NgyC03A8lkzV0eOQitiLN+xPwHXdSTnwr1OBSRfpNLcqWKZhDt5Y5JirOcYT4C0fD6kB uthy4CQHumS3OGooj6Zalu1B90Izk8Juo2W5aZgCgMOhr1Wu3mvvuFCdVpa4kM81xLpx 8axw== X-Gm-Message-State: AOJu0YyBnmZAKD9eD1ThPjF5OM7cfR3y4c64AxzrHPBwerc323GghXvS 2jvPhmlAd2EUo8H/8zvbAq8PuaNcwBLgDYn8HH8Jf03ZGv36Sa7KKa1wL/959CGr9/me1qLxKU6 T X-Gm-Gg: ASbGncuPUcdy7SZGRIgaxxcjdfLWSdSS4kERJ9RQv9bS+CzqtZ95NsR9nnFGFARq3L0 Re6XQZN5WIB2lwLTwLDTm/1vaOaSC2klHdjd+m94xixsPFrYVims7oi9gTEddpn1ajTKddpPpPg yvF6vnfKYvp2fkSXB+mrsalP+hhLT68F3eEMjSTI0kCzTm4dQ95y1pykkWa64CW469SCDN+A7/f ME1hD5FcoalaUVxgWOAgY5D0s7xFt10tUyUYNHfoVSSPu4cWo/VL3gmERaxSVknAQKMtCz6ecou nFBnO1RzJxZcia7tLF6zdZNoELa6XgMkeDU= X-Google-Smtp-Source: AGHT+IGDvOs48TtVL8rxkSAq1cWBZ/eQGDJhcjmoWha8/6tKmiKjorxULfe0WqrOfBEXwf7RMYtyTw== X-Received: by 2002:a05:6870:4945:b0:2b7:f58d:6dcf with SMTP id 586e51a60fabf-2d4d2b65c98mr2396233fac.18.1744848160830; Wed, 16 Apr 2025 17:02:40 -0700 (PDT) Received: from localhost ([2001:470:b8f6:1b:8795:e9fb:beca:ef25]) by smtp.gmail.com with UTF8SMTPSA id 586e51a60fabf-2d096cd1a48sm3527040fac.40.2025.04.16.17.02.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 16 Apr 2025 17:02:40 -0700 (PDT) From: Corey Minyard To: qemu-devel@nongnu.org Cc: Nicholas Piggin , Corey Minyard Subject: [PULL 6/6] ipmi/bmc-sim: add error handling for 'Set BMC Global Enables' command Date: Wed, 16 Apr 2025 18:59:10 -0500 Message-ID: <20250417000224.3830705-7-corey@minyard.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417000224.3830705-1-corey@minyard.net> References: <20250417000224.3830705-1-corey@minyard.net> MIME-Version: 1.0 Received-SPF: none client-ip=2001:4860:4864:20::2b; envelope-from=corey@minyard.net; helo=mail-oa1-x2b.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Nicholas Piggin Mask out unsupported bits and return failure if attempting to set any. This is not required by the IPMI spec, but it does require that system software not change bits it isn't aware of. Signed-off-by: Nicholas Piggin Message-ID: <20250401140153.685523-6-npiggin@gmail.com> Signed-off-by: Corey Minyard --- hw/ipmi/ipmi_bmc_sim.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c index 4ed66e1ee0..1c60a71831 100644 --- a/hw/ipmi/ipmi_bmc_sim.c +++ b/hw/ipmi/ipmi_bmc_sim.c @@ -235,6 +235,7 @@ struct IPMIBmcSim { #define IPMI_BMC_MSG_FLAG_RCV_MSG_QUEUE_SET(s) \ (IPMI_BMC_MSG_FLAG_RCV_MSG_QUEUE & (s)->msg_flags) +#define IPMI_BMC_GLOBAL_ENABLES_SUPPORTED 0x0f #define IPMI_BMC_RCV_MSG_QUEUE_INT_BIT 0 #define IPMI_BMC_EVBUF_FULL_INT_BIT 1 #define IPMI_BMC_EVENT_MSG_BUF_BIT 2 @@ -934,7 +935,14 @@ static void set_bmc_global_enables(IPMIBmcSim *ibs, uint8_t *cmd, unsigned int cmd_len, RspBuffer *rsp) { - set_global_enables(ibs, cmd[2]); + uint8_t val = cmd[2]; + + if (val & ~IPMI_BMC_GLOBAL_ENABLES_SUPPORTED) { + rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD); + return; + } + + set_global_enables(ibs, val); } static void get_bmc_global_enables(IPMIBmcSim *ibs,