2020-10-10 05:00:22

by Ondrej Zary

[permalink] [raw]
Subject: nouveau broken on Riva TNT2 in 5.9.0-rc8: GPU not supported on big-endian

Hello,
I'm testing 5.9.0-rc8 and found that Riva TNT2 stopped working:
[ 0.000000] Linux version 5.9.0-rc8+ (zary@gsql) (gcc (Debian 8.3.0-6) 8.3.0, GNU ld (GNU Binutils for Debian) 2.31.1) #326 SMP Fri Oct 9 22:31:40 CEST 2020
...
[ 14.771464] nouveau 0000:01:00.0: GPU not supported on big-endian
[ 14.771782] nouveau: probe of 0000:01:00.0 failed with error -38

big-endian? WTF? The machine is x86.

It works fine with Debian 5.7 kernel (5.7.10-1~bpo10+1):
[ 0.000000] Linux version 5.7.0-0.bpo.2-686 ([email protected]) (gcc version 8.3.0 (Debian 8.3.0-6), GNU ld (GNU Binutils for Debian) 2.31.1) #1 SMP Debian 5.7.10-1~bpo10+1 (2020-07-30)
...
[ 23.266196] nouveau 0000:01:00.0: NVIDIA NV05 (20154000)
[ 23.288582] nouveau 0000:01:00.0: bios: version 02.05.20.02.00
[ 23.288869] nouveau 0000:01:00.0: bios: DCB table not found
[ 23.289595] nouveau 0000:01:00.0: bios: DCB table not found
[ 23.289956] nouveau 0000:01:00.0: bios: DCB table not found
[ 23.290015] nouveau 0000:01:00.0: bios: DCB table not found
[ 23.290215] agpgart-intel 0000:00:00.0: AGP 3.0 bridge
[ 23.290287] agpgart-intel 0000:00:00.0: bridge is in legacy mode, falling back to 2.x
[ 23.290351] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
[ 23.290430] nouveau 0000:01:00.0: putting AGP V2 device into 4x mode
[ 23.290565] agpgart-intel 0000:00:00.0: AGP 3.0 bridge
[ 23.290627] agpgart-intel 0000:00:00.0: bridge is in legacy mode, falling back to 2.x
[ 23.290690] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
[ 23.290768] nouveau 0000:01:00.0: putting AGP V2 device into 4x mode
[ 23.290830] nouveau 0000:01:00.0: tmr: unknown input clock freq
[ 23.293026] nouveau 0000:01:00.0: fb: 32 MiB SDRAM
[ 23.301269] [TTM] Zone kernel: Available graphics memory: 382728 KiB
[ 23.301327] [TTM] Initializing pool allocator
[ 23.301414] nouveau 0000:01:00.0: DRM: VRAM: 31 MiB
[ 23.301465] nouveau 0000:01:00.0: DRM: GART: 128 MiB
[ 23.301518] nouveau 0000:01:00.0: DRM: BMP version 5.6
[ 23.301570] nouveau 0000:01:00.0: DRM: No DCB data found in VBIOS
[ 23.303594] nouveau 0000:01:00.0: DRM: MM: using M2MF for buffer copies
[ 23.303719] nouveau 0000:01:00.0: bios: DCB table not found
[ 23.304904] nouveau 0000:01:00.0: DRM: Saving VGA fonts
[ 23.349089] nouveau 0000:01:00.0: DRM: No DCB data found in VBIOS
[ 23.349681] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 23.383066] nouveau 0000:01:00.0: DRM: allocated 1280x1024 fb: 0x4000, bo b10d2f17
[ 23.413903] fbcon: nouveaudrmfb (fb0) is primary device
[ 23.569851] Console: switching to colour frame buffer device 160x64
[ 23.571050] nouveau 0000:01:00.0: fb0: nouveaudrmfb frame buffer device


--
Ondrej Zary


2020-10-10 05:13:37

by Karol Herbst

[permalink] [raw]
Subject: Re: [Nouveau] nouveau broken on Riva TNT2 in 5.9.0-rc8: GPU not supported on big-endian

