Jump to content

Intel 915 Observation


theBishop
 Share

31 posts in this topic

Recommended Posts

I'm one of the many suffering with the Intel 915 VGA problem. For those who don't know, laptops that use the intel 915 gpu will hang after the White Spinning logo at a blue screen if you don't connect a monitor to the VGA port. This has some osx86'ers creating silly VGA loop mods to make their hackintoshes usable.

 

It seems like the going theory is that the bios doesn't allocate enough RAM by default for OSX. And that plugging in a VGA connector causes the bios to allocate more vram.

 

i'm here to say this theory is false.

 

I have two piece of evidence to show:

 

#1: Whether or not the VGA cable is plugged in, Darwin's boot option screen shows 7MB Vesa 3. If the vram theory was correct, you'd see more ram at that screen.

 

#2: You don't need the VGA cable connected at boot. The only time the cable must be plugged in is for the 2 seconds during OSX's boot process when it initializes the GFX. Try if for yourself.

 

 

I'm not saying the problem isn't related to vram, only that it has nothing to do with the bios' allocation of vram. Because the issue is clearly established at that specific point of the boot process, i believe the issue could be solved in software.

 

I have programming skills, but i'm also an OSX newb, so i doubt i'll be much help in solving the issue.

Link to comment
Share on other sites

You definitely can help out. I'm an old school programmer (Sparc SunOS/Solaris) and recently took the job to figure this out.

 

Answer me this, and perhaps others: from a cold bootup *without* the VGA hack (or VGA null adapter), do you *always* get the blue screen hangup? Every single time?

 

I wrote some test code in Linux and ran that off a minimalistic (text only and 45MB big) live Linux CD (Slax Frodo) which allocated either 128MB video RAM. Then I did a warm reboot into OSX86, and 3 out of 5 times it booted normally using my laptop's LCD screen *without* any VGA hack.

 

Every time I went into Darwin's boot prompt, it always showed 7MB video RAM, *but* it still activated my laptop's LCD.

 

I'm only dissecting 915 chipsets for now and there are some bugs left. I am now in the process of converting the code to OSX86 and that in itself is a challenge because Apple removed /dev/mem for direct memory access. Good time to learn Mach API syscalls!

 

My work is based on the following theories:

 

1. video memory allocation theory.

2. warm reboot from WinXP preserves the its video memory allocation.

 

From what I understand, (2) does not go through POST initialization whereupon the SYSTEM BIOS and VIDEO BIOS is shadowed into RAM.

 

My technique from Linux to OSX86 via complete warm reboot goes through POST init and I wonder if shadow VIDEO BIOS overwrites my video RAM patch done in Linux.

 

When I can get the patch to run post-Darwin boot prompt, I'll see once and for all if the video memory theory is right.... or wrong!

Link to comment
Share on other sites

Let me throw a different twist in here.

 

Macs have always required monitors (or dongles or cables) in order to boot. For some reason, having a headless Mac was not provided for by Apple despite complaints by customers (I'm sure the Xserve must be an exception).

 

So, during those first few seconds when the OS is checking for a monitor, for some reason on a 915, it doesn't see the LCD. But it will see a dongle or the wires.

Link to comment
Share on other sites

I have a plan that I'm slowly putting into action, though my problem is a little different (my internal LCD panel on the P1510 is not recognized by any of the intel drivers, either the 915 driver or the IntelIntegratedGraphics driver; vga out works fine). The actual video driver seems to be fine; it just seems to be doing display detection brokenly -- not surprising, since the machines the driver was originally written for didn't have integrated displays. So, my plan is to just write a new driver that subclasses the existing driver, lets almost all function calls go straight through to it, and just handle monitor detection myself. There's an open-source driver for the GMA 900 as part of the intel xorg driver, so that's not an issue. (In theory, you could implement a brand-new driver using the xorg driver as a starting point, but I don't think that's necessary.)

 

So, first, subclass IntelIntegratedGraphics and get things working with that (since it's a simple IOFramebuffer-based driver), and then move on to Intel915 (more complex, some dancing around with IOAccelerator). I'm taking this on, but my time is limited, so if someone who has more free time than I, get to work! ;)

Link to comment
Share on other sites

So, during those first few seconds when the OS is checking for a monitor, for some reason on a 915, it doesn't see the LCD. But it will see a dongle or the wires.

 

In a sorta way it does... you get a blue screen. If it didn't, you'd get a black screen. This blue screen seems to be the end of it. No more disk activity.

 

Rustak's ideia is interesting but isn't a little hack anymore ;)

Link to comment
Share on other sites

You can do your idea in the same way -- creating a kext is pretty trivial, and you can set up your kext so that it has a chance to run (your probe method will be called) before any of Apple's drivers. At that point you have a nub for the device, and you can poke pci config registers/memory space/etc. Just do your monitor setup, then return null (saying your driver can't handle it) and let the other driver take over. I'd suggest writing a small kext first that would just print the contents of the registers you're interested in, and then doing a few linux->osx warm reboots to gather data from when it works and when it doesn't, so you know what bits to bang where.

