From nobody Fri Sep 20 22:15:02 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1624377847; cv=pass; d=zohomail.com; s=zohoarc; b=IBc5rYOlsTkEBNkfDA9NGmFL5R2CzKWJBwh9L3UHwrH7EEXT107wSoWTf/dh8sTs29J4rw1R08CmmfOuGijLDyXDTtHr3+E3tIhiis3Ds6ONf6iXnNvXARpkarddwykn7iZLdiqSxBpaLIOow9nxfjKXya2nuJiP4v6HsZYdD4U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624377847; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=DnODBEZZ8O0m5vcqrfahTdKq89kIv2xSX00HE/WENs8=; b=LgAb6Ht2TMpRp6awPLrOH+fLsgzoLa/8zPuBY637/8wcXM7PQ5jFnLBuZLVvrV5Q3+49SKDHhhH4x2zq+wZm45J+CaCYKLCSUL86RNliHzPEWej0gTwEyzZKzoOkf8zQ6poUDcbi5sRZYQDlVxn0vVm8A+BlImWOi1hdecuSD6A= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624377847213256.0035645949325; Tue, 22 Jun 2021 09:04:07 -0700 (PDT) Received: from localhost ([::1]:59618 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvisg-0002wT-8x for importer@patchew.org; Tue, 22 Jun 2021 12:04:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57442) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvied-0006uo-20 for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:35 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:20444) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvieX-0005ra-Kc for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:34 -0400 Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15MFfZ0q023674; Tue, 22 Jun 2021 15:49:24 GMT Received: from oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 39ap66kr12-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:23 +0000 Received: from aserp3020.oracle.com (aserp3020.oracle.com [127.0.0.1]) by pps.podrdrct (8.16.0.36/8.16.0.36) with SMTP id 15MFjtIl102936; Tue, 22 Jun 2021 15:49:23 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2171.outbound.protection.outlook.com [104.47.55.171]) by aserp3020.oracle.com with ESMTP id 3998d7pmyd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:22 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) by MN2PR10MB4078.namprd10.prod.outlook.com (2603:10b6:208:180::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.18; Tue, 22 Jun 2021 15:49:21 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582]) by BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582%7]) with mapi id 15.20.4242.023; Tue, 22 Jun 2021 15:49:20 +0000 Received: from paddy.uk.oracle.com (94.61.1.144) by LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.4242.16 via Frontend Transport; Tue, 22 Jun 2021 15:49:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2020-01-29; bh=DnODBEZZ8O0m5vcqrfahTdKq89kIv2xSX00HE/WENs8=; b=m5rsL7gWYD7212wLlpf2PHfW4/6HEvatQlIGOmWu7QoBuTI0TUd52v/rVC9UQSApqSZ+ A+Xmbmt5hW0+nya1OvLLvPu3nQCTZKsPaXI1AK2+quyEmhH4vbNJPkMchUbK7x9aqV8L zjCLRiApaT+hLEO8eNTQMKCWnbt11oCtJ2sMT5KV3nuqs1XCVsx8HFRhCOk1tjRMTRlb 4IOoBnaibQyCH8m3gVKKP4v7kOi7yj9ovQeNF3qA2PvABfpLV1vXcAgOB0VHkRGNNXKm bGWnI8nTnGDd1Rce6ExDiS3ogKmnO1R59K5BSoilVR6IbG+tZRXx5r5lnSdz6vgeyeZj 9w== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aqfYF0CRPNhsI2ptd2YhxGMi+Nk3Cpy1fIWhB7tLhCWX39aq3BqVDKe2wWSKyqDJgtz8wT6QoWHXVWLFb+GA1RuR6pkxlGOgL91863n0vkDAAAPaU1KMWx3rdTftt8v5tzK5OJCpM7S6vVbGxSO+fqxtKQRYfM6JgQb5rrkpRYvq/BobjDo43Xa+v5bhbhaXt9n0RjV6aqPlLBsUUxM8+gqK1jq2F41uERlf3TQt2MDWVbjibJzNWes5DUOqV0WPIYJDjEUctntK86rBoZ+xPr7cPXiNuyceg+RAw0Id31gEH865sr5w7StT+XimZzZczAySp/vzzTScEjqWGyGj2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DnODBEZZ8O0m5vcqrfahTdKq89kIv2xSX00HE/WENs8=; b=Rxa6XdA3tayPUpTbqbUzSLGhnu4xsBRufj9XKqr07/Cenp6PTWqj+e9nZifKXqMCBg3DD8RrTETlc8bSJpVoBfRQyJmxPacfxUqZIzqy2Nkm8OgYgikq7wesiSWLAqDnedX3RypnYoqg03sFfmFH8IiQBrQbd7J4LLz945155OKH+pS33IbyWBMB0DpJwqfaCRVuYCHqPF6wgGbQe5CBFona63GGij4Y2LkyNZJsAx6ys10bc71XqgX/d7DgqYw0ZO9M7d+BND9gpnLAyQfrFGBYHCYc4Saeh7n3BBI76w5/+zemVlo4Siaj7kluMOXOfD9bbmsLPdkcKIxeDRoEyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DnODBEZZ8O0m5vcqrfahTdKq89kIv2xSX00HE/WENs8=; b=pbyqukewLVwbQSY3RV/cHiNaa+sr7zTnUwZMvOL78shBOy90rFCCxWMfSUWwNMmD4IVhtYhQEvfdDHPgcKCGM54JsuXPHgjpAUBgyfwd21jqEp0jrGqef+j5ujhvtmu0hgnUduasgwnxXqjUBdgJoohC/TsuWymXT8RfSToVM84= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=oracle.com; From: Joao Martins To: qemu-devel@nongnu.org Subject: [PATCH RFC 1/6] i386/pc: Account IOVA reserved ranges above 4G boundary Date: Tue, 22 Jun 2021 16:49:00 +0100 Message-Id: <20210622154905.30858-2-joao.m.martins@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20210622154905.30858-1-joao.m.martins@oracle.com> References: <20210622154905.30858-1-joao.m.martins@oracle.com> X-Originating-IP: [94.61.1.144] X-ClientProxiedBy: LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) To BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5fa5e9c5-2e40-43a7-5171-08d935954cf6 X-MS-TrafficTypeDiagnostic: MN2PR10MB4078: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:826; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: j0d28m9zaL8RqWhP2cfN8lNVjYiI/jXcG1dxIQ1AOWQxoIqEXTQw5/C/wKDynGZj204AGSmH9da1sqyCIkv8p1C0cP6rmzzc0pxAh6YREgGVNPSxx+2q5GQtJkZciC6ZXojyaCQT+6KvKdvjXiwRzAxyvzYRQw+8BW++wlHR10xU6g3rsHnmtlG9y24IJ2In8/DdcA0lQo8uNKm6HWoj8yvRagIJPv3XH8yCAMlBM8l2tm7WdlZ0hitCYlTfzZmeX6C+RYtUWdLp6ROr60qNJ5IkcHuriixDj/o7ZI/QOm24JYmDfHxI5hI4earlgRXqAxpaTfnCJkY5koMFZMm2VeZlCyflGFT+S7S2GYdM2xKwKV3AE49O//LKN7+YkOZVbXSoFn44CXhyYNCW4s1giLsMSaOMdebTpqC2+CP/wXYaO0/TYSJhWefGxxF8MMn9SbPxGF8DcXctyZI76OK4ntveUki/Yyfo8i/k3Zv5cfIB3UqoqnMgkstroEjpSWEPqoe2G0KAmKK6uAGXL/2Ug6BC4UN6UrtTIdoXdFkI8gE5F/mTq5fkmx4K+Ip4LphjpPM7x0DMPNFp/T2HA5+eWc+SxLcv0ayl1inhbRvpri/SLwwyKs5nTO/RmdMTvcuhPFlu7QOVHXKlcNlOWHFeJ+yEcHyiAuc87w5vAR4EzDJXbnMhdFWuEAariGXYx00awJSt+YayL1UOD27vDMVkPQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BLAPR10MB4835.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(39860400002)(396003)(366004)(346002)(376002)(136003)(6916009)(8936002)(103116003)(2616005)(54906003)(1076003)(38350700002)(956004)(6666004)(66556008)(66946007)(52116002)(8676002)(83380400001)(107886003)(66476007)(5660300002)(7696005)(38100700002)(36756003)(2906002)(86362001)(186003)(478600001)(316002)(26005)(4326008)(6486002)(16526019)(15650500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QcOMjo9/A6LLXSvs9mDc7yP76KWYyatvxWTdP9lG+BeKbSF+u12tCLFCcguS?= =?us-ascii?Q?MaPPHdd+GjNTAEJd9VjUQQ3RpOpHvbTOKLhTosgeo5gHqf9gvWSY7S0ObS8w?= =?us-ascii?Q?6M3gWLnTppP1VCl31NhyZYQflVX9zVXYs0v78XQy0or1UqZ8rJrrgRT3+0qc?= =?us-ascii?Q?OuDWL2FOnhnrgxb6w/MFZsiyWldW0Wj0e9SoS7exGZ48OpiYOU5SDiXW4HTY?= =?us-ascii?Q?dHob5oDIAOftKwgMA8hKT8UVFeF2axm3wTo3g+TFDhFqaTwSZFGQ/rKaKA4C?= =?us-ascii?Q?auT/jp0seVwH5LNPq9xDFFrrCXoewKh05QHWPHthny/P9CM/Rbqe8pz6Cyvc?= =?us-ascii?Q?Sw8rohvVCDvt8V6yQyzJe+a4EryyRiASNBBE1a3Er8zQw1/aTfHI/5nebu3U?= =?us-ascii?Q?/z7lw6pBZMw1tYkZB9egBOWZVunKUtsXmcLXxL5vGVn0re3Xpcvljjd4o+fF?= =?us-ascii?Q?zjOx7UREucdghGn3y8+Y9mg0a2jyIPeo4A6UcdM1D6I6MWqRrY8ApWzp/cNU?= =?us-ascii?Q?ToJQ34tgBKE2UallPNRIWW4sd5EGfPI8Urp1XRabkwdfyKdtvT4aefdqHVsM?= =?us-ascii?Q?9EmtWvvaDoDQSCZwuf1rjFtAvk67cbyCaAznK2bMaUDPV+xADf1QU9sAiRqv?= =?us-ascii?Q?k+flHuGKOIBAFEDdonnvzqvWEO/WqKiWSNy6cy3IV6osEh+gU6/clvY7vXde?= =?us-ascii?Q?sToWdvxhv7n4xgWzLb5Dw3rnhtxPKJngSaRDdIK8SIItGOIt0l5DjQBq1oso?= =?us-ascii?Q?KbBU7zE6OJu8jJZacR38vxAUqvHXl3dS62v38VnEU6Nx+ygm9USsdnKqw1/L?= =?us-ascii?Q?sSyna20g/7v/IUka7K4fEkymOasNkLeEYnSrWL6T2H1OfALiPtQqZpIFDcVy?= =?us-ascii?Q?liTPJdK3lO245dVDKQokwcPFK7acEmg68/JhfynvMBrj4L3QpiW3OC6Y3vMi?= =?us-ascii?Q?YEk23FgMG050CFrxiVNQwrmPHV18coTsYCoVjAm5qhRk/Dw2iCT6tNmq2BJV?= =?us-ascii?Q?K0P0+nd/8KbMsz3iQUDCe6TV6eo604574xmEGLQpre4qMLkieab56ysZrb1j?= =?us-ascii?Q?LRNTUXMh1TQtWRLtbt/aur7LUkla2DU5ja7qzJerNqK1/YT0dt32NyMNkSuL?= =?us-ascii?Q?j2dfOhRwZfnnifQUy29olIjpEwtGj/z1tFwqG7RvZr9OaiIIgfKMCiJMCV6J?= =?us-ascii?Q?Ujn7ogbL/I+00Y1KUcyGQu0+i0dd8i44nu4TPxNAbtXkFgyV3L7sD/oYrhkj?= =?us-ascii?Q?Q1Q1pZbkV/DJrh5BnWHbiWk4EsRHgV2s7bIaqI/AVOUlrp3p9B+LAdnl86Wy?= =?us-ascii?Q?wuFSCi5u6dZSmeNofYAqkc64?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5fa5e9c5-2e40-43a7-5171-08d935954cf6 X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB4835.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2021 15:49:20.8779 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kqo4jXcJY9Prp3t4aS1tbDDGKXFOFH3SHC9fgQLwHQXDd5T5eEZ3gCFX+GZa/zkxWqt0yi3flW8Ah7x3j0O3mhjhc/SiF3HYuQnqlysX/CI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4078 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10023 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 adultscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 bulkscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106220098 X-Proofpoint-ORIG-GUID: tIBprWI-ILpEGABSmCDM7V7wSFAsR6yi X-Proofpoint-GUID: tIBprWI-ILpEGABSmCDM7V7wSFAsR6yi Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=joao.m.martins@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eduardo Habkost , "Michael S . Tsirkin" , Richard Henderson , Daniel Jordan , David Edmondson , Paolo Bonzini , Igor Mammedov , Joao Martins , Suravee Suthikulpanit Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.onmicrosoft.com) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" It is assumed that the whole GPA space is available to be DMA addressable, within a given address space limit. Since v5.4 based that is not true, and VFIO will validate whether the selected IOVA is indeed valid i.e. not reserved by IOMMU on behalf of some specific devices or platform-defined. AMD systems with an IOMMU are examples of such platforms and particularly may export only these ranges as allowed: 0000000000000000 - 00000000fedfffff (0 .. 3.982G) 00000000fef00000 - 000000fcffffffff (3.983G .. 1011.9G) 0000010000000000 - ffffffffffffffff (1Tb .. 16Pb) We already know of accounting for the 4G hole, albeit if the guest is big enough we will fail to allocate a >1010G given the ~12G hole at the 1Tb boundary, reserved for HyperTransport. When creating the region above 4G, take into account what IOVAs are allowed by defining the known allowed ranges and search for the next free IOVA ranges. When finding a invalid IOVA we mark them as reserved and proceed to the next allowed IOVA region. After accounting for the 1Tb hole on AMD hosts, mtree should look like: 0000000100000000-000000fcffffffff (prio 0, i/o): alias ram-above-4g @pc.ram 0000000080000000-000000fc7fffffff 0000010000000000-000001037fffffff (prio 0, i/o): alias ram-above-1t @pc.ram 000000fc80000000-000000ffffffffff Co-developed-by: Daniel Jordan Signed-off-by: Daniel Jordan Signed-off-by: Joao Martins --- hw/i386/pc.c | 103 +++++++++++++++++++++++++++++++++++++++---- include/hw/i386/pc.h | 57 ++++++++++++++++++++++++ target/i386/cpu.h | 3 ++ 3 files changed, 154 insertions(+), 9 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index c6d8d0d84d91..52a5473ba846 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -91,6 +91,7 @@ #include "qapi/qmp/qerror.h" #include "e820_memory_layout.h" #include "fw_cfg.h" +#include "target/i386/cpu.h" #include "trace.h" #include CONFIG_DEVICES =20 @@ -860,6 +861,93 @@ void xen_load_linux(PCMachineState *pcms) x86ms->fw_cfg =3D fw_cfg; } =20 +struct GPARange usable_iova_ranges[] =3D { + { .start =3D 4 * GiB, .end =3D UINT64_MAX, .name =3D "ram-above-4g" }, + +/* + * AMD systems with an IOMMU have an additional hole close to the + * 1Tb, which are special GPAs that cannot be DMA mapped. Depending + * on kernel version, VFIO may or may not let you DMA map those ranges. + * Starting v5.4 we validate it, and can't create guests on AMD machines + * with certain memory sizes. The range is: + * + * FD_0000_0000h - FF_FFFF_FFFFh + * + * The ranges represent the following: + * + * Base Address Top Address Use + * + * FD_0000_0000h FD_F7FF_FFFFh Reserved interrupt address space + * FD_F800_0000h FD_F8FF_FFFFh Interrupt/EOI IntCtl + * FD_F900_0000h FD_F90F_FFFFh Legacy PIC IACK + * FD_F910_0000h FD_F91F_FFFFh System Management + * FD_F920_0000h FD_FAFF_FFFFh Reserved Page Tables + * FD_FB00_0000h FD_FBFF_FFFFh Address Translation + * FD_FC00_0000h FD_FDFF_FFFFh I/O Space + * FD_FE00_0000h FD_FFFF_FFFFh Configuration + * FE_0000_0000h FE_1FFF_FFFFh Extended Configuration/Device Messages + * FE_2000_0000h FF_FFFF_FFFFh Reserved + * + * See AMD IOMMU spec, section 2.1.2 "IOMMU Logical Topology", + * Table 3: Special Address Controls (GPA) for more information. + */ +#define DEFAULT_NR_USABLE_IOVAS 1 +#define AMD_MAX_PHYSADDR_BELOW_1TB 0xfcffffffff + { .start =3D 1 * TiB, .end =3D UINT64_MAX, .name =3D "ram-above-1t" }, +}; + + uint32_t nb_iova_ranges =3D DEFAULT_NR_USABLE_IOVAS; + +static void init_usable_iova_ranges(void) +{ + uint32_t eax, vendor[3]; + + host_cpuid(0x0, 0, &eax, &vendor[0], &vendor[2], &vendor[1]); + if (IS_AMD_VENDOR(vendor)) { + usable_iova_ranges[0].end =3D AMD_MAX_PHYSADDR_BELOW_1TB; + nb_iova_ranges++; + } +} + +static void add_memory_region(MemoryRegion *system_memory, MemoryRegion *r= am, + hwaddr base, hwaddr size, hwaddr offset) +{ + hwaddr start, region_size, resv_start, resv_end; + struct GPARange *range; + MemoryRegion *region; + uint32_t index; + + for_each_usable_range(index, base, size, range, start, region_size) { + region =3D g_malloc(sizeof(*region)); + memory_region_init_alias(region, NULL, range->name, ram, + offset, region_size); + memory_region_add_subregion(system_memory, start, region); + e820_add_entry(start, region_size, E820_RAM); + + assert(size >=3D region_size); + if (size =3D=3D region_size) { + return; + } + + /* + * There's memory left to create a region for, so there should be + * another valid IOVA range left. Creating the reserved region + * would also be pointless. + */ + if (index + 1 =3D=3D nb_iova_ranges) { + return; + } + + resv_start =3D start + region_size; + resv_end =3D usable_iova_ranges[index + 1].start; + + /* Create a reserved region in the IOVA hole. */ + e820_add_entry(resv_start, resv_end - resv_start, E820_RESERVED); + + offset +=3D region_size; + } +} + void pc_memory_init(PCMachineState *pcms, MemoryRegion *system_memory, MemoryRegion *rom_memory, @@ -867,7 +955,7 @@ void pc_memory_init(PCMachineState *pcms, { int linux_boot, i; MemoryRegion *option_rom_mr; - MemoryRegion *ram_below_4g, *ram_above_4g; + MemoryRegion *ram_below_4g; FWCfgState *fw_cfg; MachineState *machine =3D MACHINE(pcms); MachineClass *mc =3D MACHINE_GET_CLASS(machine); @@ -877,6 +965,8 @@ void pc_memory_init(PCMachineState *pcms, assert(machine->ram_size =3D=3D x86ms->below_4g_mem_size + x86ms->above_4g_mem_size); =20 + init_usable_iova_ranges(); + linux_boot =3D (machine->kernel_filename !=3D NULL); =20 /* @@ -888,16 +978,11 @@ void pc_memory_init(PCMachineState *pcms, memory_region_init_alias(ram_below_4g, NULL, "ram-below-4g", machine->= ram, 0, x86ms->below_4g_mem_size); memory_region_add_subregion(system_memory, 0, ram_below_4g); + e820_add_entry(0, x86ms->below_4g_mem_size, E820_RAM); if (x86ms->above_4g_mem_size > 0) { - ram_above_4g =3D g_malloc(sizeof(*ram_above_4g)); - memory_region_init_alias(ram_above_4g, NULL, "ram-above-4g", - machine->ram, - x86ms->below_4g_mem_size, - x86ms->above_4g_mem_size); - memory_region_add_subregion(system_memory, 0x100000000ULL, - ram_above_4g); - e820_add_entry(0x100000000ULL, x86ms->above_4g_mem_size, E820_RAM); + add_memory_region(system_memory, machine->ram, 4 * GiB, + x86ms->above_4g_mem_size, x86ms->below_4g_mem_si= ze); } =20 if (!pcmc->has_reserved_memory && diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 1522a3359a93..73b8e2900c72 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -151,6 +151,63 @@ void pc_guest_info_init(PCMachineState *pcms); #define PCI_HOST_BELOW_4G_MEM_SIZE "below-4g-mem-size" #define PCI_HOST_ABOVE_4G_MEM_SIZE "above-4g-mem-size" =20 +struct GPARange { + uint64_t start; + uint64_t end; +#define range_len(r) ((r).end - (r).start + 1) + + const char *name; +}; + +extern uint32_t nb_iova_ranges; +extern struct GPARange usable_iova_ranges[]; + +static inline void next_iova_range_index(uint32_t i, hwaddr base, hwaddr s= ize, + hwaddr *start, hwaddr *region_siz= e, + uint32_t *index, struct GPARange = **r) +{ + struct GPARange *range; + + while (i < nb_iova_ranges) { + range =3D &usable_iova_ranges[i]; + if (range->end >=3D base) { + break; + } + i++; + } + + *index =3D i; + /* index is out of bounds or no region left to process */ + if (i >=3D nb_iova_ranges || !size) { + return; + } + + *start =3D MAX(range->start, base); + *region_size =3D MIN(range->end - *start + 1, size); + *r =3D range; +} + +/* + * for_each_usable_range() - iterates over usable IOVA regions + * + * @i: range index within usable_iova_ranges + * @base: requested address we want to use + * @size: total size of the region with @base + * @r: range indexed by @i within usable_iova_ranges + * @s: calculated usable iova address base + * @i_size: calculated usable iova region size starting @s + * + * Use this iterator to walk through usable GPA ranges. Platforms + * such as AMD with IOMMU capable hardware restrict certain address + * ranges for Hyper Transport. This iterator helper lets user avoid + * using those said reserved ranges. + */ +#define for_each_usable_range(i, base, size, r, s, i_size) \ + for (s =3D 0, i_size =3D 0, r =3D NULL, \ + next_iova_range_index(0, base, size, &s, &i_size, &i, &r); \ + i < nb_iova_ranges && size !=3D 0; \ + size -=3D i_size, \ + next_iova_range_index(i + 1, base, size, &s, &i_size, &i, &r)) =20 void pc_pci_as_mapping_init(Object *owner, MemoryRegion *system_memory, MemoryRegion *pci_address_space); diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 1e11071d817b..f8f15a4523c6 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -869,6 +869,9 @@ typedef uint64_t FeatureWordArray[FEATURE_WORDS]; #define IS_AMD_CPU(env) ((env)->cpuid_vendor1 =3D=3D CPUID_VENDOR_AMD_1 &&= \ (env)->cpuid_vendor2 =3D=3D CPUID_VENDOR_AMD_2 &&= \ (env)->cpuid_vendor3 =3D=3D CPUID_VENDOR_AMD_3) +#define IS_AMD_VENDOR(vendor) ((vendor[0]) =3D=3D CPUID_VENDOR_AMD_1 && \ + (vendor[1]) =3D=3D CPUID_VENDOR_AMD_2 && \ + (vendor[2]) =3D=3D CPUID_VENDOR_AMD_3) =20 #define CPUID_MWAIT_IBE (1U << 1) /* Interrupts can exit capability */ #define CPUID_MWAIT_EMX (1U << 0) /* enumeration supported */ --=20 2.17.1 From nobody Fri Sep 20 22:15:02 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1624377770; cv=pass; d=zohomail.com; s=zohoarc; b=XJIx4Rv0DyujctEvZ099RK7ve2lc6Pdf4yzkXWajVWeNDGP6vaVz9lSnRIC4MCs0u1K4jP9dALbO606RCSSjTWCITOtnXxZ54lqatI9KGMuPjP1zt7zEi0S3ojD7GNyIQrEX4KGe48UfA9fAUfVTyX4TqshHf6TuRMFWfypmpkw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624377770; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8OLtjHGpv/JOAGP4L+CPgUBHdF+av4xu3M7Ii8C4+V0=; b=XJmYy1iXsfMTxbQrPFI0LIIiPopDCjknCsmAIHxFHYgwKCpZnI0vWlRRd0SwGOcKqNyYMPjLMxMhyuXnxEnJ9PefxQwrmp5gkZfkjSUMo5SppEcZLJCjowRMt5K8rRfhr3Jf8RbsFSMPS2BaajeOgNqnGY34d6SbeF4qDv5DDi0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624377770924982.1793563583608; Tue, 22 Jun 2021 09:02:50 -0700 (PDT) Received: from localhost ([::1]:57126 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvirR-0001In-Si for importer@patchew.org; Tue, 22 Jun 2021 12:02:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57452) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lviee-0006vn-12 for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:36 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:2452) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvieY-0005tW-Sp for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:35 -0400 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15MFfOcb012085; Tue, 22 Jun 2021 15:49:27 GMT Received: from oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 39as86uahm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:26 +0000 Received: from aserp3020.oracle.com (aserp3020.oracle.com [127.0.0.1]) by pps.podrdrct (8.16.0.36/8.16.0.36) with SMTP id 15MFnPYE114178; Tue, 22 Jun 2021 15:49:25 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam08lp2177.outbound.protection.outlook.com [104.47.73.177]) by aserp3020.oracle.com with ESMTP id 3998d7pn13-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:25 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) by BLAPR10MB5204.namprd10.prod.outlook.com (2603:10b6:208:328::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.22; Tue, 22 Jun 2021 15:49:23 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582]) by BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582%7]) with mapi id 15.20.4242.023; Tue, 22 Jun 2021 15:49:23 +0000 Received: from paddy.uk.oracle.com (94.61.1.144) by LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.4242.16 via Frontend Transport; Tue, 22 Jun 2021 15:49:21 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2020-01-29; bh=8OLtjHGpv/JOAGP4L+CPgUBHdF+av4xu3M7Ii8C4+V0=; b=wLH4h29m44cX1W1dAsBtAcjOQb1wFH+632BqvHiKqZZ5OYn/uj2FURnOX2sRHBPmNHSW 4NWFSLfwn6Fy+KE51B5HIEGOd+PIbPOIXAFXBsafZX8ElOIL3HhrL0HXhdWnmNHHmWop mkNqZihJGeu7F5EjW2YIt1TqnJJ2QuUZboSNteQ2fh44K6WoxjxnR8DUeIvuUdUPy7BV fsgbVF6TP45PUvcLaOQbzWtma53tgim5UNtyNjcVfXgkr0NrEYlfetL9vLZGAHmahPXD B20dpSeiPNT/Lh2MuY/U+xT3sTXfKAiQW0/VExECj+4mqbNH9dMcH2V2Ybmhjp3uUsEE HQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i5sP7RtzQRGIg64KFIZP9lkbbw2Y7DgqbSh/2aU3+jENKhDm+MiXOvabha/8P5plwtDxplYuNv8Utq0yNdkdpiKi1ilHhdAvKnN8Lbk9D/8XtuiDJdpk8GkqbvSA1l+GBGAYLIf/a0rCSNmDmsrRkw6XRxKI8LpZlcP1PognPyEKX6RcNv6limePHoznvNtP54JnzMxy+COORnPhyuW+yRKezSNbMAWobBps42PrQbnxVOb+TvyKcT6NSzp/gX2Q/2eOzI/6VmWjMlQkJXsZ7c4gkzzd+R1GBYSLgX67lcyFGs3EezOceqfAeSDbKeu4iynpYwI2AdIc2YHAoNcpbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8OLtjHGpv/JOAGP4L+CPgUBHdF+av4xu3M7Ii8C4+V0=; b=ZlgHnyAtSUwCcj5HsuucQ6d97XSmcYblS5qYyjU5E3M/4bm824xRjFTQf4x18Cdll4sMRkg+ETGtoJIR/AM0ROzrnWAujcMoqzE3/mDmp77K4/Hs6kM2zw6FV4hbIBo2xAHxj48ELEHWVnihjiLd+5nTzlZm5QKhxxn/wANjvoRnw1cFIbQMlK5A8oZbEg6QHJLP9qBfHTyQ1zA8cEhMf0xp7e5cA1WhsPqOuBVDpYsqZbRwXg+aGKTVMmFcZtmO57/I7Fqvk6fcH1Ngp5VIE5rENXXzRx0AbEqDXpQhITSGy9yqpzNqQ14pl5Gy61fvWDX8uTOwkEmsUfxFEAO96g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8OLtjHGpv/JOAGP4L+CPgUBHdF+av4xu3M7Ii8C4+V0=; b=pquzRQQtA+6CKjK/WtP2N1mos4yeNTl2jPqFZvAOmyKT/AK6L0LkTW2BkDW2oMDfOkM2B0rqZ4NSz/jLaZGpMBePgseBOL70IppUHq8ZNPkkimyP18Oc+Zxy97byFlK3DGcVf7wWlv5bqin5IMzLX6kzUeaI1uWpnME8TabrSY4= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=oracle.com; From: Joao Martins To: qemu-devel@nongnu.org Subject: [PATCH RFC 2/6] i386/pc: Round up the hotpluggable memory within valid IOVA ranges Date: Tue, 22 Jun 2021 16:49:01 +0100 Message-Id: <20210622154905.30858-3-joao.m.martins@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20210622154905.30858-1-joao.m.martins@oracle.com> References: <20210622154905.30858-1-joao.m.martins@oracle.com> X-Originating-IP: [94.61.1.144] X-ClientProxiedBy: LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) To BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a95aa03d-ce68-4311-a85d-08d935954e9c X-MS-TrafficTypeDiagnostic: BLAPR10MB5204: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TkDH+0AWJUKnckFBb/bDhNwkoGKPO4WNCDehhHsPSZQcCMeEFMN6k+kqyLVP+USCuSggkJX9JonGm//aCqGpcKfZi0cWa7UXjMZTOauwRQQl5MdKeJsZkOX4jvnMu10Gu0+K1uHobONeTAws614C4HrjFV3H+UkoRKZfFqoyp/VTGInQroC8o9lacGH7+5UcE0kIFuiXLA3Ap8rbGycfOqdaPhi1Xk2GmlIGbUgVbpN2sq0odvGu1V5fuT5jmVGUeQR5qT7EDcAymoNaT9laSyi8+rXMTDfFMqrphV+B3NrTsWzFxlaadQyR9KdLcRNu/7IdILrJduETvw0TDUbor4qgweEPdbGlJSleOqUMJJFaUMidFrCM61LLjKI6GGRwHH7iTpbeiAf8gN7oYpx/beWAJCoM/6o5Mtc24rC/vyXwWl3F3PWCKV8GHtMNwRmG/zS3UepCZRdNQ7GWtkCJmPU6oMlRcq3N2ucpCOrkJflE5JspZyftUlEZjfwhFRWKxdbendz2DSMOxC+E9tD+MoA78LpG4OZ4GU4ZQ80aU606NVgfmUI0KRyhLhd0DtNonoLasIgQ3eAFlcTuxzI82vN6ti/vz2HGuq8EQhJZHHFFEW/j9qv2WHDjvimjHrmxOigIa2cPm8qt1vF7bWddBMHb3q45ZgT7s0XWQNSrz8Y= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BLAPR10MB4835.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(136003)(346002)(396003)(39860400002)(376002)(366004)(5660300002)(4326008)(8676002)(956004)(7696005)(1076003)(8936002)(52116002)(2616005)(83380400001)(6486002)(316002)(66556008)(2906002)(38350700002)(38100700002)(6666004)(66946007)(107886003)(86362001)(66476007)(36756003)(478600001)(54906003)(26005)(6916009)(103116003)(16526019)(186003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?KcGgLu1vPr04c7nMg7sEEQtV3XGrFfuUq1bjK8rYsEwNlT4HisCXe1eQZzx1?= =?us-ascii?Q?cjoBujWxe1h6jllnJAwQOI+SavBFjmdqdIt9vV9u95TFSKGjwbi4U3oTchG5?= =?us-ascii?Q?EawkNicgxd5yHtLwy5KYs9bHYoW1+5M2TXk7cKBHYeHSF9bS/a6alDN+xZaf?= =?us-ascii?Q?DPTrNQmpXmHvbg/O/CqUpLV3pHbrqX7dIfy56lV2ebzrWYX/AEKXrFsWBb37?= =?us-ascii?Q?ytQz9py9ftyVUpJFmqqNz8abYe+azBFmUCaW9jbHnezy33wMiQy4L8CsSlZ+?= =?us-ascii?Q?IakSZm1egojHz9TU8qQwI5LquhlgmbLnEQtUTTouJvSEXi4vUoNExIpNdN0d?= =?us-ascii?Q?gM63Q+jzgkak7b9fkp11zFvAKUmi9ObvSPweC1yFwGVQIrNmdj0R63KgJyVn?= =?us-ascii?Q?doWwOSuZwCYmgg/8v4afxsjPVeQy8nd7nqOx6r4SN3iUM1eJScIXkqCql4Dz?= =?us-ascii?Q?KwwJoe1suG9vNG1K+I9R7yb0JXy5KdJ2Jw1+jiKRCCiFgryYlFF/eHXDwYKi?= =?us-ascii?Q?WNrjQazWwucPwvJymAAnrTEGKfKFyqfsYnl5Vxj3HUkoSFxDr9BSbbekGbyr?= =?us-ascii?Q?rgTAoecMZGUaLkgs+j3xe25aFVNrtesXxel/PSuCJyXxNumrK4+j8AZLuBF6?= =?us-ascii?Q?R6Vrhe27yNCR73E42Nhg0My+7Tbcp6i7LGzytiLkKhxzGUTYP8klMgsTQMUa?= =?us-ascii?Q?aFS97L4sLyDMSO+1GKs+Wt7Frmytb2vj8KrZ78zD1gY3BsU5Jq8+TrvWw3f9?= =?us-ascii?Q?sMQvA8nn3OpkNGhclif9eOn9KOJFkRHxrKJYTKBJTjtRe41paO5xuQF3Ul8z?= =?us-ascii?Q?Ae6lYeGzlAbnf9ydaQKoiuXEvLgZP3jNxzPBsEKdl7X5v10eIsS6Qkwfb49H?= =?us-ascii?Q?7iYDC+W1SZIMxCKBixJoh4V9uRStxTgZo8wC/P0R8+O9Kam148wc8KEKL5gP?= =?us-ascii?Q?ZzZjTiZMZ0Ln/8zCC45vo03m6p8zbaFfNdQNtfFoWaAjgBFwl9g3lT0Ji/u8?= =?us-ascii?Q?NpnGlEsRnNHyC20LQauOfAQBCa57TceI8RKwH9PY8rcmeJtu87pv8H9sq1I7?= =?us-ascii?Q?pbpAEJRgiVS9eXpUaFlKzWvZrsqV2VJOzQntCvI/Lf0dYMgHrDdNVsuBMfTb?= =?us-ascii?Q?IFAWuoG8NxczD+FgARVlAMxCScotBntcmVSs77cn9Mtf5oWmML6oIFRG5ckK?= =?us-ascii?Q?j3teH8dpgEJXVQ0Z84dOYGn57zo0JaUXYYn+injkGf23QifOwfNMOigRjue1?= =?us-ascii?Q?smCvO+opE0MHLOsl+cwMVEbLjqw95geq40LwPzETa9ueY1aRCK8Uv6ayMpY/?= =?us-ascii?Q?Q0VtSJCtaFz0lgw+aG66zg8w?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a95aa03d-ce68-4311-a85d-08d935954e9c X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB4835.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2021 15:49:23.6248 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tX5L2Kvyw0GZrc7nSyX8d2CxDgJUfjknqeJ82aPQw/G2Ytm6RjE+cUXxMvUeQazkLEvcwEix52GtxWTpCVfXQ81QzuaxZ7pSbjXi6ag/qSI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5204 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10023 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 adultscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 bulkscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106220098 X-Proofpoint-ORIG-GUID: FxMRtBBpqoPnnXi8Jj_uLPVmFm5CPq_U X-Proofpoint-GUID: FxMRtBBpqoPnnXi8Jj_uLPVmFm5CPq_U Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.165.32; envelope-from=joao.m.martins@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eduardo Habkost , "Michael S . Tsirkin" , Richard Henderson , Daniel Jordan , David Edmondson , Paolo Bonzini , Igor Mammedov , Joao Martins , Suravee Suthikulpanit Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.onmicrosoft.com) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When accounting for allowed IOVA above 4G hole we also need to consider the hotplug memory sits within allowed ranges. Failure to do such validation, means that when we hotplug memory and DMA map it, the DMA_MAP ioctl() fails given invalid IOVA use but also leading to a catastrophic failure and exiting Qemu. Similar to the region above 4G we need to make also do create a region for the [ram .. maxram] GPA range, and select one which is within the allowed IOVA ranges, preventing any such failures in the future. Co-developed-by: Daniel Jordan Signed-off-by: Daniel Jordan Signed-off-by: Joao Martins --- hw/i386/pc.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 52a5473ba846..94497f22b908 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -909,7 +909,35 @@ static void init_usable_iova_ranges(void) } } =20 -static void add_memory_region(MemoryRegion *system_memory, MemoryRegion *r= am, +static hwaddr allowed_round_up(hwaddr base, hwaddr size) +{ + hwaddr base_aligned =3D ROUND_UP(base, 1 * GiB), addr; + uint32_t index; + + for (index =3D 0; index < nb_iova_ranges; index++) { + hwaddr min_iova, max_iova; + + min_iova =3D usable_iova_ranges[index].start; + max_iova =3D usable_iova_ranges[index].end; + + if (max_iova < base_aligned) { + continue; + } + + addr =3D MAX(ROUND_UP(min_iova, 1 * GiB), base_aligned); + if (addr > max_iova) { + continue; + } + + if (max_iova - addr >=3D size) { + return addr; + } + } + + return 0; +} + +static hwaddr add_memory_region(MemoryRegion *system_memory, MemoryRegion = *ram, hwaddr base, hwaddr size, hwaddr offset) { hwaddr start, region_size, resv_start, resv_end; @@ -926,7 +954,7 @@ static void add_memory_region(MemoryRegion *system_memo= ry, MemoryRegion *ram, =20 assert(size >=3D region_size); if (size =3D=3D region_size) { - return; + return start + region_size; } =20 /* @@ -935,7 +963,7 @@ static void add_memory_region(MemoryRegion *system_memo= ry, MemoryRegion *ram, * would also be pointless. */ if (index + 1 =3D=3D nb_iova_ranges) { - return; + break; } =20 resv_start =3D start + region_size; @@ -946,6 +974,8 @@ static void add_memory_region(MemoryRegion *system_memo= ry, MemoryRegion *ram, =20 offset +=3D region_size; } + + return 0; } =20 void pc_memory_init(PCMachineState *pcms, @@ -961,6 +991,7 @@ void pc_memory_init(PCMachineState *pcms, MachineClass *mc =3D MACHINE_GET_CLASS(machine); PCMachineClass *pcmc =3D PC_MACHINE_GET_CLASS(pcms); X86MachineState *x86ms =3D X86_MACHINE(pcms); + hwaddr maxram_start =3D 4 * GiB + x86ms->above_4g_mem_size; =20 assert(machine->ram_size =3D=3D x86ms->below_4g_mem_size + x86ms->above_4g_mem_size); @@ -981,8 +1012,13 @@ void pc_memory_init(PCMachineState *pcms, =20 e820_add_entry(0, x86ms->below_4g_mem_size, E820_RAM); if (x86ms->above_4g_mem_size > 0) { - add_memory_region(system_memory, machine->ram, 4 * GiB, + maxram_start =3D add_memory_region(system_memory, machine->ram, 4 = * GiB, x86ms->above_4g_mem_size, x86ms->below_4g_mem_si= ze); + if (!maxram_start) { + error_report("unsupported amount of memory: %"PRIu64, + x86ms->above_4g_mem_size); + exit(EXIT_FAILURE); + } } =20 if (!pcmc->has_reserved_memory && @@ -1001,6 +1037,7 @@ void pc_memory_init(PCMachineState *pcms, if (pcmc->has_reserved_memory && (machine->ram_size < machine->maxram_size)) { ram_addr_t device_mem_size =3D machine->maxram_size - machine->ram= _size; + hwaddr device_mem_base; =20 if (machine->ram_slots > ACPI_MAX_RAM_SLOTS) { error_report("unsupported amount of memory slots: %"PRIu64, @@ -1015,8 +1052,14 @@ void pc_memory_init(PCMachineState *pcms, exit(EXIT_FAILURE); } =20 - machine->device_memory->base =3D - ROUND_UP(0x100000000ULL + x86ms->above_4g_mem_size, 1 * GiB); + device_mem_base =3D allowed_round_up(maxram_start, device_mem_size= ); + if (!device_mem_base) { + error_report("unable to find device memory base for %"PRIu64 + " - %"PRIu64, maxram_start, device_mem_size); + exit(EXIT_FAILURE); + } + + machine->device_memory->base =3D device_mem_base; =20 if (pcmc->enforce_aligned_dimm) { /* size device region assuming 1G page max alignment per slot = */ --=20 2.17.1 From nobody Fri Sep 20 22:15:02 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1624377939; cv=pass; d=zohomail.com; s=zohoarc; b=GQnl9bQdLgv2zO7ukE4StipOEUfZIO8ilgsEwvxVgwumiFhjjwMs0R5v4Z420MzzxSF4R+d0RE4Qb7WnwoeO7yQLy5abYf5FNsHAMdIc3IUAVAjqAUPNv91Bxh1TpKefW8Ribt4xdDvb7/FCkCPMBxNEvgXL2QPJL0UB1d+O/l0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624377939; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/VDDukpMShH0cK8abAolZeeL6Q0XU9FHs6v8xwSzvsQ=; b=IogmcUuBccugBxpQC2Y2h4NSWrnRDYsTgvn85o2zPi+k5XK9CrieAcKWy9bYy51I3OozUZuDGDgFK+Hz1mKqTKZBlzKFiqT4SJpKMzxcyr2ikt04+a9xyDR8WPbin3o5Os5UJLUu5RkwFuBLayJYwpcEiI+2e5sxSUCP8jndouU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624377939305120.08983585566364; Tue, 22 Jun 2021 09:05:39 -0700 (PDT) Received: from localhost ([::1]:37898 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lviuA-0007Ib-B2 for importer@patchew.org; Tue, 22 Jun 2021 12:05:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57454) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lviee-0006xq-GW for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:36 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:29500) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvieb-0005uv-2n for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:36 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15MFgBT8015098; Tue, 22 Jun 2021 15:49:29 GMT Received: from oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 39b98v9jdy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:29 +0000 Received: from userp3020.oracle.com (userp3020.oracle.com [127.0.0.1]) by pps.podrdrct (8.16.0.36/8.16.0.36) with SMTP id 15MFkDQa028913; Tue, 22 Jun 2021 15:49:28 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam08lp2168.outbound.protection.outlook.com [104.47.73.168]) by userp3020.oracle.com with ESMTP id 399tbsy2hv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:28 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) by BLAPR10MB5204.namprd10.prod.outlook.com (2603:10b6:208:328::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.22; Tue, 22 Jun 2021 15:49:25 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582]) by BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582%7]) with mapi id 15.20.4242.023; Tue, 22 Jun 2021 15:49:25 +0000 Received: from paddy.uk.oracle.com (94.61.1.144) by LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.4242.16 via Frontend Transport; Tue, 22 Jun 2021 15:49:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2020-01-29; bh=/VDDukpMShH0cK8abAolZeeL6Q0XU9FHs6v8xwSzvsQ=; b=IoJsq+0xtAWQcOtTgJlIeB8t04LpL5mynApFVsM2v+4tqx5RCK8kWDKVxQhFmOB0OPk4 W6oegDANKQl67NJMkg2tF3rtbYmPF02sYY/K/UDVuuVb455Ff31GeS28C5o5zlBGEKk0 JZ/RYUGtCnPR5fTkOztzfhQEIlfz7IHd5IIrdwPy2ljgbJaEAhoLKV9b9+W/SksMrhXP tqP8ACYxxGzPsgpa8vqubHplKoyltinCBtgvkL3lE2vPGdV8KWb9OPeCOcuSehV4ljM9 fH0XtkibqUFjcy74prrmEIu8oFqUTdxbOFf0V4EV9URUuhIDkD3RTfgVIzF5ZoH/aBHB CA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mLy7O3CwV3ttvBw5v/NbgPOxqNCkupILUErgG+QMIchmDFk7934XHepP/5kAYFaK0D+KXf1TxTBBKCxwSUf5+MQmP48J8758u70EaWNXfBB2rDsiPINBDaQsCiqdrs9+DLD0rIUTd86iM6hzmuVFQuo5D5Qa3rmEAj8m3RaOvp5u/E/HJHmRlb42qUB66pkOBmFV1MXPcoYVU2CjTSQUKqp+ka4er1zNQ+eCsqHsyuuFRdoZAN3HAwxndt7hEpPGXt5r+CGHGLzfXgue9UImAWo8ojncRkiz5pgY0OwdW6UbdvxiVxZwVf/CXwPDAvg08rg851EZMIyugFR05QwFaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/VDDukpMShH0cK8abAolZeeL6Q0XU9FHs6v8xwSzvsQ=; b=LVCKQE99ygIkf9xFz89LSMmYqb4Zve5t+qT7lstvtun2jzBF9Q3PoCi6sTHvfLDVntBDtohN4ms23npSZNxhGhJ92PqvDzyfWiNHEHwxwC/riH3b5sWeanidovbTmTNMKHn9gQVP7EaG2FtO1mmMGwUX60yki9+cJI/jeb6ioyZgO+XaJmxQAsl74s9MnXJpTHIolee2UHYBHaG0O3OqAw1sgcGyO+a3ZALQWM8ZyEFejafELMJQ3ej1/qwEMJgrf6DdTXW5pSwVX1S/OMOZ+HDhrKsBk6iBXhuicB9bvvkCM31esixS93/Dpq1xBXC/Wx//O+E+01meQImdFU2sow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/VDDukpMShH0cK8abAolZeeL6Q0XU9FHs6v8xwSzvsQ=; b=MPJ/fsvbcjQzmKlMJOo8qz8HGl/dVSvgmVinXoPAugxWWl/lpe52JqxUyncn5cBkbiokQYE7NNzsLhwrEQrsHuwVa4gzaElwtQvO5e4BySSeUzQDHurzTxjNR1+vF65zXgEuR4XvN98Al7sq5AoDRjEh5nePpHNDcdBuqOr5FHA= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=oracle.com; From: Joao Martins To: qemu-devel@nongnu.org Subject: [PATCH RFC 3/6] pc/cmos: Adjust CMOS above 4G memory size according to 1Tb boundary Date: Tue, 22 Jun 2021 16:49:02 +0100 Message-Id: <20210622154905.30858-4-joao.m.martins@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20210622154905.30858-1-joao.m.martins@oracle.com> References: <20210622154905.30858-1-joao.m.martins@oracle.com> X-Originating-IP: [94.61.1.144] X-ClientProxiedBy: LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) To BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f1567f12-b657-4489-766f-08d935954fd5 X-MS-TrafficTypeDiagnostic: BLAPR10MB5204: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:983; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gTPD2JjrqB5IDsPYRJlQNcNQN9j6AotZQ84HIA+Hx3+w0eFLe2xKx8Bu9tlLTkj6Q0zKBctPYB5XyIFurUwVWQEtY0+PMnbqmv1cEAZFUlfw2BT8m+mlaxLMaB5d5pdph+sg1FWjlbLIsxGFpdNklYyKYTaPvCHGHGbAk/C6uxYifjZPuFobVNAsXQkyLfA0/9fHxjNeGzWbKuBpFxldTP0hl59co/LhLDVTJGTrexXNZOrBBA9aEVi5lh33zzq3PJffNPenOQ6+TnM9B7beShjk19rcd4k52HmQulPGQfjV42EnvPAcn2JyqpkyQchxVNRCTp74M7fRtcN3XTwE2ElvOBsWN9/LzamjLChCeZoxS45pRMfSSV2WlcVsPPDvRHMXU5PRq/KgQ+UGYHgbh5ZMUNCafhKOqIT2D1/Tuq5RUxjc9fQhj6+w6RiohatRcLhA3k8XbtRTKxsHCxSrQXc9Xx50AhzRrfvOaK4EvJkgZP10smWky//brYo1o6Rla0hUVFBnx20VK7yOEmYCXuMfl3ZcYB9SLZvSQPQIa+6OUX1qbOsyqakGqQ9tEdIsUIBLqdoX/oJNLZAxevrIsdn22ce50RsDwGLP+9FeVtVBYi68Q0w1rCZdno5ZxrqKoR/8qTpIToDEVweq5e3HxJLzumvy77zr6ZfaFf5ifVA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BLAPR10MB4835.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(136003)(346002)(396003)(39860400002)(376002)(366004)(5660300002)(4326008)(8676002)(956004)(7696005)(1076003)(8936002)(52116002)(2616005)(83380400001)(6486002)(316002)(66556008)(2906002)(38350700002)(38100700002)(6666004)(66946007)(107886003)(86362001)(66476007)(36756003)(478600001)(54906003)(26005)(6916009)(103116003)(16526019)(186003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Yi9+QuAM01lr5eMyWgeLkOtWgGbUWqqtyRH5zouxPvmFVT1dNVhcAUpTJrJL?= =?us-ascii?Q?kRxSbby5+GKCkC1BiMawBOwQCkcks0kMYPogNTLHnirAq1unjML9cwPrunyH?= =?us-ascii?Q?EEcxG18RpP2sVQl2HqNFKcR0B2Aax6FZzTCXWKNldit/35YanuJpDSKNmfGp?= =?us-ascii?Q?AsxykD+ekBNoif7+TPL1i09OBNVUAxtPHQf8n/7eswnptvKqo2FwEW9ilOd4?= =?us-ascii?Q?6qKyeYhFqKcfgzs+plXxNTr94lmM/HebIjJ0PdtMiXLVpWXpBFZjqPux00BT?= =?us-ascii?Q?udOlsQANFakhSFafxghEhTl7OgJp73ikqV94x8bmIsXPKGFy/mQfxhhtJE3v?= =?us-ascii?Q?ilbgUjfj2XCv+ZPzwGdQCkhbm1gJ0g/6PuvHj90p/Sj3SmUf/AEf9yQDtXPK?= =?us-ascii?Q?Jad6MYsKmz4FXGkjlCkV3BYwVfyusrC2/I2FtB1GHDj9Olwf3HBNfCPOHqJH?= =?us-ascii?Q?R9sLSUAgbCLjC2KrBkN1XeYTrnCpOmX5KKVj1TA506KeaK8VUJtMPYd/XXV4?= =?us-ascii?Q?S0ImjEv+k4k9sURQ2vyi9Ols687FcqlXWYYDeUyAnGnn7gPaLH6qRzGFxQAq?= =?us-ascii?Q?NiS7EBw1XDOuq4O462WpdaXWxjdlIowmM6T6c9JjOXJd/Y6S0DIulFivuPv4?= =?us-ascii?Q?Val00c7Rxi8zG2WpySb2rKMtIUEFUcb9xa9uWDyNvawEpelyY68brLW4nYOk?= =?us-ascii?Q?QbTqDafsJDE0iXYUtbivMy3dYOGc1cGG+q5ucN+L30wr0XT72YGVMHQtVg0H?= =?us-ascii?Q?+PoRxyvsFA4ztnjG6psteavJUlhoz1zGiUzrWTp6phPtfy7S/0+AEtW7pqtK?= =?us-ascii?Q?kLkaMZHbMpE6P0YN+S92kEUw1HFNfcbAt2v9SRFYMKNVhSXRN6fm8CxHW03F?= =?us-ascii?Q?NYSmZNqQS8HjHxEmsJMPyW23YoWPM3muv2m6nbbq6NXt2fAREkk5JbjD9T4I?= =?us-ascii?Q?LY5yyri1e5NQN2HkqyaWUnpz9HpVvoP4G40tsOjqxMjtR3CDritVAis1ms6e?= =?us-ascii?Q?Hpz3uAyJW4l1kN1aJhAObqjxQ0FA3pEQ0cC/phzLbmh3Ch41AnYZbygL15E3?= =?us-ascii?Q?JZ6KNZryCylbGGJe3uRmpjd20gSkcdRzmLbcFx7PvH+4s/kzHuPdPPp5pGSX?= =?us-ascii?Q?j4gYmXK4GMHMGlVKSR3Ova5oqoXbrYx7Yk7D3tCdXv8HoIDze841SI4T2FVP?= =?us-ascii?Q?QTpGEKyHxjz8xKyLEYqiIlBeVKKtltIiMz5RvTkQDWS/ZJXjlETLQcm4T7pK?= =?us-ascii?Q?c6Y4iWW5Pwjv8oJmR4Il8WmADIk6W0rtyQQ/Zg0jnOtLGQHtU9DmuE8BqjRK?= =?us-ascii?Q?tsyr0+bkpB8hT5YG+20w06cZ?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f1567f12-b657-4489-766f-08d935954fd5 X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB4835.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2021 15:49:25.6808 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pU7zNYJtrlEmQr3+aMakCcNZbsDWXuSLXx9mysoYMvqP4ucg0k80RacIo3nI0u6gNTD/B1g8xePeez5S3CL9ds9RdvtovLCP2EyHyePjUOA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5204 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10023 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106220098 X-Proofpoint-ORIG-GUID: kc2o3hfLIzJEIvUVDG8cKDpfqZOBtAm5 X-Proofpoint-GUID: kc2o3hfLIzJEIvUVDG8cKDpfqZOBtAm5 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=joao.m.martins@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eduardo Habkost , "Michael S . Tsirkin" , Richard Henderson , Daniel Jordan , David Edmondson , Paolo Bonzini , Igor Mammedov , Joao Martins , Suravee Suthikulpanit Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.onmicrosoft.com) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" CMOS doesn't have the notion of reserved spaces, much like E820, so limit the amount of memory above 4G to not acount for the memory above 1Tb. Suggested-by: David Edmondson Signed-off-by: Joao Martins --- hw/i386/pc.c | 14 ++++++++++++-- include/hw/i386/x86.h | 4 ++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 94497f22b908..2e2ea82a4661 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -644,8 +644,12 @@ void pc_cmos_init(PCMachineState *pcms, val =3D 65535; rtc_set_memory(s, 0x34, val); rtc_set_memory(s, 0x35, val >> 8); - /* memory above 4GiB */ - val =3D x86ms->above_4g_mem_size / 65536; + /* memory above 4GiB but below 1Tib (where applicable) */ + if (!x86ms->above_1t_mem_size) { + val =3D x86ms->above_4g_mem_size / 65536; + } else { + val =3D (x86ms->above_4g_mem_size - x86ms->above_1t_mem_size) / 65= 536; + } rtc_set_memory(s, 0x5b, val); rtc_set_memory(s, 0x5c, val >> 8); rtc_set_memory(s, 0x5d, val >> 16); @@ -1019,6 +1023,12 @@ void pc_memory_init(PCMachineState *pcms, x86ms->above_4g_mem_size); exit(EXIT_FAILURE); } + + if (nb_iova_ranges !=3D DEFAULT_NR_USABLE_IOVAS) { + x86ms->above_1t_maxram_start =3D maxram_start; + if (maxram_start > AMD_MAX_PHYSADDR_BELOW_1TB) + x86ms->above_1t_mem_size =3D maxram_start - 1 * TiB; + } } =20 if (!pcmc->has_reserved_memory && diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h index 25a1f16f0121..cc22e30bd08c 100644 --- a/include/hw/i386/x86.h +++ b/include/hw/i386/x86.h @@ -57,6 +57,10 @@ struct X86MachineState { /* RAM information (sizes, addresses, configuration): */ ram_addr_t below_4g_mem_size, above_4g_mem_size; =20 + /* RAM information when there's a hole in 1Tb */ + ram_addr_t above_1t_mem_size; + uint64_t above_1t_maxram_start; + /* CPU and apic information: */ bool apic_xrupt_override; unsigned pci_irq_mask; --=20 2.17.1 From nobody Fri Sep 20 22:15:02 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1624378087; cv=pass; d=zohomail.com; s=zohoarc; b=jSmlUVaoHSDgpXezexiECHWT7pDg2b21xh/iv44Do1rnr6kyP25Zf4X+jW0w1znRUh2zeyuWKEnhc+Bxjndenbz11xVJJQA2ukGKOBgoVwEo33q382s9cxtT7SwqluR+FZQjeIY1WRj+xZ6YapY1EfXcHknQhqmEVPNQXeFDyoU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624378087; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=A8jXyJS7ytmH5/XBXpphkF1YkVcw0HS9AdYZk3o55o0=; b=mwa6R881LSPO40oiNuddLhfeLQ34Rrmrzq4cq2j1L0yNzPSybQ58np1BTiJQsS0LSbAK0RlE/FUogtDoPXjV0fkJMG7oZ51U5TNjkw3SI2QWMMLNWy0zdEcX5YbM/noinyk38i4Mnuwx2g9TTRGuZSne9JLvaBL132ehj+KlBW8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16243780870691009.9822698774808; Tue, 22 Jun 2021 09:08:07 -0700 (PDT) Received: from localhost ([::1]:46924 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lviwX-0004z4-Qw for importer@patchew.org; Tue, 22 Jun 2021 12:08:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57456) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lviee-0006ym-Q1 for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:36 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:30984) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvieb-0005vG-Qc for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:36 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15MFgBpg015101; Tue, 22 Jun 2021 15:49:30 GMT Received: from oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 39b98v9je2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:30 +0000 Received: from userp3020.oracle.com (userp3020.oracle.com [127.0.0.1]) by pps.podrdrct (8.16.0.36/8.16.0.36) with SMTP id 15MFkDQb028913; Tue, 22 Jun 2021 15:49:29 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam08lp2168.outbound.protection.outlook.com [104.47.73.168]) by userp3020.oracle.com with ESMTP id 399tbsy2hv-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:29 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) by BLAPR10MB5204.namprd10.prod.outlook.com (2603:10b6:208:328::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.22; Tue, 22 Jun 2021 15:49:27 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582]) by BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582%7]) with mapi id 15.20.4242.023; Tue, 22 Jun 2021 15:49:27 +0000 Received: from paddy.uk.oracle.com (94.61.1.144) by LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.4242.16 via Frontend Transport; Tue, 22 Jun 2021 15:49:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2020-01-29; bh=A8jXyJS7ytmH5/XBXpphkF1YkVcw0HS9AdYZk3o55o0=; b=Rr9dEOgQFuSChgh3SQdmCxXoDxK7mMqh9vgYx0OmLRVrelZyPzlX8Xrmy6anxw9VnjcZ k6tVJZNZKTyr0u1ZliNZhL/Z5P/EjmY8SEy4vQSFKy10Q6nS586Io973Hhi5/diegJxo 6mce/unsn2aoqr8oSPUDOqGjwzAhXw8gg/Tan7+vq90w8sc1NdL7uaYA78ClTJTZ/IAt nom+KGiuHY1uoKSRNgeFr5DTAWmI9VXCHODsqbdZvTOa8byLDhFJwq66FppUzAFwKtp5 xG4bM++n99sk/k9eFOnfLwQuZGOGd8AgquIal6YY9q/vtj2bNeVom+Cp6ZP9IXYc612d BQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Isc/CdZFm1Czg05CPKlLMt7ZPsfrjW3x25TUyxTzWTWGY4x3CiYMcRXcT4vRCjUAvzEH2Nox9u4daBBmqmRiQ/JrkaKLOG2ZjSb4i0jhixf1lRGQFDAakFDp/CEiFBYGEPAmljfjcBPhQMF9BKmEExR1nnGGzp9rnFlIp7iAB8vBxzInQFBdTDdn1o+NIIhb2seac9RMGvM+4RuU0Tf6NB5vygu4bWPpYhqk01dTqNsny8KTnaX0Sgx7wpZGIRfVcmjqA/DZn/5YHVl2yXdSXUqMquDiwY02FRWfcx+l32qwVoTjpICA3ThPx0YnFtf0A/4ULESjSwhRo/YlyVrjCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A8jXyJS7ytmH5/XBXpphkF1YkVcw0HS9AdYZk3o55o0=; b=kLh/q/Qgsvv4Y8MthMKWTAnTFjC/E2fvhaAcHt52MmEgKgcCAKL1q1oeJvkN/esqFAd2cvEqEb+Fd1KwIE00RLvWvrooHgsygKLqOVMydkwKFbdhO6ITDfTzb6Bp/4+YUz/JfwTHRd9+r6uyvqJ0sMEdGtvcmC90dIn1ksogRtTpYQKwlE1lo8/25bMsx3++k7v8QWl1oDhAQTftBq8RjN6YMaO9q79Exw49NIGGT4YlmKDru/G6WjgVC9fD28G7oGgMiQklpOpW2MsXwFBD+qyKm4V2D3QXhFENHntOxF+nvF9fFqLqVzIPyUydOdJK+MaHUaX0slfE2TNXie1drQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A8jXyJS7ytmH5/XBXpphkF1YkVcw0HS9AdYZk3o55o0=; b=IsTovNZnwokPjjZ/2ipZfODjq/2N/Usom0mGt3ag1HzXK9LeUcXxEtpknrgEa0Zy7tCWcRMcsaWr2OczcPCb6Mxnfe1fNzYntJxQaFxIXgt0j6Xitl1sSG3W29zA2qsW14nvjus58vQnflhXF7lKLKiNyTTEcX7XB9t0w359gt8= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=oracle.com; From: Joao Martins To: qemu-devel@nongnu.org Subject: [PATCH RFC 4/6] i386/pc: Keep PCI 64-bit hole within usable IOVA space Date: Tue, 22 Jun 2021 16:49:03 +0100 Message-Id: <20210622154905.30858-5-joao.m.martins@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20210622154905.30858-1-joao.m.martins@oracle.com> References: <20210622154905.30858-1-joao.m.martins@oracle.com> X-Originating-IP: [94.61.1.144] X-ClientProxiedBy: LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) To BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 72c2d4d7-e74e-4148-1048-08d935955106 X-MS-TrafficTypeDiagnostic: BLAPR10MB5204: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:449; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iQFNYyjKZsTV7DkQudtSZSwCkNwmhTA56UQlpLKLOWXOJYEdrZ4u/ZasBrFy+HE+GaFD0voC04vGHNJvYfQh8VIhSNlVKthpH21XlAY2z7CPRdh9TX3qq3UhCuvunud7bVzSaENoeRpRGDCt63PnOqWYStJo2yNGMzzmlCTEWb0Dvn4hNFwx97hwd0rAJnLlgJpT/Zg1695P3lcvd1upRkHLm8qiuBjCmZIwjpd30HPx9EfApbBCnBcETYjv/rSI+d1aCLPQQFwD7k1F+1FGOJMRpThMaj7h7dJZ7zeY763wMbg4RIObqyl+g1Fbq6ArxvNMe0ZD7vyPlFSeG1CTYQIpblLHBBWDqdiAQGdoNY6Q6B+66HjAlWcH3kwWmRpi3+BrmWh8sue3fWzhlMlrLGQDpZOYXwx8+hwG7xQ9HPvrB6a4I6E6uN6klezC/kDJimxcITkp/kolBvBptV4CgHp+qp9RuzXkfh11bpsEex5ulMkmoAin2yDT6qLsAxhVj6W1tSbwK4p6CQEoPOTm8T7DNBcUtZvEYKZi7a74HA93Q1pxImGwd01dBZJEkDa73ENSJ4/8TwkDVSeUtkYwB4RR881nSM/dtRTsvSinWTEMjxi/XIgNDIE2bd0eWCnlsM6XzP1luJdV78ZXuuhjxtPRufkP9sozAZ7EOXZkXME= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BLAPR10MB4835.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(136003)(346002)(396003)(39860400002)(376002)(366004)(5660300002)(4326008)(8676002)(956004)(7696005)(1076003)(8936002)(52116002)(2616005)(83380400001)(6486002)(316002)(66556008)(2906002)(38350700002)(38100700002)(6666004)(66946007)(107886003)(86362001)(66476007)(36756003)(478600001)(54906003)(26005)(6916009)(103116003)(16526019)(186003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?F96hziQtou+nDJyipOpMpQE7pMi6RZS4EJXC8F0llqWYYDZmhDv61Is4koQF?= =?us-ascii?Q?hcK89AVMiKoDxHD9IzeEMaTwM54DJsGdXX6y9kXYtT7jJYQ9fPoDza/+dCkl?= =?us-ascii?Q?mOqleb5mAStgFU0WgNjJlonw8X4gZ2cIRlNbO9VJwPdbLX6ZtIJ1hKFRmyNG?= =?us-ascii?Q?ZSDtjEnMq+ksVzc7LYMdKuNDaPYHvawsfL5DbvcDkh1zw6hgGzKeN/0z/B3c?= =?us-ascii?Q?Kt+CC6x+DMWVLkQhffm9v37p8scC2UGiaTuqHZUJHd9q1b40iMBC49uhHtQi?= =?us-ascii?Q?3iQ2HmX3U0W9fyCCBmZzS++qPtNfNXC/DjNKYJc+nJWvFV4RfT/wJo0fuTXg?= =?us-ascii?Q?mVXNLD6b8g9uMNvjjJMKOipF5eCENpWqfFP9a4JZeg6C0qNRmGz3M05jIA5Q?= =?us-ascii?Q?Wn04aMcvmiy7Gb2HFiqRYMJ1phZVjNELxBlEfaPNW5ciUrXNgm+aTRnpIUCY?= =?us-ascii?Q?YpXuJxKCMLCw7s4pkmkRB2fpUsDWT9aa1Cfac8i8CrOb6TW3726LlYBpjzaB?= =?us-ascii?Q?5ms7U9JLRPz7TW6FaWNdJN3nfhsI75KhS7sk+gUVsSSaSjK1ai8kKS64PPja?= =?us-ascii?Q?lBMBoKi3DFaDlxSISihCc5P+H2eqe7G23o6v+dK07fgpttCj++CmhORLhXpA?= =?us-ascii?Q?cF3Y18o74yJBEYUVzW7EfDzDeAT4bQ3/rxqTepvKBOvK8EShXs6Jhr1DQhGc?= =?us-ascii?Q?PYCRGOZ1sp9NdV1N+AYhBx4Z9aRPFzoRK19o3NEOUKZfN7z4lJaoPycxQIoh?= =?us-ascii?Q?3f7nyXJQq3vLokFGUQg49NWFoxoUGsZSRsSUjEvq+6F4l96UWP7KRoNaL383?= =?us-ascii?Q?JawpR4l6ZJRpRRfEBy9UNpC+wd9HR7g+LJjqknCzJVeFP6/yxvg5McpfidPI?= =?us-ascii?Q?m24JlMJN0bn2JKzR4/Jw/8t6QC7/CFJVDiYLUWiT6OQZEYgtEkifXSxpTx/f?= =?us-ascii?Q?3y2YoOLDf56+3LF36sS+YQxJKmu2NuYtWGCMO4TXQ45xmh37T7iMUymu7xO2?= =?us-ascii?Q?4fY0hNNYmTTexLqjw4Go3SNO62PkNfdmqvQBsrhBZ1f977erJtftQyUX6Wca?= =?us-ascii?Q?HTog+UGJYw93Vhw6ttQSpHJ0E8DxBAwunspLtAcCcarnYYKsTp5Od8uV6mwD?= =?us-ascii?Q?y+qDnfdegmhYlXrbvkDNYHkItUOMG9CvSWp6ZfUiXYgqLxM1qcsMd1xp/N/B?= =?us-ascii?Q?PnVNMc2lVCD2S1Bx71rDFFaCkHvO/G2dGiD461ZIUTw5jJFRUbjke5m4RUqV?= =?us-ascii?Q?UtWdi9JeC07/2sYAu4Qsamt67Rc5srRoq9cB+LnZO9Q/WyzKzFgGrg8qPmfe?= =?us-ascii?Q?nSzRm9XbEYNr9OZC4aI1xrbw?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 72c2d4d7-e74e-4148-1048-08d935955106 X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB4835.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2021 15:49:27.7318 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ADFCp7t8PjfYoP84cCEVxwLGeBJXtNSblARsmFXLwFiNleK+Od+uP4nXais9F922zMitIcJwaYetY05WT3gzIfC3yR+zQtkxnQ0NkgYnvKQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5204 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10023 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106220098 X-Proofpoint-ORIG-GUID: TuhGDVNhTtAiREJENS1y5Gpga1Z-Q8Qu X-Proofpoint-GUID: TuhGDVNhTtAiREJENS1y5Gpga1Z-Q8Qu Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=joao.m.martins@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eduardo Habkost , "Michael S . Tsirkin" , Richard Henderson , Daniel Jordan , David Edmondson , Paolo Bonzini , Igor Mammedov , Joao Martins , Suravee Suthikulpanit Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.onmicrosoft.com) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" pci_memory initialized by q35 and i440fx is set to a range of 0 .. UINT64_MAX, and as a consequence when ACPI and pci-host pick the hole64_start it does not account for allowed IOVA ranges. Rather than blindly returning, round up the hole64_start value to the allowable IOVA range, such that it accounts for the 1Tb hole *on AMD*. On Intel it returns the input value for hole64 start. Suggested-by: David Edmondson Signed-off-by: Joao Martins --- hw/i386/pc.c | 17 +++++++++++++++-- hw/pci-host/i440fx.c | 4 +++- hw/pci-host/q35.c | 4 +++- include/hw/i386/pc.h | 3 ++- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 2e2ea82a4661..65885cc16037 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1141,7 +1141,7 @@ void pc_memory_init(PCMachineState *pcms, * The 64bit pci hole starts after "above 4G RAM" and * potentially the space reserved for memory hotplug. */ -uint64_t pc_pci_hole64_start(void) +uint64_t pc_pci_hole64_start(uint64_t size) { PCMachineState *pcms =3D PC_MACHINE(qdev_get_machine()); PCMachineClass *pcmc =3D PC_MACHINE_GET_CLASS(pcms); @@ -1155,12 +1155,25 @@ uint64_t pc_pci_hole64_start(void) hole64_start +=3D memory_region_size(&ms->device_memory->mr); } } else { - hole64_start =3D 0x100000000ULL + x86ms->above_4g_mem_size; + if (!x86ms->above_1t_mem_size) { + hole64_start =3D 0x100000000ULL + x86ms->above_4g_mem_size; + } else { + hole64_start =3D x86ms->above_1t_maxram_start; + } } + hole64_start =3D allowed_round_up(hole64_start, size); =20 return ROUND_UP(hole64_start, 1 * GiB); } =20 +uint64_t pc_pci_hole64_start_aligned(uint64_t start, uint64_t size) +{ + if (nb_iova_ranges =3D=3D DEFAULT_NR_USABLE_IOVAS) { + return start; + } + return allowed_round_up(start, size); +} + DeviceState *pc_vga_init(ISABus *isa_bus, PCIBus *pci_bus) { DeviceState *dev =3D NULL; diff --git a/hw/pci-host/i440fx.c b/hw/pci-host/i440fx.c index 28c9bae89944..e8eaebfe1034 100644 --- a/hw/pci-host/i440fx.c +++ b/hw/pci-host/i440fx.c @@ -163,8 +163,10 @@ static uint64_t i440fx_pcihost_get_pci_hole64_start_va= lue(Object *obj) pci_bus_get_w64_range(h->bus, &w64); value =3D range_is_empty(&w64) ? 0 : range_lob(&w64); if (!value && s->pci_hole64_fix) { - value =3D pc_pci_hole64_start(); + value =3D pc_pci_hole64_start(s->pci_hole64_size); } + /* This returns @value when not on AMD */ + value =3D pc_pci_hole64_start_aligned(value, s->pci_hole64_size); return value; } =20 diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c index 2eb729dff585..d556eb965ddb 100644 --- a/hw/pci-host/q35.c +++ b/hw/pci-host/q35.c @@ -126,8 +126,10 @@ static uint64_t q35_host_get_pci_hole64_start_value(Ob= ject *obj) pci_bus_get_w64_range(h->bus, &w64); value =3D range_is_empty(&w64) ? 0 : range_lob(&w64); if (!value && s->pci_hole64_fix) { - value =3D pc_pci_hole64_start(); + value =3D pc_pci_hole64_start(s->mch.pci_hole64_size); } + /* This returns @value when not on AMD */ + value =3D pc_pci_hole64_start_aligned(value, s->mch.pci_hole64_size); return value; } =20 diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 73b8e2900c72..b924aef3a218 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -217,7 +217,8 @@ void pc_memory_init(PCMachineState *pcms, MemoryRegion *system_memory, MemoryRegion *rom_memory, MemoryRegion **ram_memory); -uint64_t pc_pci_hole64_start(void); +uint64_t pc_pci_hole64_start(uint64_t size); +uint64_t pc_pci_hole64_start_aligned(uint64_t value, uint64_t size); DeviceState *pc_vga_init(ISABus *isa_bus, PCIBus *pci_bus); void pc_basic_device_init(struct PCMachineState *pcms, ISABus *isa_bus, qemu_irq *gsi, --=20 2.17.1 From nobody Fri Sep 20 22:15:02 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1624378194; cv=pass; d=zohomail.com; s=zohoarc; b=P8afGUUcog9Q27+Gq2qMtx1rjD/eV9KCi6giNMiss/l8zTq96rUzxxMrq26ZjnOHMz3TDM2kzeafcqM5k6h17fPnmjM2Qk+Z+A172Dg7p1qhmBLgDiGkQeqnR4UgP/eHGOJvdVlMzQRDhDNHfbBz44h98/btZGVbrCwWaKS41A4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624378194; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=r6kbZRxLO19IIaWjEAk+ksQuNNvSN5d+kF5PBRU5Tvs=; b=izhMoE4lgumA5N4vBE5iaW2ezSLcxlWv/yfE98LvUFHFfGeEMCw0Pd0vAh4Wr/ci6AgMxZPDzFGH5kPg6iG1iv8IZoUOrF953Y3C7eFAhQ1vCOdMWXz4gkqWVGUZ0m71gQhnZZbKkCZLEkGqE+WqpxuDYX0rSlqL6fZY+kLx+zY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624378194230546.3828368996109; Tue, 22 Jun 2021 09:09:54 -0700 (PDT) Received: from localhost ([::1]:53868 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lviyH-0001AV-7Z for importer@patchew.org; Tue, 22 Jun 2021 12:09:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57470) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvieh-00077d-1x for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:39 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:12070) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lviee-0005wp-TZ for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:38 -0400 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15MFem77028105; Tue, 22 Jun 2021 15:49:33 GMT Received: from oracle.com (aserp3030.oracle.com [141.146.126.71]) by mx0b-00069f02.pphosted.com with ESMTP id 39anpuuub3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:32 +0000 Received: from aserp3030.oracle.com (aserp3030.oracle.com [127.0.0.1]) by pps.podrdrct (8.16.0.36/8.16.0.36) with SMTP id 15MFnVRZ187027; Tue, 22 Jun 2021 15:49:31 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2043.outbound.protection.outlook.com [104.47.73.43]) by aserp3030.oracle.com with ESMTP id 3996mdpsft-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:31 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) by BLAPR10MB5204.namprd10.prod.outlook.com (2603:10b6:208:328::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.22; Tue, 22 Jun 2021 15:49:29 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582]) by BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582%7]) with mapi id 15.20.4242.023; Tue, 22 Jun 2021 15:49:29 +0000 Received: from paddy.uk.oracle.com (94.61.1.144) by LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.4242.16 via Frontend Transport; Tue, 22 Jun 2021 15:49:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2020-01-29; bh=r6kbZRxLO19IIaWjEAk+ksQuNNvSN5d+kF5PBRU5Tvs=; b=hoJVB4aYSv0QpT729ZZ4c1NrVkJJunjoArTj/wVzr03+dlR9z+7/EL1NiNK0+wnLfP4i PkZqJw9wpny2uNdV0HECxcj4EbStbyAwyYHv+naXTHvWyR+cLXTF76gUWSHW+MJlw0fl Usr4UwHM0wDc3j0FjCAn7oBfyH/rGf6o26+ySzXZlZF5MULV9QjuvVX+5NKsrVr9LTXX mJQumqPmTOaXrBSICDWMwNHiCheH4vFdxRXwdCQAHigUrk2VzfCXosdo5GeI+RqGce9+ uN47H0n4rcVKznHhGcLTn/Jf1C5Qc5JrfNgK8f3tLWQ8Nv90CUItc0JSxRuBtgV1OTsn CA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HjlBEIa2tOm9DfruhKFNB5tO1kvNjwe63KdMnEACJf68MjSTSwXZEtetGHL45JuvkvRDPilDcMbYCa+ta8ps2XihADY65ghV8Ev3EIqH5ykZuZez/ASiifXNFVDQzdVhT9mGVaTIGLCauhdeXm70KRwyQon+sJ9GFx2Y7pj1SBor24+eAvoGgHa/i7qVc+EeZBYg0ndX/LisNSBueNDh1n8E3rcqxP2gvUikpjD1GLuo4ZrLzxgIaxJR3Zy2ir/njH3iEFkvELFfb/RlLuEQuGz+WycQFhtIITkB0S68dKtu4aoh8BsjQzDRLA4EjrJbOpcyOqwKGuW6j6XbCEvBBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=r6kbZRxLO19IIaWjEAk+ksQuNNvSN5d+kF5PBRU5Tvs=; b=Jqcdnt9RgmfQ+jwgYxJNflDRM+RAHz6M5cI1P2W1XWYDCVye992KPqlvEq84W6JqdIUfiR6fkM0e/pAwAPmpOekllnAd152vcv+i6MMgT3TCrKFEDexzStrJpxBWtZcVFqKdBSGbyOYYjUPnqGGAzVITEiQs7eKy9iUkFCbzH4w5Gnq8QXfQyhlCm4fKqC8rjqKWqaCdlQ7qZphJR0aVrnqQZKLCudnajqp9BoVzE3yg1guwI7l95JYs9MiKqRROS/W04jdrI5MLj52YfVAP35FQFRaXpX0NbK/FZmAOXqX3XpVeeeyutJVkeupZn+nmOOlFuGV0ORHgLkATlkgWHA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=r6kbZRxLO19IIaWjEAk+ksQuNNvSN5d+kF5PBRU5Tvs=; b=Hbt6768W5+diA58NcEzW+DPki309+pTL1Q64Drdf9j/K9aNhEyb/f7ShmTt1sZqRd70aHqQp2N/t4rDMFabkeHWoB08S0XEUkTprwMGd/uxRlSDZFVgai3ZRzC+kOdqfWyu0QfMVMGZvLzR4SxJkDsIDq1TkN+KIlT96TtJBVX0= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=oracle.com; From: Joao Martins To: qemu-devel@nongnu.org Subject: [PATCH RFC 5/6] i386/acpi: Fix SRAT ranges in accordance to usable IOVA Date: Tue, 22 Jun 2021 16:49:04 +0100 Message-Id: <20210622154905.30858-6-joao.m.martins@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20210622154905.30858-1-joao.m.martins@oracle.com> References: <20210622154905.30858-1-joao.m.martins@oracle.com> X-Originating-IP: [94.61.1.144] X-ClientProxiedBy: LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) To BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 01d75430-b11a-4035-0240-08d935955246 X-MS-TrafficTypeDiagnostic: BLAPR10MB5204: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 50Npe0rof9Bzc96dkE+CNcP3yINuBdZ/1yeK79ytcLY82gfVoP6BZRi3qaWDL3CoNkepnWER5w/Qe/IgrQjbGrB12m5wtdG8zH2zXBVE9CKBmfrSjZugnONX62ZpL3ZPVfmy9VIbrvtwtpQ8dSNt7oAA12XDbl8Xo6SeGKHc0rGv3JLTgBSYLmOMy3sHQ2cczjMAKiB4kz/stfF9g/TOUcDrquTTcV3rFs9wxslPOCUlS2YDrzeg3UrnVBzDZ5tRuULi2+jUhq8+WWQxkAUlLmajEy30VYVzOK6ExObIUbKnez/c8AI+7eaZHwYoTt98ivxQGIgqf4Di3wGjNwDYKlrly3huaXQxCk/GSFbm2wBMrB2t1ugjAFvGMA8nWE6oH3T4t0W28ZQdMSoUWl67QVCF21aHe3q6+gqu0heWbZHrmB7HmaABz8YXpIss7z6tAjxSeJcBC3nioGrLMJ+r2GGM+GHAZx7B3Jiof4aWTe2GSHJCy+AnG2bgGwyJiwPRMb4w2MA5mSMVo0n/aROkH9scgXa9KYycM/t00vJHIMRrxBHp1VPgAZ998/8cZh6eYo7gc3n/ezE+Mwl41OxbhXnaVd6ZaZze1njCZ/vJarTpzCVfW8QJ7NkCzuTOSJdrSepsYoCAQQXdltdRDwvhZJ3CjbN66I+rIUmsWJCcK9Y= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BLAPR10MB4835.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(136003)(346002)(396003)(39860400002)(376002)(366004)(5660300002)(4326008)(8676002)(956004)(7696005)(1076003)(8936002)(52116002)(2616005)(83380400001)(6486002)(316002)(66556008)(2906002)(38350700002)(38100700002)(6666004)(66946007)(107886003)(86362001)(66476007)(36756003)(478600001)(54906003)(26005)(6916009)(103116003)(16526019)(186003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?T9cI3rzFh6nBCSoQyHoxcpsss1boHTqk+PykXPMp4jYlwPdQXqzxZAYwnZpO?= =?us-ascii?Q?638oaWv0AEZ05YzNDmxHkAtH+7oD3134yAChovRmVpYdFAHbhxQCwk2VB6ns?= =?us-ascii?Q?2/ox52zfV4IUigHlQVuGVS8+LMnIiYwOUXwdPS27KwyJrApp6bBMuv92VC5L?= =?us-ascii?Q?mwL2BfsBkV12H+xHAAHqIX+lU+IGwLAmppt+2yaHd6tn4rEpyYYXPq+ZQIba?= =?us-ascii?Q?inifX/vNYpXmmU3sbee0INAeEUtMRpUCBSbYzybw135XNyNqcgd7TF6ofjq6?= =?us-ascii?Q?nZfe42g+QpiCujbWZVfx5jdqCcbc8NjVsd70QXtd/txFoNx99AbKmuHIBNw5?= =?us-ascii?Q?YhNM+NDf4lJ5cJnCaSj/eD7LNHvgH5wPc+fVNV61icKwdemvyBEVTMVvP1eL?= =?us-ascii?Q?DqE5NQVnpzsRim3TEPdXWy8WjkNv7Cps6u2oG1eEE/aA0SMKmUX6cw22awm3?= =?us-ascii?Q?aZ9P6sUukExAX15l/W/OHqKAj2o8nAlmvMdeCnspmrzr6OL0SRehcpXk86AM?= =?us-ascii?Q?C2aY4pkrClpOo7PR9yzplOrZLWau3Ej6578WOxOMPQCSONodJVrbj7gFjWXx?= =?us-ascii?Q?LQbIE/aYqHK2OWWKFzenTXGZdcfZAnLjuIFnFl5v3YkD0AeSTBdbj9d/rFU7?= =?us-ascii?Q?4EXaJWYoMGZ7l514lCvOZ1Pp4evjzOjCmaL+6fngLj4e4zZrdkTHXap6viUO?= =?us-ascii?Q?xW+vf7tWMxBz0siFmuDYuHQmFfwBWdemYuWdtFexftl/MMZ7z7Oq3TLiA+D5?= =?us-ascii?Q?XdHLWGuM4SXJebpqYxcd0/u/rjxNdD7FbL4lZQ6JkBgLHCAEGB1oL98p6fYA?= =?us-ascii?Q?W1wWthaQjNpR3AqVK4/b6QABDNZ22T00LO+qa8tO4mFVzIXfHUE+HXL3I7ra?= =?us-ascii?Q?iZCTdpseAXCj7o2bub0fNztGPO7UBF7fvFz+8kZfPSTUkZPgXgnxXpwTJKng?= =?us-ascii?Q?Z/UFZ0s79ePauAax6vFqnpsiqLPwT939ycfT10Qb7DamL6JRKLkCDeNYKF/o?= =?us-ascii?Q?MLLg7qooCAwnrqDqRlT8B22i1irbYwlI//pWMOkIVJian1PXhdFyBFY9dDz5?= =?us-ascii?Q?v4zkpna0LTftUniKT37Smz4XZb3P5slMcD/LZ9Fc030GlP71XQZis0WDzE/i?= =?us-ascii?Q?bR0hrcbN8+S7ljT4QsZXt3A1WcYwEzqj18pm84zaowMbY5MoQwTLDmq8p//P?= =?us-ascii?Q?YptNyR9r3Tt7pb/CwJ2xc/0IS76IV5vqIxnlV7ouNRlUaucG1GkzJsQnV6ON?= =?us-ascii?Q?3ftDX/AsQ4vNA70BRzFGYKfepReVV4/A3EgcIvuFgFb83izdtODNwX83qhIk?= =?us-ascii?Q?70M5nFLYNccpldjUqr8fKTw7?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 01d75430-b11a-4035-0240-08d935955246 X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB4835.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2021 15:49:29.7987 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4fNG3MAV+SY0lnrnJ7Xm3c1JzOVG8HvYJI3vv1rKzz8ogJ9o77nh8N4NzQZB0trq5zDah1dgKDrf4cCAv9Ci2Afg1tJrgIfPGv8EyjB3UvQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5204 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10023 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 phishscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106220098 X-Proofpoint-GUID: QxHN230zCJwR6hIGDwhirono0tYKTLtK X-Proofpoint-ORIG-GUID: QxHN230zCJwR6hIGDwhirono0tYKTLtK Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.165.32; envelope-from=joao.m.martins@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eduardo Habkost , "Michael S . Tsirkin" , Richard Henderson , Daniel Jordan , David Edmondson , Paolo Bonzini , Igor Mammedov , Joao Martins , Suravee Suthikulpanit Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.onmicrosoft.com) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" On configurations that lead to the creation of an SRAT with PXM entries (-numa ...) because E820 and SRAT do not match, Linux tends to ignore the ranges from SRAT, thus breaking NUMA topology in the guest. When we start adding the ranges after 4G hole, use the newly added iterator in add_srat_region() to create the SRAT PXM entries for the usable GPA regions. Signed-off-by: Joao Martins --- hw/i386/acpi-build.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 796ffc6f5c40..bb0918025296 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -57,6 +57,7 @@ #include "hw/acpi/pcihp.h" #include "hw/i386/fw_cfg.h" #include "hw/i386/ich9.h" +#include "hw/i386/pc.h" #include "hw/pci/pci_bus.h" #include "hw/pci-host/q35.h" #include "hw/i386/x86-iommu.h" @@ -1872,6 +1873,23 @@ build_tpm_tcpa(GArray *table_data, BIOSLinker *linke= r, GArray *tcpalog, #define HOLE_640K_START (640 * KiB) #define HOLE_640K_END (1 * MiB) =20 +static hwaddr add_srat_memory(hwaddr base, hwaddr size, GArray *table_data, + int pxm) +{ + AcpiSratMemoryAffinity *numamem; + hwaddr start, region_size; + struct GPARange *range; + uint32_t index; + + for_each_usable_range(index, base, size, range, start, region_size) { + numamem =3D acpi_data_push(table_data, sizeof *numamem); + build_srat_memory(numamem, start, region_size, pxm, + MEM_AFFINITY_ENABLED); + } + + return start + region_size; +} + static void build_srat(GArray *table_data, BIOSLinker *linker, MachineState *machine) { @@ -1967,9 +1985,7 @@ build_srat(GArray *table_data, BIOSLinker *linker, Ma= chineState *machine) } =20 if (mem_len > 0) { - numamem =3D acpi_data_push(table_data, sizeof *numamem); - build_srat_memory(numamem, mem_base, mem_len, i - 1, - MEM_AFFINITY_ENABLED); + next_base =3D add_srat_memory(mem_base, mem_len, table_data, i= - 1); } } =20 --=20 2.17.1 From nobody Fri Sep 20 22:15:02 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1624377823; cv=pass; d=zohomail.com; s=zohoarc; b=OTLhkcI+E73gB+JXc+b5Io+V5Oz7npOvGYBWamAajgc0oRf9OVSKg2wVnldy4ZCcAMXv0OqMi0RPninVPPYebZM1Z7fBSTskGRf3AqEC/94qCW042j7wRjx3Erxs2KAHGRpqONumM2vstMrVjhoyGvagsdwALSVN9OqBF4X9Ixk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624377823; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=f/xt0ljVq8pvtd2l/69nZDzpauCZs89CE3N4cKACWsk=; b=NQWOU03f5qyDEAOWtcw7ay61ogLq9s5O4Mh+x66Cc+TMhT00mOczxWlEwAd8TcDfLk6R4uzTG8k3FuAJ3c39aIx5B+x4202Da2fXXHRHUTJMLueCEBp1atTuN4eeNtlCXOFb4rdBNrmKYQgFNQt7hMc+simksEqhNxFBZYP8Dh0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=oracle.com); dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162437782301696.46225892454311; Tue, 22 Jun 2021 09:03:43 -0700 (PDT) Received: from localhost ([::1]:59046 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvisH-0002Z1-QS for importer@patchew.org; Tue, 22 Jun 2021 12:03:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57486) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lviej-0007GA-99 for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:41 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:14932) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvieg-0005yK-TP for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:49:41 -0400 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15MFenH3028112; Tue, 22 Jun 2021 15:49:35 GMT Received: from oracle.com (aserp3030.oracle.com [141.146.126.71]) by mx0b-00069f02.pphosted.com with ESMTP id 39anpuuub4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:34 +0000 Received: from aserp3030.oracle.com (aserp3030.oracle.com [127.0.0.1]) by pps.podrdrct (8.16.0.36/8.16.0.36) with SMTP id 15MFlM4L180321; Tue, 22 Jun 2021 15:49:33 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2041.outbound.protection.outlook.com [104.47.73.41]) by aserp3030.oracle.com with ESMTP id 3996mdpsht-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 22 Jun 2021 15:49:33 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) by BLAPR10MB5204.namprd10.prod.outlook.com (2603:10b6:208:328::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.22; Tue, 22 Jun 2021 15:49:32 +0000 Received: from BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582]) by BLAPR10MB4835.namprd10.prod.outlook.com ([fe80::d875:3dd7:c053:6582%7]) with mapi id 15.20.4242.023; Tue, 22 Jun 2021 15:49:31 +0000 Received: from paddy.uk.oracle.com (94.61.1.144) by LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.4242.16 via Frontend Transport; Tue, 22 Jun 2021 15:49:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2020-01-29; bh=f/xt0ljVq8pvtd2l/69nZDzpauCZs89CE3N4cKACWsk=; b=ogrrR8Lwg1cca9rTMExwbEraaj5+XwPLsd8DrxV57ob5Dk17BbG7+/3pYH+m89ZAKnkj eB8O0UV/55DXNuLKXTxWUmUdtd2HAl22wtevOQ+LEAKh9Qnqk4sHdHjCtBwUtl7DiA1d HlPhhSKmyGV/OyV3C/qXoK76u2nE2r0pKJG0RWq/9xidTLnzP244fzjXj2fShVb2fjbO Z49fUe3G5CQV0BgIRAdmAwZlnO+6xAwgHFaIZX5A6L7F6ESOWJFCQtE5CgaBPJEvrGwt OdMoOWjoY/FoPW90cTRfwZSu2ti8pXfhrQp1h0DIJIEIgNPI0NV3iYBba2MBo7MSq8di mw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Eu252mIrRz1KmbifgDzUFDeJ0GZlI5WRX1HWk2si1qul4YmdqVw6R/KKWLVJnaBkO5/HK1k0tk4YIxX6qMU28yGJGENPk0h1z0ERNsET795Vb/sy4fAQ6PP17Y8Z1pEPRqddHbdsYfSUo0bZykZTlbmpPk/Xu5TVpTVdJhzlQR5piYfEvXiOz0+9FiEvq8+/noZ4hhfi3XWgPZh+4sq6UM9dTENXi91V3mzw7D1nvYnDALQwTvRcMf4DXQgRu+BaE4T39zPYvEkx/7fE9pLBE+4JHZfgdt4gx6ZMQc/5AQAhXj12JdjrFD16Zh8dFrjWPZeVHtlREfffcq+EhPsrew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f/xt0ljVq8pvtd2l/69nZDzpauCZs89CE3N4cKACWsk=; b=R9E/lvytY6yskdCnnW946D2sMX2vw+IzJI0G4KynS11BHfoJxgg7XA2m62CLh6zOnwtwN5Qh3SsapHEd1qtTnmmHnrKCQp0dzTWeNH0h7TvdHr1We8e5WRkhLyJMK2oXA28CHabObAHA7yijvXoZv6URZE3Tmqfpr4d10T5pueu8GaQeprPTzlNSOhnoR4JA3RQ2nloW4lKGGgdFwWRWWUIuWuzYZx45y/l4mVpC2F56lTgU4cViIAsjiqw9OQgC/3Bh9V+ZbcJQ7MGNjV3so0YTeU0LItn1/ZON1hZPOQJFvvFRMgkyTt8FN0Sgw43c7UwcP3dn6CiNI8qOPCohDw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f/xt0ljVq8pvtd2l/69nZDzpauCZs89CE3N4cKACWsk=; b=kY8M7kLh+zTmWczSVdm37WqXQ7OLAvTzRnVxGFz4hEYQgkijaXPd0zjGP4+6Ck3WRsVI/QuaIRrm/AK0Zp4CmKEv0fg7yXOrN37VXajEImQCu5mkQ5n5H1nwHaS2T7HkxKQNlbZMpyN+ezacC388HHN3dj0MS09j4PtliAJ+4iU= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=oracle.com; From: Joao Martins To: qemu-devel@nongnu.org Subject: [PATCH RFC 6/6] i386/pc: Add a machine property for AMD-only enforcing of valid IOVAs Date: Tue, 22 Jun 2021 16:49:05 +0100 Message-Id: <20210622154905.30858-7-joao.m.martins@oracle.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20210622154905.30858-1-joao.m.martins@oracle.com> References: <20210622154905.30858-1-joao.m.martins@oracle.com> X-Originating-IP: [94.61.1.144] X-ClientProxiedBy: LNXP265CA0007.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5e::19) To BLAPR10MB4835.namprd10.prod.outlook.com (2603:10b6:208:331::11) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e77d6a2e-dd7a-4caa-dd8a-08d935955386 X-MS-TrafficTypeDiagnostic: BLAPR10MB5204: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:102; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QdipfF5TCNm90hqRBWQ3IZFmk6stbd+YNf7QCjaUbr11MBVsoIuowuLYIvH6TTwkUZue3Ke/lmTDFjAtSW+j+VWbjpt3wVgO6LClX6FUXrye9dYahY0Y2rGoZfABDH+L4H6LfM96ioWGNgWk/OtLqZvpzFrvqgvlSukdrywmSn5NIgjvtN5xb/PipvUpSyOcVSOE+X8Bh+cRShBHmtz3UiK4R8KGvfmNB9KrfJGXybZIY033byrApEXCdhqMBlNPf6C5UskB3pxQee1GDXlfD4O6ganW9NDtA7S9wbwvFZ1z0B6PVL8+NYokuPbhHC12HTrBy3fTdyatDcrEHEm0zMWkdRJvhE0E7wei5V1sKKvJUG5/kHPGLlp4YWHgoMzbW9oe2SEMuGGh0+cHhXhVZtAFhko9F+fZvS1zYkdh1zqxThJvPxob5fPwwu2D7ezTi8a6kP2cau8bwTx1prPy5DU5Xhg2WjEqhh0hM/KduBo9/9EXGQXu05aZxdYo7NDGpZhfz8kD0fXdwrIRyXL5ah+2bdSEcWFsNykCUfvAFHT8Kk3AFyxhV4vF4wiDZb+PzTovVtpE8xKCKwpMTYSZUzEPKCs9nIJEbnsu3uFbVohH930L07B5IJXXS9A6KLJiD0vZuBFnqqpZFbySaHIQAQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BLAPR10MB4835.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(136003)(346002)(396003)(39860400002)(376002)(366004)(5660300002)(4326008)(8676002)(956004)(7696005)(1076003)(8936002)(52116002)(2616005)(83380400001)(6486002)(316002)(66556008)(2906002)(38350700002)(38100700002)(6666004)(66946007)(107886003)(86362001)(66476007)(36756003)(478600001)(54906003)(26005)(6916009)(103116003)(16526019)(186003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CEhyjGUAy7cpwoV9apMvq7Dq4UssBtuI3QJ/aRGKaMs+cJ5WnbRwZeuZztqh?= =?us-ascii?Q?0UhyzJ3+2EEo1aGhUbg2bx0LgbU1vXKNU3yPG7IPB7zcfaYjB0O2VzUbgvxV?= =?us-ascii?Q?mMqadFuAhaXVhmegcYWa6v2hyPb9BCOWHHjS+0MBsHTj9LjhrgYN90ZASxBu?= =?us-ascii?Q?vOZ2YpHhpOI6JvtOcYHWgSrzKWbfyPGDtrirlnTuaxuQwqveRwgns229ypkb?= =?us-ascii?Q?Uins+TNmZlUarWRpDnJTyf2MCOum/xAK/w5oRfwzNLyyE7CbAXiEupuykN0I?= =?us-ascii?Q?NVrmPaqE7j9Rw6IbOD0iOJlrW0kuSacl9+5GM7tagW/1GI9fGrQuJyK7WMtC?= =?us-ascii?Q?RCC4L1B3nH99UEREyhDT4TAiozPlcBYiytwEeRjZ/nB8pMaZ9Bm9FHMfKTXN?= =?us-ascii?Q?rPWtfoIdZBl79Pm3HYW/shVXzFgr9E1li3YJBXSQgPJOdXlxSbzeMZ/O57nQ?= =?us-ascii?Q?poJi8fdqgZeWZg3SCI2RlfVt9FAIXNfX+Klds+EXjwzY/uYrrPjLrZgWFhL2?= =?us-ascii?Q?+NXw4vPm1IZEfeR+1deUcVp1btkTDOzJwjT4UHSJz/jONtUes9UEWPk/6Q5x?= =?us-ascii?Q?aeVvpu16MNEUwvAM0eqEloPfxPEVsK7XgTPxBffFodJyc/l0CZN4QTqZCk1z?= =?us-ascii?Q?rWHc5LjEfwSo7JsmmLhmJ5S6TQT4jZkjLknv73kv75hf5xc7JZuPhAPb/9xa?= =?us-ascii?Q?RIEBI/m8AI/wSqvgSLhIiojkiwjZOyzTZ3ejcmWC2evDveYOpxAVkHd1vA7Q?= =?us-ascii?Q?TsMO4dmKQ54lOS3VDdeEfeFmiS0Y5uLBLLdJi77qjqMDrqq9nlavOrIYdp1M?= =?us-ascii?Q?HHJyWCX2gBpGT87+PdWl7qwgkzxGzpIYFK5Z/1wm35Isq+rLW6o0agGYSKlS?= =?us-ascii?Q?OFCWeGRl0XhlY97bdbSl6EyTC6vev+7Z9xa/IVKtJK8kDKhAaAZLfXgmw78D?= =?us-ascii?Q?Eiq7sIKNzBTIe00ea/3WwsbV7j9AR7QOHEAbTK+WnsVlxxm+F8jGCTfBKpTk?= =?us-ascii?Q?gGhDhHe2Z6uiyzMv94eQvbCwfUW3IIL09L5oyRapTzjIBoqcSLzKwDNzS9hr?= =?us-ascii?Q?ZHtt2bbWZ1JILPvg/H29L8sFLyj5rw3XYpCvUuUeQ/pIWXuH5Gir1QE8xbVL?= =?us-ascii?Q?I7bi3nmuQoAFMbuQykfHloRRtl3Taio6RnndSLwgGwXSisxtjRNHzeYKbbxm?= =?us-ascii?Q?9bM55jvzW5a5t/m8Ax4Du35Nj6omoBVp/A8D91poNMVOo6tPupiMx+ibRufM?= =?us-ascii?Q?0SF80aCGFm8vP49AyaxPloiFuEij3SeXCZNM8/drBVSMIqi/+OtmgSe2o3NN?= =?us-ascii?Q?eujcR4u7r7jtgA9QQejj6fYw?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e77d6a2e-dd7a-4caa-dd8a-08d935955386 X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB4835.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2021 15:49:31.9085 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 38XtuTpwgaGEJJ5l4Sg3wv0yxvUoyi9vVnNl86SVYdkEZEidZmf+R3CqgeVgO0cMtx8vrOJbJAuo0vu08pIOUlC1SWycNmNN38ik4RpHmEo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5204 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10023 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 adultscore=0 phishscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106220098 X-Proofpoint-GUID: ypLOdJBI4MRf9yq_6c8BzKqkdBHfEBT6 X-Proofpoint-ORIG-GUID: ypLOdJBI4MRf9yq_6c8BzKqkdBHfEBT6 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.165.32; envelope-from=joao.m.martins@oracle.com; helo=mx0a-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eduardo Habkost , "Michael S . Tsirkin" , Richard Henderson , Daniel Jordan , David Edmondson , Paolo Bonzini , Igor Mammedov , Joao Martins , Suravee Suthikulpanit Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @oracle.onmicrosoft.com) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The added enforcing is only relevant in the case of AMD where the range right before the 1TB is restricted and cannot be DMA mapped by the kernel consequently leading to IOMMU INVALID_DEVICE_REQUEST or possibly other kinds of IOMMU events in the AMD IOMMU. Although, there's a case where it may make sense to disable the IOVA relocation/validation when migrating from a non-valid-IOVA-aware qemu to one that supports it. Relocating RAM regions to after the 1Tb hole has consequences for guest ABI because we are changing the memory mapping, and thus it may make sense to allow admin to disable the validation (e.g. upon migration) to either 1) Fail early when the VFIO DMA_MAP ioctl fails thus preventing the migration to happen 'gracefully' or 2) allow booting a guest unchanged from source host without risking changing the PCI mmio hole64 or other things we consider in the valid IOVA range changing underneath the guest. Signed-off-by: Joao Martins --- hw/i386/pc.c | 29 +++++++++++++++++++++++++++-- hw/i386/pc_piix.c | 2 ++ hw/i386/pc_q35.c | 2 ++ include/hw/i386/pc.h | 2 ++ 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 65885cc16037..eb08a6d1a2b9 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -902,10 +902,14 @@ struct GPARange usable_iova_ranges[] =3D { =20 uint32_t nb_iova_ranges =3D DEFAULT_NR_USABLE_IOVAS; =20 -static void init_usable_iova_ranges(void) +static void init_usable_iova_ranges(PCMachineClass *pcmc) { uint32_t eax, vendor[3]; =20 + if (!pcmc->enforce_valid_iova) { + return; + } + host_cpuid(0x0, 0, &eax, &vendor[0], &vendor[2], &vendor[1]); if (IS_AMD_VENDOR(vendor)) { usable_iova_ranges[0].end =3D AMD_MAX_PHYSADDR_BELOW_1TB; @@ -1000,7 +1004,7 @@ void pc_memory_init(PCMachineState *pcms, assert(machine->ram_size =3D=3D x86ms->below_4g_mem_size + x86ms->above_4g_mem_size); =20 - init_usable_iova_ranges(); + init_usable_iova_ranges(pcmc); =20 linux_boot =3D (machine->kernel_filename !=3D NULL); =20 @@ -1685,6 +1689,23 @@ static void pc_machine_set_hpet(Object *obj, bool va= lue, Error **errp) pcms->hpet_enabled =3D value; } =20 +static bool pc_machine_get_enforce_valid_iova(Object *obj, Error **errp) +{ + PCMachineState *pcms =3D PC_MACHINE(obj); + PCMachineClass *pcmc =3D PC_MACHINE_GET_CLASS(pcms); + + return pcmc->enforce_valid_iova; +} + +static void pc_machine_set_enforce_valid_iova(Object *obj, bool value, + Error **errp) +{ + PCMachineState *pcms =3D PC_MACHINE(obj); + PCMachineClass *pcmc =3D PC_MACHINE_GET_CLASS(pcms); + + pcmc->enforce_valid_iova =3D value; +} + static void pc_machine_get_max_ram_below_4g(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) @@ -1851,6 +1872,7 @@ static void pc_machine_class_init(ObjectClass *oc, vo= id *data) pcmc->has_reserved_memory =3D true; pcmc->kvmclock_enabled =3D true; pcmc->enforce_aligned_dimm =3D true; + pcmc->enforce_valid_iova =3D true; /* BIOS ACPI tables: 128K. Other BIOS datastructures: less than 4K rep= orted * to be used at the moment, 32K should be enough for a while. */ pcmc->acpi_data_size =3D 0x20000 + 0x8000; @@ -1913,6 +1935,9 @@ static void pc_machine_class_init(ObjectClass *oc, vo= id *data) NULL, NULL); object_class_property_set_description(oc, PC_MACHINE_MAX_FW_SIZE, "Maximum combined firmware size"); + + object_class_property_add_bool(oc, PC_MACHINE_ENFORCE_VALID_IOVA, + pc_machine_get_enforce_valid_iova, pc_machine_set_enforce_valid_io= va); } =20 static const TypeInfo pc_machine_info =3D { diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 30b8bd6ea92d..21a08e2f6a4c 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -427,11 +427,13 @@ DEFINE_I440FX_MACHINE(v6_1, "pc-i440fx-6.1", NULL, =20 static void pc_i440fx_6_0_machine_options(MachineClass *m) { + PCMachineClass *pcmc =3D PC_MACHINE_CLASS(m); pc_i440fx_6_1_machine_options(m); m->alias =3D NULL; m->is_default =3D false; compat_props_add(m->compat_props, hw_compat_6_0, hw_compat_6_0_len); compat_props_add(m->compat_props, pc_compat_6_0, pc_compat_6_0_len); + pcmc->enforce_valid_iova =3D false; } =20 DEFINE_I440FX_MACHINE(v6_0, "pc-i440fx-6.0", NULL, diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 46a0f196f413..80bb89a9bae1 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -357,10 +357,12 @@ DEFINE_Q35_MACHINE(v6_1, "pc-q35-6.1", NULL, =20 static void pc_q35_6_0_machine_options(MachineClass *m) { + PCMachineClass *pcmc =3D PC_MACHINE_CLASS(m); pc_q35_6_1_machine_options(m); m->alias =3D NULL; compat_props_add(m->compat_props, hw_compat_6_0, hw_compat_6_0_len); compat_props_add(m->compat_props, pc_compat_6_0, pc_compat_6_0_len); + pcmc->enforce_valid_iova =3D false; } =20 DEFINE_Q35_MACHINE(v6_0, "pc-q35-6.0", NULL, diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index b924aef3a218..7337f6f2d014 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -63,6 +63,7 @@ typedef struct PCMachineState { #define PC_MACHINE_SATA "sata" #define PC_MACHINE_PIT "pit" #define PC_MACHINE_MAX_FW_SIZE "max-fw-size" +#define PC_MACHINE_ENFORCE_VALID_IOVA "enforce-valid-iova" /** * PCMachineClass: * @@ -113,6 +114,7 @@ struct PCMachineClass { bool has_reserved_memory; bool enforce_aligned_dimm; bool broken_reserved_end; + bool enforce_valid_iova; =20 /* generate legacy CPU hotplug AML */ bool legacy_cpu_hotplug; --=20 2.17.1