All checks were successful
Build documentation / build-and-deploy (push) Successful in 28s
1094 lines
46 KiB
C
1094 lines
46 KiB
C
#ifndef __ASM_MSR_INDEX_H
|
|
#define __ASM_MSR_INDEX_H
|
|
|
|
/*
|
|
Valid-License-Identifier: GPL-2.0-only
|
|
Valid-License-Identifier: GPL-2.0-or-later
|
|
|
|
SPDX-URL: https://spdx.org/licenses/GPL-2.0-only.html
|
|
SPDX-URL: https://spdx.org/licenses/GPL-2.0-or-later.html
|
|
|
|
Deprecated-Identifier: GPL-2.0
|
|
Deprecated-Identifier: GPL-2.0+
|
|
|
|
Usage-Guide:
|
|
|
|
To use this license in source code, put one of the following SPDX
|
|
tag/value pairs into a comment according to the placement
|
|
guidelines in the licensing rules documentation.
|
|
|
|
For 'GNU General Public License (GPL) version 2 only' use:
|
|
SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
For 'GNU General Public License (GPL) version 2 or any later version' use:
|
|
SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
The deprecated tags should not be used for any new additions. Where
|
|
possible, their existing uses should be phased out.
|
|
|
|
License-Text:
|
|
|
|
GNU GENERAL PUBLIC LICENSE
|
|
Version 2, June 1991
|
|
|
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
|
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Everyone is permitted to copy and distribute verbatim copies
|
|
of this license document, but changing it is not allowed.
|
|
|
|
Preamble
|
|
|
|
The licenses for most software are designed to take away your
|
|
freedom to share and change it. By contrast, the GNU General Public
|
|
License is intended to guarantee your freedom to share and change free
|
|
software--to make sure the software is free for all its users. This
|
|
General Public License applies to most of the Free Software
|
|
Foundation's software and to any other program whose authors commit to
|
|
using it. (Some other Free Software Foundation software is covered by
|
|
the GNU Library General Public License instead.) You can apply it to
|
|
your programs, too.
|
|
|
|
When we speak of free software, we are referring to freedom, not
|
|
price. Our General Public Licenses are designed to make sure that you
|
|
have the freedom to distribute copies of free software (and charge for
|
|
this service if you wish), that you receive source code or can get it
|
|
if you want it, that you can change the software or use pieces of it
|
|
in new free programs; and that you know you can do these things.
|
|
|
|
To protect your rights, we need to make restrictions that forbid
|
|
anyone to deny you these rights or to ask you to surrender the rights.
|
|
These restrictions translate to certain responsibilities for you if you
|
|
distribute copies of the software, or if you modify it.
|
|
|
|
For example, if you distribute copies of such a program, whether
|
|
gratis or for a fee, you must give the recipients all the rights that
|
|
you have. You must make sure that they, too, receive or can get the
|
|
source code. And you must show them these terms so they know their
|
|
rights.
|
|
|
|
We protect your rights with two steps: (1) copyright the software, and
|
|
(2) offer you this license which gives you legal permission to copy,
|
|
distribute and/or modify the software.
|
|
|
|
Also, for each author's protection and ours, we want to make certain
|
|
that everyone understands that there is no warranty for this free
|
|
software. If the software is modified by someone else and passed on, we
|
|
want its recipients to know that what they have is not the original, so
|
|
that any problems introduced by others will not reflect on the original
|
|
authors' reputations.
|
|
|
|
Finally, any free program is threatened constantly by software
|
|
patents. We wish to avoid the danger that redistributors of a free
|
|
program will individually obtain patent licenses, in effect making the
|
|
program proprietary. To prevent this, we have made it clear that any
|
|
patent must be licensed for everyone's free use or not licensed at all.
|
|
|
|
The precise terms and conditions for copying, distribution and
|
|
modification follow.
|
|
|
|
GNU GENERAL PUBLIC LICENSE
|
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
|
|
0. This License applies to any program or other work which contains
|
|
a notice placed by the copyright holder saying it may be distributed
|
|
under the terms of this General Public License. The "Program", below,
|
|
refers to any such program or work, and a "work based on the Program"
|
|
means either the Program or any derivative work under copyright law:
|
|
that is to say, a work containing the Program or a portion of it,
|
|
either verbatim or with modifications and/or translated into another
|
|
language. (Hereinafter, translation is included without limitation in
|
|
the term "modification".) Each licensee is addressed as "you".
|
|
|
|
Activities other than copying, distribution and modification are not
|
|
covered by this License; they are outside its scope. The act of
|
|
running the Program is not restricted, and the output from the Program
|
|
is covered only if its contents constitute a work based on the
|
|
Program (independent of having been made by running the Program).
|
|
Whether that is true depends on what the Program does.
|
|
|
|
1. You may copy and distribute verbatim copies of the Program's
|
|
source code as you receive it, in any medium, provided that you
|
|
conspicuously and appropriately publish on each copy an appropriate
|
|
copyright notice and disclaimer of warranty; keep intact all the
|
|
notices that refer to this License and to the absence of any warranty;
|
|
and give any other recipients of the Program a copy of this License
|
|
along with the Program.
|
|
|
|
You may charge a fee for the physical act of transferring a copy, and
|
|
you may at your option offer warranty protection in exchange for a fee.
|
|
|
|
2. You may modify your copy or copies of the Program or any portion
|
|
of it, thus forming a work based on the Program, and copy and
|
|
distribute such modifications or work under the terms of Section 1
|
|
above, provided that you also meet all of these conditions:
|
|
|
|
a) You must cause the modified files to carry prominent notices
|
|
stating that you changed the files and the date of any change.
|
|
|
|
b) You must cause any work that you distribute or publish, that in
|
|
whole or in part contains or is derived from the Program or any
|
|
part thereof, to be licensed as a whole at no charge to all third
|
|
parties under the terms of this License.
|
|
|
|
c) If the modified program normally reads commands interactively
|
|
when run, you must cause it, when started running for such
|
|
interactive use in the most ordinary way, to print or display an
|
|
announcement including an appropriate copyright notice and a
|
|
notice that there is no warranty (or else, saying that you provide
|
|
a warranty) and that users may redistribute the program under
|
|
these conditions, and telling the user how to view a copy of this
|
|
License. (Exception: if the Program itself is interactive but
|
|
does not normally print such an announcement, your work based on
|
|
the Program is not required to print an announcement.)
|
|
|
|
These requirements apply to the modified work as a whole. If
|
|
identifiable sections of that work are not derived from the Program,
|
|
and can be reasonably considered independent and separate works in
|
|
themselves, then this License, and its terms, do not apply to those
|
|
sections when you distribute them as separate works. But when you
|
|
distribute the same sections as part of a whole which is a work based
|
|
on the Program, the distribution of the whole must be on the terms of
|
|
this License, whose permissions for other licensees extend to the
|
|
entire whole, and thus to each and every part regardless of who wrote it.
|
|
|
|
Thus, it is not the intent of this section to claim rights or contest
|
|
your rights to work written entirely by you; rather, the intent is to
|
|
exercise the right to control the distribution of derivative or
|
|
collective works based on the Program.
|
|
|
|
In addition, mere aggregation of another work not based on the Program
|
|
with the Program (or with a work based on the Program) on a volume of
|
|
a storage or distribution medium does not bring the other work under
|
|
the scope of this License.
|
|
|
|
3. You may copy and distribute the Program (or a work based on it,
|
|
under Section 2) in object code or executable form under the terms of
|
|
Sections 1 and 2 above provided that you also do one of the following:
|
|
|
|
a) Accompany it with the complete corresponding machine-readable
|
|
source code, which must be distributed under the terms of Sections
|
|
1 and 2 above on a medium customarily used for software interchange; or,
|
|
|
|
b) Accompany it with a written offer, valid for at least three
|
|
years, to give any third party, for a charge no more than your
|
|
cost of physically performing source distribution, a complete
|
|
machine-readable copy of the corresponding source code, to be
|
|
distributed under the terms of Sections 1 and 2 above on a medium
|
|
customarily used for software interchange; or,
|
|
|
|
c) Accompany it with the information you received as to the offer
|
|
to distribute corresponding source code. (This alternative is
|
|
allowed only for noncommercial distribution and only if you
|
|
received the program in object code or executable form with such
|
|
an offer, in accord with Subsection b above.)
|
|
|
|
The source code for a work means the preferred form of the work for
|
|
making modifications to it. For an executable work, complete source
|
|
code means all the source code for all modules it contains, plus any
|
|
associated interface definition files, plus the scripts used to
|
|
control compilation and installation of the executable. However, as a
|
|
special exception, the source code distributed need not include
|
|
anything that is normally distributed (in either source or binary
|
|
form) with the major components (compiler, kernel, and so on) of the
|
|
operating system on which the executable runs, unless that component
|
|
itself accompanies the executable.
|
|
|
|
If distribution of executable or object code is made by offering
|
|
access to copy from a designated place, then offering equivalent
|
|
access to copy the source code from the same place counts as
|
|
distribution of the source code, even though third parties are not
|
|
compelled to copy the source along with the object code.
|
|
|
|
4. You may not copy, modify, sublicense, or distribute the Program
|
|
except as expressly provided under this License. Any attempt
|
|
otherwise to copy, modify, sublicense or distribute the Program is
|
|
void, and will automatically terminate your rights under this License.
|
|
However, parties who have received copies, or rights, from you under
|
|
this License will not have their licenses terminated so long as such
|
|
parties remain in full compliance.
|
|
|
|
5. You are not required to accept this License, since you have not
|
|
signed it. However, nothing else grants you permission to modify or
|
|
distribute the Program or its derivative works. These actions are
|
|
prohibited by law if you do not accept this License. Therefore, by
|
|
modifying or distributing the Program (or any work based on the
|
|
Program), you indicate your acceptance of this License to do so, and
|
|
all its terms and conditions for copying, distributing or modifying
|
|
the Program or works based on it.
|
|
|
|
6. Each time you redistribute the Program (or any work based on the
|
|
Program), the recipient automatically receives a license from the
|
|
original licensor to copy, distribute or modify the Program subject to
|
|
these terms and conditions. You may not impose any further
|
|
restrictions on the recipients' exercise of the rights granted herein.
|
|
You are not responsible for enforcing compliance by third parties to
|
|
this License.
|
|
|
|
7. If, as a consequence of a court judgment or allegation of patent
|
|
infringement or for any other reason (not limited to patent issues),
|
|
conditions are imposed on you (whether by court order, agreement or
|
|
otherwise) that contradict the conditions of this License, they do not
|
|
excuse you from the conditions of this License. If you cannot
|
|
distribute so as to satisfy simultaneously your obligations under this
|
|
License and any other pertinent obligations, then as a consequence you
|
|
may not distribute the Program at all. For example, if a patent
|
|
license would not permit royalty-free redistribution of the Program by
|
|
all those who receive copies directly or indirectly through you, then
|
|
the only way you could satisfy both it and this License would be to
|
|
refrain entirely from distribution of the Program.
|
|
|
|
If any portion of this section is held invalid or unenforceable under
|
|
any particular circumstance, the balance of the section is intended to
|
|
apply and the section as a whole is intended to apply in other
|
|
circumstances.
|
|
|
|
It is not the purpose of this section to induce you to infringe any
|
|
patents or other property right claims or to contest validity of any
|
|
such claims; this section has the sole purpose of protecting the
|
|
integrity of the free software distribution system, which is
|
|
implemented by public license practices. Many people have made
|
|
generous contributions to the wide range of software distributed
|
|
through that system in reliance on consistent application of that
|
|
system; it is up to the author/donor to decide if he or she is willing
|
|
to distribute software through any other system and a licensee cannot
|
|
impose that choice.
|
|
|
|
This section is intended to make thoroughly clear what is believed to
|
|
be a consequence of the rest of this License.
|
|
|
|
8. If the distribution and/or use of the Program is restricted in
|
|
certain countries either by patents or by copyrighted interfaces, the
|
|
original copyright holder who places the Program under this License
|
|
may add an explicit geographical distribution limitation excluding
|
|
those countries, so that distribution is permitted only in or among
|
|
countries not thus excluded. In such case, this License incorporates
|
|
the limitation as if written in the body of this License.
|
|
|
|
9. The Free Software Foundation may publish revised and/or new versions
|
|
of the General Public License from time to time. Such new versions will
|
|
be similar in spirit to the present version, but may differ in detail to
|
|
address new problems or concerns.
|
|
|
|
Each version is given a distinguishing version number. If the Program
|
|
specifies a version number of this License which applies to it and "any
|
|
later version", you have the option of following the terms and conditions
|
|
either of that version or of any later version published by the Free
|
|
Software Foundation. If the Program does not specify a version number of
|
|
this License, you may choose any version ever published by the Free Software
|
|
Foundation.
|
|
|
|
10. If you wish to incorporate parts of the Program into other free
|
|
programs whose distribution conditions are different, write to the author
|
|
to ask for permission. For software which is copyrighted by the Free
|
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
|
make exceptions for this. Our decision will be guided by the two goals
|
|
of preserving the free status of all derivatives of our free software and
|
|
of promoting the sharing and reuse of software generally.
|
|
|
|
NO WARRANTY
|
|
|
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
|
REPAIR OR CORRECTION.
|
|
|
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|
POSSIBILITY OF SUCH DAMAGES.
|
|
|
|
END OF TERMS AND CONDITIONS
|
|
|
|
How to Apply These Terms to Your New Programs
|
|
|
|
If you develop a new program, and you want it to be of the greatest
|
|
possible use to the public, the best way to achieve this is to make it
|
|
free software which everyone can redistribute and change under these terms.
|
|
|
|
To do so, attach the following notices to the program. It is safest
|
|
to attach them to the start of each source file to most effectively
|
|
convey the exclusion of warranty; and each file should have at least
|
|
the "copyright" line and a pointer to where the full notice is found.
|
|
|
|
<one line to give the program's name and a brief idea of what it does.>
|
|
Copyright (C) <year> <name of author>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
|
|
Also add information on how to contact you by electronic and paper mail.
|
|
|
|
If the program is interactive, make it output a short notice like this
|
|
when it starts in an interactive mode:
|
|
|
|
Gnomovision version 69, Copyright (C) year name of author
|
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
This is free software, and you are welcome to redistribute it
|
|
under certain conditions; type `show c' for details.
|
|
|
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
parts of the General Public License. Of course, the commands you use may
|
|
be called something other than `show w' and `show c'; they could even be
|
|
mouse-clicks or menu items--whatever suits your program.
|
|
|
|
You should also get your employer (if you work as a programmer) or your
|
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
|
necessary. Here is a sample; alter the names:
|
|
|
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
|
|
|
<signature of Ty Coon>, 1 April 1989
|
|
Ty Coon, President of Vice
|
|
|
|
This General Public License does not permit incorporating your program into
|
|
proprietary programs. If your program is a subroutine library, you may
|
|
consider it more useful to permit linking proprietary applications with the
|
|
library. If this is what you want to do, use the GNU Library General
|
|
Public License instead of this License.
|
|
*/
|
|
|
|
/*
|
|
* CPU model specific register (MSR) numbers
|
|
*
|
|
* Definitions for an MSR should follow this style:
|
|
*
|
|
* #define MSR_$NAME 0x$INDEX
|
|
* #define $NAME_$FIELD1 (_AC($X, ULL) << $POS1)
|
|
* #define $NAME_$FIELD2 (_AC($Y, ULL) << $POS2)
|
|
*
|
|
* Blocks of related constants should be sorted by MSR index. The constant
|
|
* names should be as concise as possible, and the bit names may have an
|
|
* abbreviated name. Exceptions will be considered on a case-by-case basis.
|
|
*/
|
|
|
|
#define _AC(X, Y) (X##Y)
|
|
|
|
#define MSR_P5_MC_ADDR 0
|
|
#define MSR_P5_MC_TYPE 0x00000001
|
|
|
|
#define MSR_APIC_BASE 0x0000001b
|
|
#define APIC_BASE_BSP (_AC (1, ULL) << 8)
|
|
#define APIC_BASE_EXTD (_AC (1, ULL) << 10)
|
|
#define APIC_BASE_ENABLE (_AC (1, ULL) << 11)
|
|
#define APIC_BASE_ADDR_MASK _AC (0x000ffffffffff000, ULL)
|
|
|
|
#define MSR_TEST_CTRL 0x00000033
|
|
#define TEST_CTRL_SPLITLOCK_DETECT (_AC (1, ULL) << 29)
|
|
#define TEST_CTRL_SPLITLOCK_DISABLE (_AC (1, ULL) << 31)
|
|
|
|
#define MSR_INTEL_CORE_THREAD_COUNT 0x00000035
|
|
#define MSR_CTC_THREAD_MASK 0x0000ffff
|
|
#define MSR_CTC_CORE_MASK _AC (0xffff0000, U)
|
|
|
|
#define MSR_SPEC_CTRL 0x00000048
|
|
#define SPEC_CTRL_IBRS (_AC (1, ULL) << 0)
|
|
#define SPEC_CTRL_STIBP (_AC (1, ULL) << 1)
|
|
#define SPEC_CTRL_SSBD (_AC (1, ULL) << 2)
|
|
#define SPEC_CTRL_IPRED_DIS_U (_AC (1, ULL) << 3)
|
|
#define SPEC_CTRL_IPRED_DIS_S (_AC (1, ULL) << 4)
|
|
#define SPEC_CTRL_RRSBA_DIS_U (_AC (1, ULL) << 5)
|
|
#define SPEC_CTRL_RRSBA_DIS_S (_AC (1, ULL) << 6)
|
|
#define SPEC_CTRL_PSFD (_AC (1, ULL) << 7)
|
|
#define SPEC_CTRL_DDP_DIS_U (_AC (1, ULL) << 8)
|
|
#define SPEC_CTRL_BHI_DIS_S (_AC (1, ULL) << 10)
|
|
|
|
#define MSR_PRED_CMD 0x00000049
|
|
#define PRED_CMD_IBPB (_AC (1, ULL) << 0)
|
|
#define PRED_CMD_SBPB (_AC (1, ULL) << 7)
|
|
|
|
#define MSR_PPIN_CTL 0x0000004e
|
|
#define PPIN_LOCKOUT (_AC (1, ULL) << 0)
|
|
#define PPIN_ENABLE (_AC (1, ULL) << 1)
|
|
#define MSR_PPIN 0x0000004f
|
|
|
|
#define MSR_MISC_PACKAGE_CTRL 0x000000bc
|
|
#define PGK_CTRL_ENERGY_FILTER_EN (_AC (1, ULL) << 0)
|
|
|
|
#define MSR_PB_OPT_CTRL 0x000000bf
|
|
#define PB_OPT_IBPB_ALT (_AC (1, ULL) << 0)
|
|
|
|
#define MSR_CORE_CAPABILITIES 0x000000cf
|
|
#define CORE_CAPS_SPLITLOCK_DETECT (_AC (1, ULL) << 5)
|
|
|
|
#define MSR_PKG_CST_CONFIG_CONTROL 0x000000e2
|
|
#define NHM_C3_AUTO_DEMOTE (_AC (1, ULL) << 25)
|
|
#define NHM_C1_AUTO_DEMOTE (_AC (1, ULL) << 26)
|
|
#define ATM_LNC_C6_AUTO_DEMOTE (_AC (1, ULL) << 25)
|
|
#define SNB_C3_AUTO_UNDEMOTE (_AC (1, ULL) << 27)
|
|
#define SNB_C1_AUTO_UNDEMOTE (_AC (1, ULL) << 28)
|
|
|
|
#define MSR_ARCH_CAPABILITIES 0x0000010a
|
|
#define ARCH_CAPS_RDCL_NO (_AC (1, ULL) << 0)
|
|
#define ARCH_CAPS_EIBRS (_AC (1, ULL) << 1)
|
|
#define ARCH_CAPS_RSBA (_AC (1, ULL) << 2)
|
|
#define ARCH_CAPS_SKIP_L1DFL (_AC (1, ULL) << 3)
|
|
#define ARCH_CAPS_SSB_NO (_AC (1, ULL) << 4)
|
|
#define ARCH_CAPS_MDS_NO (_AC (1, ULL) << 5)
|
|
#define ARCH_CAPS_IF_PSCHANGE_MC_NO (_AC (1, ULL) << 6)
|
|
#define ARCH_CAPS_TSX_CTRL (_AC (1, ULL) << 7)
|
|
#define ARCH_CAPS_TAA_NO (_AC (1, ULL) << 8)
|
|
#define ARCH_CAPS_MISC_PACKAGE_CTRL (_AC (1, ULL) << 10)
|
|
#define ARCH_CAPS_ENERGY_FILTERING (_AC (1, ULL) << 11)
|
|
#define ARCH_CAPS_DOITM (_AC (1, ULL) << 12)
|
|
#define ARCH_CAPS_SBDR_SSDP_NO (_AC (1, ULL) << 13)
|
|
#define ARCH_CAPS_FBSDP_NO (_AC (1, ULL) << 14)
|
|
#define ARCH_CAPS_PSDP_NO (_AC (1, ULL) << 15)
|
|
#define ARCH_CAPS_FB_CLEAR (_AC (1, ULL) << 17)
|
|
#define ARCH_CAPS_FB_CLEAR_CTRL (_AC (1, ULL) << 18)
|
|
#define ARCH_CAPS_RRSBA (_AC (1, ULL) << 19)
|
|
#define ARCH_CAPS_BHI_NO (_AC (1, ULL) << 20)
|
|
#define ARCH_CAPS_PBRSB_NO (_AC (1, ULL) << 24)
|
|
#define ARCH_CAPS_GDS_CTRL (_AC (1, ULL) << 25)
|
|
#define ARCH_CAPS_GDS_NO (_AC (1, ULL) << 26)
|
|
#define ARCH_CAPS_RFDS_NO (_AC (1, ULL) << 27)
|
|
#define ARCH_CAPS_RFDS_CLEAR (_AC (1, ULL) << 28)
|
|
|
|
#define MSR_FLUSH_CMD 0x0000010b
|
|
#define FLUSH_CMD_L1D (_AC (1, ULL) << 0)
|
|
|
|
#define MSR_TSX_FORCE_ABORT 0x0000010f
|
|
#define TSX_FORCE_ABORT_RTM (_AC (1, ULL) << 0)
|
|
#define TSX_CPUID_CLEAR (_AC (1, ULL) << 1)
|
|
#define TSX_ENABLE_RTM (_AC (1, ULL) << 2)
|
|
|
|
#define MSR_TSX_CTRL 0x00000122
|
|
#define TSX_CTRL_RTM_DISABLE (_AC (1, ULL) << 0)
|
|
#define TSX_CTRL_CPUID_CLEAR (_AC (1, ULL) << 1)
|
|
|
|
#define MSR_MCU_OPT_CTRL 0x00000123
|
|
#define MCU_OPT_CTRL_RNGDS_MITG_DIS (_AC (1, ULL) << 0)
|
|
#define MCU_OPT_CTRL_RTM_ALLOW (_AC (1, ULL) << 1)
|
|
#define MCU_OPT_CTRL_RTM_LOCKED (_AC (1, ULL) << 2)
|
|
#define MCU_OPT_CTRL_FB_CLEAR_DIS (_AC (1, ULL) << 3)
|
|
#define MCU_OPT_CTRL_GDS_MIT_DIS (_AC (1, ULL) << 4)
|
|
#define MCU_OPT_CTRL_GDS_MIT_LOCK (_AC (1, ULL) << 5)
|
|
|
|
#define MSR_FRED_RSP_SL0 0x000001cc
|
|
#define MSR_FRED_RSP_SL1 0x000001cd
|
|
#define MSR_FRED_RSP_SL2 0x000001ce
|
|
#define MSR_FRED_RSP_SL3 0x000001cf
|
|
#define MSR_FRED_STK_LVLS 0x000001d0
|
|
#define MSR_FRED_SSP_SL0 MSR_PL0_SSP
|
|
#define MSR_FRED_SSP_SL1 0x000001d1
|
|
#define MSR_FRED_SSP_SL2 0x000001d2
|
|
#define MSR_FRED_SSP_SL3 0x000001d3
|
|
#define MSR_FRED_CONFIG 0x000001d4
|
|
|
|
#define MSR_RTIT_OUTPUT_BASE 0x00000560
|
|
#define MSR_RTIT_OUTPUT_MASK 0x00000561
|
|
#define MSR_RTIT_CTL 0x00000570
|
|
#define RTIT_CTL_TRACE_EN (_AC (1, ULL) << 0)
|
|
#define RTIT_CTL_CYC_EN (_AC (1, ULL) << 1)
|
|
#define RTIT_CTL_OS (_AC (1, ULL) << 2)
|
|
#define RTIT_CTL_USR (_AC (1, ULL) << 3)
|
|
#define RTIT_CTL_PWR_EVT_EN (_AC (1, ULL) << 4)
|
|
#define RTIT_CTL_FUP_ON_PTW (_AC (1, ULL) << 5)
|
|
#define RTIT_CTL_FABRIC_EN (_AC (1, ULL) << 6)
|
|
#define RTIT_CTL_CR3_FILTER (_AC (1, ULL) << 7)
|
|
#define RTIT_CTL_TOPA (_AC (1, ULL) << 8)
|
|
#define RTIT_CTL_MTC_EN (_AC (1, ULL) << 9)
|
|
#define RTIT_CTL_TSC_EN (_AC (1, ULL) << 10)
|
|
#define RTIT_CTL_DIS_RETC (_AC (1, ULL) << 11)
|
|
#define RTIT_CTL_PTW_EN (_AC (1, ULL) << 12)
|
|
#define RTIT_CTL_BRANCH_EN (_AC (1, ULL) << 13)
|
|
#define RTIT_CTL_MTC_FREQ (_AC (0xf, ULL) << 14)
|
|
#define RTIT_CTL_CYC_THRESH (_AC (0xf, ULL) << 19)
|
|
#define RTIT_CTL_PSB_FREQ (_AC (0xf, ULL) << 24)
|
|
#define RTIT_CTL_ADDR(n) (_AC (0xf, ULL) << (32 + 4 * (n)))
|
|
#define MSR_RTIT_STATUS 0x00000571
|
|
#define RTIT_STATUS_FILTER_EN (_AC (1, ULL) << 0)
|
|
#define RTIT_STATUS_CONTEXT_EN (_AC (1, ULL) << 1)
|
|
#define RTIT_STATUS_TRIGGER_EN (_AC (1, ULL) << 2)
|
|
#define RTIT_STATUS_ERROR (_AC (1, ULL) << 4)
|
|
#define RTIT_STATUS_STOPPED (_AC (1, ULL) << 5)
|
|
#define RTIT_STATUS_BYTECNT (_AC (0x1ffff, ULL) << 32)
|
|
#define MSR_RTIT_CR3_MATCH 0x00000572
|
|
#define MSR_RTIT_ADDR_A(n) (0x00000580 + (n) * 2)
|
|
#define MSR_RTIT_ADDR_B(n) (0x00000581 + (n) * 2)
|
|
|
|
#define MSR_U_CET 0x000006a0
|
|
#define MSR_S_CET 0x000006a2
|
|
#define CET_SHSTK_EN (_AC (1, ULL) << 0)
|
|
#define CET_WRSS_EN (_AC (1, ULL) << 1)
|
|
#define CET_ENDBR_EN (_AC (1, ULL) << 2)
|
|
|
|
#define MSR_PL0_SSP 0x000006a4
|
|
#define MSR_PL1_SSP 0x000006a5
|
|
#define MSR_PL2_SSP 0x000006a6
|
|
#define MSR_PL3_SSP 0x000006a7
|
|
#define MSR_ISST 0x000006a8
|
|
|
|
#define MSR_PKRS 0x000006e1
|
|
|
|
#define MSR_PM_ENABLE 0x00000770
|
|
#define PM_ENABLE_HWP_ENABLE BIT (0, ULL)
|
|
|
|
#define MSR_HWP_CAPABILITIES 0x00000771
|
|
#define MSR_HWP_INTERRUPT 0x00000773
|
|
#define MSR_HWP_REQUEST 0x00000774
|
|
#define MSR_HWP_STATUS 0x00000777
|
|
|
|
#define MSR_X2APIC_FIRST 0x00000800
|
|
#define MSR_X2APIC_LAST 0x000008ff
|
|
|
|
#define MSR_X2APIC_TPR 0x00000808
|
|
#define MSR_X2APIC_PPR 0x0000080a
|
|
#define MSR_X2APIC_EOI 0x0000080b
|
|
#define MSR_X2APIC_TMICT 0x00000838
|
|
#define MSR_X2APIC_TMCCT 0x00000839
|
|
#define MSR_X2APIC_SELF 0x0000083f
|
|
|
|
#define MSR_PASID 0x00000d93
|
|
#define PASID_PASID_MASK 0x000fffff
|
|
#define PASID_VALID (_AC (1, ULL) << 31)
|
|
|
|
#define MSR_PKG_HDC_CTL 0x00000db0
|
|
#define PKG_HDC_CTL_HDC_PKG_ENABLE BIT (0, ULL)
|
|
#define MSR_PM_CTL1 0x00000db1
|
|
#define PM_CTL1_HDC_ALLOW_BLOCK BIT (0, ULL)
|
|
|
|
#define MSR_MCU_CONTROL 0x00001406
|
|
#define MCU_CONTROL_LOCK (_AC (1, ULL) << 0)
|
|
#define MCU_CONTROL_DIS_MCU_LOAD (_AC (1, ULL) << 1)
|
|
#define MCU_CONTROL_EN_SMM_BYPASS (_AC (1, ULL) << 2)
|
|
|
|
#define MSR_UARCH_MISC_CTRL 0x00001b01
|
|
#define UARCH_CTRL_DOITM (_AC (1, ULL) << 0)
|
|
|
|
#define MSR_EFER _AC (0xc0000080, U) /* Extended Feature Enable Register */
|
|
#define EFER_SCE (_AC (1, ULL) << 0) /* SYSCALL Enable */
|
|
#define EFER_LME (_AC (1, ULL) << 8) /* Long Mode Enable */
|
|
#define EFER_LMA (_AC (1, ULL) << 10) /* Long Mode Active */
|
|
#define EFER_NXE (_AC (1, ULL) << 11) /* No Execute Enable */
|
|
#define EFER_SVME (_AC (1, ULL) << 12) /* Secure Virtual Machine Enable */
|
|
#define EFER_FFXSE (_AC (1, ULL) << 14) /* Fast FXSAVE/FXRSTOR */
|
|
#define EFER_AIBRSE (_AC (1, ULL) << 21) /* Automatic IBRS Enable */
|
|
|
|
#define EFER_KNOWN_MASK \
|
|
(EFER_SCE | EFER_LME | EFER_LMA | EFER_NXE | EFER_SVME | EFER_FFXSE | EFER_AIBRSE)
|
|
|
|
#define MSR_STAR _AC (0xc0000081, U) /* legacy mode SYSCALL target */
|
|
#define MSR_LSTAR _AC (0xc0000082, U) /* long mode SYSCALL target */
|
|
#define MSR_CSTAR _AC (0xc0000083, U) /* compat mode SYSCALL target */
|
|
#define MSR_SYSCALL_MASK _AC (0xc0000084, U) /* EFLAGS mask for syscall */
|
|
#define MSR_FS_BASE _AC (0xc0000100, U) /* 64bit FS base */
|
|
#define MSR_GS_BASE _AC (0xc0000101, U) /* 64bit GS base */
|
|
#define MSR_SHADOW_GS_BASE _AC (0xc0000102, U) /* SwapGS GS shadow */
|
|
#define MSR_TSC_AUX _AC (0xc0000103, U) /* Auxiliary TSC */
|
|
|
|
#define MSR_K8_SYSCFG _AC (0xc0010010, U)
|
|
#define SYSCFG_MTRR_FIX_DRAM_EN (_AC (1, ULL) << 18)
|
|
#define SYSCFG_MTRR_FIX_DRAM_MOD_EN (_AC (1, ULL) << 19)
|
|
#define SYSCFG_MTRR_VAR_DRAM_EN (_AC (1, ULL) << 20)
|
|
#define SYSCFG_MTRR_TOM2_EN (_AC (1, ULL) << 21)
|
|
#define SYSCFG_TOM2_FORCE_WB (_AC (1, ULL) << 22)
|
|
|
|
#define MSR_K8_IORR_BASE0 _AC (0xc0010016, U)
|
|
#define MSR_K8_IORR_MASK0 _AC (0xc0010017, U)
|
|
#define MSR_K8_IORR_BASE1 _AC (0xc0010018, U)
|
|
#define MSR_K8_IORR_MASK1 _AC (0xc0010019, U)
|
|
|
|
#define MSR_K8_TSEG_BASE _AC (0xc0010112, U) /* AMD doc: SMMAddr */
|
|
#define MSR_K8_TSEG_MASK _AC (0xc0010113, U) /* AMD doc: SMMMask */
|
|
|
|
#define MSR_K8_VM_CR _AC (0xc0010114, U)
|
|
#define VM_CR_INIT_REDIRECTION (_AC (1, ULL) << 1)
|
|
#define VM_CR_SVM_DISABLE (_AC (1, ULL) << 4)
|
|
|
|
#define MSR_VIRT_SPEC_CTRL _AC (0xc001011f, U) /* Layout matches MSR_SPEC_CTRL */
|
|
|
|
#define MSR_AMD_CSTATE_CFG 0xc0010296U
|
|
|
|
#define MSR_AMD_CPPC_CAP1 0xc00102b0U
|
|
#define MSR_AMD_CPPC_ENABLE 0xc00102b1U
|
|
#define AMD_CPPC_ENABLE (_AC (1, ULL) << 0)
|
|
#define MSR_AMD_CPPC_REQ 0xc00102b3U
|
|
#define AMD_CPPC_EPP_MASK (_AC (0xff, ULL) << 24)
|
|
|
|
/*
|
|
* Legacy MSR constants in need of cleanup. No new MSRs below this comment.
|
|
*/
|
|
|
|
/* Intel MSRs. Some also available on other CPUs */
|
|
#define MSR_IA32_PERFCTR0 0x000000c1
|
|
#define MSR_IA32_A_PERFCTR0 0x000004c1
|
|
#define MSR_FSB_FREQ 0x000000cd
|
|
|
|
#define MSR_MTRRcap 0x000000fe
|
|
#define MTRRcap_VCNT 0x000000ff
|
|
|
|
#define MSR_IA32_BBL_CR_CTL 0x00000119
|
|
|
|
#define MSR_IA32_SYSENTER_CS 0x00000174
|
|
#define MSR_IA32_SYSENTER_ESP 0x00000175
|
|
#define MSR_IA32_SYSENTER_EIP 0x00000176
|
|
|
|
#define MSR_IA32_MCG_CAP 0x00000179
|
|
#define MSR_IA32_MCG_STATUS 0x0000017a
|
|
#define MSR_IA32_MCG_CTL 0x0000017b
|
|
#define MSR_IA32_MCG_EXT_CTL 0x000004d0
|
|
|
|
#define MSR_IA32_PEBS_ENABLE 0x000003f1
|
|
#define MSR_IA32_DS_AREA 0x00000600
|
|
#define MSR_IA32_PERF_CAPABILITIES 0x00000345
|
|
/* Lower 6 bits define the format of the address in the LBR stack */
|
|
#define MSR_IA32_PERF_CAP_LBR_FORMAT 0x3f
|
|
|
|
#define MSR_IA32_BNDCFGS 0x00000d90
|
|
#define IA32_BNDCFGS_ENABLE 0x00000001
|
|
#define IA32_BNDCFGS_PRESERVE 0x00000002
|
|
#define IA32_BNDCFGS_RESERVED 0x00000ffc
|
|
|
|
#define MSR_IA32_XSS 0x00000da0
|
|
|
|
#define MSR_MTRRfix64K_00000 0x00000250
|
|
#define MSR_MTRRfix16K_80000 0x00000258
|
|
#define MSR_MTRRfix16K_A0000 0x00000259
|
|
#define MSR_MTRRfix4K_C0000 0x00000268
|
|
#define MSR_MTRRfix4K_C8000 0x00000269
|
|
#define MSR_MTRRfix4K_D0000 0x0000026a
|
|
#define MSR_MTRRfix4K_D8000 0x0000026b
|
|
#define MSR_MTRRfix4K_E0000 0x0000026c
|
|
#define MSR_MTRRfix4K_E8000 0x0000026d
|
|
#define MSR_MTRRfix4K_F0000 0x0000026e
|
|
#define MSR_MTRRfix4K_F8000 0x0000026f
|
|
#define MSR_MTRRdefType 0x000002ff
|
|
#define MTRRdefType_FE (1u << 10)
|
|
#define MTRRdefType_E (1u << 11)
|
|
|
|
#define MSR_IA32_DEBUGCTLMSR 0x000001d9
|
|
#define IA32_DEBUGCTLMSR_LBR (1 << 0) /* Last Branch Record */
|
|
#define IA32_DEBUGCTLMSR_BTF (1 << 1) /* Single Step on Branches */
|
|
#define IA32_DEBUGCTLMSR_TR (1 << 6) /* Trace Message Enable */
|
|
#define IA32_DEBUGCTLMSR_BTS (1 << 7) /* Branch Trace Store */
|
|
#define IA32_DEBUGCTLMSR_BTINT (1 << 8) /* Branch Trace Interrupt */
|
|
#define IA32_DEBUGCTLMSR_BTS_OFF_OS (1 << 9) /* BTS off if CPL 0 */
|
|
#define IA32_DEBUGCTLMSR_BTS_OFF_USR (1 << 10) /* BTS off if CPL > 0 */
|
|
#define IA32_DEBUGCTLMSR_RTM (1 << 15) /* RTM debugging enable */
|
|
|
|
#define MSR_IA32_LASTBRANCHFROMIP 0x000001db
|
|
#define MSR_IA32_LASTBRANCHTOIP 0x000001dc
|
|
#define MSR_IA32_LASTINTFROMIP 0x000001dd
|
|
#define MSR_IA32_LASTINTTOIP 0x000001de
|
|
|
|
#define MSR_IA32_POWER_CTL 0x000001fc
|
|
|
|
#define MSR_IA32_MTRR_PHYSBASE(n) (0x00000200 + 2 * (n))
|
|
#define MSR_IA32_MTRR_PHYSMASK(n) (0x00000201 + 2 * (n))
|
|
|
|
#define MSR_IA32_CR_PAT 0x00000277
|
|
#define MSR_IA32_CR_PAT_RESET 0x0007040600070406ULL
|
|
|
|
#define MSR_IA32_MC0_CTL 0x00000400
|
|
#define MSR_IA32_MC0_STATUS 0x00000401
|
|
#define MSR_IA32_MC0_ADDR 0x00000402
|
|
#define MSR_IA32_MC0_MISC 0x00000403
|
|
#define MSR_IA32_MC0_CTL2 0x00000280
|
|
#define CMCI_EN (1UL << 30)
|
|
#define CMCI_THRESHOLD_MASK 0x7FFF
|
|
|
|
#define MSR_AMD64_MC0_MASK 0xc0010044U
|
|
|
|
#define MSR_IA32_MCx_CTL(x) (MSR_IA32_MC0_CTL + 4 * (x))
|
|
#define MSR_IA32_MCx_STATUS(x) (MSR_IA32_MC0_STATUS + 4 * (x))
|
|
#define MSR_IA32_MCx_ADDR(x) (MSR_IA32_MC0_ADDR + 4 * (x))
|
|
#define MSR_IA32_MCx_MISC(x) (MSR_IA32_MC0_MISC + 4 * (x))
|
|
#define MSR_IA32_MCx_CTL2(x) (MSR_IA32_MC0_CTL2 + (x))
|
|
|
|
#define MSR_AMD64_MCx_MASK(x) (MSR_AMD64_MC0_MASK + (x))
|
|
|
|
/* MSRs & bits used for VMX enabling */
|
|
#define MSR_IA32_VMX_BASIC 0x480
|
|
#define MSR_IA32_VMX_PINBASED_CTLS 0x481
|
|
#define MSR_IA32_VMX_PROCBASED_CTLS 0x482
|
|
#define MSR_IA32_VMX_EXIT_CTLS 0x483
|
|
#define MSR_IA32_VMX_ENTRY_CTLS 0x484
|
|
#define MSR_IA32_VMX_MISC 0x485
|
|
#define MSR_IA32_VMX_CR0_FIXED0 0x486
|
|
#define MSR_IA32_VMX_CR0_FIXED1 0x487
|
|
#define MSR_IA32_VMX_CR4_FIXED0 0x488
|
|
#define MSR_IA32_VMX_CR4_FIXED1 0x489
|
|
#define MSR_IA32_VMX_VMCS_ENUM 0x48a
|
|
#define MSR_IA32_VMX_PROCBASED_CTLS2 0x48b
|
|
#define MSR_IA32_VMX_EPT_VPID_CAP 0x48c
|
|
#define MSR_IA32_VMX_TRUE_PINBASED_CTLS 0x48d
|
|
#define MSR_IA32_VMX_TRUE_PROCBASED_CTLS 0x48e
|
|
#define MSR_IA32_VMX_TRUE_EXIT_CTLS 0x48f
|
|
#define MSR_IA32_VMX_TRUE_ENTRY_CTLS 0x490
|
|
#define MSR_IA32_VMX_VMFUNC 0x491
|
|
#define MSR_IA32_VMX_PROCBASED_CTLS3 0x492
|
|
|
|
/* K7/K8 MSRs. Not complete. See the architecture manual for a more
|
|
complete list. */
|
|
#define MSR_K7_EVNTSEL0 0xc0010000U
|
|
#define MSR_K7_PERFCTR0 0xc0010004U
|
|
#define MSR_K7_EVNTSEL1 0xc0010001U
|
|
#define MSR_K7_PERFCTR1 0xc0010005U
|
|
#define MSR_K7_EVNTSEL2 0xc0010002U
|
|
#define MSR_K7_PERFCTR2 0xc0010006U
|
|
#define MSR_K7_EVNTSEL3 0xc0010003U
|
|
#define MSR_K7_PERFCTR3 0xc0010007U
|
|
#define MSR_K8_TOP_MEM1 0xc001001aU
|
|
#define MSR_K8_TOP_MEM2 0xc001001dU
|
|
|
|
#define MSR_K8_HWCR 0xc0010015U
|
|
#define K8_HWCR_TSC_FREQ_SEL (1ULL << 24)
|
|
#define K8_HWCR_CPUID_USER_DIS (1ULL << 35)
|
|
|
|
#define MSR_K7_FID_VID_CTL 0xc0010041U
|
|
#define MSR_K7_FID_VID_STATUS 0xc0010042U
|
|
#define MSR_K8_PSTATE_LIMIT 0xc0010061U
|
|
#define MSR_K8_PSTATE_CTRL 0xc0010062U
|
|
#define MSR_K8_PSTATE_STATUS 0xc0010063U
|
|
#define MSR_K8_PSTATE0 0xc0010064U
|
|
#define MSR_K8_PSTATE1 0xc0010065U
|
|
#define MSR_K8_PSTATE2 0xc0010066U
|
|
#define MSR_K8_PSTATE3 0xc0010067U
|
|
#define MSR_K8_PSTATE4 0xc0010068U
|
|
#define MSR_K8_PSTATE5 0xc0010069U
|
|
#define MSR_K8_PSTATE6 0xc001006AU
|
|
#define MSR_K8_PSTATE7 0xc001006BU
|
|
#define MSR_K8_ENABLE_C1E 0xc0010055U
|
|
#define MSR_K8_VM_HSAVE_PA 0xc0010117U
|
|
|
|
#define MSR_AMD_FAM15H_EVNTSEL0 0xc0010200U
|
|
#define MSR_AMD_FAM15H_PERFCTR0 0xc0010201U
|
|
#define MSR_AMD_FAM15H_EVNTSEL1 0xc0010202U
|
|
#define MSR_AMD_FAM15H_PERFCTR1 0xc0010203U
|
|
#define MSR_AMD_FAM15H_EVNTSEL2 0xc0010204U
|
|
#define MSR_AMD_FAM15H_PERFCTR2 0xc0010205U
|
|
#define MSR_AMD_FAM15H_EVNTSEL3 0xc0010206U
|
|
#define MSR_AMD_FAM15H_PERFCTR3 0xc0010207U
|
|
#define MSR_AMD_FAM15H_EVNTSEL4 0xc0010208U
|
|
#define MSR_AMD_FAM15H_PERFCTR4 0xc0010209U
|
|
#define MSR_AMD_FAM15H_EVNTSEL5 0xc001020aU
|
|
#define MSR_AMD_FAM15H_PERFCTR5 0xc001020bU
|
|
|
|
#define MSR_AMD_L7S0_FEATURE_MASK 0xc0011002U
|
|
#define MSR_AMD_THRM_FEATURE_MASK 0xc0011003U
|
|
#define MSR_K8_FEATURE_MASK 0xc0011004U
|
|
#define MSR_K8_EXT_FEATURE_MASK 0xc0011005U
|
|
|
|
/* AMD64 MSRs */
|
|
#define MSR_AMD64_NB_CFG 0xc001001fU
|
|
#define AMD64_NB_CFG_CF8_EXT_ENABLE_BIT 46
|
|
#define MSR_AMD64_LS_CFG 0xc0011020U
|
|
#define MSR_AMD64_IC_CFG 0xc0011021U
|
|
#define MSR_AMD64_DC_CFG 0xc0011022U
|
|
#define MSR_AMD64_DE_CFG 0xc0011029U
|
|
#define AMD64_DE_CFG_LFENCE_SERIALISE (_AC (1, ULL) << 1)
|
|
#define MSR_AMD64_EX_CFG 0xc001102cU
|
|
#define MSR_AMD64_BP_CFG 0xc001102eU
|
|
#define BP_CFG_SPEC_REDUCE (_AC (1, ULL) << 4)
|
|
#define MSR_AMD64_DE_CFG2 0xc00110e3U
|
|
|
|
#define MSR_AMD64_DR0_ADDRESS_MASK 0xc0011027U
|
|
#define MSR_AMD64_DR1_ADDRESS_MASK 0xc0011019U
|
|
#define MSR_AMD64_DR2_ADDRESS_MASK 0xc001101aU
|
|
#define MSR_AMD64_DR3_ADDRESS_MASK 0xc001101bU
|
|
|
|
/* AMD Family10h machine check MSRs */
|
|
#define MSR_F10_MC4_MISC1 0xc0000408U
|
|
#define MSR_F10_MC4_MISC2 0xc0000409U
|
|
#define MSR_F10_MC4_MISC3 0xc000040AU
|
|
|
|
/* AMD Family10h Bus Unit MSRs */
|
|
#define MSR_F10_BU_CFG 0xc0011023U
|
|
#define MSR_F10_BU_CFG2 0xc001102aU
|
|
|
|
/* Other AMD Fam10h MSRs */
|
|
#define MSR_FAM10H_MMIO_CONF_BASE 0xc0010058U
|
|
#define FAM10H_MMIO_CONF_ENABLE (1 << 0)
|
|
#define FAM10H_MMIO_CONF_BUSRANGE_MASK 0xf
|
|
#define FAM10H_MMIO_CONF_BUSRANGE_SHIFT 2
|
|
#define FAM10H_MMIO_CONF_BASE_MASK 0xfffffffULL
|
|
#define FAM10H_MMIO_CONF_BASE_SHIFT 20
|
|
|
|
/* AMD Microcode MSRs */
|
|
#define MSR_AMD_PATCHLEVEL 0x0000008b
|
|
#define MSR_AMD_PATCHLOADER 0xc0010020U
|
|
|
|
/* AMD TSC RATE MSR */
|
|
#define MSR_AMD64_TSC_RATIO 0xc0000104U
|
|
|
|
/* AMD Lightweight Profiling MSRs */
|
|
#define MSR_AMD64_LWP_CFG 0xc0000105U
|
|
#define MSR_AMD64_LWP_CBADDR 0xc0000106U
|
|
|
|
/* AMD OS Visible Workaround MSRs */
|
|
#define MSR_AMD_OSVW_ID_LENGTH 0xc0010140U
|
|
#define MSR_AMD_OSVW_STATUS 0xc0010141U
|
|
|
|
/* AMD Protected Processor Inventory Number */
|
|
#define MSR_AMD_PPIN_CTL 0xc00102f0U
|
|
#define MSR_AMD_PPIN 0xc00102f1U
|
|
|
|
/* VIA Cyrix defined MSRs*/
|
|
#define MSR_VIA_FCR 0x00001107
|
|
#define MSR_VIA_RNG 0x0000110b
|
|
|
|
/* Intel defined MSRs. */
|
|
#define MSR_IA32_TSC 0x00000010
|
|
#define MSR_IA32_PLATFORM_ID 0x00000017
|
|
#define MSR_IA32_EBL_CR_POWERON 0x0000002a
|
|
#define MSR_IA32_EBC_FREQUENCY_ID 0x0000002c
|
|
|
|
#define MSR_IA32_FEATURE_CONTROL 0x0000003a
|
|
#define IA32_FEATURE_CONTROL_LOCK 0x0001
|
|
#define IA32_FEATURE_CONTROL_ENABLE_VMXON_INSIDE_SMX 0x0002
|
|
#define IA32_FEATURE_CONTROL_ENABLE_VMXON_OUTSIDE_SMX 0x0004
|
|
#define IA32_FEATURE_CONTROL_SENTER_PARAM_CTL 0x7f00
|
|
#define IA32_FEATURE_CONTROL_ENABLE_SENTER 0x8000
|
|
#define IA32_FEATURE_CONTROL_SGX_ENABLE 0x40000
|
|
#define IA32_FEATURE_CONTROL_LMCE_ON 0x100000
|
|
|
|
#define MSR_IA32_TSC_ADJUST 0x0000003b
|
|
|
|
#define MSR_IA32_UCODE_WRITE 0x00000079
|
|
#define MSR_IA32_UCODE_REV 0x0000008b
|
|
|
|
#define MSR_IA32_PERF_STATUS 0x00000198
|
|
#define MSR_IA32_PERF_CTL 0x00000199
|
|
|
|
#define MSR_IA32_MPERF 0x000000e7
|
|
#define MSR_IA32_APERF 0x000000e8
|
|
|
|
#define MSR_IA32_THERM_CONTROL 0x0000019a
|
|
#define MSR_IA32_THERM_INTERRUPT 0x0000019b
|
|
#define MSR_IA32_THERM_STATUS 0x0000019c
|
|
#define MSR_IA32_MISC_ENABLE 0x000001a0
|
|
#define MSR_IA32_MISC_ENABLE_FAST_STRING (1 << 0)
|
|
#define MSR_IA32_MISC_ENABLE_PERF_AVAIL (1 << 7)
|
|
#define MSR_IA32_MISC_ENABLE_BTS_UNAVAIL (1 << 11)
|
|
#define MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL (1 << 12)
|
|
#define MSR_IA32_MISC_ENABLE_MONITOR_ENABLE (1 << 18)
|
|
#define MSR_IA32_MISC_ENABLE_LIMIT_CPUID (1 << 22)
|
|
#define MSR_IA32_MISC_ENABLE_XTPR_DISABLE (1 << 23)
|
|
#define MSR_IA32_MISC_ENABLE_XD_DISABLE (_AC (1, ULL) << 34)
|
|
#define MSR_IA32_MISC_ENABLE_TURBO_DISENGAGE (_AC (1, ULL) << 38)
|
|
|
|
#define MSR_IA32_TSC_DEADLINE 0x000006E0
|
|
#define MSR_IA32_ENERGY_PERF_BIAS 0x000001b0
|
|
|
|
/* Platform Shared Resource MSRs */
|
|
#define MSR_IA32_CMT_EVTSEL 0x00000c8d
|
|
#define MSR_IA32_CMT_EVTSEL_UE_MASK 0x0000ffff
|
|
#define MSR_IA32_CMT_CTR 0x00000c8e
|
|
#define MSR_IA32_PSR_ASSOC 0x00000c8f
|
|
#define MSR_IA32_PSR_L3_QOS_CFG 0x00000c81
|
|
#define MSR_IA32_PSR_L3_MASK(n) (0x00000c90 + (n))
|
|
#define MSR_IA32_PSR_L3_MASK_CODE(n) (0x00000c90 + (n) * 2 + 1)
|
|
#define MSR_IA32_PSR_L3_MASK_DATA(n) (0x00000c90 + (n) * 2)
|
|
#define MSR_IA32_PSR_L2_MASK(n) (0x00000d10 + (n))
|
|
#define MSR_IA32_PSR_MBA_MASK(n) (0x00000d50 + (n))
|
|
|
|
/* Intel Model 6 */
|
|
#define MSR_P6_PERFCTR(n) (0x000000c1 + (n))
|
|
#define MSR_P6_EVNTSEL(n) (0x00000186 + (n))
|
|
|
|
/* P4/Xeon+ specific */
|
|
#define MSR_IA32_MCG_EAX 0x00000180
|
|
#define MSR_IA32_MCG_EBX 0x00000181
|
|
#define MSR_IA32_MCG_ECX 0x00000182
|
|
#define MSR_IA32_MCG_EDX 0x00000183
|
|
#define MSR_IA32_MCG_ESI 0x00000184
|
|
#define MSR_IA32_MCG_EDI 0x00000185
|
|
#define MSR_IA32_MCG_EBP 0x00000186
|
|
#define MSR_IA32_MCG_ESP 0x00000187
|
|
#define MSR_IA32_MCG_EFLAGS 0x00000188
|
|
#define MSR_IA32_MCG_EIP 0x00000189
|
|
#define MSR_IA32_MCG_MISC 0x0000018a
|
|
#define MSR_IA32_MCG_R8 0x00000190
|
|
#define MSR_IA32_MCG_R9 0x00000191
|
|
#define MSR_IA32_MCG_R10 0x00000192
|
|
#define MSR_IA32_MCG_R11 0x00000193
|
|
#define MSR_IA32_MCG_R12 0x00000194
|
|
#define MSR_IA32_MCG_R13 0x00000195
|
|
#define MSR_IA32_MCG_R14 0x00000196
|
|
#define MSR_IA32_MCG_R15 0x00000197
|
|
|
|
/* Pentium IV performance counter MSRs */
|
|
#define MSR_P4_BPU_PERFCTR0 0x00000300
|
|
#define MSR_P4_BPU_PERFCTR1 0x00000301
|
|
#define MSR_P4_BPU_PERFCTR2 0x00000302
|
|
#define MSR_P4_BPU_PERFCTR3 0x00000303
|
|
#define MSR_P4_MS_PERFCTR0 0x00000304
|
|
#define MSR_P4_MS_PERFCTR1 0x00000305
|
|
#define MSR_P4_MS_PERFCTR2 0x00000306
|
|
#define MSR_P4_MS_PERFCTR3 0x00000307
|
|
#define MSR_P4_FLAME_PERFCTR0 0x00000308
|
|
#define MSR_P4_FLAME_PERFCTR1 0x00000309
|
|
#define MSR_P4_FLAME_PERFCTR2 0x0000030a
|
|
#define MSR_P4_FLAME_PERFCTR3 0x0000030b
|
|
#define MSR_P4_IQ_PERFCTR0 0x0000030c
|
|
#define MSR_P4_IQ_PERFCTR1 0x0000030d
|
|
#define MSR_P4_IQ_PERFCTR2 0x0000030e
|
|
#define MSR_P4_IQ_PERFCTR3 0x0000030f
|
|
#define MSR_P4_IQ_PERFCTR4 0x00000310
|
|
#define MSR_P4_IQ_PERFCTR5 0x00000311
|
|
#define MSR_P4_BPU_CCCR0 0x00000360
|
|
#define MSR_P4_BPU_CCCR1 0x00000361
|
|
#define MSR_P4_BPU_CCCR2 0x00000362
|
|
#define MSR_P4_BPU_CCCR3 0x00000363
|
|
#define MSR_P4_MS_CCCR0 0x00000364
|
|
#define MSR_P4_MS_CCCR1 0x00000365
|
|
#define MSR_P4_MS_CCCR2 0x00000366
|
|
#define MSR_P4_MS_CCCR3 0x00000367
|
|
#define MSR_P4_FLAME_CCCR0 0x00000368
|
|
#define MSR_P4_FLAME_CCCR1 0x00000369
|
|
#define MSR_P4_FLAME_CCCR2 0x0000036a
|
|
#define MSR_P4_FLAME_CCCR3 0x0000036b
|
|
#define MSR_P4_IQ_CCCR0 0x0000036c
|
|
#define MSR_P4_IQ_CCCR1 0x0000036d
|
|
#define MSR_P4_IQ_CCCR2 0x0000036e
|
|
#define MSR_P4_IQ_CCCR3 0x0000036f
|
|
#define MSR_P4_IQ_CCCR4 0x00000370
|
|
#define MSR_P4_IQ_CCCR5 0x00000371
|
|
#define MSR_P4_ALF_ESCR0 0x000003ca
|
|
#define MSR_P4_ALF_ESCR1 0x000003cb
|
|
#define MSR_P4_BPU_ESCR0 0x000003b2
|
|
#define MSR_P4_BPU_ESCR1 0x000003b3
|
|
#define MSR_P4_BSU_ESCR0 0x000003a0
|
|
#define MSR_P4_BSU_ESCR1 0x000003a1
|
|
#define MSR_P4_CRU_ESCR0 0x000003b8
|
|
#define MSR_P4_CRU_ESCR1 0x000003b9
|
|
#define MSR_P4_CRU_ESCR2 0x000003cc
|
|
#define MSR_P4_CRU_ESCR3 0x000003cd
|
|
#define MSR_P4_CRU_ESCR4 0x000003e0
|
|
#define MSR_P4_CRU_ESCR5 0x000003e1
|
|
#define MSR_P4_DAC_ESCR0 0x000003a8
|
|
#define MSR_P4_DAC_ESCR1 0x000003a9
|
|
#define MSR_P4_FIRM_ESCR0 0x000003a4
|
|
#define MSR_P4_FIRM_ESCR1 0x000003a5
|
|
#define MSR_P4_FLAME_ESCR0 0x000003a6
|
|
#define MSR_P4_FLAME_ESCR1 0x000003a7
|
|
#define MSR_P4_FSB_ESCR0 0x000003a2
|
|
#define MSR_P4_FSB_ESCR1 0x000003a3
|
|
#define MSR_P4_IQ_ESCR0 0x000003ba
|
|
#define MSR_P4_IQ_ESCR1 0x000003bb
|
|
#define MSR_P4_IS_ESCR0 0x000003b4
|
|
#define MSR_P4_IS_ESCR1 0x000003b5
|
|
#define MSR_P4_ITLB_ESCR0 0x000003b6
|
|
#define MSR_P4_ITLB_ESCR1 0x000003b7
|
|
#define MSR_P4_IX_ESCR0 0x000003c8
|
|
#define MSR_P4_IX_ESCR1 0x000003c9
|
|
#define MSR_P4_MOB_ESCR0 0x000003aa
|
|
#define MSR_P4_MOB_ESCR1 0x000003ab
|
|
#define MSR_P4_MS_ESCR0 0x000003c0
|
|
#define MSR_P4_MS_ESCR1 0x000003c1
|
|
#define MSR_P4_PMH_ESCR0 0x000003ac
|
|
#define MSR_P4_PMH_ESCR1 0x000003ad
|
|
#define MSR_P4_RAT_ESCR0 0x000003bc
|
|
#define MSR_P4_RAT_ESCR1 0x000003bd
|
|
#define MSR_P4_SAAT_ESCR0 0x000003ae
|
|
#define MSR_P4_SAAT_ESCR1 0x000003af
|
|
#define MSR_P4_SSU_ESCR0 0x000003be
|
|
#define MSR_P4_SSU_ESCR1 0x000003bf /* guess: not in manual */
|
|
|
|
#define MSR_P4_TBPU_ESCR0 0x000003c2
|
|
#define MSR_P4_TBPU_ESCR1 0x000003c3
|
|
#define MSR_P4_TC_ESCR0 0x000003c4
|
|
#define MSR_P4_TC_ESCR1 0x000003c5
|
|
#define MSR_P4_U2L_ESCR0 0x000003b0
|
|
#define MSR_P4_U2L_ESCR1 0x000003b1
|
|
|
|
/* Netburst (P4) last-branch recording */
|
|
#define MSR_P4_LER_FROM_LIP 0x000001d7
|
|
#define MSR_P4_LER_TO_LIP 0x000001d8
|
|
#define MSR_P4_LASTBRANCH_TOS 0x000001da
|
|
#define MSR_P4_LASTBRANCH_0 0x000001db
|
|
#define NUM_MSR_P4_LASTBRANCH 4
|
|
#define MSR_P4_LASTBRANCH_0_FROM_LIP 0x00000680
|
|
#define MSR_P4_LASTBRANCH_0_TO_LIP 0x000006c0
|
|
#define NUM_MSR_P4_LASTBRANCH_FROM_TO 16
|
|
|
|
/* Core 2 and Atom last-branch recording */
|
|
#define MSR_C2_LASTBRANCH_TOS 0x000001c9
|
|
#define MSR_C2_LASTBRANCH_0_FROM_IP 0x00000040
|
|
#define MSR_C2_LASTBRANCH_0_TO_IP 0x00000060
|
|
#define NUM_MSR_C2_LASTBRANCH_FROM_TO 4
|
|
#define NUM_MSR_ATOM_LASTBRANCH_FROM_TO 8
|
|
|
|
/* Nehalem (and newer) last-branch recording */
|
|
#define MSR_NHL_LBR_SELECT 0x000001c8
|
|
#define MSR_NHL_LASTBRANCH_TOS 0x000001c9
|
|
|
|
/* Skylake (and newer) last-branch recording */
|
|
#define MSR_SKL_LASTBRANCH_0_FROM_IP 0x00000680
|
|
#define MSR_SKL_LASTBRANCH_0_TO_IP 0x000006c0
|
|
#define MSR_SKL_LASTBRANCH_0_INFO 0x00000dc0
|
|
#define NUM_MSR_SKL_LASTBRANCH 32
|
|
|
|
/* Silvermont (and newer) last-branch recording */
|
|
#define MSR_SM_LBR_SELECT 0x000001c8
|
|
#define MSR_SM_LASTBRANCH_TOS 0x000001c9
|
|
|
|
/* Goldmont last-branch recording */
|
|
#define MSR_GM_LASTBRANCH_0_FROM_IP 0x00000680
|
|
#define MSR_GM_LASTBRANCH_0_TO_IP 0x000006c0
|
|
#define NUM_MSR_GM_LASTBRANCH_FROM_TO 32
|
|
|
|
/* Intel Core-based CPU performance counters */
|
|
#define MSR_CORE_PERF_FIXED_CTR0 0x00000309
|
|
#define MSR_CORE_PERF_FIXED_CTR1 0x0000030a
|
|
#define MSR_CORE_PERF_FIXED_CTR2 0x0000030b
|
|
#define MSR_CORE_PERF_FIXED_CTR_CTRL 0x0000038d
|
|
#define MSR_CORE_PERF_GLOBAL_STATUS 0x0000038e
|
|
#define MSR_CORE_PERF_GLOBAL_CTRL 0x0000038f
|
|
#define MSR_CORE_PERF_GLOBAL_OVF_CTRL 0x00000390
|
|
|
|
/* Intel cpuid spoofing MSRs */
|
|
#define MSR_INTEL_MASK_V1_CPUID1 0x00000478
|
|
|
|
#define MSR_INTEL_MASK_V2_CPUID1 0x00000130
|
|
#define MSR_INTEL_MASK_V2_CPUID80000001 0x00000131
|
|
|
|
#define MSR_INTEL_MASK_V3_CPUID1 0x00000132
|
|
#define MSR_INTEL_MASK_V3_CPUID80000001 0x00000133
|
|
#define MSR_INTEL_MASK_V3_CPUIDD_01 0x00000134
|
|
|
|
/* Intel cpuid faulting MSRs */
|
|
#define MSR_INTEL_PLATFORM_INFO 0x000000ce
|
|
#define _MSR_PLATFORM_INFO_CPUID_FAULTING 31
|
|
#define MSR_PLATFORM_INFO_CPUID_FAULTING (1ULL << _MSR_PLATFORM_INFO_CPUID_FAULTING)
|
|
|
|
#define MSR_INTEL_MISC_FEATURES_ENABLES 0x00000140
|
|
#define _MSR_MISC_FEATURES_CPUID_FAULTING 0
|
|
#define MSR_MISC_FEATURES_CPUID_FAULTING (1ULL << _MSR_MISC_FEATURES_CPUID_FAULTING)
|
|
|
|
#define MSR_CC6_DEMOTION_POLICY_CONFIG 0x00000668
|
|
#define MSR_MC6_DEMOTION_POLICY_CONFIG 0x00000669
|
|
|
|
/* Interrupt Response Limit */
|
|
#define MSR_PKGC3_IRTL 0x0000060a
|
|
#define MSR_PKGC6_IRTL 0x0000060b
|
|
#define MSR_PKGC7_IRTL 0x0000060c
|
|
#define MSR_PKGC8_IRTL 0x00000633
|
|
#define MSR_PKGC9_IRTL 0x00000634
|
|
#define MSR_PKGC10_IRTL 0x00000635
|
|
|
|
#endif /* __ASM_MSR_INDEX_H */
|