Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp4172848imm; Tue, 25 Sep 2018 12:36:19 -0700 (PDT) X-Google-Smtp-Source: ACcGV62M0+N3rrY6+Aa9oNAKypD1dicBjGZv8XnG3DS+5Oejed5izQ4qMkc8OOr6b8SOw1/Xxvyw X-Received: by 2002:a63:3e06:: with SMTP id l6-v6mr2350934pga.96.1537904179344; Tue, 25 Sep 2018 12:36:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537904179; cv=none; d=google.com; s=arc-20160816; b=e3d27AdTXenKq+6WBPSaPrFP3P9+uRocRelYbfzfWJ73kPWjTL4iW6yUBIRmeaOyFN oNw5v/a9rmTfQJTcK6/SmrN77zD3EFu40IMbPe8w70AbqX1dUleieAuAZfE4n9upB9QO bfZB43QoDvyy52he4whOJsaDM2kyEKEoCvuHQEWBXPZ6wpJA/BpDxJ59D4/7hnn5XTSK FjSFwe+8GTNXvKqQ5XgtBKC5fxca8TPn2lfuC6YRYW3tbztkQCMwro5ChJgMN7tlNqS2 ItuPDpzzZiLj0eP5uFFabqadzUfz0oGQ/FeHGwoZbBXKKKEUJJe//h+Jy5FDvgWDbjUv atzQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=VeVzFeKaOoNtesWNemDDHsBAC/S6Qic/S2k/F1Uysxc=; b=lCO15v2lEpDodzNwalxXqhcybtIN+ZefmjjMngu43v7Q3szU0xtbx3d98+ZOe1pUeT s9B7+Q9DmdqUB3SH88klAp06+H2+FmBZ/Y3ryjfqoxiyeYnwPOR7Uiy4oZsz/xA3hJnZ 8F1GjzFGhZ2ePYlk+WOc1Nih2aMg8DPGLZX5J56olc+EthmgXTUULcmKxQOmE6v+jIsD hjSwolFIIgP1uQsENJalrGDWJk4ZRQ8bwlai8irg+qKlQfdXm5oyCodvd3H2rrbdPDT6 Mg6woMEX4lPPXx47fmBYYurzK302qaTwuMLn8RDZn/v1Lg/H6V2gGaSQfc+7oj9KSuE6 XW+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Qk32287w; 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 e89-v6si3426439plb.361.2018.09.25.12.36.02; Tue, 25 Sep 2018 12:36:19 -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=Qk32287w; 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 S1727649AbeIZBni (ORCPT + 99 others); Tue, 25 Sep 2018 21:43:38 -0400 Received: from mail-ot1-f67.google.com ([209.85.210.67]:44220 "EHLO mail-ot1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727381AbeIZBng (ORCPT ); Tue, 25 Sep 2018 21:43:36 -0400 Received: by mail-ot1-f67.google.com with SMTP id 36-v6so25647317oth.11; Tue, 25 Sep 2018 12:34:31 -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 :mime-version:content-transfer-encoding; bh=VeVzFeKaOoNtesWNemDDHsBAC/S6Qic/S2k/F1Uysxc=; b=Qk32287wMAxZUhn8Cjk6hL7/SJyPzbNdKNxARBOlwrVE3H0N2qGoo0K4sP5CSo6YRB 0IUdOjMq9V+gdiE40Jg4L00ovgRPOEyQyIoYDuO9EiaYkDrh1/A5LqWq36703Z20EV9W IBpypC9OucPq1uEVaCHOR8FAz+a09M5toEPXtH95kpOHPYerujFZupzeTyEgCMpBgIBE kqsFTNlndxth0MayAWZBGEOd7VuSSp1NazeC0Adn4zOg3DKvQOW4Uf9OPD3NaC6iMoaJ kpFIUST0yIV/6k2wlf+i0jbiJ8ddEG0BCx2aWi7PsTWlnklqAY8RiK6tubzHj4PGsXR1 ujCw== 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:mime-version:content-transfer-encoding; bh=VeVzFeKaOoNtesWNemDDHsBAC/S6Qic/S2k/F1Uysxc=; b=lpu5iRabvCweUJzX+CFPZAUC4k8EXR5cyakzh4uqMq+ocDwihDJtcQ5IMvirfSoZLK 5AJeyAVj6dY3QRT8513h4va23YfOgC00tydCnQ2kb2U99uhIuzBLuqjykyYgLl3BFghI 0bBH6xVmEvfsa89nGFnlJAE2laLcvjPSiaGyJkQV85JYz/n8VTKq9F9GW/3XfFXw7HX3 a+4iyxKtDzeAhKJf1ZodevQKbJlM2WpgQa2sKIPTF8dbxaacvYtEgIXZMGqdMSNDDUzM OpI++cCsUIRzrHKi5+50gemzLrAf+GippFYAc80VJWwhUlLL1MrGhk9AgjwO67TPeb3m rkNQ== X-Gm-Message-State: ABuFfoiHUNR9ZQ57cuUr8jSUkSgKLLa4najm+LRGMjtRA+YsheHd5evd rmvm+mwq+f8Q/FfosrQfwdQ= X-Received: by 2002:a9d:1b4c:: with SMTP id l70-v6mr1901897otl.107.1537904071242; Tue, 25 Sep 2018 12:34:31 -0700 (PDT) Received: from localhost.localdomain ([143.166.81.254]) by smtp.gmail.com with ESMTPSA id q15-v6sm1049193otl.43.2018.09.25.12.34.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 25 Sep 2018 12:34:30 -0700 (PDT) From: Stuart Hayes X-Google-Original-From: Stuart Hayes To: dvhart@infradead.org, Andy Shevchenko Cc: Mario Limonciello , LKML , platform-driver-x86@vger.kernel.org, Stuart Hayes Subject: [PATCH 1/5] firmware: dell_rbu: Make payload memory uncachable Date: Tue, 25 Sep 2018 14:34:14 -0500 Message-Id: <20180925193418.28493-2-stuart.hayes@dell.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20180925193418.28493-1-stuart.hayes@dell.com> References: <20180925193418.28493-1-stuart.hayes@dell.com> 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 From: Stuart Hayes 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 --- This patch has been discussed previously, see history at https://patchwork.kernel.org/patch/10512079/ 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 fb8af5cb7c9b..ccefa84f7305 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.19.0.221.g150f307af