Jump to content

North bridge support!


Slice
 Share

17 posts in this topic

Recommended Posts

North Bridge has PCIClass=060000 also known as

PCI-CPU Bridge

Host controller

AGP host controller

Yes! We need it!

 

Looking into MacBookPro I found

	| | +-o AppleACPICPU  <class AppleACPICPU, registered, matched, active, busy 0, retain count 7>
| |   | {
| |   |   "IOCPUID" = 0x38b5c80
| |   |   "IOCPUNumber" = 0x0
| |   |   
| |   +-o ACPI_SMC_PlatformPlugin  <class ACPI_SMC_PlatformPlugin, registered, matched, active, busy 0, retain count 8>
| |	   {
| |		 "IOMatchCategory" = "IODefaultMatchCategory"
| |		 "CFBundleIdentifier" = "com.apple.driver.ACPI_SMC_PlatformPlugin"
| |		 "MCHThrottleArray" = 
| |		 "IOPropertyMatch" = {"IOCPUNumber"=0x0}
| |   |   
| |   +-o pci8086,27a0@0  <class IOPCIDevice, registered, matched, active, busy 0, retain count 8>
| |	 | {
| |	 |   "compatible" = <"pci8086,7270","pci8086,27a0","pciclass,060000">
| |	 | }
| |	 | 
| |	 +-o AppleSMCPDRC  <class AppleSMCPDRC, registered, matched, active, busy 0, retain count 4>
| |		 {
| |		   "IOMatchCategory" = "IODefaultMatchCategory"
| |		   "IOClass" = "AppleSMCPDRC"
| |		   "IOProviderClass" = "IOPCIDevice"
| |		   "IONameMatched" = "pci8086,27a0"
| |		   "CFBundleIdentifier" = "com.apple.driver.ACPI_SMC_PlatformPlugin"

 

So instructions:

1. Find VendorID/DeviceID of your North Bridge

ioreg -l | grep 0600

2. My result

| | "compatible" =

3. Edit info.plist into

IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/

4. At the bottom you find

		<key>AppleSMCPDRC</key>
	<dict>
		<key>CFBundleIdentifier</key>
		<string>com.apple.driver.ACPI_SMC_PlatformPlugin</string>
		<key>IOClass</key>
		<string>AppleSMCPDRC</string>
		<key>IONameMatch</key>
		<string>pci8086,27a0</string>

5. Edit the name.

6. Don't forget to delete extensions cache.

7. Reboot

 

Be careful. It is not for all!

 

Look also about South bridge support

http://forum.insanelymac.com/index.php?showtopic=84814

Link to comment
Share on other sites

i've blindly done it! please tell us why we need it?

SticMAN

If stars are light on thou it is necessary for someone :rolleyes:

 

1. It makes PCI-CPU bridge. May be for DMA transactions.

2. AGP host controller.

I dunno the theory so deep.

 

if anyone has more then 1 controller with the same class he must choose only one with

DeviceNumber=0

It is here

pci8086,27a0@0

Link to comment
Share on other sites

Quick question... If there are separate threads for North and South bridges, won't you confuse newbies? :rolleyes: And won't info get out of sync?

 

Anyhow, though I can't get my south bridge out of "compatible" mode (see that thread), I seem to not need to modify this Info.plist...

 

	| |   +-o XVR2@C  <class IOPCIDevice, registered, matched, active, busy 0, retain count 9>
| |   | | {
| |   | |   "device-id" = <e9030000>
| |   | |   "name" = "pci-bridge"
| |   | |   "IOPCIConfigured" = Yes
| |   | |   "#size-cells" = <02000000>
| |   | |   "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/XVR2@c0000"
| |   | |   "IOName" = "pci-bridge"
| |   | |   "vendor-id" = <de100000>
| |   | |   "revision-id" = <a2000000>
| |   | |   "IOPCIResourced" = Yes
| |   | |   "Power Management private data" = "{ this object = 02c8d680, interested driver = 02c8d680, driverDesire = 0, deviceDesire = 0, ourDesiredPowerState = 2, previousRequest = 2 }"
| |   | |   "Power Management protected data" = "{ theNumberOfPowerStates = 3, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPowe$
| |   | |   "acpi-reg" = <00600000>
| |   | |   "IOPCIExpressLinkStatus" = 4113
| |   | |   "IOPCIExpressLinkCapabilities" = 34683921
| |   | |   "class-code" = <00040600>
| |   | |   "compatible" = <"pci10de,3e9","pciclass,060400">
| |   | |   "IODTPersist" = <a6e85a2adee85a2a>
| |   | |   "#address-cells" = <03000000>
| |   | |   "reg" = <0060000000000000000000000000000000000000>
| |   | |   "ranges" = <00000082000000000000a0fd00000082000000000000a0fd0000000000001000000000c20000
000000090fd000000c200000000000090fd0000000000001000>
| |   | | }

 

Or is it possible that I edited the wrong plist (or part of it) earlier? (Again questioning the wisdom of 2 threads…)

Link to comment
Share on other sites

Nice find.

 

What do you notice is fixed when making this change (I assume it solves the SMC errors on a -v boot).

 

For those that it makes a difference to, can you please post the PCIID of the memory controller you added. It will help with a project I am working on.

Link to comment
Share on other sites

2 lewellyn

You are right. It will be better to join these threads. I dunno how. Moderators?

 

You found PCIE bridge

"compatible" =

As I said you need to found

South bridge 060100

North bridge 060000

Link to comment
Share on other sites

2 lewellyn

You are right. It will be better to join these threads. I dunno how. Moderators?

 

You found PCIE bridge

"compatible" = <"pci10de,3e9","pciclass,060400">

As I said you need to found

South bridge 060100

North bridge 060000

 

PCI Class 060100 is the memory controller

PCI Class 060000 is the LPC controller

 

AppleLPC should have the PCI ID added to it as well but my testing has found that it causes more problems rather than fixing any.

Link to comment
Share on other sites

PCI Class 060100 is the memory controller

PCI Class 060000 is the LPC controller

?????

If you never see ioregs look into IOKit

#define PCIC_BRIDGE	0x06
#define PCIS_BRIDGE_HOST	0x00
#define PCIS_BRIDGE_ISA		0x01
#define PCIS_BRIDGE_EISA	0x02
#define PCIS_BRIDGE_MCA		0x03
#define PCIS_BRIDGE_PCI		0x04
#define PCIS_BRIDGE_PCMCIA	0x05
#define PCIS_BRIDGE_NUBUS	0x06
#define PCIS_BRIDGE_CARDBUS	0x07
#define PCIS_BRIDGE_RACEWAY	0x08
#define PCIS_BRIDGE_OTHER	0x80

AppleLPC should have the PCI ID added to it as well but my testing has found that it causes more problems rather than fixing any.

Not everyone is successful because these drivers written for Apple's chipset only. My hack may help, may no. Sorry!

 

Another interesting information

http://discussions.apple.com/thread.jspa?t...17&tstart=0

Link to comment
Share on other sites

Hm... This is what I get...

 

Duchess:~ lewellyn$ ioreg -l|grep 0600  
| |   | |   "class-code" = <01040600>
| |   |   |	   |   "FireWire Device ROM" = <0425c74531333934f800a2420011060000303587000927043800000403000a27810000071700
00a8100000d0c0083c08d000011d1000013d10000150007ac7500000000000000004170706c65204
6f$
| |   |   |		 |   "IOFWHWAddr" = <00110600003035870a02010000000000>
| |   |   |		 |   "IOMACAddress" = <0011060000303587>
| |   | |   "class-code" = <00040600>
| |   | |   "class-code" = <00040600>
| |   | |   "acpi-reg" = <00600000>
| |   | |   "class-code" = <00040600>
| |   | |   "reg" = <0060000000000000000000000000000000000000>
| |   | |   "class-code" = <00010600>
| |   |   | | | | |   |   "HIDIdleTime" = 239060004
| |   | |   "class-code" = <00800600>
| |	 "IOInterruptSpecifiers" = (<0600000000000000>)

 

I'd like to blame it on middle-of-the-night brainfarts. But, I simply pasted the section with the exact match for "060000". And that happened to only be acpi-reg that matched... Does this mean I have no north bridge? ;)

Link to comment
Share on other sites

?????

If you never see ioregs look into IOKit

#define PCIC_BRIDGE	0x06
#define PCIS_BRIDGE_HOST	0x00
#define PCIS_BRIDGE_ISA		0x01
#define PCIS_BRIDGE_EISA	0x02
#define PCIS_BRIDGE_MCA		0x03
#define PCIS_BRIDGE_PCI		0x04
#define PCIS_BRIDGE_PCMCIA	0x05
#define PCIS_BRIDGE_NUBUS	0x06
#define PCIS_BRIDGE_CARDBUS	0x07
#define PCIS_BRIDGE_RACEWAY	0x08
#define PCIS_BRIDGE_OTHER	0x80

 

Not everyone is successful because these drivers written for Apple's chipset only. My hack may help, may no. Sorry!

 

Another interesting information

http://discussions.apple.com/thread.jspa?t...17&tstart=0

 

"pci8086,2641","pciclass,060100"

"pci8086,2590","pciclass,060000"

 

Check this url http://pci-ids.ucw.cz/iii/?i=8086

 

2641 82801FBM (ICH6M) LPC Interface Bridge

2590 Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller

 

For 2641 its the LPC bridge. Which is why its PCI Class 06 subclass 01 (isa based)

 

The problem is I have not seen any impact on adding this (memory controller) to the plugin. This has nothing to do with my pc, can anyone confirm it improves SOMETHING?

Link to comment
Share on other sites

Hm... This is what I get...

I'd like to blame it on middle-of-the-night brainfarts. But, I simply pasted the section with the exact match for "060000". And that happened to only be acpi-reg that matched... Does this mean I have no north bridge? :)

I really don't see your north bridge. How it possible?

What is your configuration?

Ups-s, did you use Paulicat AppleSMBIOS? It may explain why you see not all devices.

http://forum.insanelymac.com/index.php?sho...5&hl=smbios

post 8

 

"pci8086,2641","pciclass,060100"

"pci8086,2590","pciclass,060000"

 

Check this url http://pci-ids.ucw.cz/iii/?i=8086

 

2641 82801FBM (ICH6M) LPC Interface Bridge

2590 Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller

 

For 2641 its the LPC bridge. Which is why its PCI Class 06 subclass 01 (isa based)

All correct!

The problem is I have not seen any impact on adding this (memory controller) to the plugin. This has nothing to do with my pc, can anyone confirm it improves SOMETHING?

Did you see at your ioreg that ACPI_SMC_.. connected also to CPU? (as in topic)

Link to comment
Share on other sites

Attempt to launch North Bridge at Gigabyte 965P-S3 failed!

DeviceID=29a0 Vendor=8086

unrecognized controller type and kernel panic.

System 10.4.9 is too old for the hardware

or AGP host controller not needed for PCIE motherboard :)

Link to comment
Share on other sites

i also get the kernel panic on my i865

here my dev id

Dr-Benj:~ drbenj$ ioreg -l | grep 0600

| | | | "class-code" = <00040600>

| | | | "class-code" = <00010600>

| | | | "class-code" = <00040600>

| | | | | "display-pixel-component-bits" = <06000000>

| | | | | "display-link-component-bits" = <06000000>

| | | | | "IOFBConfig" = {"dims"=<5005000000030000000200000600000$

| | "class-code" = <00000600>

| | "compatible" = <"pci1043,80f2","pci8086,2570","pciclass,060000"$

| | "IOInterruptSpecifiers" = (<0600000000000000>)

| | | "HIDPointerResolution" = <00006000>

 

 

ive moded the plist changin the first pci8086,27d0 with 2570 and got directly a KP any idea?

Link to comment
Share on other sites

Has anyone tried this method on an ATI sb600 motherboard.

i,m trying to get to the bottom of a problem with Eye TV where there is digital distortion and blocky pictures on playback with both digital and analog signals.

 

do you mean ATI/AMD 690g chipset?

 

| | +-o pci1002,7930@0 <class IOPCIDevice, registered, matched, active, busy 0, retain count 7>

| | {

| | "device-id" = <"0y">

| | "vendor-id" = <02100000>

| | "IOName" = "pci1002,7930"

| | "subsystem-vendor-id" = <4d140000>

| | "Power Management protected data" = "{ theNumberOfPowerStates = 3, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 1 = { capabilityFlags 00000000, outputPowerCharacter 00000400, inputPowerRequirement 00000400, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 2 = { capabilityFlags 00000000, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, aggressiveness = 0, myCurrentState = 2, parentsCurrentPowerFlags = 00000002, maxCapability = 2 }"

| | "revision-id" = <00000000>

| | "reg" = <0000000000000000000000000000000000000000>

| | "IOPCIResourced" = Yes

| | "class-code" = <00000600>

| | "subsystem-id" = <11c50000>

| | "Power Management private data" = "{ this object = 02d0d580, interested driver = 02d0d580, driverDesire = 0, deviceDesire = 0, ourDesiredPowerState = 2, previousRequest = 2 }"

| | "compatible" = <"pci144d,c511","pci1002,7930","pciclass,060000">

| | "name" = "pci1002,7930"

| | }

 

if yes, same story - unrecognized controller type, kernel panic

Link to comment
Share on other sites

KP on 0x10025833 (Radeon 9100 IGP Host Bridge)

 

device details:

 

| | +-o pci1002,5833@0 <class IOPCIDevice, registered, matched, active, busy 0, retain count 7>

| | {

| | "device-id" = <"3X">

| | "vendor-id" = <02100000>

| | "IOName" = "pci1002,5833"

| | "subsystem-vendor-id" = <31160000>

| | "IOPCIResourced" = Yes

| | "revision-id" = <02000000>

| | "reg" = <0000000000000000000000000000000000000000>

| | "IODeviceMemory" = (({"address"=18446744073575333888,"length"=67108864}),({"address"=18446744073574285312,"length"=4096}))

| | "IOAGPFlags" = 1

| | "Power Management protected data" = "{ theNumberOfPowerStates = 3, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 1 = { capabilityFlags 00000000, outputPowerCharacter 00000400, inputPowerRequirement 00000400, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 2 = { capabilityFlags 00000000, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, aggressiveness = 0, myCurrentState = 2, parentsCurrentPowerFlags = 00000002, maxCapability = 2 }"

| | "class-code" = <00000600>

| | "AGP_Target" = <>

| | "subsystem-id" = <0de00000>

| | "Power Management private data" = "{ this object = 02330380, interested driver = 02330380, driverDesire = 0, deviceDesire = 0, ourDesiredPowerState = 2, previousRequest = 2 }"

| | "compatible" = <"pci1631,e00d","pci1002,5833","pciclass,060000">

| | "assigned-addresses" = <1000004200000000000000f8000000000000000414000002000000000000f0f70000000000100

00>

| | "name" = "pci1002,5833"

| | }

Link to comment
Share on other sites

kernel panic happened inside method AppleSMCPDRC::Start (I was expected on probe, but...)

it reports "unrecognized controller type"

which I believe (and I've seen some hardcoded text strings inside ACPI_SMC...)

due to mismatch with 27d0 identities.

 

patch might be a good idea, also SMBus isn't a complex I2C bus protocol

however, due to latest reading IONDRVSupport code, found NUB name could be important also

 

NUB name of macbookpro = SBUS:

 

| | +-o SBUS@1F,3 <class IOPCIDevice, registered, matched, active, busy 0, retain count 7>

| | | {

| | | "built-in" = <00>

| | | "IODeviceMemory" = ({"offset"=0xefa0,"parent"=({"address"=0x0,"length"=0x10000}),"length"=0x20})

| | | "device-id" = <da270000>

| | | "name" = "pci8086,27da"

| | | "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/SBUS@1f0003"

| | | "acpi-device" = "IOACPIPlatformDevice is not serializable"

| | | "vendor-id" = <86800000>

| | | "revision-id" = <02000000>

| | | "IOName" = "pci8086,27da"

| | | "IOPCIResourced" = Yes

| | | "subsystem-vendor-id" = <86800000>

| | | "Power Management private data" = "{ this object = 038e2a00, interested driver = 038e2a00, driverDesire

= 0, deviceDesire = 0, ourDesiredPowerState = 2, previousRequest = 2 }"

| | | "IOInterruptControllers" = ("io-apic-0")

| | | "Power Management protected data" = "{ theNumberOfPowerStates = 3, version 1, power state 0 = { capabili

tyFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, power

ToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 1 = { ca

pabilityFlags 00000000, outputPowerCharacter 00000400, inputPowerRequirement 00000400, staticPower 0, unbudgetedPower 0,

powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 2

= { capabilityFlags 00000000, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPo

wer 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, aggressi

veness = 0, myCurrentState = 2, parentsCurrentPowerFlags = 00000002, maxCapability = 2 }"

| | | "class-code" = <00050c00>

| | | "compatible" = <"pci8086,7270","pci8086,27da","pciclass,0c0500">

| | | "assigned-addresses" = <20fb008100000000a0ef00000000000020000000>

| | | "subsystem-id" = <"pr">

| | | "reg" = <00fb00000000000000000000000000000000000020fb000100000000000000000000000020000

00>

| | | "IOInterruptSpecifiers" = (<1300000007000000>)

| | | }

 

 

NUB name of appleUnknown (aka Samsung R20) = SMB:

 

| | +-o SMB@14 <class IOPCIDevice, registered, matched, active, busy 0, retain count 7>

| | | {

| | | "device-id" = <85430000>

| | | "vendor-id" = <02100000>

| | | "IOName" = "pci1002,4385"

| | | "subsystem-vendor-id" = <4d140000>

| | | "Power Management protected data" = "{ theNumberOfPowerStates = 3, version 1, power state 0 = { capabili

tyFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, power

ToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 1 = { ca

pabilityFlags 00000000, outputPowerCharacter 00000400, inputPowerRequirement 00000400, staticPower 0, unbudgetedPower 0,

powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 2

= { capabilityFlags 00000000, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPo

wer 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, aggressi

veness = 0, myCurrentState = 2, parentsCurrentPowerFlags = 00000002, maxCapability = 2 }"

| | | "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/SMB@140000"

| | | "reg" = <00a000000000000000000000000000000000000010a0000100000000000000000000000010000

00>

| | | "revision-id" = <14000000>

| | | "IOPCIResourced" = Yes

| | | "IODeviceMemory" = ({"offset"=0x8410,"parent"=({"address"=0x0,"length"=0x10000}),"length"=0x10})

| | | "class-code" = <00050c00>

| | | "acpi-device" = "IOACPIPlatformDevice is not serializable"

| | | "subsystem-id" = <11c50000>

| | | "Power Management private data" = "{ this object = 02d0d880, interested driver = 02d0d880, driverDesire

= 0, deviceDesire = 0, ourDesiredPowerState = 2, previousRequest = 2 }"

| | | "assigned-addresses" = <10a0008100000000108400000000000010000000>

| | | "compatible" = <"pci144d,c511","pci1002,4385","pciclass,0c0500">

| | | "name" = "pci1002,4385"

| | | }

 

but PCIClasses are same - pciclass,0c0500

 

any ideas on how to fix NUB naming? which kext/field has to be fixed for this?

Link to comment
Share on other sites

 Share

×
×
  • Create New...