Received: by 10.192.165.148 with SMTP id m20csp3884615imm; Mon, 30 Apr 2018 08:01:35 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqmKofjK6W18XPExtkdYud3ksfwBLhaUz7QP9AS80WhK01dFzCN5rJZAWevU8Lh2TOmKdFm X-Received: by 10.98.219.5 with SMTP id f5mr12316707pfg.137.1525100495382; Mon, 30 Apr 2018 08:01:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525100495; cv=none; d=google.com; s=arc-20160816; b=EJSdkr7a3zZoJcODNeg2GFFikMGTnlqw2Y8G6LPqKmM0liRgDB3/Ruf1btyn+8NMr7 X+dr8fxwdNHjCdeBbjc1sFMvj0o5ESTYOx6iHOCj738k3vjM9ll9sge7QXAILfpGy1Fq i4Bx5aNcOsHJb9IUan2RmofcvrOQAa3mpZajcZ1l6UNvyKEG/3ObR+USOLYDlwaBCTjY X630iQrvfHz3TqcZsPH9z6r7C6U9j8fkrnIDnYedHcRjSILpNTAbdixCwUurjbtX2jag vcneuhHqdJkJPmrAzBC3C9COiHD1z3TMLpHvKIx0d822NCCqqACxQnFrqFchKaJjI1w5 wutg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=OA33Mn44o9a7jHdrvielS0XNTWuIP11zLDU6PWFQW8w=; b=p68wbNcoxkDTVud0ITcKuTVQEqomGdlWchN3OAVGijlrepNdSQsa026smP32gubPK2 RLR/V1Bksv5tsJ7YYYIme5Z+3VJmpL6ftSUXDtNtC0XPSX1W6UubuhdJk2MjGdChcnZ0 yFkkhmUBdK9xLXBiKPmza3hCe7TIb5hpxVLqVmTTgrjeLucuZEPM2j1xhH2fvHL55HgN j+ba/T7CEDw2G3Fz0J2syqpWjXAYVVFQYP3t0qsqAeHfatiWiB0u65QimQyY6TMDELmo NWvvksjqJNKqJARY3NA2KrwD+/SOvNL7/X9OD7pozywtuNlUzeRvL8wqcaexAsd+epWf k/Mw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ZHkrPJz9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f9-v6si6318909pge.639.2018.04.30.08.01.14; Mon, 30 Apr 2018 08:01:35 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ZHkrPJz9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754581AbeD3O4X (ORCPT + 99 others); Mon, 30 Apr 2018 10:56:23 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:34008 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754500AbeD3O4U (ORCPT ); Mon, 30 Apr 2018 10:56:20 -0400 Received: by mail-pg0-f67.google.com with SMTP id p10-v6so6488415pgn.1 for ; Mon, 30 Apr 2018 07:56:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=OA33Mn44o9a7jHdrvielS0XNTWuIP11zLDU6PWFQW8w=; b=ZHkrPJz9TRyfuV7x6epxQbzo2Wowd/9QhM0ghOvjqo40+ZgffV8PatUN7Hol3zwD0E irWoxA6Ih37avJ0E/+IMjTq/aTdevjb2HYLpqmXZaa2G9eEXm5dk3ENYF6bvQ5K9Y8si I3i5DzxTeFA4BGJ2a+Ci5MENEDjcdrulaZ82cG7bsUe3zXs2aQ19jFVTojOFQqdX4CE9 foJtIOaZWUZ7RB26nSylYk3vjFWmb1C9Q/rJXi96EYeCgRTXrKTUNttteMiWubtsodIf n5okSR9His2RZ6CxduIpjipxYs0X8yMxL54fkojh7g609j2CkYQbRSSoSuCgQQnmwhFF CbKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=OA33Mn44o9a7jHdrvielS0XNTWuIP11zLDU6PWFQW8w=; b=dDetWgMeqaleKWdSdnLTHqsdAQgw5VIWH34yJdhlv4sw7qZK723B/YAczxZkIr9mSU +2iT9Ht3ECQnz5Z3h5kcoNjOK2trb5hnHFM0oU1VMz3dYa0Ag3a0/hdy1C7/qJM9x/90 2xSe/cSBP0FrtcWncFr0Irx+e2SI9MCvimPP6UG/9GktYgDV6jPUuHwtXg9XLHsMzj3i avKRECxYXPQ41aNMJxvPBxoe3RJIGdfsd1cKo4ANuOsC2da4Ba916nVR8MNgGjBDzt3r iyAHsT1RM7harc2fbcbwIRSABwZhY/YiOX/zXsBgxnZaoRDn4BNpdCwsxtjn3JgXpFge Oy8w== X-Gm-Message-State: ALQs6tAQedJi+Ut3hNv3lcW8cwwJZ3UN5JbfnJgfJImyJWGT9N99lXAf CEaXL14OPyooFz5W+FA0N8oNkg== X-Received: by 2002:a17:902:7c0f:: with SMTP id x15-v6mr12571093pll.369.1525100180241; Mon, 30 Apr 2018 07:56:20 -0700 (PDT) Received: from roar.au.ibm.com (59-102-70-78.tpgi.com.au. [59.102.70.78]) by smtp.gmail.com with ESMTPSA id a12sm19132534pfe.78.2018.04.30.07.56.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Apr 2018 07:56:19 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Cc: Nicholas Piggin , Benjamin Herrenschmidt , Greg Kroah-Hartman , Jiri Slaby , linux-kernel@vger.kernel.org Subject: [PATCH 03/15] powerpc/powernv: opal-kmsg standardise OPAL_BUSY handling Date: Tue, 1 May 2018 00:55:46 +1000 Message-Id: <20180430145558.4308-4-npiggin@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180430145558.4308-1-npiggin@gmail.com> References: <20180430145558.4308-1-npiggin@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org OPAL_CONSOLE_FLUSH is documented as being able to return OPAL_BUSY, so implement the standard OPAL_BUSY handling for it. Reviewed-by: Russell Currey Signed-off-by: Nicholas Piggin --- arch/powerpc/platforms/powernv/opal-kmsg.c | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/arch/powerpc/platforms/powernv/opal-kmsg.c b/arch/powerpc/platforms/powernv/opal-kmsg.c index 6f1214d4de92..f8f41ccce75f 100644 --- a/arch/powerpc/platforms/powernv/opal-kmsg.c +++ b/arch/powerpc/platforms/powernv/opal-kmsg.c @@ -12,6 +12,7 @@ */ #include +#include #include #include @@ -26,8 +27,7 @@ static void force_opal_console_flush(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason) { - int i; - int64_t ret; + s64 rc; /* * Outside of a panic context the pollers will continue to run, @@ -37,14 +37,22 @@ static void force_opal_console_flush(struct kmsg_dumper *dumper, return; if (opal_check_token(OPAL_CONSOLE_FLUSH)) { - ret = opal_console_flush(0); + do { + rc = OPAL_BUSY; + while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) { + rc = opal_console_flush(0); + if (rc == OPAL_BUSY_EVENT) { + mdelay(OPAL_BUSY_DELAY_MS); + opal_poll_events(NULL); + } else if (rc == OPAL_BUSY) { + mdelay(OPAL_BUSY_DELAY_MS); + } + } + } while (rc == OPAL_PARTIAL); /* More to flush */ - if (ret == OPAL_UNSUPPORTED || ret == OPAL_PARAMETER) - return; - - /* Incrementally flush until there's nothing left */ - while (opal_console_flush(0) != OPAL_SUCCESS); } else { + int i; + /* * If OPAL_CONSOLE_FLUSH is not implemented in the firmware, * the console can still be flushed by calling the polling -- 2.17.0