Jump to content

New AGPGart


Slice
 Share

941 posts in this topic

Recommended Posts

Thanks a lot!

 

Finder shows this Folder als a file which i can't open.

In Terminal i can open the Folder and the Info.plist

 

The FAQ says: You must edit it to

<key>Personality</key>
<dict>
	<key>IOProviderClass</key>
	<string>IOFramebuffer</string>
</dict>

 

These lines are already in the Info.plist

Is there any other solution?

Link to comment
Share on other sites

Hi Slice,

I can't seem to find detailed log for open gl crash thru console, only this: 2008-07-07 17:59:35.983 Chess[238] invalid drawable

2008-07-07 17:59:47.236 Chess[238] invalid drawable

2008-07-07 17:59:50.323 Chess[238] invalid drawable

2008-07-07 18:02:04.168 Xbench[246] invalid drawable

2008-07-07 18:02:04.206 Xbench[246] invalid drawable

2008-07-07 18:02:04.224 Xbench[246] invalid drawable

2008-07-07 18:04:51.447 DiskImages UI Agent[255] Could not find image named 'background'.

2008-07-07 18:06:01.827 OpenGL Extensions Viewer[267] Error attaching drawable

2008-07-07 18:09:24.376 OpenGL Extensions Viewer[267] Error attaching drawable

where do I find detailed log?

Thanks

 

Hi Slice,

Sorry so long for reply.

I think your AGPGart 270 is totally working for i865g chip set with 0x08000000 Base, :)

This is absolutely phenomenal work. I am able to boot to GUI using your ATI.kext and ATILead.kext 120 and adding my device ID, with or without 9700GA plugin!

I had no success with Natit and any ATY, name.

As far as OpenGL, without 9700GA plugin I can only see initialization error, as in previous post, OpenGL just won't start. I have a few observations, but I think they belong in other topic, as it appears your AGPGart is fully functional.

 

I also have a notebook with ATI IGP345m, RS200m+, ID 0x4337, pci2pci 0x7010, pci host 0xcbb2.

