[haiku-development] Re: intel_extreme rework status

  • From: "Adrien Destugues" <pulkomandy@xxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Thu, 26 May 2016 14:30:00 +0000

The comment here uses exactly the same formula as the spec. The code
seems to be doing a bruteforce search for parameters, and our
implementation doesn't work.

That's the calculation code intel wrote... if you can do better feel free :-)

I could try Linux on my machine to make sure, but I'm pretty sure their driver 
will work fine and with correct PLL settings. It must be a problem somewhere in 
our version, then.

I sent my conclusions late at night yesterday, I will continue investigating 
today if I can spare some more time. But in any case, there clearly is 
something wrong with the way we compute the PLL limits. Finding something with 
an error above 50% is not the expected outcome. Less than 1% would be ok, and I 
think the Intel code in Linux does better than that (and our version did work, 
too, in the old driver).

Linux does it is a perfectly acceptable answer. Unlike the awesome AMD driver 
developers
which will give you a good nudge of help writing a driver for Haiku... I've 
never
gotten any of the Intel international developers in irc to respond to any 
question,
no matter how trivial. The only real-world guidence we have is the pile of 
Intel
technical manuals that are inconsistent between generations... and the Intel 
linux
kernel code.

The manuals are quite complete and usually accurate. The information is all 
there and I don't feel much need to dig into Linux code. There is the 
additional concern that Linux is GPL, and the closer we get to their driver, 
the closer we are to a GPL violation since our code is MIT.


Intel does major architecture redesigns every generation. It's difficult to 
herd
these cats into a single driver (which we've done somehow)

From my experience, there are not this much change in the PLL computation and 
in the mode setting part. We are used to gathering widely different hardware in 
a single driver, we do it even for completely unrelated things from different 
vendors (usb_serial comes to mind).

A clean C++ architecture with all parts separated helps, but sometimes also get 
in the way because hardware is picky and things need to be done in the right 
order.


I'm Not making excuses.. just trying to properly set expectations on what 
we're trying
to accomplish. The rewrite helps isolate code-paths for major generations 
which
should help us work on generations without impacting other generations. 
Pre-rewrite you
could pretty easily make a change for IronLake and break a i9xx card.

I'm not questionning that, it is a move in the right direction. I think it was 
still a bit early to merge it. At least it forces me to dig into it and fix 
some issues...

I'm not sure the PLL problems stem from just refactoring the code. We had 
something that worked well before, I'll see if I can dig out the old PLL 
computation code and plug it into the new architecture, or just use the new 
code and try to fix it. Didn't have time to look into this in much details, yet.


Instead of bitching about how a trace statement doesn't make sense, why not 
submit
patches? I can't do all of the work myself. I'm not requesting a contract, 
i'm doing
this out of my love for Haiku.

I'm a bit annoyed at having to work on this at non-native resolution. All my 
computers run Haiku, and all use intel hardware. I used to have a working 
driver and now I don't, so I'm going the grumpy way. Patches will come, 
eventually.

-- 
Adrien.

Other related posts: