mirror of
https://github.com/torvalds/linux.git
synced 2026-07-30 03:01:41 +02:00
Tenstorrent device tree for v7.2
Add a riscv,pmu node to the Tenstorrent Blackhole SoC device tree. This enables OpenSBI to expose the SBI PMU extension, allowing Linux perf to use the 4 programmable counters (mhpmcounter3-6) across 3 event classes: instruction commit, microarchitectural, and memory system events. Extend the RISC-V IOMMU device tree bindings to document the Tenstorrent IOMMU used in the Tenstorrent Atlantis SoC. A second register range is added which contains M-mode only registers like PMAs and PMPs. The binding will be used by OpenSBI and potentially other M-mode software. -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQSy8G7QpEpV9aCf6Lbb7CzD2SixDAUCah4MhgAKCRDb7CzD2Six DKgDAP93cm8LE7eQTxSWGdgcgWG+tQrb+E/5qcjt8oN4vqOHkQEAw2+Fk1hxvxIz LvM2xAg+1REKuW3tYJjVfB/m6e9LagE= =bY/J -----END PGP SIGNATURE----- Merge tag 'tenstorrent-dt-for-v7.2' of https://git.kernel.org/pub/scm/linux/kernel/git/tenstorrent/linux into soc/dt Tenstorrent device tree for v7.2 Add a riscv,pmu node to the Tenstorrent Blackhole SoC device tree. This enables OpenSBI to expose the SBI PMU extension, allowing Linux perf to use the 4 programmable counters (mhpmcounter3-6) across 3 event classes: instruction commit, microarchitectural, and memory system events. Extend the RISC-V IOMMU device tree bindings to document the Tenstorrent IOMMU used in the Tenstorrent Atlantis SoC. A second register range is added which contains M-mode only registers like PMAs and PMPs. The binding will be used by OpenSBI and potentially other M-mode software. * tag 'tenstorrent-dt-for-v7.2' of https://git.kernel.org/pub/scm/linux/kernel/git/tenstorrent/linux: dt-bindings: iommu: riscv: Add bindings for Tenstorrent RISC-V IOMMU riscv: dts: tenstorrent: Add PMU node to blackhole for Linux perf support Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
This commit is contained in:
commit
6b2b89b1bc
|
|
@ -32,22 +32,35 @@ properties:
|
|||
# should be specified along with 'reg' property providing MMIO location.
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- description: Platform (non-PCIe) IOMMU implementations
|
||||
items:
|
||||
- enum:
|
||||
- qemu,riscv-iommu
|
||||
- tenstorrent,riscv-iommu
|
||||
- const: riscv,iommu
|
||||
- items:
|
||||
- description: PCIe IOMMU implementations
|
||||
items:
|
||||
- enum:
|
||||
- pci1efd,edf1
|
||||
- const: riscv,pci-iommu
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
description:
|
||||
For non-PCI devices this represents base address and size of for the
|
||||
IOMMU memory mapped registers interface.
|
||||
For PCI IOMMU hardware implementation this should represent an address
|
||||
of the IOMMU, as defined in the PCI Bus Binding reference.
|
||||
minItems: 1
|
||||
items:
|
||||
- description:
|
||||
For non-PCI devices, base address and size of the IOMMU memory
|
||||
mapped registers interface. For PCI IOMMU hardware
|
||||
implementation, an address of the IOMMU, as defined in the PCI
|
||||
Bus Binding reference.
|
||||
- description:
|
||||
Region containing platform specific MMRs for machine-mode
|
||||
configuration, such as PMA and PMP registers.
|
||||
|
||||
reg-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: base
|
||||
- const: machine
|
||||
|
||||
'#iommu-cells':
|
||||
const: 1
|
||||
|
|
@ -75,6 +88,26 @@ required:
|
|||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- tenstorrent,riscv-iommu
|
||||
then:
|
||||
properties:
|
||||
reg:
|
||||
minItems: 2
|
||||
reg-names:
|
||||
minItems: 2
|
||||
else:
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
reg-names:
|
||||
maxItems: 1
|
||||
|
||||
examples:
|
||||
- |+
|
||||
/* Example 1 (IOMMU device with wired interrupts) */
|
||||
|
|
@ -145,3 +178,13 @@ examples:
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
- |+
|
||||
/* Example 5 (Tenstorrent IOMMU device with MSIs) */
|
||||
iommu5: iommu@d2020000 {
|
||||
compatible = "tenstorrent,riscv-iommu", "riscv,iommu";
|
||||
reg = <0xd2020000 0x10000>, <0xaa000000 0x10000>;
|
||||
reg-names = "base", "machine";
|
||||
msi-parent = <&imsics_smode>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -77,6 +77,54 @@ cpu3_intc: interrupt-controller {
|
|||
};
|
||||
};
|
||||
|
||||
pmu {
|
||||
compatible = "riscv,pmu";
|
||||
riscv,event-to-mhpmevent =
|
||||
/* SBI_PMU_HW_CPU_CYCLES -> CPU cycles */
|
||||
<0x00001 0x00000000 0x0001>,
|
||||
/* SBI_PMU_HW_INSTRUCTIONS -> Instructions executed */
|
||||
<0x00002 0x00000000 0x0004>,
|
||||
/* SBI_PMU_HW_CACHE_REFERENCES -> I-cache/ITIM busy | D-cache/DTIM busy */
|
||||
<0x00003 0x00000000 0x1801>,
|
||||
/* SBI_PMU_HW_CACHE_MISSES -> I-cache miss | D-cache miss */
|
||||
<0x00004 0x00000000 0x0302>,
|
||||
/* SBI_PMU_HW_BRANCH_INSTRUCTIONS -> Conditional branch retired */
|
||||
<0x00005 0x00000000 0x4000>,
|
||||
/*
|
||||
* SBI_PMU_HW_BRANCH_MISSES ->
|
||||
* Branch direction misprediction | Branch/jump target misprediction
|
||||
*/
|
||||
<0x00006 0x00000000 0x6001>,
|
||||
/* L1D_READ_MISS -> Data cache miss or MMIO access */
|
||||
<0x10001 0x00000000 0x0202>,
|
||||
/* L1D_WRITE_ACCESS -> Data cache write-back */
|
||||
<0x10002 0x00000000 0x0402>,
|
||||
/* L1I_READ_MISS -> Instruction cache miss */
|
||||
<0x10009 0x00000000 0x0102>,
|
||||
/* LL_READ_MISS -> UTLB miss */
|
||||
<0x10011 0x00000000 0x2002>,
|
||||
/* DTLB_READ_MISS -> Data TLB miss */
|
||||
<0x10019 0x00000000 0x1002>,
|
||||
/* ITLB_READ_MISS -> Instruction TLB miss */
|
||||
<0x10021 0x00000000 0x0802>;
|
||||
riscv,event-to-mhpmcounters =
|
||||
<0x00001 0x00001 0x01>,
|
||||
<0x00002 0x00002 0x04>,
|
||||
<0x00003 0x00006 0x78>,
|
||||
<0x10001 0x10002 0x78>,
|
||||
<0x10009 0x10009 0x78>,
|
||||
<0x10011 0x10011 0x78>,
|
||||
<0x10019 0x10019 0x78>,
|
||||
<0x10021 0x10021 0x78>;
|
||||
riscv,raw-event-to-mhpmcounters =
|
||||
/* Class 0: Instruction Commit Events, bits 8-25 variant */
|
||||
<0x0 0x0 0xffffffff 0xfc0000ff 0x78>,
|
||||
/* Class 1: Microarchitectural Events, bits 8-18 variant */
|
||||
<0x0 0x1 0xffffffff 0xfff800ff 0x78>,
|
||||
/* Class 2: Memory System Events, bits 8-13 variant */
|
||||
<0x0 0x2 0xffffffff 0xffffc0ff 0x78>;
|
||||
};
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user