← Home

PMBSR_EL1: Profiling Buffer Status/syndrome Register

Purpose

Provides syndrome information to software when the buffer is disabled because the management interrupt has been raised.

Configuration

This register is present only when FEAT_SPE is implemented. Otherwise, direct accesses to PMBSR_EL1 are UNDEFINED.

Attributes

PMBSR_EL1 is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
RES0TopLevelAssuredOnlyOverlayDirtyBitRES0
ECRES0DLEASCOLLMSS

Bits [63:41]

Reserved, RES0.

TopLevel, bit [40]

When FEAT_THE is implemented and EC == 0b10010x:

TopLevel.

Indicates if the fault was due to TopLevel.

TopLevelMeaning
0b0

Fault is not due to TopLevel.

0b1

Fault is due to TopLevel.

For any other fault, this field is RES0.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

AssuredOnly, bit [39]

When FEAT_THE is implemented and EC == 0b10010x:

AssuredOnly flag.

If a memory access generates a Stage 2 Data Abort, this field holds information about the fault.

AssuredOnlyMeaning
0b0

The Data Abort is not due to AssuredOnly.

0b1

The Data Abort is due to AssuredOnly.

For any other fault, this field is RES0.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

Overlay, bit [38]

When (FEAT_S1POE is implemented or FEAT_S2POE is implemented) and EC == 0b10010x:

Overlay flag.

If a memory access generates a Data Abort for a Permission fault, this field holds information about the fault.

OverlayMeaning
0b0

The Data Abort is not due to Overlay Permissions.

0b1

The Data Abort is due to Overlay Permissions.

For any other fault, this field is RES0.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

DirtyBit, bit [37]

When (FEAT_S1PIE is implemented or FEAT_S2PIE is implemented) and EC == 0b10010x:

DirtyBit flag.

If a write access to memory generates a Data Abort for a Permission fault using Indirect Permission, this field holds information about the fault.

DirtyBitMeaning
0b0

The Permission Fault is not due to nDirty State or Dirty State.

0b1

The Permission Fault is due to nDirty State or Dirty State.

For any other fault or Access, this field is RES0.

The reset behavior of this field is:



Otherwise:

Reserved, RES0.

Bits [36:32]

Reserved, RES0.

EC, bits [31:26]

Event class. Top-level description of the cause of the buffer management event.

ECMeaningMSSApplies when
0b000000

Other buffer management event. All buffer management events other than those described by other defined Event class codes.

MSS encoding for other buffer management events
0b011110

Granule Protection Check fault, other than GPF, on write to Profiling Buffer.

MSS encoding for Granule Protection Check faultWhen FEAT_RME is implemented
0b011111

Buffer management event for an IMPLEMENTATION DEFINED reason.

MSS encoding for a buffer management event for an IMPLEMENTATION DEFINED reason
0b100100

Stage 1 Data Abort on write to Profiling Buffer.

MSS encoding for stage 1 or stage 2 Data Aborts on write to buffer
0b100101

Stage 2 Data Abort on write to Profiling Buffer.

MSS encoding for stage 1 or stage 2 Data Aborts on write to buffer

All other values are reserved. Reserved values might be defined in a future version of the architecture.

Writing a reserved value to this field will make the value of this field UNKNOWN. Values that are not supported act as reserved values when writing to this register.

The reset behavior of this field is:

Bits [25:20]

Reserved, RES0.

DL, bit [19]

Partial record lost.

Following a buffer management event other than an asynchronous External abort, indicates whether the last record written to the Profiling Buffer is complete.

DLMeaning
0b0

PMBPTR_EL1 points to the first byte after the last complete record written to the Profiling Buffer.

0b1

Part of a record was lost because of a buffer management event or synchronous External abort. PMBPTR_EL1 might not point to the first byte after the last complete record written to the buffer, and so restarting collection might result in a data record stream that software cannot parse. All records prior to the last record have been written to the buffer.

When the buffer management event was because of an asynchronous External abort, this bit is set to 1 and software must not assume that any valid data has been written to the Profiling Buffer.

This bit is RES0 if the PE never sets this bit as a result of a buffer management event caused by an asynchronous External abort.

The reset behavior of this field is:

EA, bit [18]

External abort.

EAMeaning
0b0

An External abort has not been asserted.

0b1

An External abort has been asserted and detected by the Statistical Profiling Unit.

This bit is RES0 if the PE never sets this bit as the result of an External abort.

The reset behavior of this field is:

S, bit [17]

Service

SMeaning
0b0

PMBIRQ is not asserted.

0b1

PMBIRQ is asserted. All profiling data has either been written to the buffer or discarded.

