[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/8] x86: Fix calculation of %dr6/7 reserved bits
- To: Jinoh Kang <jinoh.kang.kr@xxxxxxxxx>
- From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
- Date: Thu, 24 Aug 2023 17:37:34 +0100
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.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=pVML95lo7T+E3ejYWkbkc8d/35BrEWVoSQXL8+6awIg=; b=WJ1+1yB0yJtQ2zelKhMLwizFixLwwNQN64fununaUg0AsyLp0tf9h3WmaDzjMg4Q14UICJ/cxsgec5Z1O4tiER2D7QNPoNerFwvDwaVxJYO5NBqFJ5V42fwRVDQHtQoYM+BBANtpqxstDUGoV6bamwxg1EfPgwYaDCCtM9L1eYpvOE3PWJsIKGLUlovTsVJA9FJ8lBosbh/j7fmQw078smVWcYuulXh/EaVFS58f65yeNdRnKzjGHK/H8VJK34wLDQSsy8tbGpeWG748NEkaZR/L7cLlE/Sp9mdjmhKxSdzh4EqiNvR7lF0HQmLcKqR+5XRSMIAUx8/i+eBg1huDEg==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tl/KL6RZrt+kT6AX7n0xqoDCGhksDS/Y6YpdXzJSSKf9USU3hjVR1Gkkct/VIhYExiWd6dtPAGt4QRawaariUJG5RkK7ZmuA/9Jnjj4holwhmqt3J86koRn7hvs9QCREunkEyqgR5YHb+NLefW+6ezgbeYsjeqxB7ved8YDxCEJpdX+BJUeFcJ72yvuRiW4DXWtCP190a+8Aji614KsCKxKWkRQUsXsUCr6h95jofrh3YGQ8GN33mX2+0uXFygOajpWjOYdxp5pvETc0jhV5CQfRsXKgUI6UkwvgEUjMgBMxSsrm8gxrkZSt5vKT3AViGeNOOC5ZR1pAzvtcsc1wIg==
- Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
- Cc: Jan Beulich <JBeulich@xxxxxxxx>, Wei Liu <wl@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
- Delivery-date: Thu, 24 Aug 2023 16:38:00 +0000
- Ironport-data: A9a23:OvV/aan8NK1Ws9XJLJ/FsnLo5gxFJ0RdPkR7XQ2eYbSJt1+Wr1Gzt xIfUW6EPv3ZZmP0fYxzOYm+8RgGsZeHytBqTlNl+ytmQiMWpZLJC+rCIxarNUt+DCFhoGFPt JxCN4aafKjYaleG+39B55C49SEUOZmgH+a6U6icfHgqH2eIcQ954Tp7gek1n4V0ttawBgKJq LvartbWfVSowFaYCEpNg064gE0p5K6aVA8w5ARkPqgb5gSGzhH5MbpETU2PByqgKmVrNrbSq 9brlNmR4m7f9hExPdKp+p6TnpoiG+O60aCm0xK6aoD66vRwjnVaPpUTbZLwXXx/mTSR9+2d/ f0W3XCGpaXFCYWX8AgVe0Ew/yiTpsSq8pefSZS0mZT7I0Er7xIAahihZa07FdRwxwp5PY1B3 eckGGAmKUynu+ur0L6bG+5nht08K+C+aevzulk4pd3YJdAPZMmbBoD1v5pf1jp2gd1SF/HDY cZfcSBocBnLfxxIPBEQFY46m+CrwHL4dlW0qnrM/fZxvzeVkVE3ieCwWDbWUoXiqcF9t0CUv G/ZuU/+BQkXLoe3wjuZ6HO8wOTImEsXXapLTezorq870Qz7Kmo7K14pXmWVgaCFgG2USs8CB WYL6iMcsv1nnKCsZpynN/Gim1aGvxgbW5xTGus1rgKX4qXR6gedQGMDS1ZpSvYrqcs3TjwCz UKSkpXiAjkHmKKRYWKQ8PGTtzzaETgYKyoOaDEJSSMB4sL/u8cjgxTXVNFhHaWpyNrvFlnNL yuiqSE/g/AWkpQN3qDipVTf2Wv0+97OUxI/4RjRUiS99ARlaYW5Zouur1/G8fJHK4XfRV6E1 JQZp/WjACk1JcnlvESwrC8lRtlFO97t3OXgvGNS
- Ironport-hdrordr: A9a23:L86YJqBc0j+B+IvlHem755DYdb4zR+YMi2TDsHoBKyC9E/bo9P xG+c5xvyMc5wx9ZJheo6HkBEDtex/hHPxOj7X5TI3DYOCOggLBEGgI1+rfKlPbdBEW/9QtsZ tdTw==
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 24/08/2023 4:25 pm, Jinoh Kang wrote:
> - Define X86_DR{6,7}_* constants in x86-defns.h instead of open-coding
> naked numbers (thanks Jan)
Jan - stop insisting of other people things I've already rejected,
particularly on my patches.
> diff --git a/xen/arch/x86/include/asm/debugreg.h
> b/xen/arch/x86/include/asm/debugreg.h
> index 86aa6d7143..74344555d2 100644
> --- a/xen/arch/x86/include/asm/debugreg.h
> +++ b/xen/arch/x86/include/asm/debugreg.h
> @@ -80,4 +78,20 @@
> long set_debugreg(struct vcpu *, unsigned int reg, unsigned long value);
> void activate_debugregs(const struct vcpu *);
>
> +static inline unsigned long adjust_dr6_rsvd(unsigned long dr6, bool rtm)
> +{
> + dr6 |= X86_DR6_MBS_BASE | (rtm ? 0 : X86_DR6_MBS_NO_RTM);
> + dr6 &= ~X86_DR6_MBZ;
> +
> + return dr6;
> +}
> +
> +static inline unsigned long adjust_dr7_rsvd(unsigned long dr7, bool rtm)
> +{
> + dr7 |= X86_DR7_MBS;
> + dr7 &= ~(X86_DR7_MBZ_BASE | (rtm ? 0 : X86_DR7_MBZ_NO_RTM));
> +
> + return dr7;
> +}
Jinoh, for your benefit, the reason it was the way it was is because of
how the processor manuals describe this logic. Not this, which is
borderline illegible with double negations all over the place.
However, in the time since I wrote this patch, more inverted bits have
appeared that need accounting for, and this is no longer the best interface.
I'll adjust the patch because it's unfair for you to be caught in the
middle of an an existing fight over code comprehensibility.
~Andrew
|