svn commit: r355783 - head/sys/powerpc/powernv
Justin Hibbits
jhibbits at FreeBSD.org
Sun Dec 15 21:20:19 UTC 2019
Author: jhibbits
Date: Sun Dec 15 21:20:18 2019
New Revision: 355783
URL: https://svnweb.freebsd.org/changeset/base/355783
Log:
powerpc/powernv: Set the PTCR for the Nest MMU
The Nest MMU manages address translation for accelerators on the POWER9. To
do so, it needs a page table, so export the system page table to the Nest
MMU. This will quietly fail on pre-POWER9 systems that do not have a NMMU.
The NMMU is currently unused, so this change is currently effectively a NOP,
but the NMMU and VAS will eventually be used.
Modified:
head/sys/powerpc/powernv/opal.h
head/sys/powerpc/powernv/platform_powernv.c
Modified: head/sys/powerpc/powernv/opal.h
==============================================================================
--- head/sys/powerpc/powernv/opal.h Sun Dec 15 21:19:41 2019 (r355782)
+++ head/sys/powerpc/powernv/opal.h Sun Dec 15 21:20:18 2019 (r355783)
@@ -91,6 +91,7 @@ int opal_call(uint64_t token, ...);
#define OPAL_INT_EOI 124
#define OPAL_INT_SET_MFRR 125
#define OPAL_PCI_TCE_KILL 126
+#define OPAL_NMMU_SET_PTCR 127
#define OPAL_XIVE_RESET 128
#define OPAL_XIVE_GET_IRQ_INFO 129
#define OPAL_XIVE_GET_IRQ_CONFIG 130
Modified: head/sys/powerpc/powernv/platform_powernv.c
==============================================================================
--- head/sys/powerpc/powernv/platform_powernv.c Sun Dec 15 21:19:41 2019 (r355782)
+++ head/sys/powerpc/powernv/platform_powernv.c Sun Dec 15 21:20:18 2019 (r355783)
@@ -494,3 +494,14 @@ static void
powernv_cpu_idle(sbintime_t sbt)
{
}
+
+/* Set up the Nest MMU on POWER9 relatively early, but after pmap is setup. */
+static void
+powernv_setup_nmmu(void *unused)
+{
+ if (opal_check() != 0)
+ return;
+ opal_call(OPAL_NMMU_SET_PTCR, -1, mfspr(SPR_PTCR));
+}
+
+SYSINIT(powernv_setup_nmmu, SI_SUB_CPU, SI_ORDER_ANY, powernv_setup_nmmu, NULL);
More information about the svn-src-all
mailing list