The reset behavior of this field is:

COLL, bit [16]

Collision detected.

COLLMeaning
0b0

No collision events detected.

0b1

At least one collision event was recorded.

The reset behavior of this field is:

MSS, bits [15:0]

Management Event Specific Syndrome.

Contains syndrome specific to the management event.

The syndrome contents for each management event are described in the following sections.

The reset behavior of this field is:

MSS encoding for stage 1 or stage 2 Data Aborts on write to buffer

1514131211109876543210
RES0FSC

Bits [15:6]

Reserved, RES0.

FSC, bits [5:0]

Fault status code

FSCMeaningApplies when
0b000000

Address size fault, level 0 of translation or translation table base register.

0b000001

Address size fault, level 1.

0b000010

Address size fault, level 2.

0b000011

Address size fault, level 3.

0b000100

Translation fault, level 0.

0b000101

Translation fault, level 1.

0b000110

Translation fault, level 2.

0b000111

Translation fault, level 3.

0b001001

Access flag fault, level 1.

0b001010

Access flag fault, level 2.

0b001011

Access flag fault, level 3.

0b001000

Access flag fault, level 0.

When FEAT_LPA2 is implemented
0b001100

Permission fault, level 0.

When FEAT_LPA2 is implemented
0b001101

Permission fault, level 1.

0b001110

Permission fault, level 2.

0b001111

Permission fault, level 3.

0b010000

Synchronous External abort, not on translation table walk or hardware update of translation table.

0b010001

Asynchronous External abort.

0b010010

Synchronous External abort on translation table walk or hardware update of translation table, level -2.

When FEAT_D128 is implemented
0b010011

Synchronous External abort on translation table walk or hardware update of translation table, level -1.

When FEAT_LPA2 is implemented
0b010100

Synchronous External abort on translation table walk or hardware update of translation table, level 0.

0b010101

Synchronous External abort on translation table walk or hardware update of translation table, level 1.

0b010110

Synchronous External abort on translation table walk or hardware update of translation table, level 2.

0b010111

Synchronous External abort on translation table walk or hardware update of translation table, level 3.

0b011011

Synchronous parity or ECC error on memory access on translation table walk or hardware update of translation table, level -1.

When FEAT_LPA2 is implemented and FEAT_RAS is not implemented
0b100001

Alignment fault.

0b100010

Granule Protection Fault on translation table walk or hardware update of translation table, level -2.

When FEAT_D128 is implemented and FEAT_RME is implemented
0b100011

Granule Protection Fault on translation table walk or hardware update of translation table, level -1.

When FEAT_RME is implemented and FEAT_LPA2 is implemented
0b100100

Granule Protection Fault on translation table walk or hardware update of translation table, level 0.

When FEAT_RME is implemented
0b100101

Granule Protection Fault on translation table walk or hardware update of translation table, level 1.

When FEAT_RME is implemented
0b100110

Granule Protection Fault on translation table walk or hardware update of translation table, level 2.

When FEAT_RME is implemented
0b100111

Granule Protection Fault on translation table walk or hardware update of translation table, level 3.

When FEAT_RME is implemented
0b101000

Granule Protection Fault, not on translation table walk or hardware update of translation table.

When FEAT_RME is implemented
0b101001

Address size fault, level -1.

When FEAT_LPA2 is implemented
0b101010

Translation fault, level -2.

When FEAT_D128 is implemented
0b101011

Translation fault, level -1.

When FEAT_LPA2 is implemented
0b101100

Address Size fault, level -2.

When FEAT_D128 is implemented
0b110000

TLB conflict abort.

0b110001

Unsupported atomic hardware update fault.

When FEAT_HAFDBS is implemented

All other values are reserved.

It is IMPLEMENTATION DEFINED whether each of the Access Flag fault, asynchronous External abort and synchronous External abort, Alignment fault, and TLB Conflict abort values can be generated by the PE. For more information see 'Faults and Watchpoints'.

The reset behavior of this field is:

  • On a Warm reset, this field resets to an architecturally UNKNOWN value.

MSS encoding for other buffer management events

1514131211109876543210
RES0BSC

Bits [15:6]

Reserved, RES0.

BSC, bits [5:0]

Buffer status code

BSCMeaning
0b000000

Buffer not filled

0b000001

Buffer filled

All other values are reserved. Reserved values might be defined in a future version of the architecture.

Writing a reserved value to this field will make the value of this field UNKNOWN. Values that are not supported act as reserved values when writing to this register.

The reset behavior of this field is:

  • On a Warm reset, this field resets to an architecturally UNKNOWN value.

