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=-13.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 CD066C433FE for ; Thu, 10 Dec 2020 14:55:05 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 7634C206D5 for ; Thu, 10 Dec 2020 14:55:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7634C206D5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:MIME-Version:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:References:In-Reply-To:Message-Id:Date:Subject:To: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=DK+4IDhBCf1zhBc1lR46OhaiK9quBJ3Yubm5zDuQV+k=; b=OD1hk6ey5NwgRJtcZT/C78jP3S OM+XWYKWXWDfPjSJNYZS74wK3w2g52+iLcQILBmVQglm+BR19zyZ+4tizJaber5ccuKhj0qd2TOCE LKHvnI9d17slpD6LyXqs2McPtLR0oRGe/a8jl3gamNvFXkVMfBB5DVN35nJGvthBHdfu2zGAVErur UgoS7Ge8WVsCpPXuzOzWYYSYU6amr4u7SUwXFb/Ehgfur4bvkZPDBHGkXjFTJ14Ha/QRmxEdrcW0C U68+X30Pnuaq3Dhn8m1Ga/AJ/MTzA1gy9t/DAxg7I7/GEQ1veWXTYJa56BkcoiZ+I5DQC4RHcAfDY naGfQO1Q==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1knNJs-0005LG-LC; Thu, 10 Dec 2020 14:53:24 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1knNIg-0004ot-Hy for linux-arm-kernel@merlin.infradead.org; Thu, 10 Dec 2020 14:52:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description; bh=T063WrmB8dHTx4NKDXe7gcvMsanZvwHD0yKwNoStYHI=; b=JuXHRb4CJdOQmLRrTduKpgnAvY 1jJ4SYNj6I2t2TL/4tb7cgYVZYDQAtuL4X2p/t7wwMhc9iei8Y77gWdU1UA14HxVdeqJ+29XZI3GR VNLHrVSAucYwZV6Gi0r3He6KfHfXbt19XS7EnVJiSnuBqyxTPADUpHFXgVOcA2ERjmHp/RhJqawPz RNoI36J01cJON2xseDTI3x/QLIDHU6urQ3QFFVbSHlsqJ0waRc7yt4SFJGcoD8/m3OanhGPqmq9ev N4PV7ZmTgIVaLuu5eb6vC8rEgQhuU6VjPCIqlJMs6iEQpb6PqWzhJ7gg/9OoHYMCub6JqT2OQ43PS 1a8j30Lw==; Received: from foss.arm.com ([217.140.110.172]) by casper.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1knMwn-0002Rt-Bo for linux-arm-kernel@lists.infradead.org; Thu, 10 Dec 2020 14:29:44 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9201F1477; Thu, 10 Dec 2020 06:29:32 -0800 (PST) Received: from donnerap.arm.com (donnerap.cambridge.arm.com [10.1.195.35]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 788D23F718; Thu, 10 Dec 2020 06:29:31 -0800 (PST) From: Andre Przywara To: Will Deacon , Julien Thierry Subject: [PATCH kvmtool 08/21] x86/ioport: Refactor trap handlers Date: Thu, 10 Dec 2020 14:28:55 +0000 Message-Id: <20201210142908.169597-9-andre.przywara@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201210142908.169597-1-andre.przywara@arm.com> References: <20201210142908.169597-1-andre.przywara@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201210_142934_017050_FEDA9914 X-CRM114-Status: GOOD ( 10.06 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arm-kernel@lists.infradead.org, Marc Zyngier , Alexandru Elisei , kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org With the planned retirement of the special ioport emulation code, we need to provide emulation functions compatible with the MMIO prototype. Adjust the trap handlers to use that new function, and provide shims to implement the old ioport interface, for now. Signed-off-by: Andre Przywara --- x86/ioport.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/x86/ioport.c b/x86/ioport.c index 8c5c7699..932da20a 100644 --- a/x86/ioport.c +++ b/x86/ioport.c @@ -3,8 +3,14 @@ #include #include +static void dummy_mmio(struct kvm_cpu *vcpu, u64 addr, u8 *data, u32 len, + u8 is_write, void *ptr) +{ +} + static bool debug_io_out(struct ioport *ioport, struct kvm_cpu *vcpu, u16 port, void *data, int size) { + dummy_mmio(vcpu, port, data, size, true, NULL); return 0; } @@ -12,15 +18,23 @@ static struct ioport_operations debug_ops = { .io_out = debug_io_out, }; -static bool seabios_debug_io_out(struct ioport *ioport, struct kvm_cpu *vcpu, u16 port, void *data, int size) +static void seabios_debug_mmio(struct kvm_cpu *vcpu, u64 addr, u8 *data, + u32 len, u8 is_write, void *ptr) { char ch; + if (!is_write) + return; + ch = ioport__read8(data); putchar(ch); +} - return true; +static bool seabios_debug_io_out(struct ioport *ioport, struct kvm_cpu *vcpu, u16 port, void *data, int size) +{ + seabios_debug_mmio(vcpu, port, data, size, true, NULL); + return 0; } static struct ioport_operations seabios_debug_ops = { @@ -29,11 +43,13 @@ static struct ioport_operations seabios_debug_ops = { static bool dummy_io_in(struct ioport *ioport, struct kvm_cpu *vcpu, u16 port, void *data, int size) { + dummy_mmio(vcpu, port, data, size, false, NULL); return true; } static bool dummy_io_out(struct ioport *ioport, struct kvm_cpu *vcpu, u16 port, void *data, int size) { + dummy_mmio(vcpu, port, data, size, true, NULL); return true; } @@ -50,13 +66,19 @@ static struct ioport_operations dummy_write_only_ioport_ops = { * The "fast A20 gate" */ -static bool ps2_control_a_io_in(struct ioport *ioport, struct kvm_cpu *vcpu, u16 port, void *data, int size) +static void ps2_control_mmio(struct kvm_cpu *vcpu, u64 addr, u8 *data, u32 len, + u8 is_write, void *ptr) { /* * A20 is always enabled. */ - ioport__write8(data, 0x02); + if (!is_write) + ioport__write8(data, 0x02); +} +static bool ps2_control_a_io_in(struct ioport *ioport, struct kvm_cpu *vcpu, u16 port, void *data, int size) +{ + ps2_control_mmio(vcpu, port, data, size, false, NULL); return true; } -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel