Guest Posted July 16, 2019 Share Posted July 16, 2019 OT (but could help for some memory or Nvram corruption) Asus has messed latest x299 bios for many motherboard They produce some memory issue with it IE 1001 for x299 sage ws 10g They retired it for many x299 board Link to comment Share on other sites More sharing options...
HmO Posted July 16, 2019 Share Posted July 16, 2019 Latest OC not build build.py... OpenCorePkg/UDK/OpenCorePkg/OpenCorePkg.dsc(...): error 4000: Instance of library class [OcMemoryLib] is not found in [OpenCorePkg/UDK/OcSupportPkg/Library/OcSmbiosLib/OcSmbiosLib.inf] [X64] consumed by module [OpenCorePkg/UDK/OpenCorePkg/Platform/OpenCore/OpenCore.inf] Link to comment Share on other sites More sharing options...
Andres ZeroCross Posted July 16, 2019 Share Posted July 16, 2019 3 minutes ago, HmO said: Latest OC not build build.py... OpenCorePkg/UDK/OpenCorePkg/OpenCorePkg.dsc(...): error 4000: Instance of library class [OcMemoryLib] is not found in [OpenCorePkg/UDK/OcSupportPkg/Library/OcSmbiosLib/OcSmbiosLib.inf] [X64] consumed by module [OpenCorePkg/UDK/OpenCorePkg/Platform/OpenCore/OpenCore.inf] I still can built it with macbuild.tool 6 minutes ago, HmO said: Latest OC not build build.py... OpenCorePkg/UDK/OpenCorePkg/OpenCorePkg.dsc(...): error 4000: Instance of library class [OcMemoryLib] is not found in [OpenCorePkg/UDK/OcSupportPkg/Library/OcSmbiosLib/OcSmbiosLib.inf] [X64] consumed by module [OpenCorePkg/UDK/OpenCorePkg/Platform/OpenCore/OpenCore.inf] And i tested it again with source edksetup.sh build -a X64 -b RELEASE -t XCODE5 -p OpenCorePkg/OpenCorePkg.dsc Built is still fine Link to comment Share on other sites More sharing options...
HmO Posted July 16, 2019 Share Posted July 16, 2019 @Andres ZeroCross - Done - Build end time: 22:01:07, Jul.16 2019 Build total time: 00:00:18 ~/OpenCorePkg/Binaries/DEBUG ~/OpenCorePkg ~/OpenCorePkg/Binaries/DEBUG/tmp ~/OpenCorePkg/Binaries/DEBUG ~/OpenCorePkg ~/OpenCorePkg/Binaries/DEBUG ~/OpenCorePkg ~/OpenCorePkg ~/OpenCorePkg/Binaries/RELEASE ~/OpenCorePkg ~/OpenCorePkg/Binaries/RELEASE/tmp ~/OpenCorePkg/Binaries/RELEASE ~/OpenCorePkg ~/OpenCorePkg/Binaries/RELEASE ~/OpenCorePkg ~/OpenCorePkg 1 Link to comment Share on other sites More sharing options...
dgsga Posted July 18, 2019 Author Share Posted July 18, 2019 I'm working on setting up an Opencore EFI folder for a friend who has my old Asus X99 mobo + a Haswell-E 5930K CPU. It's so long since I owned it I don't know if I need to fill in Kernel>Emulate>Cpuid1Data to get the processor recognised and XCPM to work (I don't have access to the machine at present). I know I need to use the AppleXcpmExtraMsrs quirk. Can anyone help with the config for this setup? Thanks very much Link to comment Share on other sites More sharing options...
MacPato Posted July 18, 2019 Share Posted July 18, 2019 Anyone know if ConsoleGOP is required for iGPU? if the BIOS is UEFI and CSM is disabled. Link to comment Share on other sites More sharing options...
hardcorehenry Posted July 18, 2019 Share Posted July 18, 2019 On 7/16/2019 at 1:30 PM, hardcorehenry said: Sorry, wasn't precise. When I put back my patched DSDT everything works, but I have KP in other systems, so removed it. Trying with only hotpatches, my HPET looks like this: // Fix HPET devices DefinitionBlock("", "SSDT", 2, "hack", "HPET", 0) { External(_SB.PCI0.LPCB, DeviceObj) Scope(_SB.PCI0.LPCB) { Device (HPET) { Name (_HID, EisaId ("PNP0103")) // _HID: Hardware ID Name (_UID, Zero) // _UID: Unique ID Name (BUF0, ResourceTemplate() { IRQNoFlags() { 0, 8, 11, 15 } Memory32Fixed (ReadWrite, 0xFED00000, // Address Base 0x00000400, // Address Length _Y30) }) Name (_STA, 0x0F) Method (_CRS, 0, NotSerialized) { Return (BUF0) } } } } and it doesn't seems to load. Renaming HPET to XPET, also doesnt help. Attaching my OC.zip HPET “problem” SOLVED! Renaming as in instruction below was sufficient (a bit different sequence, but method worked), now _STA returns 0xf as it should. Thanks everyone who tried to help me. Refreshing HPET (or another device) method header to avoid compatibility checks by _OSI on legacy hardware. _STA method with if ((OSFL () == Zero)) { If (HPTE) ... Return (Zero) content may be forced to alwaysreturn0xFbyreplacingA0 10 93 4F 53 46 4C 00withA4 0A 0F A3 A3 A3 A3 A3. Link to comment Share on other sites More sharing options...
Sniki Posted July 18, 2019 Share Posted July 18, 2019 (edited) Hi Open Core Project team ! I have a few questions related to patching process in general with Open Core. First of all i did check and did read 3 times the documentation.pdf of Open Core and it is very well-perfectly explained for what it has so far, but i have a few questions that i couldn't find answer into it regarding some patching and how to do it in Open Core compared to Clover. With Clover, all of my setups are fully hotpatched (no DSDT on patched Folder, no patched SSDTs) just addon SSDTs and the rest done in config.plist. My questions and some suggestions are: 1.(Clover) config.plist /DSDT/Fixes like "FixHPET", "FixIPIC", "FixTMR", "FixRTC", "FixMutex": What would be the best approach to do these patches as some of these are important to have working audio setup. On many of my setups "especially fixHPET" is required as a fix to enable Audio. Or it may be a good idea to include them on the fullsample.plist since they are often necessary or would/do you consider to set them as Quirks ? 2. What about (Clover) config.plist /DSDT/Patches: TgtBridge [HEX] ? One example is that on my Lenovo V330-15IKB i have ELAN I2C Touchpad and like i mentioned i don't patch DSDT and place it on Patched folder (Clover) or ACPI in (Open Core). I do rename the TPD0._CRS to XCRS and Rename TPD0._DSM to XDSM and then place the patched SSDT-I2C that contains the patched-pinned methods to fix the touchpad to work with VoodooI2C. My question on this is how to do the TgtBridge patch, clover example is: Comment: Rename TPD0._CRS to XCRS Find: 5F435253 Replace: 58435253 TgtBridge: 54504430 How do i add the TgtBridge/this patch on Open Core config.plist ? 3. What about the Kernel and kext patches / KextsToPatch: infoPlistPatch ? Example (Clover): Name: com.apple.driver.AppleIntelLpssI2C Find: 494F4B69 74 Replace: 494F4B69 73 Comment: Prevent Apple I2C kexts from attaching to I2C controllers, credit CoolStar InfoPlistPatch=YES Is this one same as on Clover ? like: InfoPlistPatch (Boolean) YES ? 4. KernelToPatch: Is the identifier a required value ?, in case of a kernel patch i wasn't very clear on the pdf should i type only kernel and type the find and replace value ? Also is the AppleRTC patch available on FullSample.plist the one we use on clover config.plist / KernelandKextPatches/ AppleRTC=YES ? Thanks for the excellent work that you people are doing, the documentation pdf is short and well explained and aside from these questions i listed everything else was a super easy transition from Clover to OC thanks to the excellent documentation. With big respect, Sniki @vit9696 @vandroiy2012 @Download-Fritz @PMheart Edited July 19, 2019 by "Sniki" Tags 1 Link to comment Share on other sites More sharing options...
Pavo Posted July 19, 2019 Share Posted July 19, 2019 1 hour ago, "Sniki" said: Hi Open Core Project team ! I have a few questions related to patching process in general with Open Core. First of all i did check and did read 3 times the documentation.pdf of Open Core and it is very well-perfectly explained for what it has so far, but i have a few questions that i couldn't find answer into it regarding some patching and how to do it in Open Core compared to Clover. With Clover, all of my setups are fully hotpatched (no DSDT on patched Folder, no patched SSDTs) just addon SSDTs and the rest done in config.plist. My questions and some suggestions are: 1.(Clover) config.plist /DSDT/Fixes like "FixHPET", "FixIPIC", "FixTMR", "FixRTC", "FixMutex": What would be the best approach to do these patches as some of these are important to have working audio setup. On many of my setups "especially fixHPET" is required as a fix to enable Audio. Or it may be a good idea to include them on the fullsample.plist since they are often necessary or would/do you consider to set them as Quirks ? 2. What about (Clover) config.plist /DSDT/Patches: TgtBridge [HEX] ? One example is that on my Lenovo V330-15IKB i have ELAN I2C Touchpad and like i mentioned i don't patch DSDT and place it on Patched folder (Clover) or ACPI in (Open Core). I do rename the TPD0._CRS to XCRS and Rename TPD0._DSM to XDSM and then place the patched SSDT-I2C that contains the patched-pinned methods to fix the touchpad to work with VoodooI2C. My question on this is how to do the TgtBridge patch, clover example is: Comment: Rename TPD0._CRS to XCRS Find: 5F435253 Replace: 58435253 TgtBridge: 54504430 How do i add the TgtBridge/this patch on Open Core config.plist ? 3. What about the Kernel and kext patches / KextsToPatch: infoPlistPatch ? Example (Clover): Name: com.apple.driver.AppleIntelLpssI2C Find: 494F4B69 74 Replace: 494F4B69 73 Comment: Prevent Apple I2C kexts from attaching to I2C controllers, credit CoolStar InfoPlistPatch=YES Is this one same as on Clover ? like: InfoPlistPatch (Boolean) YES ? 4. KernelToPatch: Is the identifier a required value ?, in case of a kernel patch i wasn't very clear on the pdf should i type only kernel and type the find and replace value ? Also is the AppleRTC patch available on FullSample.plist the one we use on clover config.plist / KernelandKextPatches/ AppleRTC=YES ? Thanks for the excellent work that you people are doing, the documentation pdf is short and well explained and aside from these questions i listed everything else was a super easy transition from Clover to OC thanks to the excellent documentation. With big respect, Sniki There is no info.plist patching with OC 1 Link to comment Share on other sites More sharing options...
vit9696 Posted July 19, 2019 Share Posted July 19, 2019 Hi @"Sniki", 1. Automatic patches are unused by most modern boards, so we decided to not include them. HPET patches, which can be made reasonably generic, are discussed on the previous pages of this thread. 2. We do not support TgtBridge as it is not needed by most modern boards. You can use custom DSDT for that. 3. Info.plist patches are not planned for implementing. Implementing them properly would require a complex interface, and our research on the matter proved that they are not needed in all known cases. See: https://github.com/acidanthera/bugtracker/issues/394. 4. All fields are currently required, including but not limited to Identifier. Writing kernel to Identifier is mandatory for kernel patches. Vit 3 Link to comment Share on other sites More sharing options...
Sniki Posted July 19, 2019 Share Posted July 19, 2019 (edited) 2 hours ago, vit9696 said: 1. Automatic patches are unused by most modern boards, so we decided to not include them. HPET patches, which can be made reasonably generic, are discussed on the previous pages of this thread. Yes, i saw that post on previous page after i wrote my post. 2 hours ago, vit9696 said: 2. We do not support TgtBridge as it is not needed by most modern boards. You can use custom DSDT for that. Patching DSDT is a bit painful for the fact that even a single change in bios settings or small hardware upgrade will require you to dump, re-extract and patch DSDT again because of changes that happen on memory address. While with full hotpatch that is not the case. It is also important for guides as for example a single laptop or pc, can use your addon SSDTs and config.plist without trouble and have everything working, while with static DSDT patching everyone is required to do the patching process of DSDT individually. 2 hours ago, vit9696 said: 3. Info.plist patches are not planned for implementing. Implementing them properly would require a complex interface, and our research on the matter proved that they are not needed in all known cases. See: https://github.com/acidanthera/bugtracker/issues/394. I will check that issue by browsing manually as the link seems to not open. 2 hours ago, vit9696 said: 4. All fields are currently required, including but not limited to Identifier. Writing kernel to Identifier is mandatory for kernel patches. Thanks for clarifying that so whenever it is a Kernel Patch i have to just type kernel on the identifier. I do agree with your points regarding Desktops. Most of these things i mentioned are rarely needed but unfortunately for laptops, they are required as they need more complex patches to have everything working properly. Some of these allow us to have vanilla macOS kexts and just patch them on the fly by bootloader (the case of info.plist patch). All of this taking into account the moves that Apple is taking on limiting system like read only to keep the integrity of the system. (macOS Catalina) and the steps that they may take in the future. Those were just some questions and suggestions that i think can make every hackintosh user life easier. Open Core seems the future and i already enjoy it as it is on 0.0.3 Whatever you think is the best way let it be so, i trust all of your amazing skills and projects. Im thankful for all the amazing work that you people have done and do for the hackintosh community. With respect, Sniki Edited July 19, 2019 by "Sniki" 2 Link to comment Share on other sites More sharing options...
Sweet Twok Posted July 19, 2019 Share Posted July 19, 2019 Hello! Please tell me how to set the resolution of 2560x1080 in the bootloader? This is an UltraWide Monitor. Apple stretched to the sides. Link to comment Share on other sites More sharing options...
Andrey1970 Posted July 19, 2019 Share Posted July 19, 2019 6 hours ago, "Sniki" said: Yes, i saw that post on previous page after i wrote my post. Patching DSDT is a bit painful for the fact that even a single change in bios settings or small hardware upgrade will require you to dump, re-extract and patch DSDT again because of changes that happen on memory address. While with full hotpatch that is not the case. It is also important for guides as for example a single laptop or pc, can use your addon SSDTs and config.plist without trouble and have everything working, while with static DSDT patching everyone is required to do the patching process of DSDT individually. I will check that issue by browsing manually as the link seems to not open. Thanks for clarifying that so whenever it is a Kernel Patch i have to just type kernel on the identifier. I do agree with your points regarding Desktops. Most of these things i mentioned are rarely needed but unfortunately for laptops, they are required as they need more complex patches to have everything working properly. Some of these allow us to have vanilla macOS kexts and just patch them on the fly by bootloader (the case of info.plist patch). All of this taking into account the moves that Apple is taking on limiting system like read only to keep the integrity of the system. (macOS Catalina) and the steps that they may take in the future. Those were just some questions and suggestions that i think can make every hackintosh user life easier. Open Core seems the future and i already enjoy it as it is on 0.0.3 Whatever you think is the best way let it be so, i trust all of your amazing skills and projects. Im thankful for all the amazing work that you people have done and do for the hackintosh community. With respect, Sniki https://www.insanelymac.com/forum/topic/338516-opencore-discussion/?do=findComment&comment=2678273 1 Link to comment Share on other sites More sharing options...
vit9696 Posted July 20, 2019 Share Posted July 20, 2019 @"Sniki", insanelymac parser misparsed the link: https://github.com/acidanthera/bugtracker/issues/394 It clearly explains that plist-patches are just suboptimal ways to do things. 1 Link to comment Share on other sites More sharing options...
Sniki Posted July 20, 2019 Share Posted July 20, 2019 (edited) 2 hours ago, vit9696 said: @"Sniki", insanelymac parser misparsed the link: https://github.com/acidanthera/bugtracker/issues/394 It clearly explains that plist-patches are just suboptimal ways to do things. Thanks @vit9696 Yes thanks to the "block" function i personally don't need plist patch for now as i can simply block the entire kext from loading, thanks for pointing me in the right direction. However TGT Bridge seems more required as i can't justify myself to use Patched DSDT as it's really a going back in time thing and not viable option in my opinion, with hotpatch you simply forget about dealing with ACPI until something major changes with a future release or a better alternative shows up. @Andrey1970 did mention the skip and count function that can do the trick for the TGT Bridge patch ( i do not care about breaking functions on windows since i usually boot it from bios boot menu - Windows Boot Manager.) macOS is my default for 90% of the time and that way i bypass the macOS specific patches by booting from Windows Boot Manager. So what i need to be informed more into this is: the "Skip" and "Count" feature. So let's say take an example for my I2C Elan Touchpad fix, i use this SSDT-I2C: // VoodooI2C (TPD0) Patch for Lenovo V330-15IKB with ELAN I2C TouchPad. #ifndef NO_DEFINITIONBLOCK DefinitionBlock("", "SSDT", 2, "V330", "_I2C", 0) { #endif External(_SB.PCI0.I2C0, DeviceObj) External(_SB.PCI0.I2C0.TPD0, DeviceObj) External(HIDG, FieldUnitObj) External(HID2, FieldUnitObj) External(HIDD, MethodObj) External(TP7G, FieldUnitObj) External(TP7D, MethodObj) External(SBFB, FieldUnitObj) Scope(_SB.PCI0.I2C0) { Scope(TPD0) { // SBFX is modified SBFG Name (SBFX, ResourceTemplate () { GpioInt(Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, , ) { // Pin list 0x001B } }) Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method { If (LEqual (Arg0, HIDG)) { Return (HIDD (Arg0, Arg1, Arg2, Arg3, HID2)) } If (LEqual (Arg0, TP7G)) { Return (TP7D (Arg0, Arg1, Arg2, Arg3, SBFB, SBFX)) } Return (Buffer (One) { 0x00 }) } Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings { Return (ConcatenateResTemplate (SBFB, SBFX)) } } } #ifndef NO_DEFINITIONBLOCK } #endif //EOF So on config.plist i patch/rename the TPD0._CRS to XCRS and TPD0._DSM to XDSM to have hotpatched Touchpad. On OC example the SSDT is all fine but as @Andrey1970 showed that example it seems possible and no need for TGT Bridge thanks to skip and count function. But im not very clear yet how to use it ? Does the "Skip" works as the first occurrence like let's say i counted my DSDT _CRS methods and the number 7 is the one of the TPD0, so in that case should the skip value be 6 ? About "Count" does the count value mean how many of the found _CRS methods should be counted for patching ? If that's the case then if my _CRS of TPD0 is the 7-th _CRS i assume my Skip value should be 6 and if i need only that occurence/value (in my case the seventh _CRS) and the rest no needed, the count value should be 1, am i correct ? (is this how it works ?) Edited July 20, 2019 by "Sniki" Link to comment Share on other sites More sharing options...
vit9696 Posted July 20, 2019 Share Posted July 20, 2019 @"Sniki", please make a feature request in acidanthera/bugtracker describing - what exactly you need to do (e.g. write custom implementation for _CRS method) - where you need it (e.g. laptop of brand X of CPU generation Y, etc.) - what other people need to do (e.g. write X/Y/Z) - what approach you believe is most functional to resolve this problem in your opinion (could write what clover offers with its semantics or think of your own approach) - what are the all other approaches you know about (e.g. custom DSDT, Skip/Count method), and why do you think they are unsuitable We will need to discuss this to understand how & when to implement a workaround (if at all). Link to comment Share on other sites More sharing options...
Sniki Posted July 20, 2019 Share Posted July 20, 2019 Thanks @vit9696 I will make a feature request and provide more scenarios with examples to describe it as clear as possible as you requested on the last post. With respect, Sniki Link to comment Share on other sites More sharing options...
Andrey1970 Posted July 20, 2019 Share Posted July 20, 2019 (edited) 1 hour ago, "Sniki" said: Thanks @vit9696 I will make a feature request and provide more scenarios with examples to describe it as clear as possible as you requested on the last post. With respect, Sniki Binary patches ACPI in OpenCore much more exceed a functionality binary patches ACPI in Clover. Here the user used my help. Address to it for details. Edited July 20, 2019 by Andrey1970 1 Link to comment Share on other sites More sharing options...
Sniki Posted July 20, 2019 Share Posted July 20, 2019 (edited) 2 hours ago, Andrey1970 said: Binary patches ACPI in OpenCore much more exceed a functionality binary patches ACPI in Clover. Here the user used my help. Address to it for details. Thanks @Andrey1970 i saw that post but im still not certain how the skip and count works. Can you just explain a bit more in details, here i did breakthrough with pictures so you can understand what i don't know and which should be the skip and which should be the count value ? Take a look at my DSDT: Should i count every _CRS (including comments - with green) or just other _CRS that are available in usable code inside DSDT or only Method (_CRS) ? If it is all, then my TPD0 _CRS is number 83, should 83 be the count or the skip value in this case ? Or skip 82 and count 1 ?, im not certain how the logic works on this. I attached the DSDT.aml for reference. DSDT.aml Edited July 20, 2019 by "Sniki" Link to comment Share on other sites More sharing options...
Andrey1970 Posted July 20, 2019 Share Posted July 20, 2019 16 minutes ago, "Sniki" said: Thanks @Andrey1970 i saw that post but im still not certain how the skip and count works. Can you just explain a bit more in details, here i did breakthrough with pictures so you can understand what i don't know and which should be the skip and which should be the count value ? Take a look at my DSDT: Should i count every _CRS (including comments - with green) or just other _CRS that are available in usable code inside DSDT or only Method (_CRS) ? If it is all, then my TPD0 _CRS is number 83, should 83 be the count or the skip value in this case ? Or skip 82 and count 1 ?, im not certain how the logic works on this. I attached the DSDT.aml for reference. DSDT.aml Comments shall not be counted. You shall stop count on one step before that place where the patch is necessary. If you execute some patches in in a row identical Find, that you shall consider actions of the previous patches. 1 Link to comment Share on other sites More sharing options...
Sniki Posted July 20, 2019 Share Posted July 20, 2019 (edited) 14 minutes ago, Andrey1970 said: Comments shall not be counted. You shall stop count on one step before that place where the patch is necessary. If you execute some patches in in a row identical Find, that you shall consider actions of the previous patches. Ok so without comments, the 43 _CRS value is my TPD0 _CRS Counting one step before that place should be 42 But now i don't know if 42 should be the skip or the count value ? Sorry for the dumb questions, my brain is lagging for now, need more details so i clearly understand how this works exactly Edited July 20, 2019 by "Sniki" Link to comment Share on other sites More sharing options...
Andres ZeroCross Posted July 20, 2019 Share Posted July 20, 2019 (edited) 13 minutes ago, "Sniki" said: Ok so without comments, the 43 _CRS value is my TPD0 _CRS Counting one step before that place should be 42 But now i don't know if 42 should be the skip or the count value ? Sorry for the dumb questions, my brain is lagging for now, need more details so i clearly understand how this works exactly I thought it should be "count" Sorry, it should be "SKIP" Edited July 20, 2019 by Andres ZeroCross Link to comment Share on other sites More sharing options...
Andrey1970 Posted July 20, 2019 Share Posted July 20, 2019 14 minutes ago, "Sniki" said: Ok so without comments, the 43 _CRS value is my TPD0 _CRS Counting one step before that place should be 42 But now i don't know if 42 should be the skip or the count value ? Sorry for the dumb questions, my brain is lagging for now, need more details so i clearly understand how this works exactly skip 1 Link to comment Share on other sites More sharing options...
Sniki Posted July 20, 2019 Share Posted July 20, 2019 Just now, Andrey1970 said: skip Thanks @Andrey1970 for the explanation. My last question regarding this, what do we use the count for ? Is it to count how many of these found values to patch after the skip value In my case i want only that number 43 to be patched so should the count value be 1 ? 1 Link to comment Share on other sites More sharing options...
Andrey1970 Posted July 20, 2019 Share Posted July 20, 2019 (edited) 22 minutes ago, "Sniki" said: Thanks @Andrey1970 for the explanation. My last question regarding this, what do we use the count for ? Is it to count how many of these found values to patch after the skip value In my case i want only that number 43 to be patched so should the count value be 1 ? Skip to a patch place. Count you shall look the Device, which you a patch in ACPI. In this place Count 1 Edited July 20, 2019 by Andrey1970 1 Link to comment Share on other sites More sharing options...
Recommended Posts