Link to comment
Share on other sites

To date, i have NEVER bad OSX boot properly without the VGA connected.

 

the idea of using a more generic "integrated video" kext sounds interesting.

 

But i think the fix is going to involve actually modifying the part of the code which initializes the gpu. I'm not really clear on how OSX86 is "patched". Are coders compiling the darwin kernel from source, or are they using the kernel on the CD?

Link to comment
Share on other sites

no need for kernel sources ;) it ain't in there... it's apple's kexts sources we need, and they don't release that.

 

no need for kexts either because it's a run-once kinda deal. do the required initialization and let OS X takeover from there.

Link to comment
Share on other sites

If you press your shortcut to external monitor in the very moment it starts blue screen (mine is Fn+F4) then it forces monitor detection AND IT WORKS WITHOUT PINS OR EXTERNAL MONITOR.

 

So there should be an application that forces this detection in the moment BEFORE it starts this screen. :)

Link to comment
Share on other sites

Strange...

The first time I installed OSX86 (?a year ago? shortly after the first release appeared) it worked fine on my laptop

 

Now it doesn't (blue screen)

 

Only thing that changed: HDD and a BIOS update

Link to comment
Share on other sites

Assuming same OSX86 install disk, it just emphasizes what we all suspected. It's a BIOS bug which doesn't properly report the correct modelines and/or video ram.

 

Certain laptops allowed for much better control of how much VRAM to use in BIOS. Those lucky few got it working without any problems.

 

Intel's chipset usually has few VRAM options in BIOS because of its much advertised DVMT (sp?), i.e. dynamic video memory allocation.

Link to comment
Share on other sites

Most likely it was your BIOS update. Care to inform us your laptop make/model/BIOS version?

 

Laptop: Samsung x20 1730V (Bios 12z)

 

CPU Intel® Pentium® M processor 1.73GHz

RAM 1024MB

GFX: Intel Corp. Mobile Graphics Controller (i915)

Sound Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller

USB 1 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI

USB 2 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller

Firewire Ricoh Co Ltd R5C552 IEEE 1394 Controller

LAN Broadcom Corporation BCM4401-B0 100Base-TX

WLAN Intel Corp. PRO/Wireless 2200BG

Modem Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller

TouchPad Synaptics

PCMCIA Ricoh Co Ltd RL5c476 II

MD/SD-Slot Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 17)

+ Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 08)

 

 

 

but after reading the other threads about gma900, it could be possible that it only worked on the 10.4.1 install because at that time, the chip wasn't detected and therefore VESA was used?

(Although the installer is using vesa too... hmm :) )

Link to comment
Share on other sites

nice try... 10.4.1 was around when the apple's developer kit was being thoroughly hacked. the developer's machine had GMA900 and worked as should, except, that it was used using external vga! internal vga was not intended for use, thus our current problem.

 

I'm downloading Apple.OS.X.x86.Generic.Install.DVD (I believe it's 10.4.0) to test that theory. In a couple of days I'll know... :)

Link to comment
Share on other sites

Macs have always required monitors (or dongles or cables) in order to boot. For some reason, having a headless Mac was not provided for by Apple despite complaints by customers (I'm sure the Xserve must be an exception)

 

 

i have to disagree - i have a g4 powermac that sits in the corner powered on, as a file / printserver -

i use VNC to control it -

it has no keyboard, mouse or dsplay connected - just power and ethernet

Link to comment
Share on other sites

  • 2 weeks later...
but after reading the other threads about gma900, it could be possible that it only worked on the 10.4.1 install because at that time, the chip wasn't detected and therefore VESA was used?

(Although the installer is using vesa too... hmm ;) )

 

You are correct indeed. I downloaded 10.4.1 and it did use VESA all the way. Profile indicates no kext loaded. No CI/QE either.

 

Beachballs abundant. No dongle required.

Link to comment
Share on other sites

  • 1 month later...
You definitely can help out. I'm an old school programmer (Sparc SunOS/Solaris) and recently took the job to figure this out.

 

Answer me this, and perhaps others: from a cold bootup *without* the VGA hack (or VGA null adapter), do you *always* get the blue screen hangup? Every single time?

 

I wrote some test code in Linux and ran that off a minimalistic (text only and 45MB big) live Linux CD (Slax Frodo) which allocated either 128MB video RAM. Then I did a warm reboot into OSX86, and 3 out of 5 times it booted normally using my laptop's LCD screen *without* any VGA hack.

 

Every time I went into Darwin's boot prompt, it always showed 7MB video RAM, *but* it still activated my laptop's LCD.

 

I'm only dissecting 915 chipsets for now and there are some bugs left. I am now in the process of converting the code to OSX86 and that in itself is a challenge because Apple removed /dev/mem for direct memory access. Good time to learn Mach API syscalls!

 