Would it be possible to add support to your AGPGart for this chipset ? :( , maybe I can help with test results to solve IGP problem.

Also, where should I post OpenGL problems ?

 

I will be away for next 7 days, but when I return I can test anything you have, and post results for both the ATI9800 pro/i865g combo, and IGP345m/rs200m. :D

 

Again, Thanks for all of your hard work,

rj

Link to comment
Share on other sites

Thank you rjstrat for good news!

I never see RS200M before so why AGPGart is not work for you.

You have DevID

VGA=0x4337

AGPBridge=0x7010

AGPHost=0xcbb2

but in codes

		switch (dev) {
	case 0xcab0:
		return ("ATI RS100 AGP bridge");
	case 0xcab2:
		return ("ATI RS200 AGP bridge");
	case 0xcab3:
		return ("ATI RS250 AGP bridge");
	case 0x5830:
		return ("ATI RS300_100 AGP bridge");
	case 0x5831:
		return ("ATI RS300_133 AGP bridge");
	case 0x5832:
		return ("ATI RS300_166 AGP bridge");
	case 0x5833:
		return ("ATI RS300_200 AGP bridge");
	case 0x5838:		//Slice
		return ("ATI RS300M AGP bridge");
	case 0x5a3f:		
		return ("ATI RS400 AGP bridge");  // really it is PCIE
	case 0x7932:
		return ("ATI RS480 AGP bridge"); // really it is PCIE
	default:
		return NULL;

Not a problem to add your DevID. Wait please for a new version a few days.

But other problem. How can we know that AGPGart works for our chipsets if we have no hardware OpenGL even in PCI mode?

As I see you are good tester so I want to work with you.

 

About OpenGL problems the best place here

Link to comment
Share on other sites

good evening,

 

i have a Workstation with E7505 Chipset, 2x 2.8GHz Xeon with HTT. My Video Card is a Radeon HD3850 AGP.

 

Basically it runs perfectly with CI/QE. The only drawback is that it currently runs in PCI mode.

 

I have installed the AGP Gart 2.71 but it does not load. It seems to be an issue with the device ID of the PCI-to-AGP Bridge. It is 0x2252 instead 0x2250.

 

I tried to change the values and the driver loaded and the system booted up to the blue background screen. I am not sure if this is a AGPGart or Videodriver issue.

 

changes in your code: (just added three lines)

const char* AGPINTEL::Match(UInt16 dev)
{
//Slice - this is AGPBridge dev=1
 switch (dev) {
	 case 0x1a31: //
			 return ("Intel 82845 host to AGP bridge");
	 case 0x3341: //
			 return ("Intel 82855 host to AGP bridge");
	 case 0x2532: //
			 return ("Intel 82860 host to AGP bridge");
	 case 0x2571: //
			 return ("Intel 82865 host to AGP bridge");
	 case 0x255d:
			 return ("Intel E7205 host to AGP bridge");
	 case 0x2550:
			 return ("Intel E7505 host to AGP bridge");
	 case 0x2552:
		 return	   ("Intel E7505v3 host to AGP bridge");
	 case 0x2579: //
			 return ("Intel 82875P host to AGP bridge");
	 case 0x2561:
			 return ("Intel 82845G host to AGP bridge");
	 case 0x3581:
			 return ("Intel 82855GM host to AGP bridge");
 };

 return NULL;
} 

*/
        switch (type) {
        case 0x1a218086: /* i840 */
                pciwrite16(hostSpace, AGP_INTEL_I8XX_ERRSTS, 0xc000);
                break;

        case 0x25008086: /* i820 */
        case 0x25018086: /* i820 */
        case 0x1a308086: /* i845 */
	 case 0x25308086: /* i850 */
        case 0x33408086: /* i855 */
	 case 0x35808086: /* i855G */
        case 0x255d8086: /* E7205 */
        case 0x25508086: /* E7505 */
	 case 0x25528086: /* E7505v3 */
        case 0x25318086: /* i860 */
        case 0x25708086: /* i865 */
        case 0x25788086: /* i875P */
        case 0x25608086: /* i845G */
                pciwrite16(hostSpace, AGP_INTEL_I8XX_ERRSTS, 0x00ff);
                break;

        default: /* Intel Generic (maybe) */
                pciwrite8(hostSpace, AGP_INTEL_ERRSTS + 1, 7);
	}


case 0x1a218086: /* i840 */
case 0x25308086: /* i850 */
case 0x25318086: /* i860 */
case 0x255d8086: /* E7205 */
case 0x25508086: /* E7505 */
case 0x25528086: /* E7505v3 */
	pciwrite16(hostSpace, AGP_INTEL_MCHCFG,
		pciread16(hostSpace, AGP_INTEL_MCHCFG ) & ~(1 << 9) );
	break;


 

 

some Logs:

Jul 27 16:46:37 localhost kernel[0]: Alkor: Starting.
Jul 27 16:46:37 localhost kernel[0]: choosed model ATI Radeon 3800 Series
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting ATY,PlatformInfo=<data not shown>
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting ATY,EFICompileDate=Dec 18 2007
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting ATY,Copyright=Copyright AMD Inc. All Rights Reserved. 2005-2008
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting @0,display-connect-flags=<data not shown>
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting @0,ATY,EFIDisplay=TMDSA
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting model=ATI Radeon HD 3800
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting @1,display-type=NONE
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting AAPL01,blackscreen-preferences=<data not shown>
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting ATY,RegisterSpaceOffset=<data not shown>
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting AAPL00,blackscreen-preferences=<data not shown>
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting AAPL,backlight-control=<data not shown>
Jul 27 16:46:37 localhost kernel[0]: Alkor: Setting name=ATY,LamnaParent
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,MemVendorID=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,FrameBufferOffset=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,MemRevisionID=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @1,VRAM,memsize=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @0,compatible=ATY,Lamna
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting AAPL01,Coherency=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,Card#=109-B148xx-00
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,HWGPIO=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @1,compatible=ATY,Lamna
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,PCIConfigSpace=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @1,device_type=display
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,EFIVersionBios=113-B14801-023
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting device_type=ATY,LamnaParent
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,VendorID=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,EFIEnabledMode=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,EFIHWInitStatus=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,IOSpaceOffset=<data not shown>
Jul 27 16:46:38 localhost mDNSResponder mDNSResponder-170 (Jan  4 2008 18:04:07)[33]: starting
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,MCLK=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,Rom#=113-B1480A-236
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,EFIDriverType=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting MVAD=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @0,device_type=display
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @0,display-type=LCD
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting AAPL,aux-power-connected=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,RefCLK=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @1,connector-type=<data not shown>
Jul 27 16:46:38 localhost /usr/sbin/ocspd[70]: starting
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,EFIOrientation=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting AAPL,EMC-Display-List=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,MRT=
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,bin_image=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,SCLK=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @1,name=ATY,Lamna
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @0,AAPL,boot-display=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @0,name=ATY,Lamna
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @0,connector-type=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting ATY,EFIVersion=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: Alkor: Setting @0,VRAM,memsize=<data not shown>
Jul 27 16:46:38 localhost kernel[0]: AGP: Coherence support: no
Jul 27 16:46:38 localhost kernel[0]: AGP: GART is 32 bit capable
Jul 27 16:46:38 localhost kernel[0]: AGP: Found an AGP 3.0 compliant device.
Jul 27 16:46:38 localhost kernel[0]: AGP: VRAM=[f0000000, 08000000]
Jul 27 16:46:38 localhost kernel[0]: AGPINTEL: aperture [f4000000, 08000000]
Jul 27 16:46:38 localhost kernel[0]: AGPINTEL trace PCI space
Jul 27 16:46:38 localhost kernel[0]: (00)=25508086   (04)=00900146   (08)=06000003   (0c)=00800000   
Jul 27 16:46:38 localhost kernel[0]: (10)=f0000008   (14)=00000000   (18)=00000000   (1c)=00000000   
Jul 27 16:46:38 localhost kernel[0]: (20)=00000000   (24)=00000000   (28)=00000000   (2c)=129d103c   
Jul 27 16:46:38 localhost kernel[0]: AGP: Setting 08 data rate
Jul 27 16:46:38 localhost kernel[0]: AGP: command written target=00000312 master=1f00e312
Jul 27 16:46:38 localhost kernel[0]: AGP memory 108cc000 length 00001000 offset 00000000 cnt 00000000
Jul 27 16:46:38 localhost kernel[0]: AGP memory 108cc000 length 00001000 offset 00001000 cnt 00000001
Jul 27 16:46:38 localhost kernel[0]: ** Device in slot: SLOT--1 **

 

 

I attached ioreg & dmesg files.

 

thank you

 

svabi

ioregsvabi.txt

dmesgsvabi.txt

Link to comment
Share on other sites

I searched everywhere but haven't found an answer, so I think this is the best place to ask this.

Is it possible to force agp4 instead of having by default agp8?

 

Well, all I know is that in my bios I can switch it over to AGP4. I don't know about yours though, that'd be where I'd look.

Link to comment
Share on other sites

I searched everywhere but haven't found an answer, so I think this is the best place to ask this.

Is it possible to force agp4 instead of having by default agp8?

I have almost sure that I can run agpgart and that is the main problem why I still haven't.

 

I have a asus 9800xt. Mb is a Matsonic 9377c they have some weird problem in xp, it crashes on startup when framebuffer is activated both with agp8, if it doesn't happen it becomes very unstable and crashes minutes later.

 

But if i disable framebuffer and change the values to agp4 everything runs flawlessly.

 

So I guess that specific problem isn't just due to Xp, I'm now running Tiger 10.4.9.

If its possible to change those values, can someone give me a hint how to?

The bios doesn't give me that option so I must change it through agpgart.

 

 

Thanks for the time.

Link to comment
Share on other sites

Hi Slice,

Thanks for adding rs200m support to your AGPGart. :thumbsup_anim:

My chip is found, but right after it is recognized, I get boot freeze with green vertical lines.

I have tried many combo's of Base, but always get same result. I can't start in single user mode to generate ioreg or dmesg to post. I am novice, but I looked at your AGPGart271 source code and noticed that the line for:

// AGBP space?
	switch (dev) {
	case 0xcab0:
		return ("ATI RS100 AGP bridge");
	case 0xcab2:
		return ("ATI RS200 AGP bridge");
	case 0xcbb2:
	case 0x7010:
		return ("ATI RS200M AGP bridge");
	case 0xcab3:
		return ("ATI RS250 AGP bridge");

 

Has both 0xcbb2 host, and 0x7010 pci2pci bus together. Could this be issue? or is this just for chip detection? Maybe you could advise on possible IGP Base?

 

Thanks again,

rj

Link to comment
Share on other sites

i have a Workstation with E7505 Chipset, 2x 2.8GHz Xeon with HTT. My Video Card is a Radeon HD3850 AGP.

 

changes in your code: (just added three lines)

Good work!

some Logs:

Jul 27 16:46:37 localhost kernel[0]: Alkor: Starting.
Jul 27 16:46:38 localhost kernel[0]: AGP: command written target=00000312 master=1f00e312
Jul 27 16:46:38 localhost kernel[0]: AGP memory 108cc000 length 00001000 offset 00000000 cnt 00000000
Jul 27 16:46:38 localhost kernel[0]: AGP memory 108cc000 length 00001000 offset 00001000 cnt 00000001
Jul 27 16:46:38 localhost kernel[0]: ** Device in slot: SLOT--1 **

I attached ioreg & dmesg files.

Looks to be OK. So I don't know what is your problem. Does your set of drivers works good without AGPGart?

Did you try different settings in AGPGart.info.plist?

 

 

I searched everywhere but haven't found an answer, so I think this is the best place to ask this.

Is it possible to force agp4 instead of having by default agp8?

No, it is property written in AGP STATUS REGISTER that is read only.

I can propose to you change in AGPGart.info.plist

AGP_Mode

value to 0xffffffef that means disable fast write as Apple do for ATI R481 chip. I don't know why.

 

Hi Slice,

Thanks for adding rs200m support to your AGPGart. :unsure:

My chip is found, but right after it is recognized, I get boot freeze with green vertical lines.

I have tried many combo's of Base, but always get same result. I can't start in single user mode to generate ioreg or dmesg to post. I am novice, but I looked at your AGPGart271 source code and noticed that the line for:

// AGBP space?
	switch (dev) {
	case 0xcab0:
		return ("ATI RS100 AGP bridge");
	case 0xcab2:
		return ("ATI RS200 AGP bridge");
	case 0xcbb2:
	case 0x7010:
		return ("ATI RS200M AGP bridge");
	case 0xcab3:
		return ("ATI RS250 AGP bridge");

 

Has both 0xcbb2 host, and 0x7010 pci2pci bus together. Could this be issue? or is this just for chip detection? Maybe you could advise on possible IGP Base?

Yes, it is only for chip detection. I need to be sure that driver loaded only for supported chips.

You have bad picture on screen because or non-patched ATIRadeon8500.kext. I try different variants of the patch but still have no full success. The difference is shared memory. In my case IODeviceMemory for VGA = 0xd0000000 but real address=0x38000000 and best AGP_Base value for me = 0x3c000000=0x38000000+0x04000000 (64Mb). And I write the same value into Radeon8500.kext. In this case I can enter GUI and sometimes have hardwareOpenGL but strill without real writing to the screen. In these experience I get a sure that AGPGart works for me. But ATIRadeon8500 - no!

Link to comment
Share on other sites

Good work!

Looks to be OK. So I don't know what is your problem. Does your set of drivers works good without AGPGart?

Did you try different settings in AGPGart.info.plist?

 

 

 

No, it is property written in AGP STATUS REGISTER that is read only.

I can propose to you change in AGPGart.info.plist

<key>AGP_Mode</key>

value to 0xffffffef that means disable fast write as Apple do for ATI R481 chip. I don't know why.

 

 

Yes, it is only for chip detection. I need to be sure that driver loaded only for supported chips.

You have bad picture on screen because or non-patched ATIRadeon8500.kext. I try different variants of the patch but still have no full success. The difference is shared memory. In my case IODeviceMemory for VGA = 0xd0000000 but real address=0x38000000 and best AGP_Base value for me = 0x3c000000=0x38000000+0x04000000 (64Mb). And I write the same value into Radeon8500.kext. In this case I can enter GUI and sometimes have hardwareOpenGL but strill without real writing to the screen. In these experience I get a sure that AGPGart works for me. But ATIRadeon8500 - no!

 

Hi Slice,

I think we are having same problem, but you are way more advanced than I.

I can't get ATIRadeon.kext to load, my IGP345m is based on r100 family of Radeon, so I thought this would be more appropriate driver, as device ID's are in 7000 family.

I have only changed Dev ID in info plist, but as you have said, there is more to it than that.

Can you give procedure to add my device 0x43371002 to ATIRadeon.kext?

I also have 64mb aperture, and 64mb shared memory for graphics, so I will try with AGP Base of 0x3c000000.

Thanks again,

rj

Link to comment
Share on other sites

Hi Slice,

I think we are having same problem, but you are way more advanced than I.

I can't get ATIRadeon.kext to load, my IGP345m is based on r100 family of Radeon, so I thought this would be more appropriate driver, as device ID's are in 7000 family.

I have only changed Dev ID in info plist, but as you have said, there is more to it than that.

Can you give procedure to add my device 0x43371002 to ATIRadeon.kext?

I also have 64mb aperture, and 64mb shared memory for graphics, so I will try with AGP Base of 0x3c000000.

Thanks again,

rj

Sorry, it needs to find in hex dump strings like 3d445100 (devID=5144) of other supported devID for the driver. I never do it for 7000. If you can not I'll make it later.

How do you thing what chip is more like to you: R100 (5144), RV100 (5159) or RV200 (4c57)? Or else?

Link to comment
Share on other sites

Sorry, it needs to find in hex dump strings like 3d445100 (devID=5144) of other supported devID for the driver. I never do it for 7000. If you can not I'll make it later.

How do you thing what chip is more like to you: R100 (5144), RV100 (5159) or RV200 (4c57)? Or else?

 

Hi Slice,

As it is Mobility chip the best guess I can make is 4c59 (m6) or 4c57 (Mobility 7500 m7).

Hope this helps, windows driver still differentiates rs200m from the rest. I can't find much specific info on igp345m chip, but all are in r100 family so they should work.

Thanks for all of your help,

rj

Link to comment
Share on other sites

Slice,

 

Looks to be OK. So I don't know what is your problem. Does your set of drivers works good without AGPGart?

Did you try different settings in AGPGart.info.plist?

 

The HD3850 Drivers work well without AGPGart.

 

Any suggestions what i can try to change in info.plist?

 

Thank you for your nice AGPGart driver and all the time you spent for the community :)

 

regards

 

svabi

Link to comment
Share on other sites

Hi Slice,

As it is Mobility chip the best guess I can make is 4c59 (m6) or 4c57 (Mobility 7500 m7).

Hope this helps, windows driver still differentiates rs200m from the rest. I can't find much specific info on igp345m chip, but all are in r100 family so they should work.

Thanks for all of your help,

rj

 

Hi Slice,

It looks like IGP345 is a variant of RV100 family, the RS200M means RS200 mobility chip, I found this in RadeonDump/radeon.h file:

 

#define RADEON_VBIOS_SIZE 0x00010000

typedef enum {
   CHIP_FAMILY_UNKNOW,
   CHIP_FAMILY_LEGACY,
   CHIP_FAMILY_RADEON,
   CHIP_FAMILY_RV100,
   CHIP_FAMILY_RS100,    /* U1 (IGP320M) or A3 (IGP320)*/
   CHIP_FAMILY_RV200,
   CHIP_FAMILY_RS200,    /* U2 (IGP330M/340M/350M) or A4 (IGP330/340/345/350), RS250 (IGP 7000) */
   CHIP_FAMILY_R200,
   CHIP_FAMILY_RV250,
   CHIP_FAMILY_RS300,    /* RS300/RS350 */
   CHIP_FAMILY_RV280,
   CHIP_FAMILY_R300,
   CHIP_FAMILY_R350,

 

And this:

 

#define IS_RV100_VARIANT ((info->ChipFamily == CHIP_FAMILY_RV100)  ||  \
       (info->ChipFamily == CHIP_FAMILY_RV200)  ||  \
       (info->ChipFamily == CHIP_FAMILY_RS100)  ||  \
       (info->ChipFamily == CHIP_FAMILY_RS200)  ||  \
       (info->ChipFamily == CHIP_FAMILY_RV250)  ||  \
       (info->ChipFamily == CHIP_FAMILY_RV280)  ||  \
       (info->ChipFamily == CHIP_FAMILY_RS300))

 

And also this:

 

Bool	HasCRTC2;
   Bool              IsMobility;       /* Mobile chips for laptops */
   Bool              IsIGP;            /* IGP chips */
   Bool              HasSingleDAC;     /* only TVDAC on chip */
   Bool              ddc_mode;         /* Validate mode by matching exactly
				 * the modes supported in DDC data
				 */
   Bool              R300CGWorkaround;

 

I have also attached radeon.h.

I hope this helps, all your help is greatly appreciated.

Thanks,

rj

radeon.zip

Link to comment
Share on other sites

OK.

I made a patched ATIRadeon.kext for 4337 instead of 4c59. (I have 5835 instead of 4c66).

But not only! I corrected shared memory access.

ATIRadeon Before
000788b4 899070010000                   mov         [eax+0x170], edx 
000788ba c781a006000000000000           mov         dword ptr [ecx+0x6a0], 0x0
000788c4 8b8114060000                   mov         eax, [ecx+0x614]
000788ca c780480100000000ffff           mov         dword ptr [eax+0x148], ffff0000
000788d4 8b9114060000                   mov         edx, [ecx+0x614]
000788da 8b8208010000                   mov         eax, [edx+0x108]
000788e0 8d58ff                         lea         ebx, [eax-1]
000788e3 6631db                         xor         bx, bx
000788e6 8b81a0060000                   mov         eax, [ecx+0x6a0]
000788ec 89823c020000                   mov         [edx+0x23c], eax
000788f2 f6819a00000001                 test        byte ptr [ecx+0x9a], 0x1
000788f9 7412                           jz          0x7890d
000788fb 8b91a0060000                   mov         edx, [ecx+0x6a0]
00078901 8b8114060000                   mov         eax, [ecx+0x614]
00078907 89903c030000                   mov         [eax+0x33c], edx
0007890d 8b8114060000                   mov         eax, [ecx+0x614]
00078913 899848010000                   mov         [eax+0x148], ebx
After
000788b4 899070010000                   mov         [eax+0x170], edx
000788ba 8b905c010000                   mov         edx, [eax+0x15c]
000788c0 c1e210                         shl         edx, 0x10
000788c3 8991a0060000                   mov         [ecx+0x6a0], edx
000788c9 eb09                           jmp         0x788d4
000788cb 90                             nop
000788cc 90                             nop
000788cd 90                             nop
000788ce 90                             nop
000788cf 90                             nop
000788d0 90                             nop
000788d1 90                             nop                                                  
000788d2 90                             nop                                                  
000788d3 90                             nop                                                  
000788d4 8b9114060000                   mov         edx, [ecx+0x614]
000788da 8b8208010000                   mov         eax, [edx+0x108]
000788e0 8d58ff                         lea         ebx, [eax-1]
000788e3 6631db                         xor         bx, bx
000788e6 8b81a0060000                   mov         eax, [ecx+0x6a0]
000788ec 89823c020000                   mov         [edx+0x23c], eax
000788f2 f6819a00000001                 test        byte ptr [ecx+0x9a], 0x1
000788f9 7412                           jz          0x7890d
000788fb 8b91a0060000                   mov         edx, [ecx+0x6a0]
00078901 8b8114060000                   mov         eax, [ecx+0x614]
00078907 89903c030000                   mov         [eax+0x33c], edx
0007890d 8b8114060000                   mov         eax, [ecx+0x614]
00078913 8b9848010000                   mov         ebx, [eax+0x148]

It means that in default kext @148=0 - VideoMemoryLocation

and @23c=0 - DisplayAddress - so you see green lines

 

I made @148 - don't change value from BIOS

@23c - calculated from @15c

I don't know what to change else. In this combination you probably can enter GUI with full set of drivers including AGPGart271

 

EDITED

Sorry I forget to write devID into info.plist. It is not problem for you, isn't it?

ATIRadeon.kextPatched.zip

Link to comment
Share on other sites

Slice,

The HD3850 Drivers work well without AGPGart.

 

Any suggestions what i can try to change in info.plist?

 

Thank you for your nice AGPGart driver and all the time you spent for the community :(

 

regards

 

svabi

Sorry, I have no new ideas except old recommendations from topic and FAQ.

 

4 all who understand me.

I see standard framebuffer drivers trying to use interrupts (IRQ).

PCIE has IRQ

PowerPC AGP has IRQ

Intel AGP - not.

Dunno about AMD-ATI but it works except Leo.

I found no one developer to discuss the issue.

Link to comment
Share on other sites

OK.

I made a patched ATIRadeon.kext for 4337 instead of 4c59. (I have 5835 instead of 4c66).

But not only! I corrected shared memory access.

ATIRadeon Before
000788b4 899070010000 mov [eax+0x170], edx 
000788ba c781a006000000000000 mov dword ptr [ecx+0x6a0], 0x0
000788c4 8b8114060000 mov eax, [ecx+0x614]
000788ca c780480100000000ffff mov dword ptr [eax+0x148], ffff0000
000788d4 8b9114060000 mov edx, [ecx+0x614]
000788da 8b8208010000 mov eax, [edx+0x108]
000788e0 8d58ff lea ebx, [eax-1]
000788e3 6631db xor bx, bx
000788e6 8b81a0060000 mov eax, [ecx+0x6a0]
000788ec 89823c020000 mov [edx+0x23c], eax
000788f2 f6819a00000001 test byte ptr [ecx+0x9a], 0x1
000788f9 7412 jz 0x7890d
000788fb 8b91a0060000 mov edx, [ecx+0x6a0]
00078901 8b8114060000 mov eax, [ecx+0x614]
00078907 89903c030000 mov [eax+0x33c], edx
0007890d 8b8114060000 mov eax, [ecx+0x614]
00078913 899848010000 mov [eax+0x148], ebx
After
000788b4 899070010000 mov [eax+0x170], edx
000788ba 8b905c010000 mov edx, [eax+0x15c]
000788c0 c1e210 shl edx, 0x10
000788c3 8991a0060000 mov [ecx+0x6a0], edx
000788c9 eb09 jmp 0x788d4
000788cb 90 nop
000788cc 90 nop
000788cd 90 nop
000788ce 90 nop
000788cf 90 nop
000788d0 90 nop
000788d1 90 nop 
000788d2 90 nop 
000788d3 90 nop 
000788d4 8b9114060000 mov edx, [ecx+0x614]
000788da 8b8208010000 mov eax, [edx+0x108]
000788e0 8d58ff lea ebx, [eax-1]
000788e3 6631db xor bx, bx
000788e6 8b81a0060000 mov eax, [ecx+0x6a0]
000788ec 89823c020000 mov [edx+0x23c], eax
000788f2 f6819a00000001 test byte ptr [ecx+0x9a], 0x1
000788f9 7412 jz 0x7890d
000788fb 8b91a0060000 mov edx, [ecx+0x6a0]
00078901 8b8114060000 mov eax, [ecx+0x614]
00078907 89903c030000 mov [eax+0x33c], edx
0007890d 8b8114060000 mov eax, [ecx+0x614]
00078913 8b9848010000 mov ebx, [eax+0x148]

It means that in default kext @148=0 - VideoMemoryLocation

and @23c=0 - DisplayAddress - so you see green lines

 

I made @148 - don't change value from BIOS

@23c - calculated from @15c

I don't know what to change else. In this combination you probably can enter GUI with full set of drivers including AGPGart271

 

EDITED

Sorry I forget to write devID into info.plist. It is not problem for you, isn't it?

 

Hi Slice,

First, a huge thank you for modding ATIRadeon.kext. ;)

I think driver is mostly working, but I am unable to get into GUI for some reason.

I have tried many combinations with your AGPGart271, ATI.kext, ATILead, and also

earlier IOGraphics, IONDRV, IOPCI etc. I decided to start over with new 10.4.11 install

so I can try and find out what is causing problem.

With new system I change only ATIRadeon.kext, the display hangs on

login window, black screen with live cursor, but system continues to boot. I can't load AGPGart271 because as soon as AGP chip is detected I get boot freeze (KP?) and green lines. I even tried to boot with old AppleI386PCI.kext and ATIRadeon.kext. With this combo the system will boot, but when it gets to login screen instead of GUI I get - guess what? - Same green vertical lines I get with AGPGart271. :blink:

 

I am able to boot into safe mode and load your ATIRadeon.kext thru kextload with no problems of link/load errors like I had with original unmodded kext. :rolleyes:

I got these logs in boot -s mode.

 

Again, Thanks for all of your hard work,

 

rj

dmesg_modRadeon.txt

ioreg_modRadeon.txt

kextstat_modRadeon.txt

Link to comment
Share on other sites

May be it is a problem of SSE3 instructions present in

ATIRadeon*.*, GLEngine ?

You have SSE2 only CPU?

 

 

Hi Slice,

Yes, it is 2.8ghz northwood, I am using 8.9.1 universal kernel.

I have question about UMA memory though, is aperture space memory added in addition to video memory? or, does video memory reside inside of aperture memory?

Also, it seems when I set UMA memory in bios, the aperture is doubled, so if I set UMA memory to 64mb, I get 128 aperture - 64+128= 192mb memory for graphics, if I set UMA memory to 128mb, I get 256mb aperture so, 128+256= 384mb for graphics.

I don't have option in bios to set aperture alone, only UMA memory.

So the big question is, how would you find correct memory location/settings for video?

 

I got this info, with this aperture setting/memory combining issue, in Windows everest, graphics adapter is identified as IGP345m 192mb when UMA is set to 64mb. Would this combination of aperture/UMA memory be incorrect for the settings you made in ATIRadeon.kext?

 

Sorry if it seems as stupid question, just trying to find solution. Also, OpenGL works well in windows, it is OGL 1.3, is it possible setting in driver can be changed for sse2?

 

Thanks again,

 

rj

Link to comment
Share on other sites

Hi Slice,

Yes, it is 2.8ghz northwood, I am using 8.9.1 universal kernel.

Some kernels 8.9.1 already contain SSE3 emulation so you may be not need SSE2 patch. How to check SSE3 instruction execution in kernel space? May be write special test kext?

I have question about UMA memory though, is aperture space memory added in addition to video memory? or, does video memory reside inside of aperture memory?

It is really my big problem. That is what I understood:

AGP aperture is located immediately after PCI aperture. If we write something into AGP aperture in AGP mode the address will be shifted to get PCI address. For example

PCI addresses [d0000000, d7ffffff]

AGP addresses [d8000000, dfffffff]

If we write into address d9400000 the data will fall into address d1400000, i.e. shifted on aperture size 08000000.

So Video Memory is located only in PCI space. AGP space is virtual.

Previously I write how AGPGart work. Link in topic.

What about Radeon GPU address space?

Video memory has address VAddr=0.

If I have aperture size ASize= 0x04000000=64Mb then AGP aperture has address VAddr+ASize=04000000.

This is why I set in AGPGart AGP_Base=aperture.

In ATIRadeon.kext there is a procedure to fill Radeon registers with these addresses

@23c - DISPLAY_BASE_ADDRESS - physical address for framebuffer. Really I can choose 0x38000000=Shared_memory_Address or 0xd0000000=PCI_space video memory address.

@148 - MC_FB_LOCATION. Default value=0x3fff3800 that means range [38000000, 3fffffff]

@170 - AGP_BASE. In PCI mode = 0. In AGP mode this is a value returned by AGPGart driver. In this case =0x04000000

@14c - MC_AGP_LOCATION. Analog to @148 but in AGP mode. Default value is quirky = 0x003f0000=range of 4Mb. ATIRadeon.kext recalculate it as ffff0000 in PCI mode and 0bff0800 in AGP mode. Range [08000000, 0bffffff]. The addresses shifted twice.

This is stop point for me.

Other registers that influence on addresses are

@1d0 - PCI_GART_CNTL

@1d8 - PCI_GART_ADDRESS

@1dc - AIC_LO_ADDR = GART_APERTURE_START

@1e0 - AIC_HI_ADDR = GART_APERTURE_END

@700 - CP_RB_BASE - address of Ring_Buffer. In the driver it occur at the begin of AGP_range=0x08000000.

I have one thought. If this buffer is used by OpenGL then we need to shift framebuffer at the size of RingBuffer.(?)

What I see in PowerMac

VAdr=0x98000000

VSize=0x08000000

ASize=0x04000000

Framebuffer=0x9c008000. This is 98000000+0x04000000+0x00008000. The last one is RingBuffer?

But I can't influence on Framebuffer address from AGPGart driver. It is property of ATINDRV, Callisto(?) or Ati.kext :hysterical: .

nVidia user has setting "fboffset"=20000. Is it the same?

 

Also, it seems when I set UMA memory in bios, the aperture is doubled, so if I set UMA memory to 64mb, I get 128 aperture - 64+128= 192mb memory for graphics, if I set UMA memory to 128mb, I get 256mb aperture so, 128+256= 384mb for graphics.

I don't have option in bios to set aperture alone, only UMA memory.

So the big question is, how would you find correct memory location/settings for video?

 

I got this info, with this aperture setting/memory combining issue, in Windows everest, graphics adapter is identified as IGP345m 192mb when UMA is set to 64mb. Would this combination of aperture/UMA memory be incorrect for the settings you made in ATIRadeon.kext?

In what form I can give you all driver calculations that you can check if I make mistake in patching?

Sorry if it seems as stupid question, just trying to find solution. Also, OpenGL works well in windows, it is OGL 1.3, is it possible setting in driver can be changed for sse2?

Easy. But not today. Only tomorrow.

Link to comment
Share on other sites

it seems we need no to worry about SSE2. If the system works then we already have SSE3 support.

I am not sure but manually executing SSE3 command don't crash my system.

And other observation:

users with SSE3 CPU have exactly the same problems.

Link to comment
Share on other sites

Hi Slice/People!

I wish someone could guide me about with combination of kext can put mi graphic card to work with QE/CI.

My video card is a Nvidia Geforce 6200LE 256Mb AGP

Display:

Type: Display

Bus: AGP

VRAM (Total): 256 MB

Vendor: NVIDIA (0x10de)

Device ID: 0x0222

Revision ID: 0x00a1

Displays:

Display:

Resolution: 1024 x 768

Depth: 32-bit Color

Core Image: Software

Main Display: Yes

Mirror: Off

Online: Yes

Quartz Extreme: Not Supported

QuartzGL: Supported

 

im running Leopard 10.5.2 by Kalyway, and mi PC have an ASRock 775i65G motherboard, and a Intel Celeron D 2.5 Ghz.

 

Thanks! :)

Link to comment
Share on other sites

hi Gaston,

 

how did you get agp mode

i have the same hardward exept the cpu in my 3. system and never get agp.

Link to comment
Share on other sites

Some kernels 8.9.1 already contain SSE3 emulation so you may be not need SSE2 patch. How to check SSE3 instruction execution in kernel space? May be write special test kext?

It is really my big problem. That is what I understood:

AGP aperture is located immediately after PCI aperture. If we write something into AGP aperture in AGP mode the address will be shifted to get PCI address. For example

PCI addresses [d0000000, d7ffffff]

AGP addresses [d8000000, dfffffff]

If we write into address d9400000 the data will fall into address d1400000, i.e. shifted on aperture size 08000000.

So Video Memory is located only in PCI space. AGP space is virtual.

Previously I write how AGPGart work. Link in topic.

What about Radeon GPU address space?

Video memory has address VAddr=0.

If I have aperture size ASize= 0x04000000=64Mb then AGP aperture has address VAddr+ASize=04000000.

This is why I set in AGPGart AGP_Base=aperture.

In ATIRadeon.kext there is a procedure to fill Radeon registers with these addresses

@23c - DISPLAY_BASE_ADDRESS - physical address for framebuffer. Really I can choose 0x38000000=Shared_memory_Address or 0xd0000000=PCI_space video memory address.

@148 - MC_FB_LOCATION. Default value=0x3fff3800 that means range [38000000, 3fffffff]

@170 - AGP_BASE. In PCI mode = 0. In AGP mode this is a value returned by AGPGart driver. In this case =0x04000000

@14c - MC_AGP_LOCATION. Analog to @148 but in AGP mode. Default value is quirky = 0x003f0000=range of 4Mb. ATIRadeon.kext recalculate it as ffff0000 in PCI mode and 0bff0800 in AGP mode. Range [08000000, 0bffffff]. The addresses shifted twice.

This is stop point for me.

Other registers that influence on addresses are

@1d0 - PCI_GART_CNTL

@1d8 - PCI_GART_ADDRESS

@1dc - AIC_LO_ADDR = GART_APERTURE_START

@1e0 - AIC_HI_ADDR = GART_APERTURE_END

@700 - CP_RB_BASE - address of Ring_Buffer. In the driver it occur at the begin of AGP_range=0x08000000.

I have one thought. If this buffer is used by OpenGL then we need to shift framebuffer at the size of RingBuffer.(?)

What I see in PowerMac

VAdr=0x98000000

VSize=0x08000000

ASize=0x04000000

Framebuffer=0x9c008000. This is 98000000+0x04000000+0x00008000. The last one is RingBuffer?

But I can't influence on Framebuffer address from AGPGart driver. It is property of ATINDRV, Callisto(?) or Ati.kext :D .

nVidia user has setting "fboffset"=20000. Is it the same?

 

 

In what form I can give you all driver calculations that you can check if I make mistake in patching?

 

Easy. But not today. Only tomorrow.

 

Hi Slice,

I am away from my hack right now, but have a few questions.

First, does your laptop boot into gui with just modified ATI8500.kext (no agp kext)?

Also, would it be possible to mod ATIRadeon.kext for 64mb video memory/128mb aperture? or, maybe add capability to change video base/video memory/aperture value in plist?

You have given me very much info about memory shift to research, your explanation is clear to understand.

I thought I saw memory shift issue in older XFree86 Radeon IGP driver, and it said something about requirement of kernal mod for IGP chips, maybe could give clue as to method to correct? I will continue to look for answers.

Could you possibly give explanation of method you use to mod kext, and also which is best editor, it might be useful for others to give data without you having to mod all of the kexts.

I am not sure which is easiest form for you to send driver calculations, as I am not a programmer, but if I don't understand something, I will research until I do.

I will give more info when I get back.

Thanks,

 

rj

Link to comment
Share on other sites

Thanks in advance, rjstrat! I really need your help.

OK, if you are not programmer you may show me wanted final result: what you wish to see in those registers. And I try to write the correspondent patch.

The disassembler/patcher I use http://hte.sf.net. If you want I can upload it here.

 

First, does your laptop boot into gui with just modified ATI8500.kext (no agp kext)?

Yes, even with full set of drivers. But any scroll text halt my system or reboot.

With AGPGart no halt but all is slow.

Remember. I can enter GUI only if I set register 0xf8 to the value 0x00300000. And I can't understand why.

would it be possible to mod ATIRadeon.kext for 64mb video memory/128mb aperture?

We can change its only at PCI/AGP level. So in AGPGart.kext.

maybe add capability to change video base/video memory/aperture value in plist?

For this purpose I create ATILead.kext.

Could you possibly give explanation of method you use to mod kext, and also which is best editor, it might be useful for others to give data without you having to mod all of the kexts.

As I said above it is HT.

And there is a way for noobs

perl -pi -e 's|\x3d\x60\x5b\x00\x00|\x3d\x61\x54\x00\x00|g' /patch/ATIRadeon9700

It means find and replace hex string.

Link to comment
Share on other sites

 Share

×
×
  • Create New...