[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 05/12] x86/xen: set MTRR state when running as Xen PV initial domain


  • To: Juergen Gross <jgross@xxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, x86@xxxxxxxxxx
  • From: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
  • Date: Fri, 24 Feb 2023 16:00:41 -0500
  • 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
  • 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vOy8hyoDklmMCHfsfyOOAR4DHQhdsA9Rm1ZTeHKciwQ=; b=c9aoe/D3yttUeNw5Kl0MG3IIrwh2mRSB66ecZ2P01QLzbi8GriUvqWSxpG8qpXBP0xvGapguhT5gizL/xON3qjvXf1w15xgdE2Em2CPGsqJIhnxxFGpheUR0slUUUzvjIYf9bkrQE7bt6CzlNDo8P2ydzXodUdTwZ9yBqabiIaaf0ZQKPzs4YoPkQ5Yo/j1E2mt+eVU1m+xbiX8xZbpIzp2g/xXNX2WMoxFvunprtX4tYt/mxrd9I6CluVM0DPfe72UeBQusDyZHZ0JsmncSGA706WD9EKCgqNM6nqu1GkLuaLoyVfRdoHnm5VUvY618gJ/NUl1saV1p+CWiFe+NXA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GOHIc2pcFDJSlp/HX4QCNJU9g4fJp3VEjJhHnMtPYNwImc7O98HE2ezcHlmTj4W7BNtTGMezhHRZ+gqmr3NjaEjOKHPj9fl0AB5eGKmIllJCDEy68dpHMMM8CyjHicxhZXV8Wqm4mQ5zbzSSf/yV9I5EGhlXZjM10C1fBmW3/LO0GEcWG/jgCumNmQDRXgcAJ878UGecr4kzxR8JUHbG73dKxlCkNN4NaL32QAfK0hEbcPtC7S3kO4zfflEkpMoLDCG6gmO7RCtPWMnj9jYuap67z8C9Tmcn30lLaVqTmFg1HE5Y+JM32IQZ/yum+tSA3bnyexIgFUWcYKTGmreUmw==
  • Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>, Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Fri, 24 Feb 2023 21:01:19 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>


On 2/23/23 4:32 AM, Juergen Gross wrote:
+
+	for (reg = 0; reg < MTRR_MAX_VAR_RANGES; reg++) {
+		op.u.read_memtype.reg = reg;
+		if (HYPERVISOR_platform_op(&op))
+			break;


If we fail on the first iteration, do we still want to mark MTRRs are enabled/set in mtrr_overwrite_state()?


-boris


+
+		/*
+		 * Only called in dom0, which has all RAM PFNs mapped at
+		 * RAM MFNs, and all PCI space etc. is identity mapped.
+		 * This means we can treat MFN == PFN regarding MTTR settings.
+		 */
+		var[reg].base_lo = op.u.read_memtype.type;
+		var[reg].base_lo |= op.u.read_memtype.mfn << PAGE_SHIFT;
+		var[reg].base_hi = op.u.read_memtype.mfn >> (32 - PAGE_SHIFT);
+		mask = ~((op.u.read_memtype.nr_mfns << PAGE_SHIFT) - 1);
+		mask &= (1UL << width) - 1;
+		if (mask)
+			mask |= 1 << 11;
+		var[reg].mask_lo = mask;
+		var[reg].mask_hi = mask >> 32;
+	}
+
+	mtrr_overwrite_state(var, reg, MTRR_TYPE_UNCACHABLE);
+#endif
+}

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.