MSS encoding for Granule Protection Check fault

1514131211109876543210
RES0

Bits [15:0]

Reserved, RES0.

MSS encoding for a buffer management event for an IMPLEMENTATION DEFINED reason

1514131211109876543210
IMPLEMENTATION DEFINED

IMPLEMENTATION DEFINED, bits [15:0]

IMPLEMENTATION DEFINED.

The reset behavior of this field is:

  • On a Warm reset, this field resets to an architecturally UNKNOWN value.

Accessing PMBSR_EL1

Accesses to this register use the following encodings in the System register encoding space:

MRS <Xt>, PMBSR_EL1

op0op1CRnCRmop2
0b110b0000b10010b10100b011

if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if HaveEL(EL3) && EL3SDDUndefPriority() && (MDCR_EL3.NSPB[0] == '0' || MDCR_EL3.NSPB[1] != SCR_EL3.NS || (IsFeatureImplemented(FEAT_RME) && MDCR_EL3.NSPBE != SCR_EL3.NSE)) then UNDEFINED; elsif EL2Enabled() && IsFeatureImplemented(FEAT_FGT) && (!HaveEL(EL3) || SCR_EL3.FGTEn == '1') && HDFGRTR_EL2.PMBSR_EL1 == '1' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && MDCR_EL2.E2PB == 'x0' then AArch64.SystemAccessTrap(EL2, 0x18); elsif HaveEL(EL3) && (MDCR_EL3.NSPB[0] == '0' || MDCR_EL3.NSPB[1] != SCR_EL3.NS || (IsFeatureImplemented(FEAT_RME) && MDCR_EL3.NSPBE != SCR_EL3.NSE)) then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); elsif EffectiveHCR_EL2_NVx() == '1x1' then X[t, 64] = NVMem[0x820]; else X[t, 64] = PMBSR_EL1; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && EL3SDDUndefPriority() && (MDCR_EL3.NSPB[0] == '0' || MDCR_EL3.NSPB[1] != SCR_EL3.NS || (IsFeatureImplemented(FEAT_RME) && MDCR_EL3.NSPBE != SCR_EL3.NSE)) then UNDEFINED; elsif HaveEL(EL3) && (MDCR_EL3.NSPB[0] == '0' || MDCR_EL3.NSPB[1] != SCR_EL3.NS || (IsFeatureImplemented(FEAT_RME) && MDCR_EL3.NSPBE != SCR_EL3.NSE)) then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); else X[t, 64] = PMBSR_EL1; elsif PSTATE.EL == EL3 then X[t, 64] = PMBSR_EL1;

MSR PMBSR_EL1, <Xt>

op0op1CRnCRmop2
0b110b0000b10010b10100b011

if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if HaveEL(EL3) && EL3SDDUndefPriority() && (MDCR_EL3.NSPB[0] == '0' || MDCR_EL3.NSPB[1] != SCR_EL3.NS || (IsFeatureImplemented(FEAT_RME) && MDCR_EL3.NSPBE != SCR_EL3.NSE)) then UNDEFINED; elsif EL2Enabled() && IsFeatureImplemented(FEAT_FGT) && (!HaveEL(EL3) || SCR_EL3.FGTEn == '1') && HDFGWTR_EL2.PMBSR_EL1 == '1' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && MDCR_EL2.E2PB == 'x0' then AArch64.SystemAccessTrap(EL2, 0x18); elsif HaveEL(EL3) && (MDCR_EL3.NSPB[0] == '0' || MDCR_EL3.NSPB[1] != SCR_EL3.NS || (IsFeatureImplemented(FEAT_RME) && MDCR_EL3.NSPBE != SCR_EL3.NSE)) then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); elsif EffectiveHCR_EL2_NVx() == '1x1' then NVMem[0x820] = X[t, 64]; else PMBSR_EL1 = X[t, 64]; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && EL3SDDUndefPriority() && (MDCR_EL3.NSPB[0] == '0' || MDCR_EL3.NSPB[1] != SCR_EL3.NS || (IsFeatureImplemented(FEAT_RME) && MDCR_EL3.NSPBE != SCR_EL3.NSE)) then UNDEFINED; elsif HaveEL(EL3) && (MDCR_EL3.NSPB[0] == '0' || MDCR_EL3.NSPB[1] != SCR_EL3.NS || (IsFeatureImplemented(FEAT_RME) && MDCR_EL3.NSPBE != SCR_EL3.NSE)) then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); else PMBSR_EL1 = X[t, 64]; elsif PSTATE.EL == EL3 then PMBSR_EL1 = X[t, 64];