Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp835106yba; Fri, 3 May 2019 11:13:27 -0700 (PDT) X-Google-Smtp-Source: APXvYqzlMjh91hTQ7KrCuAS38evI0xe5iITZe1dyqaU2ZHdrtS2EKthoBMClWETU/jEN8cu8cJK3 X-Received: by 2002:a62:ed16:: with SMTP id u22mr12634634pfh.47.1556907207164; Fri, 03 May 2019 11:13:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556907207; cv=none; d=google.com; s=arc-20160816; b=qA6ObjEnNgMmtUV9k88/3Hqnc/uyFOx1t+PWeY1grqVhljAknDy/5LNw8XHQX0vpEx iAOGLyeLMEFE64M7ewJCUAA3lWRspJ/wcviqesJoiS0YVpNiyhBKU/dds1focoSHaLkE cih7GLHiixL3xJIlGbK+D0Ea3FAF4hCtmmqjV99Rwfe2zc4X3WiAyTo5V/ADa+IqgW2H /TzsZwU4LPOtHrMAUJKmcLkWYt+2NxQO2eh/+hoIoxKebeA6zohoR9Tb6LAsh49r5Lgj VCD642UY+sxARrMCUyHk45v3lZUdFDRg3XfT+uVUa6CnN2w9cTHCCCKNsIjEDXJUGAC/ Cy3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=Hcu8K+zWlIGVcO7HslnrIVULTnaD0CZgK/YRsSv5h7E=; b=fKiL67ji4RkloRSNu1jIuKibgXc61a0uJy/nRw8zcJIRj4QkWJnwDj3EmMcMOM2eJd lLHNB1oiG0BKVnpkcRLgN01yl+aW7SbIhK3Pa058rzZhqepxyFo/+k/0kzC4kdKmTBez 6skkXh00GaYfwi/LuVLrfiABx7BBnYs1ShpTbksQlfcWzK3BdUfkIJp4JbTOOCdaFzw+ dTOBe6ALMdzGUf6mIQVUHu1g08eR2xXedHONLc96cgnaSrAqwQyB5d9RHdsQjUNbNLw1 /SmVj5c1M3TnS9W4ulhGpp9enU7Jvo4sAd83sGvpQcR0EVAST0CWXjrlrTv8lxKwhExP grUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=F6lrwkUO; 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=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e7si3160858pgc.307.2019.05.03.11.13.10; Fri, 03 May 2019 11:13:27 -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=@chromium.org header.s=google header.b=F6lrwkUO; 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=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728745AbfECRsD (ORCPT + 99 others); Fri, 3 May 2019 13:48:03 -0400 Received: from mail-pl1-f194.google.com ([209.85.214.194]:45212 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728487AbfECRsD (ORCPT ); Fri, 3 May 2019 13:48:03 -0400 Received: by mail-pl1-f194.google.com with SMTP id o5so3012867pls.12 for ; Fri, 03 May 2019 10:48:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Hcu8K+zWlIGVcO7HslnrIVULTnaD0CZgK/YRsSv5h7E=; b=F6lrwkUObP5QsxdWxxiNyUKTwB/nEyF4/2ZuY81qbcsiroixxS1vfHPuhgJCG74vnG ZpQu2+yRS0RB44jtMo71Bq3M3BbxP6cxxmSZI8bQ/c/OgD/1tMxXKzfjUhB2JqKaAn/l NG8WILFO9GWdfOIoO5C2INyNQwVBGc70wO/D0= 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:mime-version :content-transfer-encoding; bh=Hcu8K+zWlIGVcO7HslnrIVULTnaD0CZgK/YRsSv5h7E=; b=PMHzIjfZT/1DPOR7HnaM4nqX35J/HWymjdm2v5+uZOlNVMSC7yMaFHXKtRTmsbp65+ p+FBRyoMObR/IKNVhw2r4JJInApUoXKuE1HaEV93Imq1Er1lNY1GnkL8Qtr6/wDQacIm K5oL9SuV6vQ6VnE/JBrlX/qTlXD5ifL5h9UFIn1kML6OWAOFynvgpk6UKM1Vk9nrFE/e oD0ccEhrruE+bKNYUPMzJGtQDyJSHgPJESO1tO5Q5jKcK5joW6Pq6zvptXUZQn2qEG8u CZ5MQxOCgR0XUuOY+FTuAE87JC7fV2qdiRMGtn2DfyIYCwTUpOxLmY6OoInrYogCn4uZ ShtA== X-Gm-Message-State: APjAAAVSEFwp3KzwCYO3NuvHqe9NBDCKzPYLHX9AImFhJjiWMC8Wa52y FO+0GTSW4nbVafLTIaRzVZkPYw== X-Received: by 2002:a17:902:7085:: with SMTP id z5mr12285610plk.78.1556905682002; Fri, 03 May 2019 10:48:02 -0700 (PDT) Received: from tictac2.mtv.corp.google.com ([2620:15c:202:1:24fa:e766:52c9:e3b2]) by smtp.gmail.com with ESMTPSA id v15sm3588446pff.105.2019.05.03.10.48.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 May 2019 10:48:01 -0700 (PDT) From: Douglas Anderson To: Kees Cook , Anton Vorontsov Cc: linux-rockchip@lists.infradead.org, jwerner@chromium.org, groeck@chromium.org, mka@chromium.org, briannorris@chromium.org, Douglas Anderson , Colin Cross , Tony Luck , linux-kernel@vger.kernel.org Subject: [PATCH] pstore/ram: Improve backward compatibility with older Chromebooks Date: Fri, 3 May 2019 10:47:30 -0700 Message-Id: <20190503174730.245762-1-dianders@chromium.org> X-Mailer: git-send-email 2.21.0.1020.gf2820cf01a-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When you try to run an upstream kernel on an old ARM-based Chromebook you'll find that console-ramoops doesn't work. Old ARM-based Chromebooks, before ("ramoops: support upstream {console,pmsg,ftrace}-size properties") used to create a "ramoops" node at the top level that looked like: / { ramoops { compatible = "ramoops"; reg = <...>; record-size = <...>; dump-oops; }; }; ...and these Chromebooks assumed that the downstream kernel would make console_size / pmsg_size match the record size. The above ramoops node was added by the firmware so it's not easy to make any changes. Let's match the expected behavior, but only for those using the old backward-compatible way of working where ramoops is right under the root node. NOTE: if there are some out-of-tree devices that had ramoops at the top level, left everything but the record size as 0, and somehow doesn't want this behavior, we can try to add more conditions here. Signed-off-by: Douglas Anderson --- fs/pstore/ram.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c index c5c685589e36..8df3bfa2837f 100644 --- a/fs/pstore/ram.c +++ b/fs/pstore/ram.c @@ -669,6 +669,7 @@ static int ramoops_parse_dt(struct platform_device *pdev, struct ramoops_platform_data *pdata) { struct device_node *of_node = pdev->dev.of_node; + struct device_node *parent_node; struct resource *res; u32 value; int ret; @@ -703,6 +704,23 @@ static int ramoops_parse_dt(struct platform_device *pdev, #undef parse_size + /* + * Some old Chromebooks relied on the kernel setting the console_size + * and pmsg_size to the record size since that's what the downstream + * kernel did. These same Chromebooks had "ramoops" straight under + * the root node which isn't according to the upstream bindings. Let's + * make those old Chromebooks work by detecting this and mimicing the + * expected behavior. + */ + parent_node = of_get_parent(of_node); + if (of_node_is_root(parent_node) && + !pdata->console_size && !pdata->ftrace_size && + !pdata->pmsg_size && !pdata->ecc_info.ecc_size) { + pdata->console_size = pdata->record_size; + pdata->pmsg_size = pdata->record_size; + } + of_node_put(parent_node); + return 0; } -- 2.21.0.1020.gf2820cf01a-goog