On Fri, Oct 9, 2020 at 11:35 PM Ondrej Zary <[email protected]> wrote:
>
> Hello,
> I'm testing 5.9.0-rc8 and found that Riva TNT2 stopped working:
> [ 0.000000] Linux version 5.9.0-rc8+ (zary@gsql) (gcc (Debian 8.3.0-6) 8.3.0, GNU ld (GNU Binutils for Debian) 2.31.1) #326 SMP Fri Oct 9 22:31:40 CEST 2020
> ...
> [ 14.771464] nouveau 0000:01:00.0: GPU not supported on big-endian
> [ 14.771782] nouveau: probe of 0000:01:00.0 failed with error -38
>
> big-endian? WTF? The machine is x86.
>

mhh, we reworked the endianess checks a bit and apparently that broke
something... I will give it some thoughts, but could you be so kind
and create an mmiotrace under 5.9 with nouveau? You won't need to
start X or anything while doing it. Just enable the trace and modprobe
nouveau and collect the trace.

> It works fine with Debian 5.7 kernel (5.7.10-1~bpo10+1):
> [ 0.000000] Linux version 5.7.0-0.bpo.2-686 ([email protected]) (gcc version 8.3.0 (Debian 8.3.0-6), GNU ld (GNU Binutils for Debian) 2.31.1) #1 SMP Debian 5.7.10-1~bpo10+1 (2020-07-30)
> ...
> [ 23.266196] nouveau 0000:01:00.0: NVIDIA NV05 (20154000)
> [ 23.288582] nouveau 0000:01:00.0: bios: version 02.05.20.02.00
> [ 23.288869] nouveau 0000:01:00.0: bios: DCB table not found
> [ 23.289595] nouveau 0000:01:00.0: bios: DCB table not found
> [ 23.289956] nouveau 0000:01:00.0: bios: DCB table not found
> [ 23.290015] nouveau 0000:01:00.0: bios: DCB table not found
> [ 23.290215] agpgart-intel 0000:00:00.0: AGP 3.0 bridge
> [ 23.290287] agpgart-intel 0000:00:00.0: bridge is in legacy mode, falling back to 2.x
> [ 23.290351] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
> [ 23.290430] nouveau 0000:01:00.0: putting AGP V2 device into 4x mode
> [ 23.290565] agpgart-intel 0000:00:00.0: AGP 3.0 bridge
> [ 23.290627] agpgart-intel 0000:00:00.0: bridge is in legacy mode, falling back to 2.x
> [ 23.290690] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
> [ 23.290768] nouveau 0000:01:00.0: putting AGP V2 device into 4x mode
> [ 23.290830] nouveau 0000:01:00.0: tmr: unknown input clock freq
> [ 23.293026] nouveau 0000:01:00.0: fb: 32 MiB SDRAM
> [ 23.301269] [TTM] Zone kernel: Available graphics memory: 382728 KiB
> [ 23.301327] [TTM] Initializing pool allocator
> [ 23.301414] nouveau 0000:01:00.0: DRM: VRAM: 31 MiB
> [ 23.301465] nouveau 0000:01:00.0: DRM: GART: 128 MiB
> [ 23.301518] nouveau 0000:01:00.0: DRM: BMP version 5.6
> [ 23.301570] nouveau 0000:01:00.0: DRM: No DCB data found in VBIOS
> [ 23.303594] nouveau 0000:01:00.0: DRM: MM: using M2MF for buffer copies
> [ 23.303719] nouveau 0000:01:00.0: bios: DCB table not found
> [ 23.304904] nouveau 0000:01:00.0: DRM: Saving VGA fonts
> [ 23.349089] nouveau 0000:01:00.0: DRM: No DCB data found in VBIOS
> [ 23.349681] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
> [ 23.383066] nouveau 0000:01:00.0: DRM: allocated 1280x1024 fb: 0x4000, bo b10d2f17
> [ 23.413903] fbcon: nouveaudrmfb (fb0) is primary device
> [ 23.569851] Console: switching to colour frame buffer device 160x64
> [ 23.571050] nouveau 0000:01:00.0: fb0: nouveaudrmfb frame buffer device
>
>
> --
> Ondrej Zary
> _______________________________________________
> Nouveau mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/nouveau
>

