Re: [PATCH] efifb: allow user to disable write combined mapping.
From: Dave Airlie <airlied@gmail.com>
Date: 2017-07-18 23:16:50
Also in:
lkml
On 19 July 2017 at 09:16, Dave Airlie [off-list ref] wrote:
On 19 July 2017 at 08:22, Linus Torvalds [off-list ref] wrote:quoted
On Tue, Jul 18, 2017 at 2:21 PM, Dave Airlie [off-list ref] wrote:quoted
Oh and just FYI, the machine I've tested this on has an mgag200 server graphics card backing the framebuffer, but with just efifb loaded.Yeah, it looks like it needs special hardware - and particularly the kind of garbage hardware that people only have on servers. Why do server people continually do absolute sh*t hardware? It's crap, crap, crap across the board outside the CPU. Nasty and bad hacky stuff that nobody else would touch with a ten-foot pole, and the "serious enterprise" people lap it up like it was ambrosia. It's not just "graphics is bad anyway since we don't care". It's all the things they ostensibly _do_ care about too, like the disk and the fabric infrastructure. Buggy nasty crud.I've tried to reproduce now on: Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz using some address space from 02:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2) And I don't see the issue. I'll try and track down some more efi compatible mga or other wierd server chips stuff if I can.quoted
Anyway, rant over. I wonder if we could show this without special hardware by just mapping some region that doesn't even have hardware in it as WC. Do we even expose the PAT settings to user space, though, or do we always have to have some fake module to create the PAT stuff?I do wonder wtf the hw could be doing that would cause this, but I've no idea how to tell what difference a write combined PCI transaction would have on the bus side of things, and what the device could generate that would cause such a horrible slowdown. Dave.
01:00.1 VGA compatible controller: Matrox Electronics Systems Ltd. MGA
G200EH (rev 01) (prog-if 00 [VGA controller])
Subsystem: Hewlett-Packard Company iLO4
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr+ Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSELúst >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin B routed to IRQ 255
Region 0: Memory at 91000000 (32-bit, prefetchable) [sizeM]
Region 1: Memory at 92a88000 (32-bit, non-prefetchable) [sizeK]
Region 2: Memory at 92000000 (32-bit, non-prefetchable) [size=8M]
[virtual] Expansion ROM at 000c0000 [disabled] [size8K]
Capabilities: [a8] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [c0] Express (v2) Legacy Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
unlimited, L1 unlimited
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal+ Fatal+
Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+
AuxPwr- TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s,
Latency L0 <4us, L1 <4us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train-
SlotClk- DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported,
TimeoutDis+, LTR-, OBFF Not Supported
DevCtl2: Completion Timeout: 50us to 50ms,
TimeoutDis-, LTR-, OBFF Disabled
LnkSta2: Current De-emphasis Level: -6dB,
EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-,
LinkEqualizationRequest-
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt-
UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt-
UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt-
UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
Is a full lspci -vvv for the VGA device in question.
Dave.