WindSLIC - PCI Replacement ROM for SLIC Injection

Discussion in 'MDL Projects and Applications' started by truthinjection, Feb 22, 2010.

  1. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #1 truthinjection, Feb 22, 2010
    Last edited: Jan 23, 2011
    What is WindSLIC?

    WindSLIC is a Dynamic SLIC Injector in the form of an open-source PCI Option-ROM.

    It can be loaded on a PCI network card ROM or injected into a BIOS as a PCI (or ISA?) module.

    This allows SLIC insertion on machines that otherwise do not support BIOS mods/etc.

    Changelog for latest version:
    ;------------------------------------------------------------
    [Beta] 2011.01.22.01 - Now works with Sandy Bridge sort-of
    ;------------------------------------------------------------
    - Added memory zeroing (backported from nononsense's
    modifications to WindSLIC in creating the
    WindSLIC Bootable CD, etc.). Memory areas to
    be used are now first scrubbed/initialized.
    - Added Target Environment / Hypervisor Overrides
    Single value can be set that will set the
    proper values for VMWare and VirtualBox ROM
    settings (VendorID/DeviceID and Rom Alignment Size)
    - Works with Intel P67 / UEFI-Legacy boot on Asus
    P8P67 Deluxe to boot Windows 7 x64.
    The previous versions hung, probably because
    of the memory non-initialization issue
    mentioned above.
    ;------------------------------------------------------------
    The Latest WindSLIC Release (v2011.01.22.01.beta):
    [Note: Don't Download with IE. It seems to screw up the zip file somehow.]
    View attachment windslic-2011_01_22_01-beta.zip

    The Previous WindSLIC Release (v2010.02.22.01):
    [Note: Don't Download with IE. It seems to screw up the zip file somehow.]
    View attachment windslic-2010_02_22_01.zip
     
  2. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #2 truthinjection, Feb 22, 2010
    Last edited by a moderator: May 23, 2017
    (OP)
  3. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #3 truthinjection, Feb 22, 2010
    Last edited: Oct 3, 2011
    (OP)
    WindSLIC Tested-Compatible NICs and Other PCI Cards

    The most commonly used NICs for WindSLIC are the various Intel
    100Base-T and 1000Base-T cards.

    The following cards have been tested to work:
    - Intel Pro/100+ (VID/DID: 8086h,1229h)
    - Intel Pro/1000CT (VID/DID: 8086h,10D3h) ( Tested by truthinjection / FreeStyler )
    - Intel Pro/1000GT (VID/DID: 8086h,107Ch)
    - Intel Pro/1000MT Desktop Adapter (VID/DID 8086h,1076h ("Intel Corporation","82541GI Gigabit Ethernet Controller")) (tested by fruttifresh)
    - Intel Pro/1000MT (VID/DID: 8086h,100Eh)
    - Intel Pro/1000PT (VID/DID: 8086h,10B9h) ( Tested by kolin )

    (The list from the older thread is below)
    Intel Pro1000/MT (Tested by truthinjection, ficho & Lithium)
    Intel PRO/1000 MT Dual Port Server Adapter (By dapjukebox & ficho)
    Intel Pro1000/GT (Tested by SirSilentBob)
    Intel Pro1000/CT (EXPi9301CT) (Tested by digimanuk)
    Intel Pro100+ PCI NIC (Used on an Intel D845HV motherboard) (Tested by bluecatfish)
    INTEL EtherExpress PRO/100+ Management Adapter PCI (By Serxavi)
    Intel PRO/100 S Manamegent Adapter (By Lithium)
     
  4. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #4 truthinjection, Feb 22, 2010
    Last edited: Oct 3, 2011
    (OP)
    WindSLIC Tested-Compatible Motherboards

    The following motherboards/systems have been tested to work:

    Motherboards:
    - Asus P8P67 Deluxe (tested by truthinjection, requires WindSLIC v2011.01.22.01 at least)
    - Asus P8Z68-V (tested indirectly by truthinjection, requires WindSLIC v2011.01.22.01 at least)

    - Gigabyte GA-EP35-DS3R (tested by truthinjection)
    - Abit IP35-Pro (tested by truthinjection)
    - Asus M3N78-EM (tested by truthinjection)
    - Intel DX48BT2 (tested by truthinjection)
    - ECS GeForce7050M-M (tested by DSpyder)

    Systems:
    - HP COMPAQ DC5700 SFF PC (Bios v2.07 plus latest Microcodes) (tested by fruttifresh)
     
  5. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    Known Issues and Workarounds for WindSLIC

    This will hold any issues and workarounds for those issues
    that have been found with WindSLIC.

    Currently there is a single main workaround included
    with the WindSLIC release. It is to work around a Video
    issue on some models of Dell PC.
     
  6. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #7 truthinjection, Feb 22, 2010
    Last edited: Mar 4, 2010
    (OP)
    Testing and Troubleshooting WindSLIC

    Testing:
    The various SLIC utilities can be used to verify that WindSLIC
    has successfully injected a SLIC into a PC's memory.

    Specifically useful is the RW-Everything Utility, v1.4.6 or higher.
    An "ACPI Tables - EBDA" mode was added by the author in this
    version that shows the changes WindSLIC has made to the ACPI
    Tables.

    Troubleshooting:
    If WindSLIC is not working, check the following:

    1. The proper PCI Vendor and Device IDs for your device must be entered before compiling.
    2. The WindSLIC "Initializing" message is displayed during BIOS POST (Example below):
    3. WindSLIC must be configured as the First Boot Device in the BIOS. The regular Boot Devices (CD-ROM, Hard Disk, etc) should be set to boot after WindSLIC.
    4. The WindSLIC "Activating" message is displayed immediately following BIOS POST:
      The Activator is the portion of WindSLIC that does the actual memory patching/SLIC-loading/etc. (That is why WindSLIC must be the first boot device).
     
  7. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #8 truthinjection, Feb 22, 2010
    Last edited by a moderator: Apr 20, 2017
    (OP)
  8. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
  9. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #10 truthinjection, Feb 22, 2010
    Last edited by a moderator: Apr 20, 2017
    (OP)
    WindSLIC Non-English Language Translations

    While WindSLIC is written in English, (although the original
    program that was the basis for WindSLIC was in Chinese),
    with the newer versions of WindSLIC, the on-screen display
    text has been moved into the file
    Code:
    ws_texts.inc
    This file can be translated to allow WindSLIC to show
    information in other languages at boot.

    Currently there are no official plans to do any translations,
    but if any users want to work on one and post it, it will
    be added to this entry.
     
  10. sebus

    sebus MDL Guru

    Jul 23, 2008
    5,879
    1,773
    180
  11. sebus

    sebus MDL Guru

    Jul 23, 2008
    5,879
    1,773
    180
    Yes, new version did not do anything different at all

    sebus
     
  12. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #14 truthinjection, Feb 22, 2010
    Last edited by a moderator: Apr 20, 2017
    (OP)

    try adding:

    Code:
    push cs
    call BEV
    
    right before the

    Code:
        retn                    ; Return to Caller after Finishing INIT
    
    line and see if that will combine the two into one.

    circle becomes line,
    -tij-
     
  13. sebus

    sebus MDL Guru

    Jul 23, 2008
    5,879
    1,773
    180
    #15 sebus, Feb 22, 2010
    Last edited: Feb 22, 2010

    Attached Files:

  14. sebus

    sebus MDL Guru

    Jul 23, 2008
    5,879
    1,773
    180
  15. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    Technically, WindSLIC is reading the "PCI BIOS" or "PCI Firmware" version, rather than the base version of the electronics of the PCI bus itself. I've not found a good reference that explains how the two relate.

    From a PCI BIOS support perspective, I'm not sure there's anything in the PCI base specification that would preclude a PCI 2.x motherboard from having a BIOS that supported the extended PCI-Firmware 3.0 stuff, just as your motherboard claims to do. PCI-Firmware 3.0 is a backwards-compatible superset of the functionality in the PCI-BIOS 2.1 standard, so I suspect we'll see lots of boards such as this.

    Thanks for the update!
    -tij-
     
  16. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    Thanks. :)

    Don't worry, though. I saved a big bag of them for use in the new Int13H handler BCV stuff I'm writing for the next version. So far I've gotten it to boot in QEMU, but not VMWare, using the new non-BEV method, so there's obviously more work to do.

    Rotating the barnacles,
    -tij-
     
  17. sebus

    sebus MDL Guru

    Jul 23, 2008
    5,879
    1,773
    180
    #19 sebus, Feb 23, 2010
    Last edited: Feb 24, 2010
    Does anybody know how to re-create floppy bootable image file .dsk like @ rom-o-matic.net but have windslic.bin to boot instead of gPXE?

    I did not manage yet, even I tried for a couple of hours today

    sebus
     
  18. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #20 truthinjection, Feb 24, 2010
    Last edited: Feb 24, 2010
    (OP)
    I wish. :) The BCV is not an actual boot mechanism itself, but allows a ROM to install an Int13H handler to hook into the Disk boot process. Then, instead of the BEV being called (via Int19H) after the POST has completed (as we do it now), the BCV is called before the POST has completed (write protection is not really affected, though (I don't think) because the BCV is just sort of a slightly delayed continuation of the INIT procedure, rather than the BEV procedure). The BCV hooks Int 13H, and then, when POST is done, Int19H is called, and that does the Int13H call, to which we are now hooked.

    I'm not sure if it will work, but this will (hopefully) give us a key to fixing the one true bug in the current WindSLIC boot mechanism (ignoring the whole "BIOS Segment F000H is read-only by the time the ACPI tables exist for us to inject anything into" limitation, of course). The "one true bug" to which I am referring is the "AMI Hibernate Boot Bug", which prevents WindSLIC from working when an AMI motherboard is hibernated from Windows 7. The AMI BIOS short-circuits the Boot process, and never calls the BEV, so on AMI motherboards, it's possible to "lose" the SLIC if you hibernate the machine. Nothing else I've tried (hook Int19H, etc) has successfully hooked into the Boot process of the Post-Hibernated AMI BIOS. This is an attempt to do that.

    It basically will (maybe) end up trading "Have to make WindSLIC the first in the Boot Priority" for "Have to make WindSLIC the first in the Hard Disk Boot Order", though. Still working through it to see if I can make things "better than ever" or not. :)

    like a wikipedia article sometimes,
    -tij-