Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

docs: arm64: convert docs to ReST and rename to .rst

The documentation is in a format that is very close to ReST format.

The conversion is actually:
- add blank lines in order to identify paragraphs;
- fixing tables markups;
- adding some lists markups;
- marking literal blocks;
- adjust some title markups.

At its new index.rst, let's add a :orphan: while this is not linked to
the main index.rst file, in order to avoid build warnings.

Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>

authored by

Mauro Carvalho Chehab and committed by
Jonathan Corbet
b693d0b3 305a99eb

+703 -479
+202 -86
Documentation/arm64/acpi_object_usage.txt Documentation/arm64/acpi_object_usage.rst
··· 1 + =========== 1 2 ACPI Tables 2 - ----------- 3 + =========== 4 + 3 5 The expectations of individual ACPI tables are discussed in the list that 4 6 follows. 5 7 ··· 13 11 14 12 For ACPI on arm64, tables also fall into the following categories: 15 13 16 - -- Required: DSDT, FADT, GTDT, MADT, MCFG, RSDP, SPCR, XSDT 14 + - Required: DSDT, FADT, GTDT, MADT, MCFG, RSDP, SPCR, XSDT 17 15 18 - -- Recommended: BERT, EINJ, ERST, HEST, PCCT, SSDT 16 + - Recommended: BERT, EINJ, ERST, HEST, PCCT, SSDT 19 17 20 - -- Optional: BGRT, CPEP, CSRT, DBG2, DRTM, ECDT, FACS, FPDT, IORT, 18 + - Optional: BGRT, CPEP, CSRT, DBG2, DRTM, ECDT, FACS, FPDT, IORT, 21 19 MCHI, MPST, MSCT, NFIT, PMTT, RASF, SBST, SLIT, SPMI, SRAT, STAO, 22 20 TCPA, TPM2, UEFI, XENV 23 21 24 - -- Not supported: BOOT, DBGP, DMAR, ETDT, HPET, IBFT, IVRS, LPIT, 22 + - Not supported: BOOT, DBGP, DMAR, ETDT, HPET, IBFT, IVRS, LPIT, 25 23 MSDM, OEMx, PSDT, RSDT, SLIC, WAET, WDAT, WDRT, WPBT 26 24 25 + ====== ======================================================================== 27 26 Table Usage for ARMv8 Linux 28 - ----- ---------------------------------------------------------------- 27 + ====== ======================================================================== 29 28 BERT Section 18.3 (signature == "BERT") 30 - == Boot Error Record Table == 29 + 30 + **Boot Error Record Table** 31 + 31 32 Must be supplied if RAS support is provided by the platform. It 32 33 is recommended this table be supplied. 33 34 34 35 BOOT Signature Reserved (signature == "BOOT") 35 - == simple BOOT flag table == 36 + 37 + **simple BOOT flag table** 38 + 36 39 Microsoft only table, will not be supported. 37 40 38 41 BGRT Section 5.2.22 (signature == "BGRT") 39 - == Boot Graphics Resource Table == 42 + 43 + **Boot Graphics Resource Table** 44 + 40 45 Optional, not currently supported, with no real use-case for an 41 46 ARM server. 42 47 43 48 CPEP Section 5.2.18 (signature == "CPEP") 44 - == Corrected Platform Error Polling table == 49 + 50 + **Corrected Platform Error Polling table** 51 + 45 52 Optional, not currently supported, and not recommended until such 46 53 time as ARM-compatible hardware is available, and the specification 47 54 suitably modified. 48 55 49 56 CSRT Signature Reserved (signature == "CSRT") 50 - == Core System Resources Table == 57 + 58 + **Core System Resources Table** 59 + 51 60 Optional, not currently supported. 52 61 53 62 DBG2 Signature Reserved (signature == "DBG2") 54 - == DeBuG port table 2 == 63 + 64 + **DeBuG port table 2** 65 + 55 66 License has changed and should be usable. Optional if used instead 56 67 of earlycon=<device> on the command line. 57 68 58 69 DBGP Signature Reserved (signature == "DBGP") 59 - == DeBuG Port table == 70 + 71 + **DeBuG Port table** 72 + 60 73 Microsoft only table, will not be supported. 61 74 62 75 DSDT Section 5.2.11.1 (signature == "DSDT") 63 - == Differentiated System Description Table == 76 + 77 + **Differentiated System Description Table** 78 + 64 79 A DSDT is required; see also SSDT. 65 80 66 81 ACPI tables contain only one DSDT but can contain one or more SSDTs, ··· 85 66 but cannot modify or replace anything in the DSDT. 86 67 87 68 DMAR Signature Reserved (signature == "DMAR") 88 - == DMA Remapping table == 69 + 70 + **DMA Remapping table** 71 + 89 72 x86 only table, will not be supported. 90 73 91 74 DRTM Signature Reserved (signature == "DRTM") 92 - == Dynamic Root of Trust for Measurement table == 75 + 76 + **Dynamic Root of Trust for Measurement table** 77 + 93 78 Optional, not currently supported. 94 79 95 80 ECDT Section 5.2.16 (signature == "ECDT") 96 - == Embedded Controller Description Table == 81 + 82 + **Embedded Controller Description Table** 83 + 97 84 Optional, not currently supported, but could be used on ARM if and 98 85 only if one uses the GPE_BIT field to represent an IRQ number, since 99 86 there are no GPE blocks defined in hardware reduced mode. This would 100 87 need to be modified in the ACPI specification. 101 88 102 89 EINJ Section 18.6 (signature == "EINJ") 103 - == Error Injection table == 90 + 91 + **Error Injection table** 92 + 104 93 This table is very useful for testing platform response to error 105 94 conditions; it allows one to inject an error into the system as 106 95 if it had actually occurred. However, this table should not be ··· 116 89 and executed with the ACPICA tools only during testing. 117 90 118 91 ERST Section 18.5 (signature == "ERST") 119 - == Error Record Serialization Table == 92 + 93 + **Error Record Serialization Table** 94 + 120 95 On a platform supports RAS, this table must be supplied if it is not 121 96 UEFI-based; if it is UEFI-based, this table may be supplied. When this 122 97 table is not present, UEFI run time service will be utilized to save 123 98 and retrieve hardware error information to and from a persistent store. 124 99 125 100 ETDT Signature Reserved (signature == "ETDT") 126 - == Event Timer Description Table == 101 + 102 + **Event Timer Description Table** 103 + 127 104 Obsolete table, will not be supported. 128 105 129 106 FACS Section 5.2.10 (signature == "FACS") 130 - == Firmware ACPI Control Structure == 107 + 108 + **Firmware ACPI Control Structure** 109 + 131 110 It is unlikely that this table will be terribly useful. If it is 132 111 provided, the Global Lock will NOT be used since it is not part of 133 112 the hardware reduced profile, and only 64-bit address fields will 134 113 be considered valid. 135 114 136 115 FADT Section 5.2.9 (signature == "FACP") 137 - == Fixed ACPI Description Table == 116 + 117 + **Fixed ACPI Description Table** 138 118 Required for arm64. 119 + 139 120 140 121 The HW_REDUCED_ACPI flag must be set. All of the fields that are 141 122 to be ignored when HW_REDUCED_ACPI is set are expected to be set to ··· 153 118 used, not FIRMWARE_CTRL. 154 119 155 120 If PSCI is used (as is recommended), make sure that ARM_BOOT_ARCH is 156 - filled in properly -- that the PSCI_COMPLIANT flag is set and that 121 + filled in properly - that the PSCI_COMPLIANT flag is set and that 157 122 PSCI_USE_HVC is set or unset as needed (see table 5-37). 158 123 159 124 For the DSDT that is also required, the X_DSDT field is to be used, 160 125 not the DSDT field. 161 126 162 127 FPDT Section 5.2.23 (signature == "FPDT") 163 - == Firmware Performance Data Table == 128 + 129 + **Firmware Performance Data Table** 130 + 164 131 Optional, not currently supported. 165 132 166 133 GTDT Section 5.2.24 (signature == "GTDT") 167 - == Generic Timer Description Table == 134 + 135 + **Generic Timer Description Table** 136 + 168 137 Required for arm64. 169 138 170 139 HEST Section 18.3.2 (signature == "HEST") 171 - == Hardware Error Source Table == 140 + 141 + **Hardware Error Source Table** 142 + 172 143 ARM-specific error sources have been defined; please use those or the 173 144 PCI types such as type 6 (AER Root Port), 7 (AER Endpoint), or 8 (AER 174 145 Bridge), or use type 9 (Generic Hardware Error Source). Firmware first ··· 185 144 is recommended this table be supplied. 186 145 187 146 HPET Signature Reserved (signature == "HPET") 188 - == High Precision Event timer Table == 147 + 148 + **High Precision Event timer Table** 149 + 189 150 x86 only table, will not be supported. 190 151 191 152 IBFT Signature Reserved (signature == "IBFT") 192 - == iSCSI Boot Firmware Table == 153 + 154 + **iSCSI Boot Firmware Table** 155 + 193 156 Microsoft defined table, support TBD. 194 157 195 158 IORT Signature Reserved (signature == "IORT") 196 - == Input Output Remapping Table == 159 + 160 + **Input Output Remapping Table** 161 + 197 162 arm64 only table, required in order to describe IO topology, SMMUs, 198 163 and GIC ITSs, and how those various components are connected together, 199 164 such as identifying which components are behind which SMMUs/ITSs. 200 165 This table will only be required on certain SBSA platforms (e.g., 201 - when using GICv3-ITS and an SMMU); on SBSA Level 0 platforms, it 166 + when using GICv3-ITS and an SMMU); on SBSA Level 0 platforms, it 202 167 remains optional. 203 168 204 169 IVRS Signature Reserved (signature == "IVRS") 205 - == I/O Virtualization Reporting Structure == 170 + 171 + **I/O Virtualization Reporting Structure** 172 + 206 173 x86_64 (AMD) only table, will not be supported. 207 174 208 175 LPIT Signature Reserved (signature == "LPIT") 209 - == Low Power Idle Table == 176 + 177 + **Low Power Idle Table** 178 + 210 179 x86 only table as of ACPI 5.1; starting with ACPI 6.0, processor 211 180 descriptions and power states on ARM platforms should use the DSDT 212 181 and define processor container devices (_HID ACPI0010, Section 8.4, 213 182 and more specifically 8.4.3 and and 8.4.4). 214 183 215 184 MADT Section 5.2.12 (signature == "APIC") 216 - == Multiple APIC Description Table == 185 + 186 + **Multiple APIC Description Table** 187 + 217 188 Required for arm64. Only the GIC interrupt controller structures 218 189 should be used (types 0xA - 0xF). 219 190 220 191 MCFG Signature Reserved (signature == "MCFG") 221 - == Memory-mapped ConFiGuration space == 192 + 193 + **Memory-mapped ConFiGuration space** 194 + 222 195 If the platform supports PCI/PCIe, an MCFG table is required. 223 196 224 197 MCHI Signature Reserved (signature == "MCHI") 225 - == Management Controller Host Interface table == 198 + 199 + **Management Controller Host Interface table** 200 + 226 201 Optional, not currently supported. 227 202 228 203 MPST Section 5.2.21 (signature == "MPST") 229 - == Memory Power State Table == 204 + 205 + **Memory Power State Table** 206 + 230 207 Optional, not currently supported. 231 208 232 209 MSCT Section 5.2.19 (signature == "MSCT") 233 - == Maximum System Characteristic Table == 210 + 211 + **Maximum System Characteristic Table** 212 + 234 213 Optional, not currently supported. 235 214 236 215 MSDM Signature Reserved (signature == "MSDM") 237 - == Microsoft Data Management table == 216 + 217 + **Microsoft Data Management table** 218 + 238 219 Microsoft only table, will not be supported. 239 220 240 221 NFIT Section 5.2.25 (signature == "NFIT") 241 - == NVDIMM Firmware Interface Table == 222 + 223 + **NVDIMM Firmware Interface Table** 224 + 242 225 Optional, not currently supported. 243 226 244 227 OEMx Signature of "OEMx" only 245 - == OEM Specific Tables == 228 + 229 + **OEM Specific Tables** 230 + 246 231 All tables starting with a signature of "OEM" are reserved for OEM 247 232 use. Since these are not meant to be of general use but are limited 248 233 to very specific end users, they are not recommended for use and are 249 234 not supported by the kernel for arm64. 250 235 251 236 PCCT Section 14.1 (signature == "PCCT) 252 - == Platform Communications Channel Table == 237 + 238 + **Platform Communications Channel Table** 239 + 253 240 Recommend for use on arm64; use of PCC is recommended when using CPPC 254 241 to control performance and power for platform processors. 255 242 256 243 PMTT Section 5.2.21.12 (signature == "PMTT") 257 - == Platform Memory Topology Table == 244 + 245 + **Platform Memory Topology Table** 246 + 258 247 Optional, not currently supported. 259 248 260 249 PSDT Section 5.2.11.3 (signature == "PSDT") 261 - == Persistent System Description Table == 250 + 251 + **Persistent System Description Table** 252 + 262 253 Obsolete table, will not be supported. 263 254 264 255 RASF Section 5.2.20 (signature == "RASF") 265 - == RAS Feature table == 256 + 257 + **RAS Feature table** 258 + 266 259 Optional, not currently supported. 267 260 268 261 RSDP Section 5.2.5 (signature == "RSD PTR") 269 - == Root System Description PoinTeR == 262 + 263 + **Root System Description PoinTeR** 264 + 270 265 Required for arm64. 271 266 272 267 RSDT Section 5.2.7 (signature == "RSDT") 273 - == Root System Description Table == 268 + 269 + **Root System Description Table** 270 + 274 271 Since this table can only provide 32-bit addresses, it is deprecated 275 272 on arm64, and will not be used. If provided, it will be ignored. 276 273 277 274 SBST Section 5.2.14 (signature == "SBST") 278 - == Smart Battery Subsystem Table == 275 + 276 + **Smart Battery Subsystem Table** 277 + 279 278 Optional, not currently supported. 280 279 281 280 SLIC Signature Reserved (signature == "SLIC") 282 - == Software LIcensing table == 281 + 282 + **Software LIcensing table** 283 + 283 284 Microsoft only table, will not be supported. 284 285 285 286 SLIT Section 5.2.17 (signature == "SLIT") 286 - == System Locality distance Information Table == 287 + 288 + **System Locality distance Information Table** 289 + 287 290 Optional in general, but required for NUMA systems. 288 291 289 292 SPCR Signature Reserved (signature == "SPCR") 290 - == Serial Port Console Redirection table == 293 + 294 + **Serial Port Console Redirection table** 295 + 291 296 Required for arm64. 292 297 293 298 SPMI Signature Reserved (signature == "SPMI") 294 - == Server Platform Management Interface table == 299 + 300 + **Server Platform Management Interface table** 301 + 295 302 Optional, not currently supported. 296 303 297 304 SRAT Section 5.2.16 (signature == "SRAT") 298 - == System Resource Affinity Table == 305 + 306 + **System Resource Affinity Table** 307 + 299 308 Optional, but if used, only the GICC Affinity structures are read. 300 309 To support arm64 NUMA, this table is required. 301 310 302 311 SSDT Section 5.2.11.2 (signature == "SSDT") 303 - == Secondary System Description Table == 312 + 313 + **Secondary System Description Table** 314 + 304 315 These tables are a continuation of the DSDT; these are recommended 305 316 for use with devices that can be added to a running system, but can 306 317 also serve the purpose of dividing up device descriptions into more ··· 365 272 one DSDT but can contain many SSDTs. 366 273 367 274 STAO Signature Reserved (signature == "STAO") 368 - == _STA Override table == 275 + 276 + **_STA Override table** 277 + 369 278 Optional, but only necessary in virtualized environments in order to 370 279 hide devices from guest OSs. 371 280 372 281 TCPA Signature Reserved (signature == "TCPA") 373 - == Trusted Computing Platform Alliance table == 282 + 283 + **Trusted Computing Platform Alliance table** 284 + 374 285 Optional, not currently supported, and may need changes to fully 375 286 interoperate with arm64. 376 287 377 288 TPM2 Signature Reserved (signature == "TPM2") 378 - == Trusted Platform Module 2 table == 289 + 290 + **Trusted Platform Module 2 table** 291 + 379 292 Optional, not currently supported, and may need changes to fully 380 293 interoperate with arm64. 381 294 382 295 UEFI Signature Reserved (signature == "UEFI") 383 - == UEFI ACPI data table == 296 + 297 + **UEFI ACPI data table** 298 + 384 299 Optional, not currently supported. No known use case for arm64, 385 300 at present. 386 301 387 302 WAET Signature Reserved (signature == "WAET") 388 - == Windows ACPI Emulated devices Table == 303 + 304 + **Windows ACPI Emulated devices Table** 305 + 389 306 Microsoft only table, will not be supported. 390 307 391 308 WDAT Signature Reserved (signature == "WDAT") 392 - == Watch Dog Action Table == 309 + 310 + **Watch Dog Action Table** 311 + 393 312 Microsoft only table, will not be supported. 394 313 395 314 WDRT Signature Reserved (signature == "WDRT") 396 - == Watch Dog Resource Table == 315 + 316 + **Watch Dog Resource Table** 317 + 397 318 Microsoft only table, will not be supported. 398 319 399 320 WPBT Signature Reserved (signature == "WPBT") 400 - == Windows Platform Binary Table == 321 + 322 + **Windows Platform Binary Table** 323 + 401 324 Microsoft only table, will not be supported. 402 325 403 326 XENV Signature Reserved (signature == "XENV") 404 - == Xen project table == 327 + 328 + **Xen project table** 329 + 405 330 Optional, used only by Xen at present. 406 331 407 332 XSDT Section 5.2.8 (signature == "XSDT") 408 - == eXtended System Description Table == 409 - Required for arm64. 410 333 334 + **eXtended System Description Table** 335 + 336 + Required for arm64. 337 + ====== ======================================================================== 411 338 412 339 ACPI Objects 413 340 ------------ ··· 436 323 should be used as needed for a particular platform or particular subsystem, 437 324 such as power management or PCI. 438 325 326 + ===== ================ ======================================================== 439 327 Name Section Usage for ARMv8 Linux 440 - ---- ------------ ------------------------------------------------- 328 + ===== ================ ======================================================== 441 329 _CCA 6.2.17 This method must be defined for all bus masters 442 - on arm64 -- there are no assumptions made about 330 + on arm64 - there are no assumptions made about 443 331 whether such devices are cache coherent or not. 444 332 The _CCA value is inherited by all descendants of 445 333 these devices so it does not need to be repeated. ··· 536 422 by the kernel community, then register it with the 537 423 UEFI Forum. 538 424 539 - \_OSI 5.7.2 Deprecated on ARM64. As far as ACPI firmware is 540 - concerned, _OSI is not to be used to determine what 425 + \_OSI 5.7.2 Deprecated on ARM64. As far as ACPI firmware is 426 + concerned, _OSI is not to be used to determine what 541 427 sort of system is being used or what functionality 542 428 is provided. The _OSC method is to be used instead. 543 429 ··· 561 447 usage, change them in these methods. 562 448 563 449 _RDI 8.4.4.4 Recommended for use with processor definitions (_HID 564 - ACPI0010) on arm64. This should only be used in 450 + ACPI0010) on arm64. This should only be used in 565 451 conjunction with _LPI. 566 452 567 453 \_REV 5.7.4 Always returns the latest version of ACPI supported. ··· 590 476 591 477 _UID 6.1.12 Recommended for distinguishing devices of the same 592 478 class; define it if at all possible. 479 + ===== ================ ======================================================== 593 480 594 481 595 482 ··· 603 488 604 489 There are two options: GPIO-signaled interrupts (Section 5.6.5), and 605 490 interrupt-signaled events (Section 5.6.9). Interrupt-signaled events are a 606 - new feature in the ACPI 6.1 specification. Either -- or both -- can be used 491 + new feature in the ACPI 6.1 specification. Either - or both - can be used 607 492 on a given platform, and which to use may be dependent of limitations in any 608 493 given SoC. If possible, interrupt-signaled events are recommended. 609 494 ··· 679 564 680 565 The following classes of objects are not supported: 681 566 682 - -- Section 9.2: ambient light sensor devices 567 + - Section 9.2: ambient light sensor devices 683 568 684 - -- Section 9.3: battery devices 569 + - Section 9.3: battery devices 685 570 686 - -- Section 9.4: lids (e.g., laptop lids) 571 + - Section 9.4: lids (e.g., laptop lids) 687 572 688 - -- Section 9.8.2: IDE controllers 573 + - Section 9.8.2: IDE controllers 689 574 690 - -- Section 9.9: floppy controllers 575 + - Section 9.9: floppy controllers 691 576 692 - -- Section 9.10: GPE block devices 577 + - Section 9.10: GPE block devices 693 578 694 - -- Section 9.15: PC/AT RTC/CMOS devices 579 + - Section 9.15: PC/AT RTC/CMOS devices 695 580 696 - -- Section 9.16: user presence detection devices 581 + - Section 9.16: user presence detection devices 697 582 698 - -- Section 9.17: I/O APIC devices; all GICs must be enumerable via MADT 583 + - Section 9.17: I/O APIC devices; all GICs must be enumerable via MADT 699 584 700 - -- Section 9.18: time and alarm devices (see 9.15) 585 + - Section 9.18: time and alarm devices (see 9.15) 701 586 702 - -- Section 10: power source and power meter devices 587 + - Section 10: power source and power meter devices 703 588 704 - -- Section 11: thermal management 589 + - Section 11: thermal management 705 590 706 - -- Section 12: embedded controllers interface 591 + - Section 12: embedded controllers interface 707 592 708 - -- Section 13: SMBus interfaces 593 + - Section 13: SMBus interfaces 709 594 710 595 711 596 This also means that there is no support for the following objects: 712 597 598 + ==== =========================== ==== ========== 713 599 Name Section Name Section 714 - ---- ------------ ---- ------------ 600 + ==== =========================== ==== ========== 715 601 _ALC 9.3.4 _FDM 9.10.3 716 602 _ALI 9.3.2 _FIX 6.2.7 717 603 _ALP 9.3.6 _GAI 10.4.5 ··· 735 619 _EC 12.12 _UPP 9.16.2 736 620 _FDE 9.10.1 _WPC 10.5.2 737 621 _FDI 9.10.2 _WPP 10.5.3 738 - 622 + ==== =========================== ==== ==========
+82 -73
Documentation/arm64/arm-acpi.txt Documentation/arm64/arm-acpi.rst
··· 1 + ===================== 1 2 ACPI on ARMv8 Servers 2 - --------------------- 3 + ===================== 4 + 3 5 ACPI can be used for ARMv8 general purpose servers designed to follow 4 6 the ARM SBSA (Server Base System Architecture) [0] and SBBR (Server 5 7 Base Boot Requirements) [1] specifications. Please note that the SBBR ··· 36 34 37 35 The short form of the rationale for ACPI on ARM is: 38 36 39 - -- ACPI’s byte code (AML) allows the platform to encode hardware behavior, 37 + - ACPI’s byte code (AML) allows the platform to encode hardware behavior, 40 38 while DT explicitly does not support this. For hardware vendors, being 41 39 able to encode behavior is a key tool used in supporting operating 42 40 system releases on new hardware. 43 41 44 - -- ACPI’s OSPM defines a power management model that constrains what the 42 + - ACPI’s OSPM defines a power management model that constrains what the 45 43 platform is allowed to do into a specific model, while still providing 46 44 flexibility in hardware design. 47 45 48 - -- In the enterprise server environment, ACPI has established bindings (such 46 + - In the enterprise server environment, ACPI has established bindings (such 49 47 as for RAS) which are currently used in production systems. DT does not. 50 48 Such bindings could be defined in DT at some point, but doing so means ARM 51 49 and x86 would end up using completely different code paths in both firmware 52 50 and the kernel. 53 51 54 - -- Choosing a single interface to describe the abstraction between a platform 52 + - Choosing a single interface to describe the abstraction between a platform 55 53 and an OS is important. Hardware vendors would not be required to implement 56 54 both DT and ACPI if they want to support multiple operating systems. And, 57 55 agreeing on a single interface instead of being fragmented into per OS 58 56 interfaces makes for better interoperability overall. 59 57 60 - -- The new ACPI governance process works well and Linux is now at the same 58 + - The new ACPI governance process works well and Linux is now at the same 61 59 table as hardware vendors and other OS vendors. In fact, there is no 62 60 longer any reason to feel that ACPI only belongs to Windows or that 63 61 Linux is in any way secondary to Microsoft in this arena. The move of ··· 171 169 the kernel needs to configure devices, it expects to find the following 172 170 tables (all section numbers refer to the ACPI 6.1 specification): 173 171 174 - -- RSDP (Root System Description Pointer), section 5.2.5 172 + - RSDP (Root System Description Pointer), section 5.2.5 175 173 176 - -- XSDT (eXtended System Description Table), section 5.2.8 174 + - XSDT (eXtended System Description Table), section 5.2.8 177 175 178 - -- FADT (Fixed ACPI Description Table), section 5.2.9 176 + - FADT (Fixed ACPI Description Table), section 5.2.9 179 177 180 - -- DSDT (Differentiated System Description Table), section 178 + - DSDT (Differentiated System Description Table), section 181 179 5.2.11.1 182 180 183 - -- MADT (Multiple APIC Description Table), section 5.2.12 181 + - MADT (Multiple APIC Description Table), section 5.2.12 184 182 185 - -- GTDT (Generic Timer Description Table), section 5.2.24 183 + - GTDT (Generic Timer Description Table), section 5.2.24 186 184 187 - -- If PCI is supported, the MCFG (Memory mapped ConFiGuration 185 + - If PCI is supported, the MCFG (Memory mapped ConFiGuration 188 186 Table), section 5.2.6, specifically Table 5-31. 189 187 190 - -- If booting without a console=<device> kernel parameter is 188 + - If booting without a console=<device> kernel parameter is 191 189 supported, the SPCR (Serial Port Console Redirection table), 192 190 section 5.2.6, specifically Table 5-31. 193 191 194 - -- If necessary to describe the I/O topology, SMMUs and GIC ITSs, 192 + - If necessary to describe the I/O topology, SMMUs and GIC ITSs, 195 193 the IORT (Input Output Remapping Table, section 5.2.6, specifically 196 194 Table 5-31). 197 195 198 - -- If NUMA is supported, the SRAT (System Resource Affinity Table) 196 + - If NUMA is supported, the SRAT (System Resource Affinity Table) 199 197 and SLIT (System Locality distance Information Table), sections 200 198 5.2.16 and 5.2.17, respectively. 201 199 ··· 271 269 how specific data structures are defined by specific UUIDs. Linux should 272 270 only use the _DSD Device Properties UUID [5]: 273 271 274 - -- UUID: daffd814-6eba-4d8c-8a91-bc9bbf4aa301 272 + - UUID: daffd814-6eba-4d8c-8a91-bc9bbf4aa301 275 273 276 - -- http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf 274 + - http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf 277 275 278 276 The UEFI Forum provides a mechanism for registering device properties [4] 279 277 so that they may be used across all operating systems supporting ACPI. ··· 329 327 330 328 There are two options for using those Power Resources. They can: 331 329 332 - -- be managed in a _PSx method which gets called on entry to power 330 + - be managed in a _PSx method which gets called on entry to power 333 331 state Dx. 334 332 335 - -- be declared separately as power resources with their own _ON and _OFF 333 + - be declared separately as power resources with their own _ON and _OFF 336 334 methods. They are then tied back to D-states for a particular device 337 335 via _PRx which specifies which power resources a device needs to be on 338 336 while in Dx. Kernel then tracks number of devices using a power resource ··· 341 339 The kernel ACPI code will also assume that the _PSx methods follow the normal 342 340 ACPI rules for such methods: 343 341 344 - -- If either _PS0 or _PS3 is implemented, then the other method must also 342 + - If either _PS0 or _PS3 is implemented, then the other method must also 345 343 be implemented. 346 344 347 - -- If a device requires usage or setup of a power resource when on, the ASL 345 + - If a device requires usage or setup of a power resource when on, the ASL 348 346 should organize that it is allocated/enabled using the _PS0 method. 349 347 350 - -- Resources allocated or enabled in the _PS0 method should be disabled 348 + - Resources allocated or enabled in the _PS0 method should be disabled 351 349 or de-allocated in the _PS3 method. 352 350 353 - -- Firmware will leave the resources in a reasonable state before handing 351 + - Firmware will leave the resources in a reasonable state before handing 354 352 over control to the kernel. 355 353 356 354 Such code in _PSx methods will of course be very platform specific. But, ··· 396 394 of the driver operate off of the contents of that struct. Doing so should 397 395 allow most divergence between ACPI and DT functionality to be kept local to 398 396 the probe function instead of being scattered throughout the driver. For 399 - example: 397 + example:: 400 398 401 - static int device_probe_dt(struct platform_device *pdev) 402 - { 403 - /* DT specific functionality */ 404 - ... 405 - } 399 + static int device_probe_dt(struct platform_device *pdev) 400 + { 401 + /* DT specific functionality */ 402 + ... 403 + } 406 404 407 - static int device_probe_acpi(struct platform_device *pdev) 408 - { 409 - /* ACPI specific functionality */ 410 - ... 411 - } 405 + static int device_probe_acpi(struct platform_device *pdev) 406 + { 407 + /* ACPI specific functionality */ 408 + ... 409 + } 412 410 413 - static int device_probe(struct platform_device *pdev) 414 - { 415 - ... 416 - struct device_node node = pdev->dev.of_node; 417 - ... 411 + static int device_probe(struct platform_device *pdev) 412 + { 413 + ... 414 + struct device_node node = pdev->dev.of_node; 415 + ... 418 416 419 - if (node) 420 - ret = device_probe_dt(pdev); 421 - else if (ACPI_HANDLE(&pdev->dev)) 422 - ret = device_probe_acpi(pdev); 423 - else 424 - /* other initialization */ 425 - ... 426 - /* Continue with any generic probe operations */ 427 - ... 428 - } 417 + if (node) 418 + ret = device_probe_dt(pdev); 419 + else if (ACPI_HANDLE(&pdev->dev)) 420 + ret = device_probe_acpi(pdev); 421 + else 422 + /* other initialization */ 423 + ... 424 + /* Continue with any generic probe operations */ 425 + ... 426 + } 429 427 430 428 DO keep the MODULE_DEVICE_TABLE entries together in the driver to make it 431 429 clear the different names the driver is probed for, both from DT and from 432 - ACPI: 430 + ACPI:: 433 431 434 - static struct of_device_id virtio_mmio_match[] = { 435 - { .compatible = "virtio,mmio", }, 436 - { } 437 - }; 438 - MODULE_DEVICE_TABLE(of, virtio_mmio_match); 432 + static struct of_device_id virtio_mmio_match[] = { 433 + { .compatible = "virtio,mmio", }, 434 + { } 435 + }; 436 + MODULE_DEVICE_TABLE(of, virtio_mmio_match); 439 437 440 - static const struct acpi_device_id virtio_mmio_acpi_match[] = { 441 - { "LNRO0005", }, 442 - { } 443 - }; 444 - MODULE_DEVICE_TABLE(acpi, virtio_mmio_acpi_match); 438 + static const struct acpi_device_id virtio_mmio_acpi_match[] = { 439 + { "LNRO0005", }, 440 + { } 441 + }; 442 + MODULE_DEVICE_TABLE(acpi, virtio_mmio_acpi_match); 445 443 446 444 447 445 ASWG ··· 473 471 Individual items specific to Linux on ARM, contained in the the Linux 474 472 source code, are in the list that follows: 475 473 476 - ACPI_OS_NAME This macro defines the string to be returned when 474 + ACPI_OS_NAME 475 + This macro defines the string to be returned when 477 476 an ACPI method invokes the _OS method. On ARM64 478 477 systems, this macro will be "Linux" by default. 479 478 The command line parameter acpi_os=<string> ··· 485 482 ACPI Objects 486 483 ------------ 487 484 Detailed expectations for ACPI tables and object are listed in the file 488 - Documentation/arm64/acpi_object_usage.txt. 485 + Documentation/arm64/acpi_object_usage.rst. 489 486 490 487 491 488 References 492 489 ---------- 493 - [0] http://silver.arm.com -- document ARM-DEN-0029, or newer 490 + [0] http://silver.arm.com 491 + document ARM-DEN-0029, or newer: 494 492 "Server Base System Architecture", version 2.3, dated 27 Mar 2014 495 493 496 494 [1] http://infocenter.arm.com/help/topic/com.arm.doc.den0044a/Server_Base_Boot_Requirements.pdf 497 495 Document ARM-DEN-0044A, or newer: "Server Base Boot Requirements, System 498 496 Software on ARM Platforms", dated 16 Aug 2014 499 497 500 - [2] http://www.secretlab.ca/archives/151, 10 Jan 2015, Copyright (c) 2015, 498 + [2] http://www.secretlab.ca/archives/151, 499 + 10 Jan 2015, Copyright (c) 2015, 501 500 Linaro Ltd., written by Grant Likely. 502 501 503 - [3] AMD ACPI for Seattle platform documentation: 502 + [3] AMD ACPI for Seattle platform documentation 504 503 http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/Seattle_ACPI_Guide.pdf 505 504 506 - [4] http://www.uefi.org/acpi -- please see the link for the "ACPI _DSD Device 505 + 506 + [4] http://www.uefi.org/acpi 507 + please see the link for the "ACPI _DSD Device 507 508 Property Registry Instructions" 508 509 509 - [5] http://www.uefi.org/acpi -- please see the link for the "_DSD (Device 510 + [5] http://www.uefi.org/acpi 511 + please see the link for the "_DSD (Device 510 512 Specific Data) Implementation Guide" 511 513 512 - [6] Kernel code for the unified device property interface can be found in 514 + [6] Kernel code for the unified device 515 + property interface can be found in 513 516 include/linux/property.h and drivers/base/property.c. 514 517 515 518 516 519 Authors 517 520 ------- 518 - Al Stone <al.stone@linaro.org> 519 - Graeme Gregory <graeme.gregory@linaro.org> 520 - Hanjun Guo <hanjun.guo@linaro.org> 521 + - Al Stone <al.stone@linaro.org> 522 + - Graeme Gregory <graeme.gregory@linaro.org> 523 + - Hanjun Guo <hanjun.guo@linaro.org> 521 524 522 - Grant Likely <grant.likely@linaro.org>, for the "Why ACPI on ARM?" section 525 + - Grant Likely <grant.likely@linaro.org>, for the "Why ACPI on ARM?" section
+59 -32
Documentation/arm64/booting.txt Documentation/arm64/booting.rst
··· 1 - Booting AArch64 Linux 2 - ===================== 1 + ===================== 2 + Booting AArch64 Linux 3 + ===================== 3 4 4 5 Author: Will Deacon <will.deacon@arm.com> 6 + 5 7 Date : 07 September 2012 6 8 7 9 This document is based on the ARM booting document by Russell King and ··· 14 12 counterpart. EL2 is the hypervisor level and exists only in non-secure 15 13 mode. EL3 is the highest priority level and exists only in secure mode. 16 14 17 - For the purposes of this document, we will use the term `boot loader' 15 + For the purposes of this document, we will use the term `boot loader` 18 16 simply to define all software that executes on the CPU(s) before control 19 17 is passed to the Linux kernel. This may include secure monitor and 20 18 hypervisor code, or it may just be a handful of instructions for ··· 72 70 73 71 Requirement: MANDATORY 74 72 75 - The decompressed kernel image contains a 64-byte header as follows: 73 + The decompressed kernel image contains a 64-byte header as follows:: 76 74 77 75 u32 code0; /* Executable code */ 78 76 u32 code1; /* Executable code */ ··· 105 103 106 104 - The flags field (introduced in v3.17) is a little-endian 64-bit field 107 105 composed as follows: 108 - Bit 0: Kernel endianness. 1 if BE, 0 if LE. 109 - Bit 1-2: Kernel Page size. 110 - 0 - Unspecified. 111 - 1 - 4K 112 - 2 - 16K 113 - 3 - 64K 114 - Bit 3: Kernel physical placement 115 - 0 - 2MB aligned base should be as close as possible 116 - to the base of DRAM, since memory below it is not 117 - accessible via the linear mapping 118 - 1 - 2MB aligned base may be anywhere in physical 119 - memory 120 - Bits 4-63: Reserved. 106 + 107 + ============= =============================================================== 108 + Bit 0 Kernel endianness. 1 if BE, 0 if LE. 109 + Bit 1-2 Kernel Page size. 110 + 111 + * 0 - Unspecified. 112 + * 1 - 4K 113 + * 2 - 16K 114 + * 3 - 64K 115 + Bit 3 Kernel physical placement 116 + 117 + 0 118 + 2MB aligned base should be as close as possible 119 + to the base of DRAM, since memory below it is not 120 + accessible via the linear mapping 121 + 1 122 + 2MB aligned base may be anywhere in physical 123 + memory 124 + Bits 4-63 Reserved. 125 + ============= =============================================================== 121 126 122 127 - When image_size is zero, a bootloader should attempt to keep as much 123 128 memory as possible free for use by the kernel immediately after the ··· 156 147 corrupted by bogus network packets or disk data. This will save 157 148 you many hours of debug. 158 149 159 - - Primary CPU general-purpose register settings 160 - x0 = physical address of device tree blob (dtb) in system RAM. 161 - x1 = 0 (reserved for future use) 162 - x2 = 0 (reserved for future use) 163 - x3 = 0 (reserved for future use) 150 + - Primary CPU general-purpose register settings: 151 + 152 + - x0 = physical address of device tree blob (dtb) in system RAM. 153 + - x1 = 0 (reserved for future use) 154 + - x2 = 0 (reserved for future use) 155 + - x3 = 0 (reserved for future use) 164 156 165 157 - CPU mode 158 + 166 159 All forms of interrupts must be masked in PSTATE.DAIF (Debug, SError, 167 160 IRQ and FIQ). 168 161 The CPU must be in either EL2 (RECOMMENDED in order to have access to 169 162 the virtualisation extensions) or non-secure EL1. 170 163 171 164 - Caches, MMUs 165 + 172 166 The MMU must be off. 173 167 Instruction cache may be on or off. 174 168 The address range corresponding to the loaded kernel image must be ··· 184 172 operations (not recommended) must be configured and disabled. 185 173 186 174 - Architected timers 175 + 187 176 CNTFRQ must be programmed with the timer frequency and CNTVOFF must 188 177 be programmed with a consistent value on all CPUs. If entering the 189 178 kernel at EL1, CNTHCTL_EL2 must have EL1PCTEN (bit 0) set where 190 179 available. 191 180 192 181 - Coherency 182 + 193 183 All CPUs to be booted by the kernel must be part of the same coherency 194 184 domain on entry to the kernel. This may require IMPLEMENTATION DEFINED 195 185 initialisation to enable the receiving of maintenance operations on 196 186 each CPU. 197 187 198 188 - System registers 189 + 199 190 All writable architected system registers at the exception level where 200 191 the kernel image will be entered must be initialised by software at a 201 192 higher exception level to prevent execution in an UNKNOWN state. ··· 210 195 211 196 For systems with a GICv3 interrupt controller to be used in v3 mode: 212 197 - If EL3 is present: 213 - ICC_SRE_EL3.Enable (bit 3) must be initialiased to 0b1. 214 - ICC_SRE_EL3.SRE (bit 0) must be initialised to 0b1. 198 + 199 + - ICC_SRE_EL3.Enable (bit 3) must be initialiased to 0b1. 200 + - ICC_SRE_EL3.SRE (bit 0) must be initialised to 0b1. 201 + 215 202 - If the kernel is entered at EL1: 216 - ICC.SRE_EL2.Enable (bit 3) must be initialised to 0b1 217 - ICC_SRE_EL2.SRE (bit 0) must be initialised to 0b1. 203 + 204 + - ICC.SRE_EL2.Enable (bit 3) must be initialised to 0b1 205 + - ICC_SRE_EL2.SRE (bit 0) must be initialised to 0b1. 206 + 218 207 - The DT or ACPI tables must describe a GICv3 interrupt controller. 219 208 220 209 For systems with a GICv3 interrupt controller to be used in 221 210 compatibility (v2) mode: 211 + 222 212 - If EL3 is present: 223 - ICC_SRE_EL3.SRE (bit 0) must be initialised to 0b0. 213 + 214 + ICC_SRE_EL3.SRE (bit 0) must be initialised to 0b0. 215 + 224 216 - If the kernel is entered at EL1: 225 - ICC_SRE_EL2.SRE (bit 0) must be initialised to 0b0. 217 + 218 + ICC_SRE_EL2.SRE (bit 0) must be initialised to 0b0. 219 + 226 220 - The DT or ACPI tables must describe a GICv2 interrupt controller. 227 221 228 222 For CPUs with pointer authentication functionality: 229 223 - If EL3 is present: 230 - SCR_EL3.APK (bit 16) must be initialised to 0b1 231 - SCR_EL3.API (bit 17) must be initialised to 0b1 224 + 225 + - SCR_EL3.APK (bit 16) must be initialised to 0b1 226 + - SCR_EL3.API (bit 17) must be initialised to 0b1 227 + 232 228 - If the kernel is entered at EL1: 233 - HCR_EL2.APK (bit 40) must be initialised to 0b1 234 - HCR_EL2.API (bit 41) must be initialised to 0b1 229 + 230 + - HCR_EL2.APK (bit 40) must be initialised to 0b1 231 + - HCR_EL2.API (bit 41) must be initialised to 0b1 235 232 236 233 The requirements described above for CPU mode, caches, MMUs, architected 237 234 timers, coherency and system registers apply to all CPUs. All CPUs must
+106 -98
Documentation/arm64/cpu-feature-registers.txt Documentation/arm64/cpu-feature-registers.rst
··· 1 - ARM64 CPU Feature Registers 2 - =========================== 1 + =========================== 2 + ARM64 CPU Feature Registers 3 + =========================== 3 4 4 5 Author: Suzuki K Poulose <suzuki.poulose@arm.com> 5 6 ··· 10 9 via the HWCAP_CPUID in HWCAPs. 11 10 12 11 1. Motivation 13 - --------------- 12 + ------------- 14 13 15 14 The ARM architecture defines a set of feature registers, which describe 16 15 the capabilities of the CPU/system. Access to these system registers is ··· 34 33 35 34 36 35 2. Requirements 37 - ----------------- 36 + --------------- 38 37 39 - a) Safety : 38 + a) Safety: 39 + 40 40 Applications should be able to use the information provided by the 41 41 infrastructure to run safely across the system. This has greater 42 42 implications on a system with heterogeneous CPUs. ··· 49 47 Otherwise an application could crash when scheduled on the CPU 50 48 which doesn't support CRC32. 51 49 52 - b) Security : 50 + b) Security: 51 + 53 52 Applications should only be able to receive information that is 54 53 relevant to the normal operation in userspace. Hence, some of the 55 54 fields are masked out(i.e, made invisible) and their values are set to ··· 61 58 (even when the CPU provides it). 62 59 63 60 c) Implementation Defined Features 61 + 64 62 The infrastructure doesn't expose any register which is 65 63 IMPLEMENTATION DEFINED as per ARMv8-A Architecture. 66 64 67 - d) CPU Identification : 65 + d) CPU Identification: 66 + 68 67 MIDR_EL1 is exposed to help identify the processor. On a 69 68 heterogeneous system, this could be racy (just like getcpu()). The 70 69 process could be migrated to another CPU by the time it uses the ··· 75 70 currently executing on. The REVIDR is not exposed due to this 76 71 constraint, as REVIDR makes sense only in conjunction with the 77 72 MIDR. Alternately, MIDR_EL1 and REVIDR_EL1 are exposed via sysfs 78 - at: 73 + at:: 79 74 80 75 /sys/devices/system/cpu/cpu$ID/regs/identification/ 81 76 \- midr ··· 90 85 The infrastructure hooks into the exception handler and emulates the 91 86 operation if the source belongs to the supported system register space. 92 87 93 - The infrastructure emulates only the following system register space: 88 + The infrastructure emulates only the following system register space:: 89 + 94 90 Op0=3, Op1=0, CRn=0, CRm=0,4,5,6,7 95 91 96 92 (See Table C5-6 'System instruction encodings for non-Debug System ··· 113 107 ------------------------------------------- 114 108 115 109 1) ID_AA64ISAR0_EL1 - Instruction Set Attribute Register 0 116 - x--------------------------------------------------x 110 + 111 + +------------------------------+---------+---------+ 117 112 | Name | bits | visible | 118 - |--------------------------------------------------| 113 + +------------------------------+---------+---------+ 119 114 | TS | [55-52] | y | 120 - |--------------------------------------------------| 115 + +------------------------------+---------+---------+ 121 116 | FHM | [51-48] | y | 122 - |--------------------------------------------------| 117 + +------------------------------+---------+---------+ 123 118 | DP | [47-44] | y | 124 - |--------------------------------------------------| 119 + +------------------------------+---------+---------+ 125 120 | SM4 | [43-40] | y | 126 - |--------------------------------------------------| 121 + +------------------------------+---------+---------+ 127 122 | SM3 | [39-36] | y | 128 - |--------------------------------------------------| 123 + +------------------------------+---------+---------+ 129 124 | SHA3 | [35-32] | y | 130 - |--------------------------------------------------| 125 + +------------------------------+---------+---------+ 131 126 | RDM | [31-28] | y | 132 - |--------------------------------------------------| 127 + +------------------------------+---------+---------+ 133 128 | ATOMICS | [23-20] | y | 134 - |--------------------------------------------------| 129 + +------------------------------+---------+---------+ 135 130 | CRC32 | [19-16] | y | 136 - |--------------------------------------------------| 131 + +------------------------------+---------+---------+ 137 132 | SHA2 | [15-12] | y | 138 - |--------------------------------------------------| 133 + +------------------------------+---------+---------+ 139 134 | SHA1 | [11-8] | y | 140 - |--------------------------------------------------| 135 + +------------------------------+---------+---------+ 141 136 | AES | [7-4] | y | 142 - x--------------------------------------------------x 137 + +------------------------------+---------+---------+ 143 138 144 139 145 140 2) ID_AA64PFR0_EL1 - Processor Feature Register 0 146 - x--------------------------------------------------x 141 + 142 + +------------------------------+---------+---------+ 147 143 | Name | bits | visible | 148 - |--------------------------------------------------| 144 + +------------------------------+---------+---------+ 149 145 | DIT | [51-48] | y | 150 - |--------------------------------------------------| 146 + +------------------------------+---------+---------+ 151 147 | SVE | [35-32] | y | 152 - |--------------------------------------------------| 148 + +------------------------------+---------+---------+ 153 149 | GIC | [27-24] | n | 154 - |--------------------------------------------------| 150 + +------------------------------+---------+---------+ 155 151 | AdvSIMD | [23-20] | y | 156 - |--------------------------------------------------| 152 + +------------------------------+---------+---------+ 157 153 | FP | [19-16] | y | 158 - |--------------------------------------------------| 154 + +------------------------------+---------+---------+ 159 155 | EL3 | [15-12] | n | 160 - |--------------------------------------------------| 156 + +------------------------------+---------+---------+ 161 157 | EL2 | [11-8] | n | 162 - |--------------------------------------------------| 158 + +------------------------------+---------+---------+ 163 159 | EL1 | [7-4] | n | 164 - |--------------------------------------------------| 160 + +------------------------------+---------+---------+ 165 161 | EL0 | [3-0] | n | 166 - x--------------------------------------------------x 162 + +------------------------------+---------+---------+ 167 163 168 164 169 165 3) MIDR_EL1 - Main ID Register 170 - x--------------------------------------------------x 166 + 167 + +------------------------------+---------+---------+ 171 168 | Name | bits | visible | 172 - |--------------------------------------------------| 169 + +------------------------------+---------+---------+ 173 170 | Implementer | [31-24] | y | 174 - |--------------------------------------------------| 171 + +------------------------------+---------+---------+ 175 172 | Variant | [23-20] | y | 176 - |--------------------------------------------------| 173 + +------------------------------+---------+---------+ 177 174 | Architecture | [19-16] | y | 178 - |--------------------------------------------------| 175 + +------------------------------+---------+---------+ 179 176 | PartNum | [15-4] | y | 180 - |--------------------------------------------------| 177 + +------------------------------+---------+---------+ 181 178 | Revision | [3-0] | y | 182 - x--------------------------------------------------x 179 + +------------------------------+---------+---------+ 183 180 184 181 NOTE: The 'visible' fields of MIDR_EL1 will contain the value 185 182 as available on the CPU where it is fetched and is not a system ··· 190 181 191 182 4) ID_AA64ISAR1_EL1 - Instruction set attribute register 1 192 183 193 - x--------------------------------------------------x 184 + +------------------------------+---------+---------+ 194 185 | Name | bits | visible | 195 - |--------------------------------------------------| 186 + +------------------------------+---------+---------+ 196 187 | GPI | [31-28] | y | 197 - |--------------------------------------------------| 188 + +------------------------------+---------+---------+ 198 189 | GPA | [27-24] | y | 199 - |--------------------------------------------------| 190 + +------------------------------+---------+---------+ 200 191 | LRCPC | [23-20] | y | 201 - |--------------------------------------------------| 192 + +------------------------------+---------+---------+ 202 193 | FCMA | [19-16] | y | 203 - |--------------------------------------------------| 194 + +------------------------------+---------+---------+ 204 195 | JSCVT | [15-12] | y | 205 - |--------------------------------------------------| 196 + +------------------------------+---------+---------+ 206 197 | API | [11-8] | y | 207 - |--------------------------------------------------| 198 + +------------------------------+---------+---------+ 208 199 | APA | [7-4] | y | 209 - |--------------------------------------------------| 200 + +------------------------------+---------+---------+ 210 201 | DPB | [3-0] | y | 211 - x--------------------------------------------------x 202 + +------------------------------+---------+---------+ 212 203 213 204 5) ID_AA64MMFR2_EL1 - Memory model feature register 2 214 205 215 - x--------------------------------------------------x 206 + +------------------------------+---------+---------+ 216 207 | Name | bits | visible | 217 - |--------------------------------------------------| 208 + +------------------------------+---------+---------+ 218 209 | AT | [35-32] | y | 219 - x--------------------------------------------------x 210 + +------------------------------+---------+---------+ 220 211 221 212 6) ID_AA64ZFR0_EL1 - SVE feature ID register 0 222 213 223 - x--------------------------------------------------x 214 + +------------------------------+---------+---------+ 224 215 | Name | bits | visible | 225 - |--------------------------------------------------| 216 + +------------------------------+---------+---------+ 226 217 | SM4 | [43-40] | y | 227 - |--------------------------------------------------| 218 + +------------------------------+---------+---------+ 228 219 | SHA3 | [35-32] | y | 229 - |--------------------------------------------------| 220 + +------------------------------+---------+---------+ 230 221 | BitPerm | [19-16] | y | 231 - |--------------------------------------------------| 222 + +------------------------------+---------+---------+ 232 223 | AES | [7-4] | y | 233 - |--------------------------------------------------| 224 + +------------------------------+---------+---------+ 234 225 | SVEVer | [3-0] | y | 235 - x--------------------------------------------------x 226 + +------------------------------+---------+---------+ 236 227 237 228 Appendix I: Example 238 - --------------------------- 229 + ------------------- 239 230 240 - /* 241 - * Sample program to demonstrate the MRS emulation ABI. 242 - * 243 - * Copyright (C) 2015-2016, ARM Ltd 244 - * 245 - * Author: Suzuki K Poulose <suzuki.poulose@arm.com> 246 - * 247 - * This program is free software; you can redistribute it and/or modify 248 - * it under the terms of the GNU General Public License version 2 as 249 - * published by the Free Software Foundation. 250 - * 251 - * This program is distributed in the hope that it will be useful, 252 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 253 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 254 - * GNU General Public License for more details. 255 - * This program is free software; you can redistribute it and/or modify 256 - * it under the terms of the GNU General Public License version 2 as 257 - * published by the Free Software Foundation. 258 - * 259 - * This program is distributed in the hope that it will be useful, 260 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 261 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 262 - * GNU General Public License for more details. 263 - */ 231 + :: 264 232 265 - #include <asm/hwcap.h> 266 - #include <stdio.h> 267 - #include <sys/auxv.h> 233 + /* 234 + * Sample program to demonstrate the MRS emulation ABI. 235 + * 236 + * Copyright (C) 2015-2016, ARM Ltd 237 + * 238 + * Author: Suzuki K Poulose <suzuki.poulose@arm.com> 239 + * 240 + * This program is free software; you can redistribute it and/or modify 241 + * it under the terms of the GNU General Public License version 2 as 242 + * published by the Free Software Foundation. 243 + * 244 + * This program is distributed in the hope that it will be useful, 245 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 246 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 247 + * GNU General Public License for more details. 248 + * This program is free software; you can redistribute it and/or modify 249 + * it under the terms of the GNU General Public License version 2 as 250 + * published by the Free Software Foundation. 251 + * 252 + * This program is distributed in the hope that it will be useful, 253 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 254 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 255 + * GNU General Public License for more details. 256 + */ 268 257 269 - #define get_cpu_ftr(id) ({ \ 258 + #include <asm/hwcap.h> 259 + #include <stdio.h> 260 + #include <sys/auxv.h> 261 + 262 + #define get_cpu_ftr(id) ({ \ 270 263 unsigned long __val; \ 271 264 asm("mrs %0, "#id : "=r" (__val)); \ 272 265 printf("%-20s: 0x%016lx\n", #id, __val); \ 273 266 }) 274 267 275 - int main(void) 276 - { 268 + int main(void) 269 + { 277 270 278 271 if (!(getauxval(AT_HWCAP) & HWCAP_CPUID)) { 279 272 fputs("CPUID registers unavailable\n", stderr); ··· 295 284 get_cpu_ftr(MPIDR_EL1); 296 285 get_cpu_ftr(REVIDR_EL1); 297 286 298 - #if 0 287 + #if 0 299 288 /* Unexposed register access causes SIGILL */ 300 289 get_cpu_ftr(ID_MMFR0_EL1); 301 - #endif 290 + #endif 302 291 303 292 return 0; 304 - } 305 - 306 - 307 - 293 + }
+13 -43
Documentation/arm64/elf_hwcaps.txt Documentation/arm64/elf_hwcaps.rst
··· 1 + ================ 1 2 ARM64 ELF hwcaps 2 3 ================ 3 4 ··· 16 15 17 16 Userspace software can test for features by acquiring the AT_HWCAP or 18 17 AT_HWCAP2 entry of the auxiliary vector, and testing whether the relevant 19 - flags are set, e.g. 18 + flags are set, e.g.:: 20 19 21 - bool floating_point_is_present(void) 22 - { 23 - unsigned long hwcaps = getauxval(AT_HWCAP); 24 - if (hwcaps & HWCAP_FP) 25 - return true; 20 + bool floating_point_is_present(void) 21 + { 22 + unsigned long hwcaps = getauxval(AT_HWCAP); 23 + if (hwcaps & HWCAP_FP) 24 + return true; 26 25 27 - return false; 28 - } 26 + return false; 27 + } 29 28 30 29 Where software relies on a feature described by a hwcap, it should check 31 30 the relevant hwcap flag to verify that the feature is present before ··· 46 45 fields, and should be interpreted with reference to the definition of 47 46 these fields in the ARM Architecture Reference Manual (ARM ARM). 48 47 49 - Such hwcaps are described below in the form: 48 + Such hwcaps are described below in the form:: 50 49 51 50 Functionality implied by idreg.field == val. 52 51 ··· 65 64 --------------------------------- 66 65 67 66 HWCAP_FP 68 - 69 67 Functionality implied by ID_AA64PFR0_EL1.FP == 0b0000. 70 68 71 69 HWCAP_ASIMD 72 - 73 70 Functionality implied by ID_AA64PFR0_EL1.AdvSIMD == 0b0000. 74 71 75 72 HWCAP_EVTSTRM 76 - 77 73 The generic timer is configured to generate events at a frequency of 78 74 approximately 100KHz. 79 75 80 76 HWCAP_AES 81 - 82 77 Functionality implied by ID_AA64ISAR0_EL1.AES == 0b0001. 83 78 84 79 HWCAP_PMULL 85 - 86 80 Functionality implied by ID_AA64ISAR0_EL1.AES == 0b0010. 87 81 88 82 HWCAP_SHA1 89 - 90 83 Functionality implied by ID_AA64ISAR0_EL1.SHA1 == 0b0001. 91 84 92 85 HWCAP_SHA2 93 - 94 86 Functionality implied by ID_AA64ISAR0_EL1.SHA2 == 0b0001. 95 87 96 88 HWCAP_CRC32 97 - 98 89 Functionality implied by ID_AA64ISAR0_EL1.CRC32 == 0b0001. 99 90 100 91 HWCAP_ATOMICS 101 - 102 92 Functionality implied by ID_AA64ISAR0_EL1.Atomic == 0b0010. 103 93 104 94 HWCAP_FPHP 105 - 106 95 Functionality implied by ID_AA64PFR0_EL1.FP == 0b0001. 107 96 108 97 HWCAP_ASIMDHP 109 - 110 98 Functionality implied by ID_AA64PFR0_EL1.AdvSIMD == 0b0001. 111 99 112 100 HWCAP_CPUID 113 - 114 101 EL0 access to certain ID registers is available, to the extent 115 - described by Documentation/arm64/cpu-feature-registers.txt. 102 + described by Documentation/arm64/cpu-feature-registers.rst. 116 103 117 104 These ID registers may imply the availability of features. 118 105 119 106 HWCAP_ASIMDRDM 120 - 121 107 Functionality implied by ID_AA64ISAR0_EL1.RDM == 0b0001. 122 108 123 109 HWCAP_JSCVT 124 - 125 110 Functionality implied by ID_AA64ISAR1_EL1.JSCVT == 0b0001. 126 111 127 112 HWCAP_FCMA 128 - 129 113 Functionality implied by ID_AA64ISAR1_EL1.FCMA == 0b0001. 130 114 131 115 HWCAP_LRCPC 132 - 133 116 Functionality implied by ID_AA64ISAR1_EL1.LRCPC == 0b0001. 134 117 135 118 HWCAP_DCPOP 136 - 137 119 Functionality implied by ID_AA64ISAR1_EL1.DPB == 0b0001. 138 120 139 121 HWCAP2_DCPODP ··· 124 140 Functionality implied by ID_AA64ISAR1_EL1.DPB == 0b0010. 125 141 126 142 HWCAP_SHA3 127 - 128 143 Functionality implied by ID_AA64ISAR0_EL1.SHA3 == 0b0001. 129 144 130 145 HWCAP_SM3 131 - 132 146 Functionality implied by ID_AA64ISAR0_EL1.SM3 == 0b0001. 133 147 134 148 HWCAP_SM4 135 - 136 149 Functionality implied by ID_AA64ISAR0_EL1.SM4 == 0b0001. 137 150 138 151 HWCAP_ASIMDDP 139 - 140 152 Functionality implied by ID_AA64ISAR0_EL1.DP == 0b0001. 141 153 142 154 HWCAP_SHA512 143 - 144 155 Functionality implied by ID_AA64ISAR0_EL1.SHA2 == 0b0010. 145 156 146 157 HWCAP_SVE 147 - 148 158 Functionality implied by ID_AA64PFR0_EL1.SVE == 0b0001. 149 159 150 160 HWCAP2_SVE2 ··· 166 188 Functionality implied by ID_AA64ZFR0_EL1.SM4 == 0b0001. 167 189 168 190 HWCAP_ASIMDFHM 169 - 170 191 Functionality implied by ID_AA64ISAR0_EL1.FHM == 0b0001. 171 192 172 193 HWCAP_DIT 173 - 174 194 Functionality implied by ID_AA64PFR0_EL1.DIT == 0b0001. 175 195 176 196 HWCAP_USCAT 177 - 178 197 Functionality implied by ID_AA64MMFR2_EL1.AT == 0b0001. 179 198 180 199 HWCAP_ILRCPC 181 - 182 200 Functionality implied by ID_AA64ISAR1_EL1.LRCPC == 0b0010. 183 201 184 202 HWCAP_FLAGM 185 - 186 203 Functionality implied by ID_AA64ISAR0_EL1.TS == 0b0001. 187 204 188 205 HWCAP_SSBS 189 - 190 206 Functionality implied by ID_AA64PFR1_EL1.SSBS == 0b0010. 191 207 192 208 HWCAP_PACA 193 - 194 209 Functionality implied by ID_AA64ISAR1_EL1.APA == 0b0001 or 195 210 ID_AA64ISAR1_EL1.API == 0b0001, as described by 196 - Documentation/arm64/pointer-authentication.txt. 211 + Documentation/arm64/pointer-authentication.rst. 197 212 198 213 HWCAP_PACG 199 - 200 214 Functionality implied by ID_AA64ISAR1_EL1.GPA == 0b0001 or 201 215 ID_AA64ISAR1_EL1.GPI == 0b0001, as described by 202 - Documentation/arm64/pointer-authentication.txt. 216 + Documentation/arm64/pointer-authentication.rst. 203 217 204 218 205 219 4. Unused AT_HWCAP bits
+5 -2
Documentation/arm64/hugetlbpage.txt Documentation/arm64/hugetlbpage.rst
··· 1 + ==================== 1 2 HugeTLBpage on ARM64 2 3 ==================== 3 4 ··· 32 31 33 32 The following hugepage sizes are supported - 34 33 35 - CONT PTE PMD CONT PMD PUD 36 - -------- --- -------- --- 34 + ====== ======== ==== ======== === 35 + - CONT PTE PMD CONT PMD PUD 36 + ====== ======== ==== ======== === 37 37 4K: 64K 2M 32M 1G 38 38 16K: 2M 32M 1G 39 39 64K: 2M 512M 16G 40 + ====== ======== ==== ======== ===
+28
Documentation/arm64/index.rst
··· 1 + :orphan: 2 + 3 + ================== 4 + ARM64 Architecture 5 + ================== 6 + 7 + .. toctree:: 8 + :maxdepth: 1 9 + 10 + acpi_object_usage 11 + arm-acpi 12 + booting 13 + cpu-feature-registers 14 + elf_hwcaps 15 + hugetlbpage 16 + legacy_instructions 17 + memory 18 + pointer-authentication 19 + silicon-errata 20 + sve 21 + tagged-pointers 22 + 23 + .. only:: subproject and html 24 + 25 + Indices 26 + ======= 27 + 28 + * :ref:`genindex`
+27 -16
Documentation/arm64/legacy_instructions.txt Documentation/arm64/legacy_instructions.rst
··· 1 + =================== 2 + Legacy instructions 3 + =================== 4 + 1 5 The arm64 port of the Linux kernel provides infrastructure to support 2 6 emulation of instructions which have been deprecated, or obsoleted in 3 7 the architecture. The infrastructure code uses undefined instruction ··· 13 9 behaviours and the corresponding values of the sysctl nodes - 14 10 15 11 * Undef 16 - Value: 0 12 + Value: 0 13 + 17 14 Generates undefined instruction abort. Default for instructions that 18 15 have been obsoleted in the architecture, e.g., SWP 19 16 20 17 * Emulate 21 - Value: 1 18 + Value: 1 19 + 22 20 Uses software emulation. To aid migration of software, in this mode 23 21 usage of emulated instruction is traced as well as rate limited 24 22 warnings are issued. This is the default for deprecated 25 23 instructions, .e.g., CP15 barriers 26 24 27 25 * Hardware Execution 28 - Value: 2 26 + Value: 2 27 + 29 28 Although marked as deprecated, some implementations may support the 30 29 enabling/disabling of hardware support for the execution of these 31 30 instructions. Using hardware execution generally provides better ··· 45 38 Supported legacy instructions 46 39 ----------------------------- 47 40 * SWP{B} 48 - Node: /proc/sys/abi/swp 49 - Status: Obsolete 50 - Default: Undef (0) 41 + 42 + :Node: /proc/sys/abi/swp 43 + :Status: Obsolete 44 + :Default: Undef (0) 51 45 52 46 * CP15 Barriers 53 - Node: /proc/sys/abi/cp15_barrier 54 - Status: Deprecated 55 - Default: Emulate (1) 47 + 48 + :Node: /proc/sys/abi/cp15_barrier 49 + :Status: Deprecated 50 + :Default: Emulate (1) 56 51 57 52 * SETEND 58 - Node: /proc/sys/abi/setend 59 - Status: Deprecated 60 - Default: Emulate (1)* 61 - Note: All the cpus on the system must have mixed endian support at EL0 62 - for this feature to be enabled. If a new CPU - which doesn't support mixed 63 - endian - is hotplugged in after this feature has been enabled, there could 64 - be unexpected results in the application. 53 + 54 + :Node: /proc/sys/abi/setend 55 + :Status: Deprecated 56 + :Default: Emulate (1)* 57 + 58 + Note: All the cpus on the system must have mixed endian support at EL0 59 + for this feature to be enabled. If a new CPU - which doesn't support mixed 60 + endian - is hotplugged in after this feature has been enabled, there could 61 + be unexpected results in the application.
+98
Documentation/arm64/memory.rst
··· 1 + ============================== 2 + Memory Layout on AArch64 Linux 3 + ============================== 4 + 5 + Author: Catalin Marinas <catalin.marinas@arm.com> 6 + 7 + This document describes the virtual memory layout used by the AArch64 8 + Linux kernel. The architecture allows up to 4 levels of translation 9 + tables with a 4KB page size and up to 3 levels with a 64KB page size. 10 + 11 + AArch64 Linux uses either 3 levels or 4 levels of translation tables 12 + with the 4KB page configuration, allowing 39-bit (512GB) or 48-bit 13 + (256TB) virtual addresses, respectively, for both user and kernel. With 14 + 64KB pages, only 2 levels of translation tables, allowing 42-bit (4TB) 15 + virtual address, are used but the memory layout is the same. 16 + 17 + User addresses have bits 63:48 set to 0 while the kernel addresses have 18 + the same bits set to 1. TTBRx selection is given by bit 63 of the 19 + virtual address. The swapper_pg_dir contains only kernel (global) 20 + mappings while the user pgd contains only user (non-global) mappings. 21 + The swapper_pg_dir address is written to TTBR1 and never written to 22 + TTBR0. 23 + 24 + 25 + AArch64 Linux memory layout with 4KB pages + 3 levels:: 26 + 27 + Start End Size Use 28 + ----------------------------------------------------------------------- 29 + 0000000000000000 0000007fffffffff 512GB user 30 + ffffff8000000000 ffffffffffffffff 512GB kernel 31 + 32 + 33 + AArch64 Linux memory layout with 4KB pages + 4 levels:: 34 + 35 + Start End Size Use 36 + ----------------------------------------------------------------------- 37 + 0000000000000000 0000ffffffffffff 256TB user 38 + ffff000000000000 ffffffffffffffff 256TB kernel 39 + 40 + 41 + AArch64 Linux memory layout with 64KB pages + 2 levels:: 42 + 43 + Start End Size Use 44 + ----------------------------------------------------------------------- 45 + 0000000000000000 000003ffffffffff 4TB user 46 + fffffc0000000000 ffffffffffffffff 4TB kernel 47 + 48 + 49 + AArch64 Linux memory layout with 64KB pages + 3 levels:: 50 + 51 + Start End Size Use 52 + ----------------------------------------------------------------------- 53 + 0000000000000000 0000ffffffffffff 256TB user 54 + ffff000000000000 ffffffffffffffff 256TB kernel 55 + 56 + 57 + For details of the virtual kernel memory layout please see the kernel 58 + booting log. 59 + 60 + 61 + Translation table lookup with 4KB pages:: 62 + 63 + +--------+--------+--------+--------+--------+--------+--------+--------+ 64 + |63 56|55 48|47 40|39 32|31 24|23 16|15 8|7 0| 65 + +--------+--------+--------+--------+--------+--------+--------+--------+ 66 + | | | | | | 67 + | | | | | v 68 + | | | | | [11:0] in-page offset 69 + | | | | +-> [20:12] L3 index 70 + | | | +-----------> [29:21] L2 index 71 + | | +---------------------> [38:30] L1 index 72 + | +-------------------------------> [47:39] L0 index 73 + +-------------------------------------------------> [63] TTBR0/1 74 + 75 + 76 + Translation table lookup with 64KB pages:: 77 + 78 + +--------+--------+--------+--------+--------+--------+--------+--------+ 79 + |63 56|55 48|47 40|39 32|31 24|23 16|15 8|7 0| 80 + +--------+--------+--------+--------+--------+--------+--------+--------+ 81 + | | | | | 82 + | | | | v 83 + | | | | [15:0] in-page offset 84 + | | | +----------> [28:16] L3 index 85 + | | +--------------------------> [41:29] L2 index 86 + | +-------------------------------> [47:42] L1 index 87 + +-------------------------------------------------> [63] TTBR0/1 88 + 89 + 90 + When using KVM without the Virtualization Host Extensions, the 91 + hypervisor maps kernel pages in EL2 at a fixed (and potentially 92 + random) offset from the linear mapping. See the kern_hyp_va macro and 93 + kvm_update_va_mask function for more details. MMIO devices such as 94 + GICv2 gets mapped next to the HYP idmap page, as do vectors when 95 + ARM64_HARDEN_EL2_VECTORS is selected for particular CPUs. 96 + 97 + When using KVM with the Virtualization Host Extensions, no additional 98 + mappings are created, since the host kernel runs directly in EL2.
-97
Documentation/arm64/memory.txt
··· 1 - Memory Layout on AArch64 Linux 2 - ============================== 3 - 4 - Author: Catalin Marinas <catalin.marinas@arm.com> 5 - 6 - This document describes the virtual memory layout used by the AArch64 7 - Linux kernel. The architecture allows up to 4 levels of translation 8 - tables with a 4KB page size and up to 3 levels with a 64KB page size. 9 - 10 - AArch64 Linux uses either 3 levels or 4 levels of translation tables 11 - with the 4KB page configuration, allowing 39-bit (512GB) or 48-bit 12 - (256TB) virtual addresses, respectively, for both user and kernel. With 13 - 64KB pages, only 2 levels of translation tables, allowing 42-bit (4TB) 14 - virtual address, are used but the memory layout is the same. 15 - 16 - User addresses have bits 63:48 set to 0 while the kernel addresses have 17 - the same bits set to 1. TTBRx selection is given by bit 63 of the 18 - virtual address. The swapper_pg_dir contains only kernel (global) 19 - mappings while the user pgd contains only user (non-global) mappings. 20 - The swapper_pg_dir address is written to TTBR1 and never written to 21 - TTBR0. 22 - 23 - 24 - AArch64 Linux memory layout with 4KB pages + 3 levels: 25 - 26 - Start End Size Use 27 - ----------------------------------------------------------------------- 28 - 0000000000000000 0000007fffffffff 512GB user 29 - ffffff8000000000 ffffffffffffffff 512GB kernel 30 - 31 - 32 - AArch64 Linux memory layout with 4KB pages + 4 levels: 33 - 34 - Start End Size Use 35 - ----------------------------------------------------------------------- 36 - 0000000000000000 0000ffffffffffff 256TB user 37 - ffff000000000000 ffffffffffffffff 256TB kernel 38 - 39 - 40 - AArch64 Linux memory layout with 64KB pages + 2 levels: 41 - 42 - Start End Size Use 43 - ----------------------------------------------------------------------- 44 - 0000000000000000 000003ffffffffff 4TB user 45 - fffffc0000000000 ffffffffffffffff 4TB kernel 46 - 47 - 48 - AArch64 Linux memory layout with 64KB pages + 3 levels: 49 - 50 - Start End Size Use 51 - ----------------------------------------------------------------------- 52 - 0000000000000000 0000ffffffffffff 256TB user 53 - ffff000000000000 ffffffffffffffff 256TB kernel 54 - 55 - 56 - For details of the virtual kernel memory layout please see the kernel 57 - booting log. 58 - 59 - 60 - Translation table lookup with 4KB pages: 61 - 62 - +--------+--------+--------+--------+--------+--------+--------+--------+ 63 - |63 56|55 48|47 40|39 32|31 24|23 16|15 8|7 0| 64 - +--------+--------+--------+--------+--------+--------+--------+--------+ 65 - | | | | | | 66 - | | | | | v 67 - | | | | | [11:0] in-page offset 68 - | | | | +-> [20:12] L3 index 69 - | | | +-----------> [29:21] L2 index 70 - | | +---------------------> [38:30] L1 index 71 - | +-------------------------------> [47:39] L0 index 72 - +-------------------------------------------------> [63] TTBR0/1 73 - 74 - 75 - Translation table lookup with 64KB pages: 76 - 77 - +--------+--------+--------+--------+--------+--------+--------+--------+ 78 - |63 56|55 48|47 40|39 32|31 24|23 16|15 8|7 0| 79 - +--------+--------+--------+--------+--------+--------+--------+--------+ 80 - | | | | | 81 - | | | | v 82 - | | | | [15:0] in-page offset 83 - | | | +----------> [28:16] L3 index 84 - | | +--------------------------> [41:29] L2 index 85 - | +-------------------------------> [47:42] L1 index 86 - +-------------------------------------------------> [63] TTBR0/1 87 - 88 - 89 - When using KVM without the Virtualization Host Extensions, the 90 - hypervisor maps kernel pages in EL2 at a fixed (and potentially 91 - random) offset from the linear mapping. See the kern_hyp_va macro and 92 - kvm_update_va_mask function for more details. MMIO devices such as 93 - GICv2 gets mapped next to the HYP idmap page, as do vectors when 94 - ARM64_HARDEN_EL2_VECTORS is selected for particular CPUs. 95 - 96 - When using KVM with the Virtualization Host Extensions, no additional 97 - mappings are created, since the host kernel runs directly in EL2.
+2
Documentation/arm64/pointer-authentication.txt Documentation/arm64/pointer-authentication.rst
··· 1 + ======================================= 1 2 Pointer authentication in AArch64 Linux 2 3 ======================================= 3 4 4 5 Author: Mark Rutland <mark.rutland@arm.com> 6 + 5 7 Date: 2017-07-19 6 8 7 9 This document briefly describes the provision of pointer authentication
+54 -11
Documentation/arm64/silicon-errata.txt Documentation/arm64/silicon-errata.rst
··· 1 - Silicon Errata and Software Workarounds 2 - ======================================= 1 + ======================================= 2 + Silicon Errata and Software Workarounds 3 + ======================================= 3 4 4 5 Author: Will Deacon <will.deacon@arm.com> 6 + 5 7 Date : 27 November 2015 6 8 7 9 It is an unfortunate fact of life that hardware is often produced with ··· 11 9 under specific circumstances. For hardware produced by ARM, these 12 10 errata are broadly classified into the following categories: 13 11 14 - Category A: A critical error without a viable workaround. 15 - Category B: A significant or critical error with an acceptable 12 + ========== ======================================================== 13 + Category A A critical error without a viable workaround. 14 + Category B A significant or critical error with an acceptable 16 15 workaround. 17 - Category C: A minor error that is not expected to occur under normal 16 + Category C A minor error that is not expected to occur under normal 18 17 operation. 18 + ========== ======================================================== 19 19 20 20 For more information, consult one of the "Software Developers Errata 21 21 Notice" documents available on infocenter.arm.com (registration ··· 46 42 will be updated when new workarounds are committed and backported to 47 43 stable kernels. 48 44 49 - | Implementor | Component | Erratum ID | Kconfig | 50 45 +----------------+-----------------+-----------------+-----------------------------+ 46 + | Implementor | Component | Erratum ID | Kconfig | 47 + +================+=================+=================+=============================+ 51 48 | Allwinner | A64/R18 | UNKNOWN1 | SUN50I_ERRATUM_UNKNOWN1 | 52 - | | | | | 49 + +----------------+-----------------+-----------------+-----------------------------+ 50 + +----------------+-----------------+-----------------+-----------------------------+ 53 51 | ARM | Cortex-A53 | #826319 | ARM64_ERRATUM_826319 | 52 + +----------------+-----------------+-----------------+-----------------------------+ 54 53 | ARM | Cortex-A53 | #827319 | ARM64_ERRATUM_827319 | 54 + +----------------+-----------------+-----------------+-----------------------------+ 55 55 | ARM | Cortex-A53 | #824069 | ARM64_ERRATUM_824069 | 56 + +----------------+-----------------+-----------------+-----------------------------+ 56 57 | ARM | Cortex-A53 | #819472 | ARM64_ERRATUM_819472 | 58 + +----------------+-----------------+-----------------+-----------------------------+ 57 59 | ARM | Cortex-A53 | #845719 | ARM64_ERRATUM_845719 | 60 + +----------------+-----------------+-----------------+-----------------------------+ 58 61 | ARM | Cortex-A53 | #843419 | ARM64_ERRATUM_843419 | 62 + +----------------+-----------------+-----------------+-----------------------------+ 59 63 | ARM | Cortex-A57 | #832075 | ARM64_ERRATUM_832075 | 64 + +----------------+-----------------+-----------------+-----------------------------+ 60 65 | ARM | Cortex-A57 | #852523 | N/A | 66 + +----------------+-----------------+-----------------+-----------------------------+ 61 67 | ARM | Cortex-A57 | #834220 | ARM64_ERRATUM_834220 | 68 + +----------------+-----------------+-----------------+-----------------------------+ 62 69 | ARM | Cortex-A72 | #853709 | N/A | 70 + +----------------+-----------------+-----------------+-----------------------------+ 63 71 | ARM | Cortex-A73 | #858921 | ARM64_ERRATUM_858921 | 72 + +----------------+-----------------+-----------------+-----------------------------+ 64 73 | ARM | Cortex-A55 | #1024718 | ARM64_ERRATUM_1024718 | 74 + +----------------+-----------------+-----------------+-----------------------------+ 65 75 | ARM | Cortex-A76 | #1188873,1418040| ARM64_ERRATUM_1418040 | 76 + +----------------+-----------------+-----------------+-----------------------------+ 66 77 | ARM | Cortex-A76 | #1165522 | ARM64_ERRATUM_1165522 | 78 + +----------------+-----------------+-----------------+-----------------------------+ 67 79 | ARM | Cortex-A76 | #1286807 | ARM64_ERRATUM_1286807 | 80 + +----------------+-----------------+-----------------+-----------------------------+ 68 81 | ARM | Cortex-A76 | #1463225 | ARM64_ERRATUM_1463225 | 82 + +----------------+-----------------+-----------------+-----------------------------+ 69 83 | ARM | Neoverse-N1 | #1188873,1418040| ARM64_ERRATUM_1418040 | 84 + +----------------+-----------------+-----------------+-----------------------------+ 70 85 | ARM | MMU-500 | #841119,826419 | N/A | 71 - | | | | | 86 + +----------------+-----------------+-----------------+-----------------------------+ 87 + +----------------+-----------------+-----------------+-----------------------------+ 72 88 | Cavium | ThunderX ITS | #22375,24313 | CAVIUM_ERRATUM_22375 | 89 + +----------------+-----------------+-----------------+-----------------------------+ 73 90 | Cavium | ThunderX ITS | #23144 | CAVIUM_ERRATUM_23144 | 91 + +----------------+-----------------+-----------------+-----------------------------+ 74 92 | Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 | 93 + +----------------+-----------------+-----------------+-----------------------------+ 75 94 | Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 | 95 + +----------------+-----------------+-----------------+-----------------------------+ 76 96 | Cavium | ThunderX Core | #30115 | CAVIUM_ERRATUM_30115 | 97 + +----------------+-----------------+-----------------+-----------------------------+ 77 98 | Cavium | ThunderX SMMUv2 | #27704 | N/A | 99 + +----------------+-----------------+-----------------+-----------------------------+ 78 100 | Cavium | ThunderX2 SMMUv3| #74 | N/A | 101 + +----------------+-----------------+-----------------+-----------------------------+ 79 102 | Cavium | ThunderX2 SMMUv3| #126 | N/A | 80 - | | | | | 103 + +----------------+-----------------+-----------------+-----------------------------+ 104 + +----------------+-----------------+-----------------+-----------------------------+ 81 105 | Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 | 82 - | | | | | 106 + +----------------+-----------------+-----------------+-----------------------------+ 107 + +----------------+-----------------+-----------------+-----------------------------+ 83 108 | Hisilicon | Hip0{5,6,7} | #161010101 | HISILICON_ERRATUM_161010101 | 109 + +----------------+-----------------+-----------------+-----------------------------+ 84 110 | Hisilicon | Hip0{6,7} | #161010701 | N/A | 111 + +----------------+-----------------+-----------------+-----------------------------+ 85 112 | Hisilicon | Hip07 | #161600802 | HISILICON_ERRATUM_161600802 | 113 + +----------------+-----------------+-----------------+-----------------------------+ 86 114 | Hisilicon | Hip08 SMMU PMCG | #162001800 | N/A | 87 - | | | | | 115 + +----------------+-----------------+-----------------+-----------------------------+ 116 + +----------------+-----------------+-----------------+-----------------------------+ 88 117 | Qualcomm Tech. | Kryo/Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 | 118 + +----------------+-----------------+-----------------+-----------------------------+ 89 119 | Qualcomm Tech. | Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 | 120 + +----------------+-----------------+-----------------+-----------------------------+ 90 121 | Qualcomm Tech. | QDF2400 ITS | E0065 | QCOM_QDF2400_ERRATUM_0065 | 122 + +----------------+-----------------+-----------------+-----------------------------+ 91 123 | Qualcomm Tech. | Falkor v{1,2} | E1041 | QCOM_FALKOR_ERRATUM_1041 | 124 + +----------------+-----------------+-----------------+-----------------------------+ 125 + +----------------+-----------------+-----------------+-----------------------------+ 92 126 | Fujitsu | A64FX | E#010001 | FUJITSU_ERRATUM_010001 | 127 + +----------------+-----------------+-----------------+-----------------------------+
+8 -4
Documentation/arm64/sve.txt Documentation/arm64/sve.rst
··· 1 - Scalable Vector Extension support for AArch64 Linux 2 - =================================================== 1 + =================================================== 2 + Scalable Vector Extension support for AArch64 Linux 3 + =================================================== 3 4 4 5 Author: Dave Martin <Dave.Martin@arm.com> 6 + 5 7 Date: 4 August 2017 6 8 7 9 This document outlines briefly the interface provided to userspace by Linux in ··· 428 426 429 427 * FPSR and FPCR are retained from ARMv8-A, and interact with SVE floating-point 430 428 operations in a similar way to the way in which they interact with ARMv8 431 - floating-point operations. 429 + floating-point operations:: 432 430 433 431 8VL-1 128 0 bit index 434 432 +---- //// -----------------+ ··· 485 483 * 32 128-bit vector registers V0..V31 486 484 * 2 32-bit status/control registers FPSR, FPCR 487 485 486 + :: 487 + 488 488 127 0 bit index 489 489 +---------------+ 490 490 V0 | | ··· 521 517 [2] arch/arm64/include/uapi/asm/ptrace.h 522 518 AArch64 Linux ptrace ABI definitions 523 519 524 - [3] Documentation/arm64/cpu-feature-registers.txt 520 + [3] Documentation/arm64/cpu-feature-registers.rst 525 521 526 522 [4] ARM IHI0055C 527 523 http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055c/IHI0055C_beta_aapcs64.pdf
+4 -2
Documentation/arm64/tagged-pointers.txt Documentation/arm64/tagged-pointers.rst
··· 1 - Tagged virtual addresses in AArch64 Linux 2 - ========================================= 1 + ========================================= 2 + Tagged virtual addresses in AArch64 Linux 3 + ========================================= 3 4 4 5 Author: Will Deacon <will.deacon@arm.com> 6 + 5 7 Date : 12 June 2013 6 8 7 9 This document briefly describes the provision of tagged virtual
+2 -2
Documentation/translations/zh_CN/arm64/booting.txt
··· 1 - Chinese translated version of Documentation/arm64/booting.txt 1 + Chinese translated version of Documentation/arm64/booting.rst 2 2 3 3 If you have any comment or update to the content, please contact the 4 4 original document maintainer directly. However, if you have a problem ··· 10 10 zh_CN: Fu Wei <wefu@redhat.com> 11 11 C: 55f058e7574c3615dea4615573a19bdb258696c6 12 12 --------------------------------------------------------------------- 13 - Documentation/arm64/booting.txt 的中文翻译 13 + Documentation/arm64/booting.rst 的中文翻译 14 14 15 15 如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文 16 16 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
+2 -2
Documentation/translations/zh_CN/arm64/legacy_instructions.txt
··· 1 - Chinese translated version of Documentation/arm64/legacy_instructions.txt 1 + Chinese translated version of Documentation/arm64/legacy_instructions.rst 2 2 3 3 If you have any comment or update to the content, please contact the 4 4 original document maintainer directly. However, if you have a problem ··· 10 10 Suzuki K. Poulose <suzuki.poulose@arm.com> 11 11 Chinese maintainer: Fu Wei <wefu@redhat.com> 12 12 --------------------------------------------------------------------- 13 - Documentation/arm64/legacy_instructions.txt 的中文翻译 13 + Documentation/arm64/legacy_instructions.rst 的中文翻译 14 14 15 15 如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文 16 16 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
+2 -2
Documentation/translations/zh_CN/arm64/memory.txt
··· 1 - Chinese translated version of Documentation/arm64/memory.txt 1 + Chinese translated version of Documentation/arm64/memory.rst 2 2 3 3 If you have any comment or update to the content, please contact the 4 4 original document maintainer directly. However, if you have a problem ··· 9 9 Maintainer: Catalin Marinas <catalin.marinas@arm.com> 10 10 Chinese maintainer: Fu Wei <wefu@redhat.com> 11 11 --------------------------------------------------------------------- 12 - Documentation/arm64/memory.txt 的中文翻译 12 + Documentation/arm64/memory.rst 的中文翻译 13 13 14 14 如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文 15 15 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
+2 -2
Documentation/translations/zh_CN/arm64/silicon-errata.txt
··· 1 - Chinese translated version of Documentation/arm64/silicon-errata.txt 1 + Chinese translated version of Documentation/arm64/silicon-errata.rst 2 2 3 3 If you have any comment or update to the content, please contact the 4 4 original document maintainer directly. However, if you have a problem ··· 10 10 zh_CN: Fu Wei <wefu@redhat.com> 11 11 C: 1926e54f115725a9248d0c4c65c22acaf94de4c4 12 12 --------------------------------------------------------------------- 13 - Documentation/arm64/silicon-errata.txt 的中文翻译 13 + Documentation/arm64/silicon-errata.rst 的中文翻译 14 14 15 15 如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文 16 16 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
+2 -2
Documentation/translations/zh_CN/arm64/tagged-pointers.txt
··· 1 - Chinese translated version of Documentation/arm64/tagged-pointers.txt 1 + Chinese translated version of Documentation/arm64/tagged-pointers.rst 2 2 3 3 If you have any comment or update to the content, please contact the 4 4 original document maintainer directly. However, if you have a problem ··· 9 9 Maintainer: Will Deacon <will.deacon@arm.com> 10 10 Chinese maintainer: Fu Wei <wefu@redhat.com> 11 11 --------------------------------------------------------------------- 12 - Documentation/arm64/tagged-pointers.txt 的中文翻译 12 + Documentation/arm64/tagged-pointers.rst 的中文翻译 13 13 14 14 如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文 15 15 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
+1 -1
Documentation/virtual/kvm/api.txt
··· 2205 2205 this vcpu, and determines which register slices are visible through 2206 2206 this ioctl interface. 2207 2207 2208 - (See Documentation/arm64/sve.txt for an explanation of the "vq" 2208 + (See Documentation/arm64/sve.rst for an explanation of the "vq" 2209 2209 nomenclature.) 2210 2210 2211 2211 KVM_REG_ARM64_SVE_VLS is only accessible after KVM_ARM_VCPU_INIT.
+1 -1
arch/arm64/include/asm/efi.h
··· 83 83 * guaranteed to cover the kernel Image. 84 84 * 85 85 * Since the EFI stub is part of the kernel Image, we can relax the 86 - * usual requirements in Documentation/arm64/booting.txt, which still 86 + * usual requirements in Documentation/arm64/booting.rst, which still 87 87 * apply to other bootloaders, and are required for some kernel 88 88 * configurations. 89 89 */
+1 -1
arch/arm64/include/asm/image.h
··· 27 27 28 28 /* 29 29 * struct arm64_image_header - arm64 kernel image header 30 - * See Documentation/arm64/booting.txt for details 30 + * See Documentation/arm64/booting.rst for details 31 31 * 32 32 * @code0: Executable code, or 33 33 * @mz_header alternatively used for part of MZ header
+1 -1
arch/arm64/include/uapi/asm/sigcontext.h
··· 137 137 * vector length beyond its initial architectural limit of 2048 bits 138 138 * (16 quadwords). 139 139 * 140 - * See linux/Documentation/arm64/sve.txt for a description of the VL/VQ 140 + * See linux/Documentation/arm64/sve.rst for a description of the VL/VQ 141 141 * terminology. 142 142 */ 143 143 #define SVE_VQ_BYTES __SVE_VQ_BYTES /* bytes per quadword */
+1 -1
arch/arm64/kernel/kexec_image.c
··· 53 53 54 54 /* 55 55 * We require a kernel with an unambiguous Image header. Per 56 - * Documentation/arm64/booting.txt, this is the case when image_size 56 + * Documentation/arm64/booting.rst, this is the case when image_size 57 57 * is non-zero (practically speaking, since v3.17). 58 58 */ 59 59 h = (struct arm64_image_header *)kernel;