2020-10-10 22:55:47

by Ilia Mirkin

[permalink] [raw]
Subject: Re: [Nouveau] nouveau broken on Riva TNT2 in 5.9.0-rc8: GPU not supported on big-endian

On Fri, Oct 9, 2020 at 5:54 PM Karol Herbst <[email protected]> wrote:
>
> On Fri, Oct 9, 2020 at 11:35 PM Ondrej Zary <[email protected]> wrote:
> >
> > Hello,
> > I'm testing 5.9.0-rc8 and found that Riva TNT2 stopped working:
> > [ 0.000000] Linux version 5.9.0-rc8+ (zary@gsql) (gcc (Debian 8.3.0-6) 8.3.0, GNU ld (GNU Binutils for Debian) 2.31.1) #326 SMP Fri Oct 9 22:31:40 CEST 2020
> > ...
> > [ 14.771464] nouveau 0000:01:00.0: GPU not supported on big-endian
> > [ 14.771782] nouveau: probe of 0000:01:00.0 failed with error -38
> >
> > big-endian? WTF? The machine is x86.
> >
>
> mhh, we reworked the endianess checks a bit and apparently that broke
> something... I will give it some thoughts, but could you be so kind
> and create an mmiotrace under 5.9 with nouveau? You won't need to
> start X or anything while doing it. Just enable the trace and modprobe
> nouveau and collect the trace.

Looks like nvkm_device_endianness unconditionally reads out 0x4. I
don't think that reg is there pre-NV11. At least NV4, NV5, NV10 and
maybe NV15 (which is logically pre-NV11) don't support big-endian
mode. Not sure about NV1A, which was the IGP of the series and IIRC
logically pre-NV11 as well (but clearly could only be used with x86
chips, since it was part of the motherboard).

Aha, it's documented in rnndb:

https://github.com/envytools/envytools/blob/master/rnndb/bus/pmc.xml
<reg32 offset="0x004" name="ENDIAN" variants="NV1A-"/>

-ilia

2020-10-11 02:51:14

by Karol Herbst

[permalink] [raw]
Subject: Re: [Nouveau] nouveau broken on Riva TNT2 in 5.9.0-rc8: GPU not supported on big-endian

On Sat, Oct 10, 2020 at 12:23 AM Ilia Mirkin <[email protected]> wrote:
>
> On Fri, Oct 9, 2020 at 5:54 PM Karol Herbst <[email protected]> wrote:
> >
> > On Fri, Oct 9, 2020 at 11:35 PM Ondrej Zary <[email protected]> wrote:
> > >
> > > Hello,
> > > I'm testing 5.9.0-rc8 and found that Riva TNT2 stopped working:
> > > [ 0.000000] Linux version 5.9.0-rc8+ (zary@gsql) (gcc (Debian 8.3.0-6) 8.3.0, GNU ld (GNU Binutils for Debian) 2.31.1) #326 SMP Fri Oct 9 22:31:40 CEST 2020
> > > ...
> > > [ 14.771464] nouveau 0000:01:00.0: GPU not supported on big-endian
> > > [ 14.771782] nouveau: probe of 0000:01:00.0 failed with error -38
> > >
> > > big-endian? WTF? The machine is x86.
> > >
> >
> > mhh, we reworked the endianess checks a bit and apparently that broke
> > something... I will give it some thoughts, but could you be so kind
> > and create an mmiotrace under 5.9 with nouveau? You won't need to
> > start X or anything while doing it. Just enable the trace and modprobe
> > nouveau and collect the trace.
>
> Looks like nvkm_device_endianness unconditionally reads out 0x4. I
> don't think that reg is there pre-NV11. At least NV4, NV5, NV10 and
> maybe NV15 (which is logically pre-NV11) don't support big-endian
> mode. Not sure about NV1A, which was the IGP of the series and IIRC
> logically pre-NV11 as well (but clearly could only be used with x86
> chips, since it was part of the motherboard).
>
> Aha, it's documented in rnndb:
>
> https://github.com/envytools/envytools/blob/master/rnndb/bus/pmc.xml
> <reg32 offset="0x004" name="ENDIAN" variants="NV1A-"/>
>

