From patchwork Wed Dec 6 17:39:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Herrenschmidt X-Patchwork-Id: 845278 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3ysQtd07LFz9ryT for ; Thu, 7 Dec 2017 04:42:49 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3ysQtc3dRdzDrpR for ; Thu, 7 Dec 2017 04:42:48 +1100 (AEDT) X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: ozlabs.org; spf=permerror (mailfrom) smtp.mailfrom=kernel.crashing.org (client-ip=63.228.1.57; helo=gate.crashing.org; envelope-from=benh@kernel.crashing.org; receiver=) Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3ysQqt1WCCzDrpH for ; Thu, 7 Dec 2017 04:40:25 +1100 (AEDT) Received: from pasglop.austin.ibm.com (localhost.localdomain [127.0.0.1]) by gate.crashing.org (8.14.1/8.14.1) with ESMTP id vB6HdhvV020901; Wed, 6 Dec 2017 11:39:45 -0600 From: Benjamin Herrenschmidt To: skiboot@lists.ozlabs.org Date: Wed, 6 Dec 2017 11:39:25 -0600 Message-Id: <20171206173928.25628-3-benh@kernel.crashing.org> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171206173928.25628-1-benh@kernel.crashing.org> References: <20171206173928.25628-1-benh@kernel.crashing.org> Subject: [Skiboot] [PATCH 3/6] io: Add io_complete() helper X-BeenThere: skiboot@lists.ozlabs.org X-Mailman-Version: 2.1.24 Precedence: list List-Id: Mailing list for skiboot development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" This uses the standard form twi/isync pair to ensure a load is consumed by the core before continuing. Signed-off-by: Benjamin Herrenschmidt --- include/io.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/io.h b/include/io.h index 45a385ed..93a65e70 100644 --- a/include/io.h +++ b/include/io.h @@ -170,6 +170,12 @@ static inline void out_le64(volatile uint64_t *addr, uint64_t val) #define in_le8 in_8 #define out_le8 out_8 +/* Ensure completion of a load */ +static inline void in_complete(uint64_t data) +{ + asm volatile("twi 0,%0,0;isync" : : "r" (data) : "memory"); +} + #endif /* __ASSEMBLY__ */ #endif /* __IO_H */