Re: [PATCH v2 2/9] powerpc: Add Microwatt device tree
On Sun, Jun 20, 2021 at 10:08:58PM +1000, Paul Mackerras wrote: > On Sat, Jun 19, 2021 at 09:26:16AM -0500, Segher Boessenkool wrote: > > On Fri, Jun 18, 2021 at 01:44:16PM +1000, Paul Mackerras wrote: > > > Microwatt currently runs with MSR[HV] = 0, > > > > That isn't compliant though? If your implementation does not have LPAR > > it must set MSR[HV]=1 always. > > True - but if I actually do that, Linux starts trying to use hrfid > (for example in masked_Hinterrupt), which Microwatt doesn't have. > Something for Nick to fix. :) That looks like it needs fixing, yes (it is hard to actually read). But one thing you can do to make this Just Work is to make hrfid do exactly the same as rfid, i.e. decode hrfid (01000 10010) as rfid (0 10010). That probably makes things run already, you don't even need to alias to SPRs HSRRn (01001 1101n) to SRRn (0 1101n) :-) Segher
Re: [PATCH v2 2/9] powerpc: Add Microwatt device tree
On Sat, Jun 19, 2021 at 09:26:16AM -0500, Segher Boessenkool wrote: > On Fri, Jun 18, 2021 at 01:44:16PM +1000, Paul Mackerras wrote: > > Microwatt currently runs with MSR[HV] = 0, > > That isn't compliant though? If your implementation does not have LPAR > it must set MSR[HV]=1 always. True - but if I actually do that, Linux starts trying to use hrfid (for example in masked_Hinterrupt), which Microwatt doesn't have. Something for Nick to fix. :) Paul.
Re: [PATCH v2 2/9] powerpc: Add Microwatt device tree
On Fri, Jun 18, 2021 at 01:44:16PM +1000, Paul Mackerras wrote: > Microwatt currently runs with MSR[HV] = 0, That isn't compliant though? If your implementation does not have LPAR it must set MSR[HV]=1 always. Segher
[PATCH v2 2/9] powerpc: Add Microwatt device tree
Microwatt currently runs with MSR[HV] = 0, hence the usable-privilege properties don't have bit 2 (for HV support) set, and we need the /chosen/ibm,architecture-vec-5 property. Signed-off-by: Paul Mackerras --- arch/powerpc/boot/dts/microwatt.dts | 98 + 1 file changed, 98 insertions(+) create mode 100644 arch/powerpc/boot/dts/microwatt.dts diff --git a/arch/powerpc/boot/dts/microwatt.dts b/arch/powerpc/boot/dts/microwatt.dts new file mode 100644 index ..ac264ad3faaf --- /dev/null +++ b/arch/powerpc/boot/dts/microwatt.dts @@ -0,0 +1,98 @@ +/dts-v1/; + +/ { + #size-cells = <0x02>; + #address-cells = <0x02>; + model-name = "microwatt"; + compatible = "microwatt-soc"; + + reserved-memory { + #size-cells = <0x02>; + #address-cells = <0x02>; + ranges; + }; + + memory@0 { + device_type = "memory"; + reg = <0x 0x 0x 0x1000>; + }; + + cpus { + #size-cells = <0x00>; + #address-cells = <0x01>; + + ibm,powerpc-cpu-features { + display-name = "Microwatt"; + isa = <3000>; + device_type = "cpu-features"; + compatible = "ibm,powerpc-cpu-features"; + + mmu-radix { + isa = <3000>; + usable-privilege = <2>; + }; + + little-endian { + isa = <2050>; + usable-privilege = <3>; + hwcap-bit-nr = <1>; + }; + + cache-inhibited-large-page { + isa = <2040>; + usable-privilege = <2>; + }; + + fixed-point-v3 { + isa = <3000>; + usable-privilege = <3>; + }; + + no-execute { + isa = <2010>; + usable-privilege = <2>; + }; + + floating-point { + hwcap-bit-nr = <27>; + isa = <0>; + usable-privilege = <3>; + }; + }; + + PowerPC,Microwatt@0 { + i-cache-sets = <2>; + ibm,dec-bits = <64>; + reservation-granule-size = <64>; + clock-frequency = <1>; + timebase-frequency = <1>; + i-tlb-sets = <1>; + ibm,ppc-interrupt-server#s = <0>; + i-cache-block-size = <64>; + d-cache-block-size = <64>; + d-cache-sets = <2>; + i-tlb-size = <64>; + cpu-version = <0x99>; + status = "okay"; + i-cache-size = <0x1000>; + ibm,processor-radix-AP-encodings = <0x0c 0xa010 0x2015 0x401e>; + tlb-size = <0>; + tlb-sets = <0>; + device_type = "cpu"; + d-tlb-size = <128>; + d-tlb-sets = <2>; + reg = <0>; + general-purpose; + 64-bit; + d-cache-size = <0x1000>; + ibm,chip-id = <0>; + }; + }; + + chosen { + bootargs = ""; + ibm,architecture-vec-5 = [19 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 40 00 40]; + }; + +}; -- 2.31.1