ohh, I should have checked there.. yeah, will write a fix for it then.
Before my patch we just always tried to switch it, but never threw an
error.

> -ilia
>

2020-10-11 11:19:30

by Ondrej Zary

[permalink] [raw]
Subject: Re: [Nouveau] nouveau broken on Riva TNT2 in 5.9.0-rc8: GPU not supported on big-endian

On Saturday 10 October 2020 00:23:38 Ilia Mirkin wrote:
> On Fri, Oct 9, 2020 at 5:54 PM Karol Herbst <[email protected]> wrote:
> >
> > On Fri, Oct 9, 2020 at 11:35 PM Ondrej Zary <[email protected]> wrote:
> > >
> > > Hello,
> > > I'm testing 5.9.0-rc8 and found that Riva TNT2 stopped working:
> > > [ 0.000000] Linux version 5.9.0-rc8+ (zary@gsql) (gcc (Debian 8.3.0-6) 8.3.0, GNU ld (GNU Binutils for Debian) 2.31.1) #326 SMP Fri Oct 9 22:31:40 CEST 2020
> > > ...
> > > [ 14.771464] nouveau 0000:01:00.0: GPU not supported on big-endian
> > > [ 14.771782] nouveau: probe of 0000:01:00.0 failed with error -38
> > >
> > > big-endian? WTF? The machine is x86.
> > >
> >
> > mhh, we reworked the endianess checks a bit and apparently that broke
> > something... I will give it some thoughts, but could you be so kind
> > and create an mmiotrace under 5.9 with nouveau? You won't need to
> > start X or anything while doing it. Just enable the trace and modprobe
> > nouveau and collect the trace.
>
> Looks like nvkm_device_endianness unconditionally reads out 0x4. I
> don't think that reg is there pre-NV11. At least NV4, NV5, NV10 and
> maybe NV15 (which is logically pre-NV11) don't support big-endian
> mode. Not sure about NV1A, which was the IGP of the series and IIRC
> logically pre-NV11 as well (but clearly could only be used with x86
> chips, since it was part of the motherboard).

Yes, you're right. Forcing nvkm_device_endianness to return true allows
5.9.0-rc8 to work:
[ 0.000000] Linux version 5.9.0-rc8+ (zary@gsql) (gcc (Debian 8.3.0-6) 8.3.0, GNU ld (GNU Binutils for Debian) 2.31.1) #326 SMP Fri Oct 9 22:31:40 CEST 2020
...
[ 12.311258] nouveau 0000:01:00.0: bios: DCB table not found
[ 12.311583] nouveau 0000:01:00.0: bios: DCB table not found
[ 12.311834] nouveau 0000:01:00.0: bios: DCB table not found
[ 12.311847] nouveau 0000:01:00.0: bios: DCB table not found
[ 12.311989] agpgart-intel 0000:00:00.0: AGP 3.0 bridge
[ 12.312017] agpgart-intel 0000:00:00.0: bridge is in legacy mode, falling back to 2.x
[ 12.312031] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
[ 12.312066] nouveau 0000:01:00.0: putting AGP V2 device into 4x mode
[ 12.312162] agpgart-intel 0000:00:00.0: AGP 3.0 bridge
[ 12.312182] agpgart-intel 0000:00:00.0: bridge is in legacy mode, falling back to 2.x
[ 12.312195] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
[ 12.312230] nouveau 0000:01:00.0: putting AGP V2 device into 4x mode
[ 12.312247] nouveau 0000:01:00.0: tmr: unknown input clock freq
[ 12.318341] nouveau 0000:01:00.0: fb: 32 MiB SDRAM
[ 12.333376] [TTM] Zone kernel: Available graphics memory: 385048 KiB
[ 12.333392] [TTM] Initializing pool allocator
[ 12.333434] nouveau 0000:01:00.0: DRM: VRAM: 31 MiB
[ 12.333443] nouveau 0000:01:00.0: DRM: GART: 128 MiB
[ 12.333453] nouveau 0000:01:00.0: DRM: BMP version 5.6
[ 12.333460] nouveau 0000:01:00.0: DRM: No DCB data found in VBIOS
[ 12.335355] nouveau 0000:01:00.0: DRM: MM: using M2MF for buffer copies
[ 12.335443] nouveau 0000:01:00.0: bios: DCB table not found
[ 12.336033] nouveau 0000:01:00.0: DRM: Saving VGA fonts
[ 12.376420] nouveau 0000:01:00.0: DRM: No DCB data found in VBIOS
[ 12.410397] nouveau 0000:01:00.0: DRM: allocated 1280x1024 fb: 0x4000, bo b68d2ac4
[ 12.441217] fbcon: nouveaudrmfb (fb0) is primary device
[ 12.591964] Console: switching to colour frame buffer device 160x64
[ 12.593876] nouveau 0000:01:00.0: [drm] fb0: nouveaudrmfb frame buffer device
[ 12.594944] [drm] Initialized nouveau 1.3.1 20120801 for 0000:01:00.0 on minor 0

