Jump to content

orByte

Members
  • Content count

    163
  • Joined

  • Last visited

  1. I had a quick look. I couldn't see all the IRQs that HPET was using because the ioreg line was truncated (recommend using ioreg -l -w0) but looking at the PIC device it does use IRQ 2. Legacy Sata is using Vector 14 (0x0e), the other HPET IRQs are at 0x14, 0x15 (20, 21 decimal) - which are normally claimed by Enhanced SATA/AHCI - so the DSDT modifications could work. BUT, before you try them, try this kext below for 10.5.6 - I found this looking through my 10.5.6 stuff, and remembered that it solved an issue - I d try that first. AHCIfixv2_with_10.5.6_kexts__corrected_.zip Otherwise, pls. send a copy of your DSDT, and I will have a look there as well. Best
  2. Hi, Could you plz re-attach the attachments, they are not being listed. Azalia might do it - tho when I tried it a couple of years back or so, it did not work. But then I do not understand the audio stuff very well. Cheers
  3. Ok Updated, the USB sleep and audio sections. Briefly, USB Sleep: Using sleepwatcher does not help resolve the issue. ALC260 sound: 1. I tried VoodooHDA - it loads well but no sound. I made a 32/64 bit (Snow Leo) version of the Voodoo driver (cosmetic changes only). It is here. voodoohda_orByte.zip 2. I have tried extracting pin configs, codec info etc as per Master Chief's tutorial. I also found an ALC260 (10.5) kext which worked here . But there are some changes in sound config under 10.6, and I either got no sound with the dreaded 'assert error', or when I used the HDADefaultConfig key - then a system crash. I m now leaving the sound issue as unresolved. I would recommend a usb sound card -which is a cheap and quick alternative. Just make sure that the usb sound card you get natively supports 10.6. All my sound files, codec dump, pins, svg etc here: alc260_data.zip Unfortunately, I could not resolve these issues, but perhaps the info here will help someone else to do so. Best
  4. OK, now both AHCI and Sleep are working. However, at present, one cannot sleep from a USB disk and then wake-up successfully. But you can sleep and wake from an AHCI/IDE hard drive. Details and DSDT file are above.
  5. Hi again, Edit: (21/11/09) Summary for DSDT changes added. Edit: (20/11/09) I updated the sound and sleep issues - which I am leaving as unresolved. Edit: (16/11/09) The topic expands to include Leopard and Snow Leopard issues. The topic is under the 10.6 subheading, but I suspect the issues are going to be fairly similar and hopefully we can all discuss them here. Edit: (14/11/09) Now, both Sleep and AHCI are working. The below DSDT file would provide guidelines for 10.5.x as well as 10.6. Changed: _WAK, HPET, TMR, PIC, RTC, UHC1-UHC4, EHCI, added LAN0 and LAN1 devices. Many thanks to Master Chief's DSDT threads. DSDT file (OK for AHCI, OK for sleep): dsdt_sleep_OK.dsl.zip Summary: Method DTGP, added before Scope(_PR) Method (DTGP, 5, NotSerialized) { If (LEqual (Arg0, Buffer (0x10) { /* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, /* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B })) { If (LEqual (Arg1, One)) { If (LEqual (Arg2, Zero)) { Store (Buffer (One) { 0x03 }, Arg4) Return (One) } If (LEqual (Arg2, One)) { Return (One) } } } Store (Buffer (One) { 0x00 }, Arg4) Return (Zero) } Method _WAK, changed, added: Notify (\_SB.PCI0.UHC3, Zero) Notify (\_SB.PCI0.UHC4, Zero) Device (RTC), removed: IRQNoFlags () {8} Device (PIC), removed: (This is critical!) IRQNoFlags () {2} Device (TMR), removed: IRQNoFlags () {0} UHC1-UHC4, EHCI devices locate by using address numbers (_ADR) below Device (UHC1) through (UHC4): { Name (_ADR, 0x001D0000) <--- UHC2: 0x001D0001, UHC3: 0x001D0002, UHC4: 0x001D0003 Name (UPS1, Package (0x02) { 0x03, <--- UHC2: 0x04,0x03, UHC3: 0x0C,0x03, UHC4: 0x0E,0x03 0x03 }) Method (_PRW, 0, NotSerialized) { Return (UPS1) } OperationRegion (USBR, PCI_Config, 0xC4, One) Field (USBR, AnyAcc, NoLock, Preserve) { URES, 8 } Method (_PSW, 1, NotSerialized) { If (LEqual (Arg0, Zero)) { Store (Zero, URES) } If (LEqual (Arg0, One)) { Store (0x03, URES) } } } Device (EHCI) { Name (_ADR, 0x001D0007) <--- Kept this line, replaced everything else as below Name (UPS1, Package (0x02) { 0x0D, 0x03 }) Method (_PRW, 0, NotSerialized) { Return (UPS1) } OperationRegion (USBR, PCI_Config, 0xC4, One) <---- This is actually a UHCI register ref, but left it in... Field (USBR, AnyAcc, NoLock, Preserve) { URES, 8 } Method (_PSW, 1, NotSerialized) { If (LEqual (Arg0, Zero)) { Store (Zero, URES) } If (LEqual (Arg0, One)) { Store (0x03, URES) } } Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "AAPL,clock-id", Buffer (One) { 0x01 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Make LAN internal: First need to find where LAN devices reside - best done in ioreg (look for ethernet) On my MB LAN resides under PCIQ, added to Device(PCIQ) just before _PRT Method Device (LAN0) { Name (_ADR, Zero) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "location", Buffer (0x02) { "1" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Device (LAN1) { Name (_ADR, One) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "location", Buffer (0x02) { "2" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Please read the notes below. A brief introduction to the S5000XVN: The Intel S5000XVN is a dual Intel-Xeon CPU board that can be used to build Mac Pro clones. The board uses the Intel 5000X chipset (ESB2). It has dual Gigabyte Ethernet, can take up to 32GB ECC FBDIMMs, 1 x PCI Express* x16, 2 x PCI Express x4 (x8 Connectors), 1 x PCI-X 100/133MHz, 1 x PCI-X 100MHz, 2 Channel HD audio, 6 SATA ports. It has RAID 0, 1, 10 - but I have not checked it under OSX - most likely no support. It does not have Firewire, and I have added a TI based FW 800 Card. I went through quite a few FW cards till I found this one (TI based). Xeon Cooling is a big issue and if you are building a server from scratch, unless you get the cooling right, you will trip the thermal sensors within minutes and the system will shut down... In the end, I used an Akasa Eclipse-62 V2 case with 2 Noctua silent Fans, and... had to drill a few ventilation exhaust holes on top of the chassis. That helped a lot to lower average temperatures. Though not needed, I also used the accessory side panel with fan. Leopard ------------------------------------- I am expecting to have a post on 10.5.6 issue on 10.5.6 failing to recognise Enhanced SATA. Snow Leopard -------------------------------------- At present there are 3 issues: 1. Enhanced/AHCI SATA Status: Resolved ------------------------------------------------------- With thanks to 29.Diego, theKING, and EVO's DSDT Editor, this issue is now resolved. It required an edit of the DSDT table. Details are here. 2. Wake-up after sleep Status: Limited Support (20/11/09) Issue (2) left unresolved. ------------------------------------------------------- Note: There is a program called sleepwatcher available from here. This tool can be used to mount/unmount usb drives when sleeping/waking up. It eliminates the 'disk was not properly disconnected error' when you have a usb disk connected and you sleep your computer. However, the tool did not help resolve our issue (2), because when BOOTING from a usb drive, that drive cannot be unmounted - even force unmounted. Sleep is now working with the following caveats: 1. Make sure that the AppleIntelCPUPowerManagement.kext is NOT being loaded. kextstat | grep -i intelcpu Should be empty 2. At present, you cannot sleep and wake if you have booted from a USB hard drive. The drive will disconnect, and fail to reconnect - leaving you with a stalled system. 3. Both NullCPUPowerManagement.kext & SleepEnabler.kext must be loaded. 4. If you have many hard drives (like I do), it may take a while for the system to come back - sometimes 10-15 seconds - until all the drives have spun up. 5. After applying the 10.6.2 update, make sure you re-disable the AppleIntelCPUPM kext (e.g. move it out of /Systems/Library/Extensions and do 'touch /Systems/Library/Extensions') AND (important) use the 10.6.2 version of SleepEnabler.kext (otherwise) you get a kernel panic. So after updating to 10.6.2, prior to restart, complete the steps above. Kexts: ls -l /Extra/Extensions NullCPUPowerManagement.kext PlatformUUID.kext SleepEnabler.kext fakesmc.kext ls -l /System/Library/Extensions_disabled/ AppleIntelCPUPowerManagement.kext The DSDT file is at the top. 3. No HD Audio Status: Unresolved, pls. see post 3 for details. ------------------------------------------------------- According to Intel: "Realtek* ALC260 audio codec. The ALC260 is a 2-channel HD Audio codec featuring a 24-bit 2- channel DAC and two stereo 20-bit ADCs." I am looking to see if ALC260 is supported by Apple. Best
  6. SOLVED - bringing the Sno Leo goodness to S5000XVN!! Well, thanks to 29.Diego, and theKING et al. over at projectosx, this issue is now solved. There is also the possibility that Netkas' IRQless HPET kext will work, but I have not tested it yet. The solution here comes from this thread . Analysis for S5000XVN: Under 10.5.6 the HPET uses two IRQs. However, under 10.6 the HPET asks for 3 IRQs, consequently moving from 10.5.6 to 10.6 gets the HPET to take the SATA IRQs (0x14, 0x15 or both)- leading to no SATA. By 'giving' HPET 0x02, and 0x08 we free-up the SATA IRQs indirectly. HPET also uses 0x0b on my system - but this causes no problems. How to patch your DSDT table. (1) Get DSDT SE from here. Available in English & Spanish. (2) Click the Extract DSDT button (3)Changes: Locate under entry HPET the following, and if not already present, add the following: Name (CRS, ResourceTemplate () { // SATA IRQ FIX ADD START IRQNoFlags () {0} IRQNoFlags () {8} // SATA IRQ FIX ADD STOP Memory32Fixed (ReadOnly, 0xFED00000, // Address Base 0x00000400, // Address Length ) }) Locate under entry PIC the following, and if present, DELETE the following: Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0020, // Range Minimum 0x0020, // Range Maximum 0x01, // Alignment 0x1E, // Length ) IO (Decode16, 0x00A0, // Range Minimum 0x00A0, // Range Maximum 0x01, // Alignment 0x1E, // Length ) IO (Decode16, 0x04D0, // Range Minimum 0x04D0, // Range Maximum 0x01, // Alignment 0x02, // Length ) // SATA IRQ FIX DELETE START // make sure to add // as below - this will delete the two lines at compilation // IRQNoFlags () // {2} // SATA IRQ FIX DELETE END }) Locate under entry TMR or TIMR the following, and if present, DELETE the following: Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0040, // Range Minimum 0x0040, // Range Maximum 0x01, // Alignment 0x04, // Length ) IO (Decode16, 0x0050, // Range Minimum 0x0050, // Range Maximum 0x01, // Alignment 0x04, // Length ) // SATA IRQ FIX DELETE START // make sure to add // as below - this will delete the two lines at compilation //IRQNoFlags () // {0} // SATA IRQ FIX DELETE END }) (4) In DSDT Editor, click on 'save dsl' save it as dsdt.dsl (5) In DSDT Editor, click on Tools > Compile (6) Do cp /Library/DSDT/DSDT Files/dsdt.aml <path-to-snow-installation-root>/dsdt.aml That should do it! I am enclosing my dsdt.dsl and dsdt.aml files, you can try these at your own risk. Ideally you would be extracting and updating your own DSDT files as your BIOS and DSDT tables may be different from the ones found in my system. FAQs ------------ 1. Can I compile the DSDT under 10.5.x? Yes. 2. How can I get SATA recognition with the retail install DVD? Image the install DVD to a USB stick, install Chameleon 2RC3, and copy your custom dsdt.aml the the root directory. Then, when you have completed the installation, copy the dsdt.aml over to the new system as well. 3. How do I image the retail DVD to a USB stick? Buy it. It is very reasonably priced, then do a search for Snow Leopard Installation, and it is discussed there. There are quite a few good guides out there. 4. I am experiencing problem X, Y, Z? Please post to the thread. Thanks. 5. Will you write a detailed Sno Leo installation guide for the S5000XVN? I am afraid that looks unlikely. Other than the SATA issue discussed here, it is quite usual. But perhaps, someone else will. 6. Sound on S5000XVN? This is off topic, but to touch on it, I use a USB sound card. I am not sure about on-board sound. Best S5000XVN_dsdt.zip
  7. Wow! It might have... I will have a look. Thanks. Best
  8. Search the forum for "Snow Installer 1.1" Some Ideas: On Gigabyte board DJ Nitehawk's installer I did it manually here is a quick guide: 1. Get an 8GB USB stick, format it as GUID, Extended journaled in Disk Utility - single partition 2. Get Chameleon RC3, and install to the usb stick 2a. copy over your dsdt.aml 2b. Snow Installer 1.1 has a good selection of kexts to get started 3. Image the Snow Leo retail install cd and restore to usb stick (without using erase) 4. Boot the usb stick 5. You may experience the Native SATA problem discussed here, so I would recommend doing the install to a USB hard drive. Notes: Nitehawk's installer automates 1+2 if I remember correctly and also adds the DSDT+kexts automatically There are a number of good installers out there. If you search the forum for snow leopard, you will probably find some others as well. UPDATE ON Native SATA: I tried re-routing IRQs using the _PRT method for 0x001F i.e., SATA address (a. to look like a 3,1; then b. just deleted the relevant entries) in DSDT but... still no go. The hardware hasn't changed, so it must be something in 10.6 that's doing it... At this point I m stumped... Any ideas guys??
  9. Anybody know what might have changed between 10.5.6 and 10.6 for interrupt handling that might be causing this error? Any ideas are greatly appreciated. Many thanks in advance, Best, orByte.
  10. Hi Everbody, I have been playing with the AppleIntelPIIXATA kext, and it appears that the problem with enhanced SATA is coming from an interrupt issue. The driver can read the hardware registers, but driver initialisation fails here: AppleIntelPIIXATAChannel.cpp > AppleIntelPIIXATAChannel::init (185,186) if ( !setupInterrupt( provider, _irq ) ) {IOLog("%s::[%p]:: setupInterrupt failed.\n", getName(), this);return false;} The IOLog Entry is mine... The Interrupt Vector is 20 (decimal), 0x14h - this vector assignment works in 10.5.6 but apparently NOT in Snow Leo. I will keep investigating. Edit: A littler later... AppleIntelPIIXATAChannel.cpp > AppleIntelPIIXATAChannel::setupInterrupt IOReturn ret = provider->callPlatformFunction( "SetDeviceInterrupts", /* waitForFunction */ false, /* nub */ this, /* vectors */ (void *) &line, /* vectorCount */ (void *) 1, /* exclusive */ (void *) false ); /* XXX */ //orByte const char * result; switch (ret) { case kIOReturnNoInterrupt: result = "kIOReturnNoInterrupt"; // no interrupt attached break; ... } IOLog("%s::[%p]:: set-up Interrupt Returns - %s.\n",getName(), this, result); Does indeed confirm that the interrupt assignment is not working. Forcing the function to return 'true' leads to: AppleIntelICHxSATA::start AppleIntelICHxSATAPolledAdapter::setOwner AppleIntelICHxSATA::scanForDrives AppleIntelICHxSATA: interrupt registration error AppleIntelICHxSATA::start AppleIntelICHxSATAPolledAdapter::setOwner AppleIntelICHxSATA::scanForDrives AppleIntelICHxSATA: interrupt registration error AppleIntelICHxSATA::start AppleIntelICHxSATAPolledAdapter::setOwner AppleIntelICHxSATA::scanForDrives AppleIntelICHxSATA: interrupt registration error AppleIntelICHxSATA: interrupt registration error Best
  11. Hi, I have tried the obvious things such as setting up the MacPro 3,1 code - which is actually really simple - it just sets up the variables ('registers'?) I think. But I have been very busy since then. I now plan to look at the controller specs as well, and perhaps at the changes in the IOPCI family. Probably would be helpful to consult the PII controller code as well - especially the SATA handling aspects. I m hoping it is a simple matter of injecting a few things but lets see... Best
  12. Oh, cool!! Thanks a lot for the reference. I got them now, and will cook up some stuff. Best.
  13. Another progress report, Hi all, jonnysab - thanks for the details! Noooo. On my board (stock Intel S5000XVN) this approach does not work. But what I have noticed is that, when in the system BIOS, I use legacy SATA settings, then I can get 2 or 4 SATA drives (depending on whether I want to have a PATA drive) listed under the usual IDE tree as SATA drives. So as with jonnysab, if I m willing to sacrifice the CD drive, then I can get snow (as I have 4 HDD in there at the moment.) Under 10.5.6, SATA AHCI is recognised BUT it still is not part of the ACPI plane. I figured out that this board uses the ACPI 3.0a specification, and have been trying to code in some AHCI ports using the DSDT override of Chameleon - but still no luck. Part of the difficulty is having access to working samples, and figuring out what to say to the BIOS - i.e sending the drives initialise commands, knowing the format of the data returned etc... Not even sure if this is the right approach. But if anyone has access to a dsdt.dsl from a MacPro running snow, that would be greatly appreciated. Best.
×