From patchwork Fri Jan 5 13:58:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gerd Hoffmann X-Patchwork-Id: 13512201 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 76D11C3DA6E for ; Fri, 5 Jan 2024 14:00:05 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rLkj1-0005ap-Bi; Fri, 05 Jan 2024 08:59:03 -0500 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 1rLkj0-0005ad-A8 for qemu-devel@nongnu.org; Fri, 05 Jan 2024 08:59:02 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rLkix-00039h-U9 for qemu-devel@nongnu.org; Fri, 05 Jan 2024 08:59:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1704463138; 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; bh=0hof9TN+rxDXuxoyt0Vciyfx0KPFFfZq+/jydNyxF7Q=; b=BkS/qtwmuefd3j17RfcwsnUzN1YNlwapvhbeJhhnJqFM6/CfOubgM0JW2SLycD6tEQ1x9q i5ba7zXbAKFTypjrVJ35G42swD9GORS4JtfphSuetIh0hnq2ExoBzGMZ8tPc+es6TzmGnt fsGrJ9Qp4b80po8Uh9L7ZTfsUFq32kA= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-124-BNBNowR1MmeOnp9XB6nE1Q-1; Fri, 05 Jan 2024 08:58:56 -0500 X-MC-Unique: BNBNowR1MmeOnp9XB6nE1Q-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9A25788CC40; Fri, 5 Jan 2024 13:58:56 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.193.65]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6B64E1121306; Fri, 5 Jan 2024 13:58:56 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 203AD18009E5; Fri, 5 Jan 2024 14:58:55 +0100 (CET) From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: Hanna Reitz , Kevin Wolf , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, Gerd Hoffmann Subject: [PATCH 0/2] hw/pflash: implement update buffer for block writes Date: Fri, 5 Jan 2024 14:58:52 +0100 Message-ID: <20240105135855.268064-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3 Received-SPF: pass client-ip=170.10.133.124; envelope-from=kraxel@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -47 X-Spam_score: -4.8 X-Spam_bar: ---- X-Spam_report: (-4.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-2.679, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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 When running qemu with edk2 efi firmware on aarch64 the efi variable store in pflash can get corrupted. qemu not doing proper block writes -- flush all or nothing to storage -- is a hot candidate for being the root cause. This little series tries to fix that with an update buffer where block writes are staged, so we can commit or discard the changes when the block write is completed or canceled. Gerd Hoffmann (2): hw/pflash: refactor pflash_data_write() hw/pflash: implement update buffer for block writes hw/block/pflash_cfi01.c | 132 ++++++++++++++++++++++++++++------------ 1 file changed, 93 insertions(+), 39 deletions(-)