BTW. 5.8 kernel (that appeared today in Debian packports) is broken the same way.

> Aha, it's documented in rnndb:
>
> https://github.com/envytools/envytools/blob/master/rnndb/bus/pmc.xml
> <reg32 offset="0x004" name="ENDIAN" variants="NV1A-"/>
>
> -ilia
>


--
Ondrej Zary

2020-10-29 07:48:15

by Ondrej Zary

[permalink] [raw]
Subject: Re: [Nouveau] nouveau broken on Riva TNT2 in 5.9.0-rc8: GPU not supported on big-endian

On Saturday 10 October 2020 02:02:42 Karol Herbst wrote:
> On Sat, Oct 10, 2020 at 12:23 AM Ilia Mirkin <[email protected]> wrote:
> >
> > On Fri, Oct 9, 2020 at 5:54 PM Karol Herbst <[email protected]> wrote:
> > >
> > > On Fri, Oct 9, 2020 at 11:35 PM Ondrej Zary <[email protected]> wrote:
> > > >
> > > > Hello,
> > > > I'm testing 5.9.0-rc8 and found that Riva TNT2 stopped working:
> > > > [ 0.000000] Linux version 5.9.0-rc8+ (zary@gsql) (gcc (Debian 8.3.0-6) 8.3.0, GNU ld (GNU Binutils for Debian) 2.31.1) #326 SMP Fri Oct 9 22:31:40 CEST 2020
> > > > ...
> > > > [ 14.771464] nouveau 0000:01:00.0: GPU not supported on big-endian
> > > > [ 14.771782] nouveau: probe of 0000:01:00.0 failed with error -38
> > > >
> > > > big-endian? WTF? The machine is x86.
> > > >
> > >
> > > mhh, we reworked the endianess checks a bit and apparently that broke
> > > something... I will give it some thoughts, but could you be so kind
> > > and create an mmiotrace under 5.9 with nouveau? You won't need to
> > > start X or anything while doing it. Just enable the trace and modprobe
> > > nouveau and collect the trace.
> >
> > Looks like nvkm_device_endianness unconditionally reads out 0x4. I
> > don't think that reg is there pre-NV11. At least NV4, NV5, NV10 and
> > maybe NV15 (which is logically pre-NV11) don't support big-endian
> > mode. Not sure about NV1A, which was the IGP of the series and IIRC
> > logically pre-NV11 as well (but clearly could only be used with x86
> > chips, since it was part of the motherboard).
> >
> > Aha, it's documented in rnndb:
> >
> > https://github.com/envytools/envytools/blob/master/rnndb/bus/pmc.xml
> > <reg32 offset="0x004" name="ENDIAN" variants="NV1A-"/>
> >
>
> ohh, I should have checked there.. yeah, will write a fix for it then.
> Before my patch we just always tried to switch it, but never threw an
> error.

Any progress with the patch?

--
Ondrej Zary

2020-10-29 08:51:36

by Karol Herbst

[permalink] [raw]
Subject: Re: [Nouveau] nouveau broken on Riva TNT2 in 5.9.0-rc8: GPU not supported on big-endian

I sent a patch to the mailing list and wanted to have some review on
that from at least Ben, but no idea if Ben already picked it and if
it's good enough for sending it to stable yet.