From patchwork Mon Feb 5 18:44:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 869446 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="C05KJ0Re"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zZxV21976z9t20 for ; Tue, 6 Feb 2018 05:50:02 +1100 (AEDT) Received: from localhost ([::1]:50680 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eilq4-0006F0-BC for incoming@patchwork.ozlabs.org; Mon, 05 Feb 2018 13:50:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33155) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eilpb-0006EY-S3 for qemu-devel@nongnu.org; Mon, 05 Feb 2018 13:49:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eilpW-0003vg-T3 for qemu-devel@nongnu.org; Mon, 05 Feb 2018 13:49:31 -0500 Received: from mail-sn1nam02on0063.outbound.protection.outlook.com ([104.47.36.63]:12990 helo=NAM02-SN1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eilpW-0003t8-Jh for qemu-devel@nongnu.org; Mon, 05 Feb 2018 13:49:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Ij9mE5GrC/YybTOWqIB9WhPzEXgSPEH4sEbGuFTIgRE=; b=C05KJ0ReJvd+3fhxMMQMbMcrICvv6xQO4RhQ17rJDNBXy8wF2LrWl+mqwM+tMPyIJZc92GpAUk7g57mhngudI1Wq6IS89Vxn76W+JYYgJNqMLjd6N1oPOyU2rwLB6MQ5cHG6gjCw0ZlXTvQpLYyCJTHcQnvcxZbd2IJvR1UdqM4= Received: from SN4PR0201CA0041.namprd02.prod.outlook.com (10.162.76.27) by DM5PR02MB3385.namprd02.prod.outlook.com (10.164.152.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.464.11; Mon, 5 Feb 2018 18:49:24 +0000 Received: from BL2NAM02FT020.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::207) by SN4PR0201CA0041.outlook.office365.com (2603:10b6:803:2e::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.464.11 via Frontend Transport; Mon, 5 Feb 2018 18:49:23 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; amsat.org; dkim=none (message not signed) header.d=none;amsat.org; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by BL2NAM02FT020.mail.protection.outlook.com (10.152.77.162) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.444.13 via Frontend Transport; Mon, 5 Feb 2018 18:49:23 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1eilpS-0003Et-85; Mon, 05 Feb 2018 10:49:22 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1eilpS-0001Au-4d; Mon, 05 Feb 2018 10:49:22 -0800 Received: from xsj-pvapsmtp01 (mailman.xilinx.com [149.199.38.66]) by xsj-smtp-dlp2.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id w15InEqx007049; Mon, 5 Feb 2018 10:49:15 -0800 Received: from [172.19.2.220] (helo=xsjalistai50.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1eilpK-0001AD-Qe; Mon, 05 Feb 2018 10:49:14 -0800 From: Alistair Francis To: , Date: Mon, 5 Feb 2018 10:44:47 -0800 Message-ID: X-Mailer: git-send-email 2.14.1 MIME-Version: 1.0 X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23620.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.83; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(396003)(376002)(346002)(2980300002)(438002)(189003)(199004)(4326008)(7696005)(305945005)(26005)(316002)(336011)(36386004)(186003)(77096007)(47776003)(50466002)(5660300001)(118296001)(106466001)(356003)(63266004)(5820100001)(8676002)(81166006)(81156014)(23676004)(6666003)(59450400001)(2870700001)(478600001)(2906002)(8936002)(106002)(50226002)(39060400002)(9786002)(54906003)(110136005)(36756003)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR02MB3385; H:xsj-pvapsmtpgw01; FPR:; SPF:Pass; PTR:unknown-60-83.xilinx.com; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2NAM02FT020; 1:QnNta7xF3Swd8dzMw1ujVTNBUlkZj+s0sW8kLGmJFsZAcHYyob2XHMQoJt4tj2RV2qIZQTdFWhZFpRsYV0+RkDmKSxXumaCkX/uTx6paQ99yuqSMzBO3eWdcO/CAaeQt X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1aba111c-c781-4e5b-bfb6-08d56cc92c74 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(4608076)(2017052603307)(7153060); SRVR:DM5PR02MB3385; X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB3385; 3:m+EvPZ4qc8MOkXLG4L3fiG3Oe6XfNK0uoetZo7rFD88Ymx61Fw3YWxx6tE8JPjkWbfkUdjhIkLkY799tK4fDUP4v4V2HFVFfpR2zZdYYTTlJCM0QHziA58aNc+YGbQ0H16yns4nygLN3g7cPGbbmWTKT9w0Krf8n5ZxgOgWFx5XL75BD36lDLTRWq+sEHOrInwyiZUMWjB8xi+v+T0kypfPXZ2SQJ6cIuOSEvpIQxDssrKzft3FACLa46n0tndQ98ImSfB1cX8QTuf8dPB9GyMOgFccUy2TrPb+7EmpD/amZvw7RLCisF2blFus8WJOvH+847fAlHQybAt6lrwqovq17F6EwEr28zEFwst8FhrM=; 25:/f8rDtW+1TnULR52snVbv6ObXr2hBBIJa5DCpji7JQZ0PQiMZH4gdO+25AZistOj5jDKLkhcex99EmKQWqD7JDFa1rv6YnKLbsLLH1ZtukKh0lI+IGaDcwqPtli21nwjVl5J175DbYsJ9fg9ahJMbQiAKWi1qWCS4yuInWKo13XH6s7TZGG1N2n/kTzg2BFvHMuHMhu0GVVMb8c83IA/OIc4/BKVzpbELIuR6sGCqMUYh9i7L7+fjWTsZQzGKuBshkSqraGtLWq09SyiJXWr+lrVnpIsDqBaKeX40xNIQQi6niIFo1aZm74Gf+DX3gf6LVMUAXimn1JG38S1lJTbGQ== X-MS-TrafficTypeDiagnostic: DM5PR02MB3385: X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB3385; 31:6EqwZDsAA/0oZ3ncNK7Z2pLvZweOqMyUoFlE4CO009nTROR15FN1OrqezGtHV7TF306WGVuZ26tAq2Djl3ufvuz/DmkkJvkPp/4xvfsBJTEmePerWuM+Yr3DUtDyfc9QIXsR7haPiF+go8ZqH6uU7twbg9yVPizzBDQCKN0NcB8cDP+ufQvgTpUndKqFr5ohj04F1IuGvb2qqFueDfyHc+mWJElnZYHHG9D0IG32C5w=; 20:4PDK/X0oCG9fHW2SvvDiKL4O8pzT6DR4aUklFPSP6saYGn+iwyVkkZXimJest3GKXPwVh+CysYJpc1OMDJlRwbspUFLlIERdJClucIVY2JhAc/q2Co6/7R+U6IPbUuKVwchFyCUz5mNXk5cKHbfLfllz3GW+vM+eJQOKqg6e0OZOxs4Kie+oWzaK5of9c5Y4mPO6qxmDgJ8XFGSblxToCP2AzQblJry81QlFFK5/1DsLXsrAhJprevI2gfP7DGABBHRhrjjr9h56HebjfR/FI5/C8/HKy7IVkD8n/AynV9WEEque6cM5VfiJHt5gSxIggk4CdFgDaV7sRhPVS5I0MBqJGy5ElhDx1gfpXIMjnKQLC7vi602tjGwPWtNex0WU7sn8MoOhrk/dhDBqoBzTJHz8oZyG3KKVBMlUfuR8u5SDNLqlIueLxY9kKP7sVuO0kprM67W9IXpLm76OpBQjjQ3J5hLRdomewYH64rIfLOpootiHxH3e9e1i57t0tt36 X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(3002001)(3231101)(2400082)(944501161)(10201501046)(93006095)(93004095)(6055026)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:DM5PR02MB3385; BCL:0; PCL:0; RULEID:; SRVR:DM5PR02MB3385; X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB3385; 4:wTa2rqKOCKtxD/HO8TNONhDPRCICk05dJzhS0Gj88a4B2YtmD1LJpiq7IbITzpOj/sqB1JbW6OYGlzys0nox82uJ6lNfR5sdX/xEEM5gwwdtobTZ/kxvIH/19tkwW7sOhyn4i7rdtZvYkGxfAEgG+T5f5nZrdFt0PmAUgNwwJSbtVVamZyEXtVocdJY1fOwzTjhhbq8rjH3H2FjhcikFxVs/J6Fs649EKjpCkse9u0+jh+si5oPpssVZW3rLzSRHy9Uf8FVmsdk47fV9S2Y3YeCiHbhwVXpANSitJM3ypSbFd/QAYl+9m0ANnNaZkpu3 X-Forefront-PRVS: 0574D4712B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR02MB3385; 23:F1q0K4PVcUBiEP+4uNKX0mXirCebdo4kV7Az/pI0b?= 4AMeu4kbidYCEvouTbSSgwkub0H/huxx1HaRZfLgS/JHsQaM3EItK8Q9ZoSRpCHSrzGT3PYL2s4hgNbvh1KKwoF8wN+B3EXWEq7ISjbZO3ZhOPBlAMuf/b3GpjdQNCj6t+80a1Vd8EnT84Z/AtK3Tk2JTDz6ri7xed5W1JmvOP0mTHTAStaomAvTSvLFi8K2e2iNQI4z76RS9Asz7umfSR84UCDA06Bykep7M4ZrFV4S5QP0RHxGwsmLQSjulB6obO8pX1wVVZFxe38BUZY7K8JIhrNP3N0SXUPzlDz1JIw/siuSC+lBYmtLKWCRtzAdeHxWEf7j9S5mwrXVFqqphJ+S4GX6soMHuopfJk36FimIuH7K0vLsogxKsFR54up7lbGx1Ju7shqADqCb/R0w4QaeMzLZLVqoR/sMeZOiz7Kh+HcTTQ2RFZ+Hq6ynSWzSA3jkTprpi4jVUoNCdue6Zw42wvc3VLS5QeKOdY07/wg2RmcAeUW9RsIywG4GvudHBCpq1oBsaVnfz0GwPxq+AmwcOz8nDy/Y4GWE0eM8AuKwG7X8dpBBhDUpbk7YDRISmTMAQs5uK8Qk01iu5YkMO/n5/RyR4fHc/G0fAdBo4+1wb70V+XbsYpxWjfEglmh3GMeRe4Rx2PuvE8ZIz33GhxKJaKoxdd1EJdZFI4yMml6QZHDyHsLgmw5UPLa82zzn0let+m9iNrMZ8djzb8Ysm4ecVZhV1gqPQAOCbfrkdwv2DSlN4kywS9USct05LIwoJcOoaO6IYQc8oJu2i0vkAb267vxdRYS1NEQEcLm5p0J+bwk+ZDMU8yBugj7NWvVyLlWFAAZfnC0KpFs7AABDj6pAerU+6czQ8fqnXXjTnkQ0/KPygWsOiHUzHXS+nCziYBNEbOhV92Qm4lpq3OmxG4Q4fvA1FYwYVvbWUXNd5Wi5FNwJOnEMk2KXAgDuotQusQUvrDvlYFTn9sRk3JmJCV2rLQAhC623i7pKZDFDGf9jw== X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB3385; 6:J/tRW8gCkv4DCCprdOPAMMM5T5NcMTgaPKAl2nZS3Q32g2K9JBNvDNhWM+uzi8/AZwPQ2mUGl7v0gB6Xie1tv/AjP77V3Pdy0pEQ/nGBO4Ru/j/no5WG2AL//77u520Jh7TRP17nxPtmUtrP0F6ReLBsaCKMC+HWrbH52b3u0Gqzc2mTtPA9dXnl/Uz9/XYHYUkI9Y9ZXxgnqQH0UWHX4qZCC7CsOmaL55vKd3WqqU1BpykT86p9JQU8P5Gd6csvsfl9W49t9bNzxxT3wXBquz46K/qpOq9lIYytmTHFEwBt5DCxWaqRyzHvgLAp+DYZFaibmVBuwy3MNLCrCuAXpRESIFrmaEpaFiytMI7vBfg=; 5:EBVsNs5/Ntdu0mA7HuvPHW6XSfK0XcCA5smslLLbPLVTX102t5qXnxZ93N+66JJWbeyF6Zbm2nfizh7njLIv0k7x5g6wph3U/2oVYmKYSSaUm4LNdB4KvrQw0JoxO7AppRMSWGvaVBCBziUsgmE/11tIb4tmDMHkAWDuSuzlP2s=; 24:K7jHeYrsmz1xbswP+db6MjWGNODEeubRjfhi1xVbMol50ERrsx7thFGylrHOSDz1oSNyGKTwW7yv1/gvcUCMUB2WnFPban36O3esDLNE0iE=; 7:mfjCiB4wlOryxrQ8DZYA8NPyznT7vZ9ncO13M+zb6nZ4wKGaj1rrhkOlRUynOd4mvVcHd5cMTp7Z8/dVutdZwvlZPT2j960SxNq3tGpGOSMyiQgmqVTYpUW7M5ieL+TN7LS+5UGpkVlc6fCuoSI15nfxlD9xgd+cnJvgq1LRi/SwxBTCV3TZT5n8fBfGLhA8h2V6oulmGoqObtWTj1g90gX9qMw9U73C7KCgeb1PioBh6KrPjMfxfHA9FdJ/6zhK SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2018 18:49:23.1149 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1aba111c-c781-4e5b-bfb6-08d56cc92c74 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.83]; Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR02MB3385 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.63 Subject: [Qemu-devel] [PATCH v2 1/1] hw: register: Run post_write hook on reset X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, f4bug@amsat.org, alistair.francis@xilinx.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Ensure that the post write hook is called during reset. This allows us to rely on the post write functions instead of having to call them from the reset() function. Signed-off-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daudé --- V2: - Update the header documentation include/hw/register.h | 6 +++--- hw/core/register.c | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/include/hw/register.h b/include/hw/register.h index de2414e6b4..5796584588 100644 --- a/include/hw/register.h +++ b/include/hw/register.h @@ -34,7 +34,7 @@ typedef struct RegisterInfoArray RegisterInfoArray; * immediately before the actual write. The returned value is what is written, * giving the handler a chance to modify the written value. * @post_write: Post write callback. Passed the written value. Most write side - * effects should be implemented here. + * effects should be implemented here. This is called during device reset. * * @post_read: Post read callback. Passes the value that is about to be returned * for a read. The return value from this function is what is ultimately read, @@ -135,8 +135,8 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix, bool debug); /** - * reset a register - * @reg: register to reset + * Resets a register. This will also call the post_write hook if it exists. + * @reg: The register to reset. */ void register_reset(RegisterInfo *reg); diff --git a/hw/core/register.c b/hw/core/register.c index 900294b9c4..0741a1af32 100644 --- a/hw/core/register.c +++ b/hw/core/register.c @@ -159,13 +159,21 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix, void register_reset(RegisterInfo *reg) { + const RegisterAccessInfo *ac; + g_assert(reg); if (!reg->data || !reg->access) { return; } + ac = reg->access; + register_write_val(reg, reg->access->reset); + + if (ac->post_write) { + ac->post_write(reg, reg->access->reset); + } } void register_init(RegisterInfo *reg)