[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
+}
|