Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp932367ybp; Thu, 17 Oct 2019 05:48:53 -0700 (PDT) X-Google-Smtp-Source: APXvYqyh77Rpud0dGKV4iQSJYzP40v0yoyNfZQlsW27il+nOHKF1QWNjpIxva0PN26vDB6fz5C26 X-Received: by 2002:a17:906:4e92:: with SMTP id v18mr3201520eju.242.1571316533579; Thu, 17 Oct 2019 05:48:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571316533; cv=none; d=google.com; s=arc-20160816; b=yxvXp7yLQyArbrvLAJW50j3UZ2nI6gjNNzJ5BHj+PPKcoioGhxvDw7KezFC6hHxEQ2 aWB7wUM911/yM0M5J9per4xkNgxvd7LtKAt+c6hAZB146XxJ0sBIjFGtOOfllt9d6hOj qLfY+fTB4d1ANkNiMTzyAsnSFquB3296sjeg1kGBCNEaqPjp9wdyg+L8/qMAqzXWyYYI iqe7WsCSlOzI/Arz1gVbqzN3Q3BT1/HsRzKO/UlLNaB6WTJUIZ3dsbZOctdgSJi0Z3WV 1YzPNL4wQ1ityoktt2TSOq0SNWeXOO1SGrIaTpP9UEFQi/czVGZNYwTZJOPPsRxQ2uot 6otQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=dQFzQN3b3WE8GoZS1CRztjNwCPlD1hULDvdu/ezJ3vA=; b=RHLhKVQdee/Gnt4akIZh6nMexB1m2OTfi3Ole+lXNnA5h4s7gOtAzUU/Ot/Usbb2no LbedRYbaq+hNrXldOe408v4xdquxsWisumMGMRiQux6lmgIMtRsN0qkRYa6aC96HKuwi FlFEIjCtlexEHpERTGmpGjynKkD2Wcd+i3iOL/cml6FHrXD1fkM92MKlmb0piaEr3LQY SWOHEyBhJwASgJRyoxojQIppYbLmkm61Pa2XlIndzSqmRNenqqwCDwL5hJuSNgb7RzYZ Wqkkez/WzoJvr+n9iAlCHTN6QDW5aGqFV8zYJmGKA1a4lXeN/JQEaaYLMUTOMu18CvSV GGpA== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id sa16si1267186ejb.356.2019.10.17.05.48.30; Thu, 17 Oct 2019 05:48:53 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387750AbfJPRag (ORCPT + 99 others); Wed, 16 Oct 2019 13:30:36 -0400 Received: from mga09.intel.com ([134.134.136.24]:44105 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728901AbfJPRaf (ORCPT ); Wed, 16 Oct 2019 13:30:35 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2019 10:21:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,304,1566889200"; d="scan'208";a="395964943" Received: from chenyian-desk1.amr.corp.intel.com (HELO [10.3.52.63]) ([10.3.52.63]) by fmsmga005.fm.intel.com with ESMTP; 16 Oct 2019 10:21:24 -0700 Subject: Re: [PATCH] iommu/vt-d: Check VT-d RMRR region in BIOS is reported as reserved To: Joerg Roedel Cc: "iommu@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" , "linux-ia64@vger.kernel.org" , David Woodhouse , "Raj, Ashok" , "Mehta, Sohil" , "Luck, Tony" References: <20191015164932.18185-1-yian.chen@intel.com> <20191016075120.GB32232@8bytes.org> From: "Chen, Yian" Message-ID: Date: Wed, 16 Oct 2019 10:21:24 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <20191016075120.GB32232@8bytes.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/16/2019 12:51 AM, Joerg Roedel wrote: > Hi, > > On Tue, Oct 15, 2019 at 09:49:32AM -0700, Yian Chen wrote: >> VT-d RMRR (Reserved Memory Region Reporting) regions are reserved >> for device use only and should not be part of allocable memory pool of OS. >> >> BIOS e820_table reports complete memory map to OS, including OS usable >> memory ranges and BIOS reserved memory ranges etc. >> >> x86 BIOS may not be trusted to include RMRR regions as reserved type >> of memory in its e820 memory map, hence validate every RMRR entry >> with the e820 memory map to make sure the RMRR regions will not be >> used by OS for any other purposes. > Are there real systems in the wild where this is a problem? Firmware reports e820 and RMRR in separate structure. The system will not work stably if RMRR is not in the e820 table as reserved type mem and can be used for other purposes. In system engineering phase, I practiced with some kind bugs from BIOS, but not yet exactly same as the one here. Please consider this is a generic patch to avoid subsequent failure at runtime. >> +static inline int __init >> +arch_rmrr_sanity_check(struct acpi_dmar_reserved_memory *rmrr) >> +{ >> + u64 start = rmrr->base_address; >> + u64 end = rmrr->end_address + 1; >> + >> + if (e820__mapped_all(start, end, E820_TYPE_RESERVED)) >> + return 0; >> + >> + pr_err(FW_BUG "No firmware reserved region can cover this RMRR [%#018Lx-%#018Lx], contact BIOS vendor for fixes\n", >> + start, end - 1); >> + return -EFAULT; >> +} > Why -EFAULT, there is no fault involved? Usibg -EINVAL seems to be a better choice. -EFAULT could be used for address related errors. For this case, I agree, -EINVAL seems better while consider it as an input problem from firmware. I will make change.