My work is based on the following theories:

 

1. video memory allocation theory.

2. warm reboot from WinXP preserves the its video memory allocation.

 

From what I understand, (2) does not go through POST initialization whereupon the SYSTEM BIOS and VIDEO BIOS is shadowed into RAM.

 

My technique from Linux to OSX86 via complete warm reboot goes through POST init and I wonder if shadow VIDEO BIOS overwrites my video RAM patch done in Linux.

 

When I can get the patch to run post-Darwin boot prompt, I'll see once and for all if the video memory theory is right.... or wrong!

this is true because when i first started into osx86 it would sometimes boot up into osx without the external monitor or wire hack. dont know why but sometimes it did and most of the time it didnt

Link to comment
Share on other sites

  • 2 weeks later...

Hi,

 

Same thing for me, 95% of the time it stay stucked on the blue screen ... 5% of the rest it boot... I can't really figure out what are the difference in the configuration .. ! But i haven't got any chance to reproduce a good boot two times in a row .. !!!

Booting with a second monitor will always be ok.

Have tried booting "Graphic blabla"="1024x768x8" ... not better.

 

Is plugin a dongle the only solution for now ..? (don't like this kind of trick)

 

 

Dell D410

Intel GM915

Centrino 1.73 Ghz

1 stick 1Go 533 DDR

Booting Osx on external 20Go usb drive

Link to comment
Share on other sites

  • 6 months later...

Right in the momment i have got HP Pavilon 4000 with i915 the problem with blue screen is strange, it booted normaly with build in LCD without any dongles or shorts wires, pins or anything alse, afther using XP. but i have used -f switch (it probably has nothing to do with that) and next time i booted there was blue screen, next time afther rebooting from XP i could use the build in display. Question WHY? and how make it working every time ?

Jas 10.4.8 AMD/Intel SSE2/3 no additional software or kexts

 

Edited:

1.

Delating the /System/Library/Extensions.kextcache and /System/Library/Extensions.mkext makes the lappy booting and working with build in display.

 

without any dongle/shorts/external displays

 

post-19952-1178936204_thumb.jpg

2.

Ones in the beggening the display has worked fine and in the system profiler i have seen 2 displays! why? there was no other display connected, no shorts no pins no dongle.

post-19952-1178936869_thumb.jpg

 

worked well till i have turned on mirror mode on displays,

post-19952-1178937198_thumb.jpg

post-19952-1178937261_thumb.jpg

the display get blue, and the second one too,

post-19952-1178937868_thumb.jpg

cince that moment i cant see 2 dispalys even afther reboot

and LCD works when i delate the files as written in point 1.

post-19952-1178936257_thumb.jpg

 

in my opinion we can solve the problem in a software way ones for ever.

post-19952-1178936299_thumb.jpg

post-19952-1178937295_thumb.jpg

post-19952-1178937541_thumb.jpg

Link to comment
Share on other sites

Right in the momment i have got HP Pavilon 4000 with i915 the problem with blue screen is strange, it booted normaly with build in LCD without any dongles or shorts wires, pins or anything alse, afther using XP. but i have used -f switch (it probably has nothing to do with that) and next time i booted there was blue screen, next time afther rebooting from XP i could use the build in display. Question WHY? and how make it working every time ?

Jas 10.4.8 AMD/Intel SSE2/3 no additional software or kexts

 

Howdy! I've been away from the OSX86 scene far too long. Didn't have time to play with this project... slowing getting into the rhythm of 10.4.9 and a new kernel! Yeehaw!

 

Back to your question: When you ran your WindowsXP, it correctly configured your video memory into shadow ROM. When you do a warm reboot, the contents of the shadow ROM is still intact and just the way needed for the i915 to work with OSX. If you do a cold reboot, the shadow ROM is erased and must be copied again, incorrectly by Darwin bootloader.

Link to comment
Share on other sites

ok, but, why it starts right afther cold boot ?

 

as i said, i can start easy when i delate the kextcache and mkext, so if it enables the build in LCD , we can do that too. and it is not the hardware problem but software.

 

and another thing, i can start with build in LCD without doing nothing just putting jas dvd into drive and letting boot the system (3/8 tryes works fine) so ? where is the problem, for sure it is not the bios or something.

 

and why delating mkext and kextcache enables LCD and what's going on while rebuilding those 2 files that enables LCD?

and how make that proces (the one ewhile rebuilding those 2 files) to work for us wihout delating them ?

 

maby the simplest in the momment solution is a script wchich will delate the files everytime the system starts or closes, and in meantime we will figure out whats going on ?

 

and anybody alse has got the same results ?

 

i have found a few people writting that they can enable LCD by delating those files.

so i'm not the only one

 

let's follow that patch and maby we will solv the problem ?

 

any ideas ?

Link to comment
Share on other sites

 Share

×
×
  • Create New...