arch-arm, dev-arm: Autogen PSCI node in DTB
This is controlled via the python only _have_psci parameter This flag will be checked when auto-generarting a PSCI node. A client (e.g Linux) would then be able to know if it can use the PSCI APIs Change-Id: I16c4a67bd358eca3dfff6c98ab8a602a31e1c751 Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27387 Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
committed by
Giacomo Travaglini
parent
73dd2ee7a1
commit
8b2b0f8d71
@@ -645,9 +645,13 @@ class RealView(Platform):
|
||||
yield node
|
||||
|
||||
def annotateCpuDeviceNode(self, cpu, state):
|
||||
cpu.append(FdtPropertyStrings("enable-method", "spin-table"))
|
||||
cpu.append(FdtPropertyWords("cpu-release-addr", \
|
||||
state.addrCells(0x8000fff8)))
|
||||
system = self.system.unproxy(self)
|
||||
if system._have_psci:
|
||||
cpu.append(FdtPropertyStrings('enable-method', 'psci'))
|
||||
else:
|
||||
cpu.append(FdtPropertyStrings("enable-method", "spin-table"))
|
||||
cpu.append(FdtPropertyWords("cpu-release-addr", \
|
||||
state.addrCells(0x8000fff8)))
|
||||
|
||||
class VExpress_EMM(RealView):
|
||||
_mem_regions = [ AddrRange('2GB', size='2GB') ]
|
||||
@@ -1128,6 +1132,24 @@ Interrupts:
|
||||
node.append(FdtPropertyWords("arm,hbi", [0x0]))
|
||||
node.append(FdtPropertyWords("arm,vexpress,site", [0xf]))
|
||||
|
||||
system = self.system.unproxy(self)
|
||||
if system._have_psci:
|
||||
# PSCI functions exposed to the kernel
|
||||
if not system.have_security:
|
||||
raise AssertionError("PSCI requires EL3 (have_security)")
|
||||
|
||||
psci_node = FdtNode('psci')
|
||||
psci_node.appendCompatible(['arm,psci-1.0', 'arm,psci-0.2',
|
||||
'arm,psci'])
|
||||
method = 'smc'
|
||||
psci_node.append(FdtPropertyStrings('method', method))
|
||||
psci_node.append(FdtPropertyWords('cpu_suspend', 0xc4000001))
|
||||
psci_node.append(FdtPropertyWords('cpu_off', 0x84000002))
|
||||
psci_node.append(FdtPropertyWords('cpu_on', 0xc4000003))
|
||||
psci_node.append(FdtPropertyWords('sys_poweroff', 0x84000008))
|
||||
psci_node.append(FdtPropertyWords('sys_reset', 0x84000009))
|
||||
node.append(psci_node)
|
||||
|
||||
yield node
|
||||
|
||||
class VExpress_GEM5_V1_Base(VExpress_GEM5_Base):
|
||||
|
||||
Reference in New Issue
Block a user