Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp136595ybc; Mon, 18 Nov 2019 21:58:46 -0800 (PST) X-Google-Smtp-Source: APXvYqxflU7DXYFA/7gUHBGLe8PtzDWW7zhq2w63io4UCfOedhiwu84jDawbe2k+FcFUAfs3eWEW X-Received: by 2002:a17:907:2061:: with SMTP id qp1mr33447186ejb.43.1574143126533; Mon, 18 Nov 2019 21:58:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574143126; cv=none; d=google.com; s=arc-20160816; b=059vyYGXwu54BtFBcA+57+bv5HzMtlMzVkEIprSOz+UNsLAOwFLavGYE3ANo4hMDTk InecOxtrrORBt/zo/iDjiyzzVL0vO1DEF4yoZcd3P1izXDB+7+Blmpj+hAJf56C//kbg LjUgFV4sCCpcF7aLUDQOcj3nN9EX7E7zSsljGbxQb1pAqaxDYbqrGe+BKlEyvlwJekkb K731wV72H3HS3vYKED1hQSE9oAEZs01C88+yrNKRnisECetMPyKPJocnHmhfpaPo2Cju ObbSaMpf35gUPAMt654ZFcbQOSelY8mPmYHdbMpWa2tZ7wzZ7TEXjksqgjTS+TAyX+d4 FlXg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=RnR9ka4TYUw+arIvdcE52TpUm5aVSEIZe6icYSY6+WE=; b=woQbZ94RAqwi1ZesiVk+IXMpjkx0XXt+w/MUtPP2qwcPMbnpzhIB9KhNxG5JLTiuyU /LlhvnJucgWFhRWH+fbvSEqKrMkGt7gGRPpECFf7eIMBeHU+i4bgkM2PHdGDo+pyLwFY uoKJ9L3eXK7N2aW1ibGGK2yj334HDwVQ/WV/n+d9GnXdqksg8+fXQ64LnYb86CyWARnd HHbh8OVd1tWRQpX4hUWWaNV0LgVpxT/8aAR1P7quzVWPeEPEhGRH72odB8mbI3mzWlIQ JXBuirvwcgEzRMqPK/ycCn9dglhu8869veu97F0ehWSqZ1si27tJrD6e+mD/p9Iic0II iZYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=x36QMxqN; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g6si8640134eje.140.2019.11.18.21.58.21; Mon, 18 Nov 2019 21:58:46 -0800 (PST) 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=@kernel.org header.s=default header.b=x36QMxqN; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731854AbfKSFza (ORCPT + 99 others); Tue, 19 Nov 2019 00:55:30 -0500 Received: from mail.kernel.org ([198.145.29.99]:53788 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732269AbfKSFzX (ORCPT ); Tue, 19 Nov 2019 00:55:23 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id CD567218BA; Tue, 19 Nov 2019 05:55:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574142922; bh=ZymKRHFBH5fnM7kbEWRV6nZyVFEMsP3Qo4tBlcJZExc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=x36QMxqN8OzUZ8oSYHmdczUjudFnfOrhrGNNYcsh6pKzl56onyei5WSAJw/CixRiA VbH/bsZaugFnvsEYUzVyrs0IGHNFPE2NGDKcJ1vLsWu0QUHyS/A96D1aVouYgZo6aY SokNOhjqf6bT2cbrbVx4C35MI5rGji6bR5NBMvRs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Stuart Hayes , Andy Shevchenko , Sasha Levin Subject: [PATCH 4.14 211/239] firmware: dell_rbu: Make payload memory uncachable Date: Tue, 19 Nov 2019 06:20:11 +0100 Message-Id: <20191119051338.369304742@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191119051255.850204959@linuxfoundation.org> References: <20191119051255.850204959@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Stuart Hayes [ Upstream commit 6aecee6ad41cf97c0270f72da032c10eef025bf0 ] 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 Signed-off-by: Andy Shevchenko Signed-off-by: Sasha Levin --- drivers/firmware/dell_rbu.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/firmware/dell_rbu.c b/drivers/firmware/dell_rbu.c index 2f452f1f7c8a0..53f27a6e2d761 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"); @@ -181,6 +182,11 @@ static int create_packet(void *data, size_t length) 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); newpacket->data = packet_data_temp_buf; @@ -349,6 +355,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); -- 2.20.1