Received: by 10.213.65.68 with SMTP id h4csp535609imn; Wed, 28 Mar 2018 08:10:28 -0700 (PDT) X-Google-Smtp-Source: AIpwx492AihkmDv3jqXgqYruTvZp+C+3RADxaAkQu1ZWVLMyouvSe7pp6ECG5soSuzCHAsJB8xW3 X-Received: by 10.99.100.68 with SMTP id y65mr2871900pgb.257.1522249828248; Wed, 28 Mar 2018 08:10:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522249828; cv=none; d=google.com; s=arc-20160816; b=BrEnOYxyOtjyar/GIk21DVlKG6xfzfTiN6oA9NW5P/JHwBzT7k2x0I/CF78jFGR6Cu q56hGCZPK8EVWM2qbmB6Sc//1rDuljFBBfUL6v1Z8tUB5RFAP+znho11znnQcXRUf4VJ xE1VagxssRBqQ+qMwixdlpDuVIvhrWSbUkBtruUiSIa0XlD/kzy6qDCIhHhH50hV/eMs GLW07I98IraaqtM3ojyQYQC72If60TZ6VilGyOyYX2aOJgdVlNIy2+JX/Dibo9kgN74b KXSS6RM8ccEVk7DSmeEZiRFg6U2Xt/m/QV5YDofbVyK9fo1OUKx6loFnbI0e3qAMBHPc gTug== 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 :content-language:mime-version:user-agent:date:message-id:cc:subject :from:to:dkim-signature:arc-authentication-results; bh=+X/WKXL8NhoEPyX/wRoyJUpUojsxPaT+SK76sbQzyMk=; b=gjyi6JdRizKMCRc6xfsAmGSClb3QHG+Wqr+DPhbfk8CSHwk5bFaiL2iJbTH6QV4tPy Ob+sL/LVGTYzcwfg6sDl9Kzqu2py/B82R9DfUmV/lVJQ5R7aoPH7VQKx2gdl8Ps6gbDx w28W+n9pYFi5qpTnlywDQwP4HrkrDfpkEUMCM8ybo0I0s6qwnGC54MCeFDlkpCFZW1N8 QH6AibGI/uULU3xoxEIZMQAxXfH+xH3oF0aQZkhwCm644HSf2pVrut0Hg+KssQocy5p8 fBtjrU05IROB/FbLGRHxduYtdy1bfYGUkog12gi6Dlfi/KnxOWaDWwVrHa7E12JUWhZ/ 7/rA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=eu8gehGl; 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 38-v6si3707315pln.397.2018.03.28.08.10.14; Wed, 28 Mar 2018 08:10:28 -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=eu8gehGl; 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 S1753885AbeC1PHv (ORCPT + 99 others); Wed, 28 Mar 2018 11:07:51 -0400 Received: from mail-ot0-f193.google.com ([74.125.82.193]:46627 "EHLO mail-ot0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753327AbeC1PHt (ORCPT ); Wed, 28 Mar 2018 11:07:49 -0400 Received: by mail-ot0-f193.google.com with SMTP id v64-v6so2978736otb.13 for ; Wed, 28 Mar 2018 08:07:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:cc:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=+X/WKXL8NhoEPyX/wRoyJUpUojsxPaT+SK76sbQzyMk=; b=eu8gehGlbOaTsIM8ANhlpKEVym60i6SCRoqbsXXgt1vLVhu5fYFWvxXLO05jkOR3Lt CPv0Xvid7XX29FmG7/EhVoYNUXx3uv0JEXlk5P2fKb+hVlyIY3W2SoS957iSC72DMQIa 1jFKwJvFmOTEq/KrsF2bNPpsvEF4XWH+M+4QVS4dJJTcgWllFV39z3SkhGi+ouVbWEnX DTHdWmLys3Mv0QgcGpinvo7SvBXdSy9TbKJmmpUwcKbLLE52rw2f4z3hqHrBQYasLkV3 Og7K0Sb1eMYlhS5qGQst0+roiY1p9w6ijtKc+a2JwMwjIHFEFmw1JT0maR65IxFhmjd/ 0OCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:cc:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=+X/WKXL8NhoEPyX/wRoyJUpUojsxPaT+SK76sbQzyMk=; b=IUhB+c8FQ6ZWDZiepssdQQqySCtnAFdLZiusPtCb0XwpayE8YeAI60OPFFe+WeUPLm byOuYPn1ymVXvKwsp21gLO9fBVsPW35fy+p3FkiMNW0/eNSEzy5MCQ8n23aEBZnb1GIK f2MpupKynveqTFQ7VkwMKADBDDq1ccmWabycoQumJogqnnq3K7yCVTjR18TA1hCnSrOg XGSzmJSSgZofwM+XuxlQLeURU5loHTM3QZxZ8veuGZfui7CWbIMmPXEGEHaOV+EEulcu 9V0Vu200hRuiIbe10dHiskXF4Iz8ajFHStZqk7PrR2Ej8DvI7WktbNardW5/DByjo6jy Hc0g== X-Gm-Message-State: ALQs6tAE5q+VPhC2hKU+nTF+p3idoHqYWTiPM5NRUYCZG+eIWC2CfNXe MeorpBAS1ETH++K43kCMYyxAJYCI X-Received: by 2002:a9d:2541:: with SMTP id j1-v6mr2364747otd.201.1522249669215; Wed, 28 Mar 2018 08:07:49 -0700 (PDT) Received: from [192.168.0.2] (cpe-24-27-59-32.austin.res.rr.com. [24.27.59.32]) by smtp.gmail.com with ESMTPSA id z51-v6sm2257788otc.25.2018.03.28.08.07.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 28 Mar 2018 08:07:48 -0700 (PDT) To: linux-kernel@vger.kernel.org From: Stuart Hayes Subject: [PATCH v3] dell_rbu: make firmware payload memory uncachable Cc: Douglas_Warzecha@Dell.com Message-ID: <26829bed-39e5-c35d-8800-7116adaea603@gmail.com> Date: Wed, 28 Mar 2018 10:07:47 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Antivirus: Avast (VPS 180328-2, 03/28/2018), Outbound message X-Antivirus-Status: Clean Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The dell_rbu driver takes firmware update payloads and puts them in memory so the system BIOS can find them after a reboot. This sometimes fails (though rarely), because the memory containing the payload is in the CPU cache but never gets written back to main memory before the system is rebooted (CPU cache contents are lost on reboot). With this patch, the payload memory will be changed to uncachable to ensure that the payload is actually in main memory before the system is rebooted. Signed-off-by: Stuart Hayes --- v2 Added include, removed extra parentheses v3 Corrected formatting and include line This driver has no maintainer. diff --git a/drivers/firmware/dell_rbu.c b/drivers/firmware/dell_rbu.c index 2f452f1f7c8a..778efbb72c76 100644 --- a/drivers/firmware/dell_rbu.c +++ b/drivers/firmware/dell_rbu.c @@ -45,6 +45,7 @@ #include #include #include +#include MODULE_AUTHOR("Abhay Salunke "); MODULE_DESCRIPTION("Driver for updating BIOS image on DELL systems"); @@ -180,6 +181,12 @@ static int create_packet(void *data, size_t length) invalid_addr_packet_array[idx++] = packet_data_temp_buf; packet_data_temp_buf = NULL; } + /* + * set to uncachable or it may never get written back before + * reboot + */ + set_memory_uc((unsigned long)packet_data_temp_buf, + 1 << ordernum); } spin_lock(&rbu_data.lock); @@ -349,6 +356,8 @@ static void packet_empty_list(void) * to make sure there are no stale RBU packets left in memory */ memset(newpacket->data, 0, rbu_data.packetsize); + set_memory_wb((unsigned long)newpacket->data, + 1 << newpacket->ordernum); free_pages((unsigned long) newpacket->data, newpacket->ordernum); kfree(newpacket);