Skip to content

Releases: google/aarch64-paging

0.12.1

Choose a tag to compare

@qwandor qwandor released this 02 Apr 12:49

Bugfixes

  • Fixed value of El23Attributes::XN.

Improvements

  • Added NT and CONTIGUOUS_OR_PROTECTED bits to El1Attributes and El23Attributes.
  • Added El23Attributes::USER_RES1.

0.12.0

Choose a tag to compare

@qwandor qwandor released this 10 Mar 15:48

Breaking changes

  • Attributes has been split into El1Attributes, El23Attributes and Stage2Attributes. Use the
    appropriate type for the translation regime you are using. This has been added as a generic
    parameter to Descriptor, PageTable, TargetAllocator, IdTranslation, LinearTranslation
    and UpdatableDescriptor.
  • TranslationRegime is now a trait rather than an enum, with implementations for each regime. This
    has been added as a generic parameter to RootTable, Mapping, IdMap and LinearMap.
  • MapError::InvalidFlags has a usize rather than an Attributes value.
  • Mapping, IdMap and LinearMap now have separate constructors for regimes with (with_asid or
    with_asid_and_va_range) and without (new) an ASID.
  • IdTranslation is no longer a unit struct; it can be constructed with IdTranslation::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

Choose a tag to compare

@qwandor qwandor released this 16 Dec 12:01

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, the modify_range methods on
    IdMap, LinearMap and Mapping now pass the new UpdatableDescriptor type rather than
    Descriptor and level to the updater function.
  • RootTable::modify_range is no longer public.

New features

  • Added compact_subtables method to IdMap, LinearMap, Mapping and RootTable. This will
    replace any subtables which are entirely empty with an invalid descriptor, and free the subtables.

Improvements

  • Debug implementation for RootTable now includes translation_regime and va_range fields.
  • Debug implementation for RootTable now 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_PAGE bit to the attributes
    given.

0.10.0

Choose a tag to compare

@qwandor qwandor released this 10 Jul 10:36

New features

  • Added Attributes::GP bit for BTI guarded pages.

Breaking changes

  • zerocopy feature has been removed. PageTable::write_to is provided instead.
  • IdMap::activate now returns the previous TTBR value rather than storing it, and
    IdMap::deactivate takes the TTBR value to restore as a parameter. IdMap::mark_active no longer
    takes a previous TTBR value parameter. The same applies to the equivalent methods on LinearMap.
  • Renamed Mapping::activate_raw to activate, 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::PteUpdateFault now contains a usize rather than a Descriptor.
  • Descriptor no longer implements Copy, Clone, Default, PartialEq or Eq, as it now
    contains an AtomicUsize rather than just a usize. Various methods on Descriptor now take
    &self rather than self.

0.9.1

Choose a tag to compare

@qwandor qwandor released this 10 Jul 10:35

New features

  • Added Mapping::activate_raw to support multicore usage and other scenarios.
  • Added Mapping::asid to get ASID.

0.9.0

Choose a tag to compare

@qwandor qwandor released this 10 Jul 10:35

Breaking changes

  • Descriptor::flags now returns Attributes rather than Option<Attributes>. If any unknown bits
    are set they will be included.

Bug fixes

  • Descriptor::is_table_or_page will 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_WRITE and NS_TABLE bits to
    Attributes.

0.8.1

Choose a tag to compare

@qwandor qwandor released this 16 Mar 14:04

New features

  • MapError now implements core::error::Error.
  • Made output_address method on Descriptor public.

0.8.0

Choose a tag to compare

@qwandor qwandor released this 15 Oct 15:33

Breaking changes

  • Updated to zerocopy 0.8.2.

New features

  • Added mair module with types to build MAIR values.
  • Implemented Default for Attributes, Descriptor, PageTable, PhysicalAddress and
    VirtualAddress. Added associated EMPTY constant for Descriptor and PageTable.

0.7.1

Choose a tag to compare

@qwandor qwandor released this 02 Aug 10:37

New features

  • Added Mapping::translation method.
  • Added Mapping::size, IdMap::size and LinearMap::size methods.
  • Derived zerocopy traits for VirtualAddress, PhysicalAddress, PageTable and Descriptor.
    This is guarded behind the zerocopy feature so the dependency can be avoided if not desired.
  • Added TargetAllocator for pregenerating a static pagetable for a target device.

0.7.0

Choose a tag to compare

@qwandor qwandor released this 19 Jul 10:58

Breaking changes

  • Translation::allocate_table and Translation::deallocate_table now take &mut self rather
    than `&self.

Other changes

  • The Translation type parameter to Mapping no longer needs to be Clone.
  • IdMap, LinearMap, Mapping and RootTable are now Sync.