Releases: google/aarch64-paging
Releases · google/aarch64-paging
Release list
0.12.1
0.12.0
Breaking changes
Attributeshas been split intoEl1Attributes,El23AttributesandStage2Attributes. Use the
appropriate type for the translation regime you are using. This has been added as a generic
parameter toDescriptor,PageTable,TargetAllocator,IdTranslation,LinearTranslation
andUpdatableDescriptor.TranslationRegimeis now a trait rather than an enum, with implementations for each regime. This
has been added as a generic parameter toRootTable,Mapping,IdMapandLinearMap.MapError::InvalidFlagshas ausizerather than anAttributesvalue.Mapping,IdMapandLinearMapnow have separate constructors for regimes with (with_asidor
with_asid_and_va_range) and without (new) an ASID.IdTranslationis no longer a unit struct; it can be constructed withIdTranslation::new.
New features
- Added support for stage-2 page tables.
Bugfixes
- Don't use blocks at level 0. This doesn't work unless LPA2 is enabled, which we don't yet support.
0.11.0
Breaking changes
- Manipulation of live descriptors now performs the required TLB maintenance after each update so
that the attribute changes take effect immediately. To achieve this, themodify_rangemethods on
IdMap,LinearMapandMappingnow pass the newUpdatableDescriptortype rather than
Descriptorand level to the updater function. RootTable::modify_rangeis no longer public.
New features
- Added
compact_subtablesmethod toIdMap,LinearMap,MappingandRootTable. This will
replace any subtables which are entirely empty with an invalid descriptor, and free the subtables.
Improvements
Debugimplementation forRootTablenow includestranslation_regimeandva_rangefields.Debugimplementation forRootTablenow groups contiguous mapped ranges together.- Unmapping a region covering an entire subtable will replace the table descriptor with an invalid
descriptor and free the subtable. - Unmapping a region will zero the PA, and won't add the
TABLE_OR_PAGEbit to the attributes
given.
0.10.0
New features
- Added
Attributes::GPbit for BTI guarded pages.
Breaking changes
zerocopyfeature has been removed.PageTable::write_tois provided instead.IdMap::activatenow returns the previous TTBR value rather than storing it, and
IdMap::deactivatetakes the TTBR value to restore as a parameter.IdMap::mark_activeno longer
takes a previous TTBR value parameter. The same applies to the equivalent methods onLinearMap.- Renamed
Mapping::activate_rawtoactivate, and added previous TTBR value parameter to
Mapping::deactivate. - A page table may be activated multiple times (e.g. on multiple cores) and will keep track of how
many times it has been activated. It will only be considered inactive once it has been deactivated
the same number of times. MapError::PteUpdateFaultnow contains ausizerather than aDescriptor.Descriptorno longer implementsCopy,Clone,Default,PartialEqorEq, as it now
contains anAtomicUsizerather than just ausize. Various methods onDescriptornow take
&selfrather thanself.
0.9.1
0.9.0
Breaking changes
Descriptor::flagsnow returnsAttributesrather thanOption<Attributes>. If any unknown bits
are set they will be included.
Bug fixes
Descriptor::is_table_or_pagewill return the correct value even if unknown bits are set.
Previously it would return false in this case.
New features
- Added
PXN_TABLE,XN_TABLE,AP_TABLE_NO_EL0,AP_TABLE_NO_WRITEandNS_TABLEbits to
Attributes.
0.8.1
0.8.0
Breaking changes
- Updated to
zerocopy0.8.2.
New features
- Added
mairmodule with types to build MAIR values. - Implemented
DefaultforAttributes,Descriptor,PageTable,PhysicalAddressand
VirtualAddress. Added associatedEMPTYconstant forDescriptorandPageTable.
0.7.1
New features
- Added
Mapping::translationmethod. - Added
Mapping::size,IdMap::sizeandLinearMap::sizemethods. - Derived zerocopy traits for
VirtualAddress,PhysicalAddress,PageTableandDescriptor.
This is guarded behind thezerocopyfeature so the dependency can be avoided if not desired. - Added
TargetAllocatorfor pregenerating a static pagetable for a target device.
0.7.0
Breaking changes
Translation::allocate_tableandTranslation::deallocate_tablenow take&mut selfrather
than `&self.
Other changes
- The
Translationtype parameter toMappingno longer needs to beClone. IdMap,LinearMap,MappingandRootTableare nowSync.