65e9fb0818
With the T-HEAD C9XX cores being designed before or during the ratification to the SSCOFPMF extension, it implements functionality very similar but not equal to it. It implements overflow handling and also some privilege-mode filtering. While SSCOFPMF supports this for all modes, the C9XX only implements the filtering for M-mode and S-mode but not user-mode. So add some adaptions to allow the C9XX to still handle its PMU through the regular SBI PMU interface instead of defining new interfaces or drivers. To work properly, this requires a matching change in SBI, though the actual interface between kernel and SBI does not change. The main differences are a the overflow CSR and irq number. As the reading of the overflow-csr is in the hot-path during irq handling, use an errata and alternatives to not introduce new conditionals there. Reviewed-by: Andrew Jones <ajones@ventanamicro.com> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Heiko Stuebner <heiko@sntech.de> Link: https://lore.kernel.org/all/20221011231841.2951264-2-heiko@sntech.de/ Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
83 lines
2.4 KiB
Plaintext
83 lines
2.4 KiB
Plaintext
menu "CPU errata selection"
|
|
|
|
config ERRATA_SIFIVE
|
|
bool "SiFive errata"
|
|
depends on !XIP_KERNEL
|
|
select RISCV_ALTERNATIVE
|
|
help
|
|
All SiFive errata Kconfig depend on this Kconfig. Disabling
|
|
this Kconfig will disable all SiFive errata. Please say "Y"
|
|
here if your platform uses SiFive CPU cores.
|
|
|
|
Otherwise, please say "N" here to avoid unnecessary overhead.
|
|
|
|
config ERRATA_SIFIVE_CIP_453
|
|
bool "Apply SiFive errata CIP-453"
|
|
depends on ERRATA_SIFIVE && 64BIT
|
|
default y
|
|
help
|
|
This will apply the SiFive CIP-453 errata to add sign extension
|
|
to the $badaddr when exception type is instruction page fault
|
|
and instruction access fault.
|
|
|
|
If you don't know what to do here, say "Y".
|
|
|
|
config ERRATA_SIFIVE_CIP_1200
|
|
bool "Apply SiFive errata CIP-1200"
|
|
depends on ERRATA_SIFIVE && 64BIT
|
|
default y
|
|
help
|
|
This will apply the SiFive CIP-1200 errata to repalce all
|
|
"sfence.vma addr" with "sfence.vma" to ensure that the addr
|
|
has been flushed from TLB.
|
|
|
|
If you don't know what to do here, say "Y".
|
|
|
|
config ERRATA_THEAD
|
|
bool "T-HEAD errata"
|
|
depends on !XIP_KERNEL
|
|
select RISCV_ALTERNATIVE
|
|
help
|
|
All T-HEAD errata Kconfig depend on this Kconfig. Disabling
|
|
this Kconfig will disable all T-HEAD errata. Please say "Y"
|
|
here if your platform uses T-HEAD CPU cores.
|
|
|
|
Otherwise, please say "N" here to avoid unnecessary overhead.
|
|
|
|
config ERRATA_THEAD_PBMT
|
|
bool "Apply T-Head memory type errata"
|
|
depends on ERRATA_THEAD && 64BIT && MMU
|
|
select RISCV_ALTERNATIVE_EARLY
|
|
default y
|
|
help
|
|
This will apply the memory type errata to handle the non-standard
|
|
memory type bits in page-table-entries on T-Head SoCs.
|
|
|
|
If you don't know what to do here, say "Y".
|
|
|
|
config ERRATA_THEAD_CMO
|
|
bool "Apply T-Head cache management errata"
|
|
depends on ERRATA_THEAD && MMU
|
|
select RISCV_DMA_NONCOHERENT
|
|
default y
|
|
help
|
|
This will apply the cache management errata to handle the
|
|
non-standard handling on non-coherent operations on T-Head SoCs.
|
|
|
|
If you don't know what to do here, say "Y".
|
|
|
|
config ERRATA_THEAD_PMU
|
|
bool "Apply T-Head PMU errata"
|
|
depends on ERRATA_THEAD && RISCV_PMU_SBI
|
|
default y
|
|
help
|
|
The T-Head C9xx cores implement a PMU overflow extension very
|
|
similar to the core SSCOFPMF extension.
|
|
|
|
This will apply the overflow errata to handle the non-standard
|
|
behaviour via the regular SBI PMU driver and interface.
|
|
|
|
If you don't know what to do here, say "Y".
|
|
|
|
endmenu # "CPU errata selection"
|