• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Changelog
2
3## 0.5.0
4
5### Bug fixes
6
7- Reject the `PAGE_OR_TABLE` flag when passed to `map_range`, which would result in corrupt table
8  mappings to be created.
9
10### Breaking changes
11
12- Updated `modify_range` to split block entries before traversing them, and pass only the
13  descriptors and subregions that are completely covered by the given region to the updater callback
14  function.
15- Updated `modify_range` to only pass block or page descriptors to the callback function and prevent
16  them from being converted into table descriptors inadvertently.
17- Added rigid break-before-make (BBM) checks to `map_range` and `modify_range`.
18- Marked `activate` and `deactivate` methods as unsafe.
19
20### New features
21
22- Added new `map_range()` alternative `map_range_with_constraints()` with extra `contraints`
23  argument.
24- Added `walk_range` method that iterates over all block or page descriptorsthat intersect with a
25  given region, without permitting the callback to make changes to the descriptors
26
27## 0.4.1
28
29### Bug fixes
30
31- `RootTable`, `Mapping`, `IdMap` and `LinearMap` are now correctly marked as `Send`, as it doesn't
32  matter where they are used from.
33
34## 0.4.0
35
36### Breaking changes
37
38- Updated `bitflags` to 2.0.2, which changes the API of `Attributes` a bit.
39- Updated `map_range` method to support mapping leaf page table entries without the `VALID` flag.
40  `Attributes::VALID` is no longer implicitly set when mapping leaf page table entries.
41
42### New features
43
44- Added `modify_range` method to `IdMap`, `LinearMap` and `Mapping` to update details of a mapped
45  range. This can be used e.g. to change flags for some range which is already mapped. As part of
46  this, the `Descriptor` struct was added to the public API.
47- Added `DBM` and software flags to `Attributes`.
48
49## 0.3.0
50
51### Breaking changes
52
53- Made `Translation` trait responsible for allocating page tables. This should help make it possible
54  to use more complex mapping schemes, and to construct page tables in a different context to where
55  they are used.
56- Renamed `AddressRangeError` to `MapError`, which is now an enum with three variants and implements
57  `Display`.
58- `From<*const T>` and `From<*mut T>` are no longer implemented for `VirtualAddress`.
59- Added support for using TTBR1 as well as TTBR0; this changes various constructors to take an extra
60  parameter.
61
62### New features
63
64- Made `alloc` dependency optional via a feature flag.
65- Added support for linear mappings with new `LinearMap`.
66- Implemented subtraction of usize from address types.
67
68### Bugfixes
69
70- Fixed memory leak introduced in 0.2.0: dropping a page table will now actually free its memory.
71
72## 0.2.1
73
74### New features
75
76- Implemented `Debug` and `Display` for `MemoryRegion`.
77- Implemented `From<Range<VirtualAddress>>` for `MemoryRegion`.
78- Implemented arithmetic operations for `PhysicalAddress` and `VirtualAddress`.
79
80## 0.2.0
81
82### Breaking changes
83
84- Added bounds check to `IdMap::map_range`; it will now return an error if you attempt to map a
85  virtual address outside the range of the page table given its configured root level.
86
87### New features
88
89- Implemented `Debug` for `PhysicalAddress` and `VirtualAddress`.
90- Validate that chosen root level is supported.
91
92### Bugfixes
93
94- Fixed bug in `Display` and `Drop` implementation for `RootTable` that would result in a crash for
95  any pagetable with non-zero mappings.
96- Fixed `Display` implementation for `PhysicalAddress` and `VirtualAddress` to use correct number of
97  digits.
98
99## 0.1.0
100
101Initial release.
102