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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 A196AC433DB for ; Thu, 18 Feb 2021 18:11:45 +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 ECF2564EAD for ; Thu, 18 Feb 2021 18:11:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ECF2564EAD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:50680 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lCnmB-00049b-QU for qemu-devel@archiver.kernel.org; Thu, 18 Feb 2021 13:11:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39296) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lCnXq-0006Gw-Fi; Thu, 18 Feb 2021 12:56:54 -0500 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:33450) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lCnXo-0005EL-Sg; Thu, 18 Feb 2021 12:56:54 -0500 Received: by mail-wr1-x42a.google.com with SMTP id 7so3982827wrz.0; Thu, 18 Feb 2021 09:56:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=U4K5mV9Oj6Q7VuTUZ6Y9QWIDTEEDo3vpgGL+EGjUbzs=; b=izsRhtu2Ynvx7FgS2WhmdmUvvrf5xRP74YGCGEND0kzGltiroV+RnzoWPCGQCf3zwo pMCLhhJYWlmIrMVbRBakEh1gGnWlrClh5TbjmaNqJ80l9k05FG8G7zfwr3c6x0Grzx1s 1xCHu2n7+AhbPgcEe6ALwczDLqQJO+cWjeA68y1MYmX19Mt0LgMa4aJCZ3dx4EwW3Lc7 xUxkABjhJqcjTUhOh5bjkSDM9kFAwDm9MmeQ0nqySk9V4heoRENeD7ijrFP9g89k8SdX Khgb8x2Wmn02tElL7r+ixFAgYpeJ6hcuef9a4jnOvb2uZpDRcKrSJk1p8mPDYdLUXMkB EMJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding; bh=U4K5mV9Oj6Q7VuTUZ6Y9QWIDTEEDo3vpgGL+EGjUbzs=; b=LIcENZCavCW+YXRsOBDIWCTRiTv62qBirvv1nGu7egXoeY+yJ0VG2tPNQ4qXsMGlGu 3oCHOOZe12nWz4XFVPgNSRmo8Ixsq1Gn4+XBpPPsLkHz1DMoTlF0pi27g6M1wiURIjtZ URRuznkG9hLPLWJm1fA+0ZnnskS+D+6yJ6T1+jcfSpEThkAffnkclufDKS3qve1GjbCP uRDuDOd8SMxB8KloI8lnSADcv9MYBG9DmjJ6Lnm6FLX1TFDMfl/ES0CpKl7qgJJ3Ll7C qr4TRSNGL1mmGrL//C4E1kWbQb38zjUt9pi3+e1JbGZzVB2HAgd2vwMGiRc3BxmP6hj2 tRRQ== X-Gm-Message-State: AOAM530NQffxltE5y/XvObfwa1835VHISBcFtoS5c6xySkGUiYBpP2O0 VBxuk71vUQVS8H/2gmtWYlwPCpnIBxQ= X-Google-Smtp-Source: ABdhPJxfaL6jMMgyQe5CI/4N6F7+kwudKxpEBLsyCd5M1EGHngXH1KTAFT0M8LnJ9R5hLRfmfTRlhA== X-Received: by 2002:adf:f905:: with SMTP id b5mr5204767wrr.129.1613671010785; Thu, 18 Feb 2021 09:56:50 -0800 (PST) Received: from localhost.localdomain (68.red-83-57-175.dynamicip.rima-tde.net. [83.57.175.68]) by smtp.gmail.com with ESMTPSA id v12sm10813669wrv.69.2021.02.18.09.56.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Feb 2021 09:56:50 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH] hw/sd/sdhci: Report error when guest access protected registers Date: Thu, 18 Feb 2021 18:56:48 +0100 Message-Id: <20210218175648.1636219-1-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42a.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.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, 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: Bin Meng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, Bin Meng Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" The SDHC_SYSAD and SDHC_BLKSIZE can not be accessed while a transaction is in progress, see 'SD Host Controller Simplified Specification' 1.5) SD Command Generation The Host Driver should not read the SDMA System Address, Block Size and Block Count registers during a data transaction unless the transfer is stopped because the value is changing and not stable. Report guest intents as errors. Signed-off-by: Philippe Mathieu-Daudé --- Based-on: <1613447214-81951-1-git-send-email-bmeng.cn@gmail.com> Signed-off-by: Philippe Mathieu-Daudé --- hw/sd/sdhci.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 5b8678110b0..98928c18542 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1136,6 +1136,10 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) sdhci_sdma_transfer_single_block(s); } } + } else { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: Transfer already in progress," + " can not update SYSAD", __func__); } break; case SDHC_BLKSIZE: @@ -1163,8 +1167,11 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) if (blksize != s->blksize) { s->data_count = 0; } + } else { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: Transfer already in progress," + " can not update BLKSIZE", __func__); } - break; case SDHC_ARGUMENT: MASKED_WRITE(s->argument, mask, value); -- 2.26.2