pub struct EcapReg(/* private fields */);Expand description
Extended Capability Register (MMIO offset 0x010, 64-bit, RO). §11.4.3.
Reports queued invalidation, interrupt remapping, scalable translation, and second-stage accessed/dirty capabilities.
Implementations§
Source§impl EcapReg
impl EcapReg
Sourcepub const fn with_c_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_c_checked(self, value: bool) -> Result<Self, ()>
Page-walk Coherency — 1 = hardware ensures coherency.
Bits: 0..1
Sourcepub const fn with_c(self, value: bool) -> Self
pub const fn with_c(self, value: bool) -> Self
Page-walk Coherency — 1 = hardware ensures coherency.
Bits: 0..1
Sourcepub const fn set_c(&mut self, value: bool)
pub const fn set_c(&mut self, value: bool)
Page-walk Coherency — 1 = hardware ensures coherency.
Bits: 0..1
Sourcepub const fn set_c_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_c_checked(&mut self, value: bool) -> Result<(), ()>
Page-walk Coherency — 1 = hardware ensures coherency.
Bits: 0..1
Sourcepub const fn with_qi_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_qi_checked(self, value: bool) -> Result<Self, ()>
Queued Invalidation support.
Bits: 1..2
Sourcepub const fn set_qi_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_qi_checked(&mut self, value: bool) -> Result<(), ()>
Queued Invalidation support.
Bits: 1..2
Sourcepub const fn with_dt_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_dt_checked(self, value: bool) -> Result<Self, ()>
Device-TLB support (not implemented).
Bits: 2..3
Sourcepub const fn with_dt(self, value: bool) -> Self
pub const fn with_dt(self, value: bool) -> Self
Device-TLB support (not implemented).
Bits: 2..3
Sourcepub const fn set_dt_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_dt_checked(&mut self, value: bool) -> Result<(), ()>
Device-TLB support (not implemented).
Bits: 2..3
Sourcepub const fn with_ir_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_ir_checked(self, value: bool) -> Result<Self, ()>
Interrupt Remapping support.
Bits: 3..4
Sourcepub const fn set_ir_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_ir_checked(&mut self, value: bool) -> Result<(), ()>
Interrupt Remapping support.
Bits: 3..4
Sourcepub const fn eim(&self) -> bool
pub const fn eim(&self) -> bool
Extended Interrupt Mode — 1 = x2APIC (32-bit destination IDs).
Bits: 4..5
Sourcepub const fn with_eim_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_eim_checked(self, value: bool) -> Result<Self, ()>
Extended Interrupt Mode — 1 = x2APIC (32-bit destination IDs).
Bits: 4..5
Sourcepub const fn with_eim(self, value: bool) -> Self
pub const fn with_eim(self, value: bool) -> Self
Extended Interrupt Mode — 1 = x2APIC (32-bit destination IDs).
Bits: 4..5
Sourcepub const fn set_eim(&mut self, value: bool)
pub const fn set_eim(&mut self, value: bool)
Extended Interrupt Mode — 1 = x2APIC (32-bit destination IDs).
Bits: 4..5
Sourcepub const fn set_eim_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_eim_checked(&mut self, value: bool) -> Result<(), ()>
Extended Interrupt Mode — 1 = x2APIC (32-bit destination IDs).
Bits: 4..5
Sourcepub const fn with_pt_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_pt_checked(self, value: bool) -> Result<Self, ()>
Pass Through support.
Bits: 6..7
Sourcepub const fn set_pt_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_pt_checked(&mut self, value: bool) -> Result<(), ()>
Pass Through support.
Bits: 6..7
Sourcepub const fn with_sc_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_sc_checked(self, value: bool) -> Result<Self, ()>
Snoop Control support.
Bits: 7..8
Sourcepub const fn set_sc_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_sc_checked(&mut self, value: bool) -> Result<(), ()>
Snoop Control support.
Bits: 7..8
Sourcepub const fn iro(&self) -> u16
pub const fn iro(&self) -> u16
IOTLB Register Offset (10 bits). Offset in 16-byte units from register base. IRO=0x10 → offset 0x100.
Bits: 8..18
Sourcepub const fn with_iro_checked(self, value: u16) -> Result<Self, ()>
pub const fn with_iro_checked(self, value: u16) -> Result<Self, ()>
IOTLB Register Offset (10 bits). Offset in 16-byte units from register base. IRO=0x10 → offset 0x100.
Bits: 8..18
Sourcepub const fn with_iro(self, value: u16) -> Self
pub const fn with_iro(self, value: u16) -> Self
IOTLB Register Offset (10 bits). Offset in 16-byte units from register base. IRO=0x10 → offset 0x100.
Bits: 8..18
Sourcepub const fn set_iro(&mut self, value: u16)
pub const fn set_iro(&mut self, value: u16)
IOTLB Register Offset (10 bits). Offset in 16-byte units from register base. IRO=0x10 → offset 0x100.
Bits: 8..18
Sourcepub const fn set_iro_checked(&mut self, value: u16) -> Result<(), ()>
pub const fn set_iro_checked(&mut self, value: u16) -> Result<(), ()>
IOTLB Register Offset (10 bits). Offset in 16-byte units from register base. IRO=0x10 → offset 0x100.
Bits: 8..18
Sourcepub const fn mhmv(&self) -> u8
pub const fn mhmv(&self) -> u8
Maximum Handle Mask Value (4 bits) for interrupt remapping.
Bits: 20..24
Sourcepub const fn with_mhmv_checked(self, value: u8) -> Result<Self, ()>
pub const fn with_mhmv_checked(self, value: u8) -> Result<Self, ()>
Maximum Handle Mask Value (4 bits) for interrupt remapping.
Bits: 20..24
Sourcepub const fn with_mhmv(self, value: u8) -> Self
pub const fn with_mhmv(self, value: u8) -> Self
Maximum Handle Mask Value (4 bits) for interrupt remapping.
Bits: 20..24
Sourcepub const fn set_mhmv(&mut self, value: u8)
pub const fn set_mhmv(&mut self, value: u8)
Maximum Handle Mask Value (4 bits) for interrupt remapping.
Bits: 20..24
Sourcepub const fn set_mhmv_checked(&mut self, value: u8) -> Result<(), ()>
pub const fn set_mhmv_checked(&mut self, value: u8) -> Result<(), ()>
Maximum Handle Mask Value (4 bits) for interrupt remapping.
Bits: 20..24
Sourcepub const fn with_mts_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_mts_checked(self, value: bool) -> Result<Self, ()>
Memory Type Support (not used).
Bits: 25..26
Sourcepub const fn set_mts_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_mts_checked(&mut self, value: bool) -> Result<(), ()>
Memory Type Support (not used).
Bits: 25..26
Sourcepub const fn with_nest_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_nest_checked(self, value: bool) -> Result<Self, ()>
Nested Translation support (not implemented).
Bits: 26..27
Sourcepub const fn with_nest(self, value: bool) -> Self
pub const fn with_nest(self, value: bool) -> Self
Nested Translation support (not implemented).
Bits: 26..27
Sourcepub const fn set_nest(&mut self, value: bool)
pub const fn set_nest(&mut self, value: bool)
Nested Translation support (not implemented).
Bits: 26..27
Sourcepub const fn set_nest_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_nest_checked(&mut self, value: bool) -> Result<(), ()>
Nested Translation support (not implemented).
Bits: 26..27
Sourcepub const fn with_prs_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_prs_checked(self, value: bool) -> Result<Self, ()>
Page Request support (not implemented).
Bits: 29..30
Sourcepub const fn with_prs(self, value: bool) -> Self
pub const fn with_prs(self, value: bool) -> Self
Page Request support (not implemented).
Bits: 29..30
Sourcepub const fn set_prs(&mut self, value: bool)
pub const fn set_prs(&mut self, value: bool)
Page Request support (not implemented).
Bits: 29..30
Sourcepub const fn set_prs_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_prs_checked(&mut self, value: bool) -> Result<(), ()>
Page Request support (not implemented).
Bits: 29..30
Sourcepub const fn with_ers_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_ers_checked(self, value: bool) -> Result<Self, ()>
Execute Request support (not implemented).
Bits: 30..31
Sourcepub const fn with_ers(self, value: bool) -> Self
pub const fn with_ers(self, value: bool) -> Self
Execute Request support (not implemented).
Bits: 30..31
Sourcepub const fn set_ers(&mut self, value: bool)
pub const fn set_ers(&mut self, value: bool)
Execute Request support (not implemented).
Bits: 30..31
Sourcepub const fn set_ers_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_ers_checked(&mut self, value: bool) -> Result<(), ()>
Execute Request support (not implemented).
Bits: 30..31
Sourcepub const fn with_srs_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_srs_checked(self, value: bool) -> Result<Self, ()>
Supervisor Request support (not implemented).
Bits: 31..32
Sourcepub const fn with_srs(self, value: bool) -> Self
pub const fn with_srs(self, value: bool) -> Self
Supervisor Request support (not implemented).
Bits: 31..32
Sourcepub const fn set_srs(&mut self, value: bool)
pub const fn set_srs(&mut self, value: bool)
Supervisor Request support (not implemented).
Bits: 31..32
Sourcepub const fn set_srs_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_srs_checked(&mut self, value: bool) -> Result<(), ()>
Supervisor Request support (not implemented).
Bits: 31..32
Sourcepub const fn with_nwfs_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_nwfs_checked(self, value: bool) -> Result<Self, ()>
No Write Flag support.
Bits: 33..34
Sourcepub const fn set_nwfs_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_nwfs_checked(&mut self, value: bool) -> Result<(), ()>
No Write Flag support.
Bits: 33..34
Sourcepub const fn with_eafs_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_eafs_checked(self, value: bool) -> Result<Self, ()>
Extended Accessed Flag support.
Bits: 34..35
Sourcepub const fn set_eafs_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_eafs_checked(&mut self, value: bool) -> Result<(), ()>
Extended Accessed Flag support.
Bits: 34..35
Sourcepub const fn with_pss_checked(self, value: u8) -> Result<Self, ()>
pub const fn with_pss_checked(self, value: u8) -> Result<Self, ()>
Process Address Space ID Size (5 bits, not used).
Bits: 35..40
Sourcepub const fn with_pss(self, value: u8) -> Self
pub const fn with_pss(self, value: u8) -> Self
Process Address Space ID Size (5 bits, not used).
Bits: 35..40
Sourcepub const fn set_pss(&mut self, value: u8)
pub const fn set_pss(&mut self, value: u8)
Process Address Space ID Size (5 bits, not used).
Bits: 35..40
Sourcepub const fn set_pss_checked(&mut self, value: u8) -> Result<(), ()>
pub const fn set_pss_checked(&mut self, value: u8) -> Result<(), ()>
Process Address Space ID Size (5 bits, not used).
Bits: 35..40
Sourcepub const fn with_pasid_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_pasid_checked(self, value: bool) -> Result<Self, ()>
PASID Translation support (not implemented).
Bits: 40..41
Sourcepub const fn with_pasid(self, value: bool) -> Self
pub const fn with_pasid(self, value: bool) -> Self
PASID Translation support (not implemented).
Bits: 40..41
Sourcepub const fn set_pasid(&mut self, value: bool)
pub const fn set_pasid(&mut self, value: bool)
PASID Translation support (not implemented).
Bits: 40..41
Sourcepub const fn set_pasid_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_pasid_checked(&mut self, value: bool) -> Result<(), ()>
PASID Translation support (not implemented).
Bits: 40..41
Sourcepub const fn with_dit_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_dit_checked(self, value: bool) -> Result<Self, ()>
Device-TLB Invalidation Throttle (not used).
Bits: 41..42
Sourcepub const fn with_dit(self, value: bool) -> Self
pub const fn with_dit(self, value: bool) -> Self
Device-TLB Invalidation Throttle (not used).
Bits: 41..42
Sourcepub const fn set_dit(&mut self, value: bool)
pub const fn set_dit(&mut self, value: bool)
Device-TLB Invalidation Throttle (not used).
Bits: 41..42
Sourcepub const fn set_dit_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_dit_checked(&mut self, value: bool) -> Result<(), ()>
Device-TLB Invalidation Throttle (not used).
Bits: 41..42
Sourcepub const fn with_pds_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_pds_checked(self, value: bool) -> Result<Self, ()>
Page-request Drain Support (not implemented).
Bits: 42..43
Sourcepub const fn with_pds(self, value: bool) -> Self
pub const fn with_pds(self, value: bool) -> Self
Page-request Drain Support (not implemented).
Bits: 42..43
Sourcepub const fn set_pds(&mut self, value: bool)
pub const fn set_pds(&mut self, value: bool)
Page-request Drain Support (not implemented).
Bits: 42..43
Sourcepub const fn set_pds_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_pds_checked(&mut self, value: bool) -> Result<(), ()>
Page-request Drain Support (not implemented).
Bits: 42..43
Sourcepub const fn smts(&self) -> bool
pub const fn smts(&self) -> bool
Scalable-mode DMA remapping through context and PASID tables.
Bits: 43..44
Sourcepub const fn with_smts_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_smts_checked(self, value: bool) -> Result<Self, ()>
Scalable-mode DMA remapping through context and PASID tables.
Bits: 43..44
Sourcepub const fn with_smts(self, value: bool) -> Self
pub const fn with_smts(self, value: bool) -> Self
Scalable-mode DMA remapping through context and PASID tables.
Bits: 43..44
Sourcepub const fn set_smts(&mut self, value: bool)
pub const fn set_smts(&mut self, value: bool)
Scalable-mode DMA remapping through context and PASID tables.
Bits: 43..44
Sourcepub const fn set_smts_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_smts_checked(&mut self, value: bool) -> Result<(), ()>
Scalable-mode DMA remapping through context and PASID tables.
Bits: 43..44
Sourcepub const fn with_vcs_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_vcs_checked(self, value: bool) -> Result<Self, ()>
Virtual Command support (not used).
Bits: 44..45
Sourcepub const fn with_vcs(self, value: bool) -> Self
pub const fn with_vcs(self, value: bool) -> Self
Virtual Command support (not used).
Bits: 44..45
Sourcepub const fn set_vcs_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_vcs_checked(&mut self, value: bool) -> Result<(), ()>
Virtual Command support (not used).
Bits: 44..45
Sourcepub const fn ssads(&self) -> bool
pub const fn ssads(&self) -> bool
Second-stage accessed/dirty flag support, enabled by PASID-entry SSADE.
Bits: 45..46
Sourcepub const fn with_ssads_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_ssads_checked(self, value: bool) -> Result<Self, ()>
Second-stage accessed/dirty flag support, enabled by PASID-entry SSADE.
Bits: 45..46
Sourcepub const fn with_ssads(self, value: bool) -> Self
pub const fn with_ssads(self, value: bool) -> Self
Second-stage accessed/dirty flag support, enabled by PASID-entry SSADE.
Bits: 45..46
Sourcepub const fn set_ssads(&mut self, value: bool)
pub const fn set_ssads(&mut self, value: bool)
Second-stage accessed/dirty flag support, enabled by PASID-entry SSADE.
Bits: 45..46
Sourcepub const fn set_ssads_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_ssads_checked(&mut self, value: bool) -> Result<(), ()>
Second-stage accessed/dirty flag support, enabled by PASID-entry SSADE.
Bits: 45..46
Sourcepub const fn ssts(&self) -> bool
pub const fn ssts(&self) -> bool
Second-stage translation support in scalable mode.
Bits: 46..47
Sourcepub const fn with_ssts_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_ssts_checked(self, value: bool) -> Result<Self, ()>
Second-stage translation support in scalable mode.
Bits: 46..47
Sourcepub const fn with_ssts(self, value: bool) -> Self
pub const fn with_ssts(self, value: bool) -> Self
Second-stage translation support in scalable mode.
Bits: 46..47
Sourcepub const fn set_ssts(&mut self, value: bool)
pub const fn set_ssts(&mut self, value: bool)
Second-stage translation support in scalable mode.
Bits: 46..47
Sourcepub const fn set_ssts_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_ssts_checked(&mut self, value: bool) -> Result<(), ()>
Second-stage translation support in scalable mode.
Bits: 46..47
Sourcepub const fn flts(&self) -> bool
pub const fn flts(&self) -> bool
First-stage Translation Support (scalable mode, not used).
Bits: 47..48
Sourcepub const fn with_flts_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_flts_checked(self, value: bool) -> Result<Self, ()>
First-stage Translation Support (scalable mode, not used).
Bits: 47..48
Sourcepub const fn with_flts(self, value: bool) -> Self
pub const fn with_flts(self, value: bool) -> Self
First-stage Translation Support (scalable mode, not used).
Bits: 47..48
Sourcepub const fn set_flts(&mut self, value: bool)
pub const fn set_flts(&mut self, value: bool)
First-stage Translation Support (scalable mode, not used).
Bits: 47..48
Sourcepub const fn set_flts_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_flts_checked(&mut self, value: bool) -> Result<(), ()>
First-stage Translation Support (scalable mode, not used).
Bits: 47..48
Sourcepub const fn smpwcs(&self) -> bool
pub const fn smpwcs(&self) -> bool
Scalable-mode page walks snoop according to PASID-entry PWSNP.
Bits: 48..49
Sourcepub const fn with_smpwcs_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_smpwcs_checked(self, value: bool) -> Result<Self, ()>
Scalable-mode page walks snoop according to PASID-entry PWSNP.
Bits: 48..49
Sourcepub const fn with_smpwcs(self, value: bool) -> Self
pub const fn with_smpwcs(self, value: bool) -> Self
Scalable-mode page walks snoop according to PASID-entry PWSNP.
Bits: 48..49
Sourcepub const fn set_smpwcs(&mut self, value: bool)
pub const fn set_smpwcs(&mut self, value: bool)
Scalable-mode page walks snoop according to PASID-entry PWSNP.
Bits: 48..49
Sourcepub const fn set_smpwcs_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_smpwcs_checked(&mut self, value: bool) -> Result<(), ()>
Scalable-mode page walks snoop according to PASID-entry PWSNP.
Bits: 48..49
Sourcepub const fn rps(&self) -> bool
pub const fn rps(&self) -> bool
Context-entry RID_PASID support for requests without an explicit PASID.
Bits: 49..50
Sourcepub const fn with_rps_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_rps_checked(self, value: bool) -> Result<Self, ()>
Context-entry RID_PASID support for requests without an explicit PASID.
Bits: 49..50
Sourcepub const fn with_rps(self, value: bool) -> Self
pub const fn with_rps(self, value: bool) -> Self
Context-entry RID_PASID support for requests without an explicit PASID.
Bits: 49..50
Sourcepub const fn set_rps(&mut self, value: bool)
pub const fn set_rps(&mut self, value: bool)
Context-entry RID_PASID support for requests without an explicit PASID.
Bits: 49..50
Sourcepub const fn set_rps_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_rps_checked(&mut self, value: bool) -> Result<(), ()>
Context-entry RID_PASID support for requests without an explicit PASID.
Bits: 49..50
Sourcepub const fn with_pms_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_pms_checked(self, value: bool) -> Result<Self, ()>
Performance Monitoring Support (not used).
Bits: 51..52
Sourcepub const fn with_pms(self, value: bool) -> Self
pub const fn with_pms(self, value: bool) -> Self
Performance Monitoring Support (not used).
Bits: 51..52
Sourcepub const fn set_pms(&mut self, value: bool)
pub const fn set_pms(&mut self, value: bool)
Performance Monitoring Support (not used).
Bits: 51..52
Sourcepub const fn set_pms_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_pms_checked(&mut self, value: bool) -> Result<(), ()>
Performance Monitoring Support (not used).
Bits: 51..52
Sourcepub const fn with_adms_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_adms_checked(self, value: bool) -> Result<Self, ()>
Abort DMA Mode Support (not used).
Bits: 52..53
Sourcepub const fn with_adms(self, value: bool) -> Self
pub const fn with_adms(self, value: bool) -> Self
Abort DMA Mode Support (not used).
Bits: 52..53
Sourcepub const fn set_adms_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_adms_checked(&mut self, value: bool) -> Result<(), ()>
Abort DMA Mode Support (not used).
Bits: 52..53
Sourcepub const fn with_rprivs_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_rprivs_checked(self, value: bool) -> Result<Self, ()>
RID_PRIV Support (not used).
Bits: 53..54
Sourcepub const fn with_rprivs(self, value: bool) -> Self
pub const fn with_rprivs(self, value: bool) -> Self
RID_PRIV Support (not used).
Bits: 53..54
Sourcepub const fn set_rprivs(&mut self, value: bool)
pub const fn set_rprivs(&mut self, value: bool)
RID_PRIV Support (not used).
Bits: 53..54
Sourcepub const fn set_rprivs_checked(&mut self, value: bool) -> Result<(), ()>
pub const fn set_rprivs_checked(&mut self, value: bool) -> Result<(), ()>
RID_PRIV Support (not used).
Bits: 53..54
Sourcepub const fn with_sms_checked(self, value: bool) -> Result<Self, ()>
pub const fn with_sms_checked(self, value: bool) -> Result<Self, ()>
Stop Marker Support (not used).
Bits: 58..59