VirtualBox

Changeset 25487 in vbox


Ignore:
Timestamp:
Dec 18, 2009 2:28:03 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
56157
Message:

LsiLogic: Implement missing reset method. Fixes Windows 7 guests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp

    r25380 r25487  
    21422142
    21432143#define LSILOGIC_REG_WRITE_SEQUENCE    0x04
     2144
    21442145#define LSILOGIC_REG_HOST_DIAGNOSTIC   0x08
     2146# define LSILOGIC_REG_HOST_DIAGNOSTIC_DIAG_MEM_ENABLE     (RT_BIT(0))
     2147# define LSILOGIC_REG_HOST_DIAGNOSTIC_DISABLE_ARM         (RT_BIT(1))
     2148# define LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_ADAPTER       (RT_BIT(2))
     2149# define LSILOGIC_REG_HOST_DIAGNOSTIC_DIAG_RW_ENABLE      (RT_BIT(4))
     2150# define LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_HISTORY       (RT_BIT(5))
     2151# define LSILOGIC_REG_HOST_DIAGNOSTIC_FLASH_BAD_SIG       (RT_BIT(6))
     2152# define LSILOGIC_REG_HOST_DIAGNOSTIC_DRWE                (RT_BIT(7))
     2153# define LSILOGIC_REG_HOST_DIAGNOSTIC_PREVENT_IOC_BOOT    (RT_BIT(9))
     2154# define LSILOGIC_REG_HOST_DIAGNOSTIC_CLEAR_FLASH_BAD_SIG (RT_BIT(10))
     2155
    21452156#define LSILOGIC_REG_TEST_BASE_ADDRESS 0x0c
    21462157#define LSILOGIC_REG_DIAG_RW_DATA      0x10
     
    28882899            break;
    28892900        }
     2901        case LSILOGIC_REG_HOST_DIAGNOSTIC:
     2902        {
     2903#ifndef IN_RING3
     2904            return VINF_IOM_HC_IOPORT_WRITE;
     2905#else
     2906            if (u32 & LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_ADAPTER)
     2907            {
     2908                lsilogicHardReset(pThis);
     2909            }
     2910            break;
     2911#endif
     2912        }
    28902913        default: /* Ignore. */
    28912914        {
     
    29682991            break;
    29692992        }
    2970         case LSILOGIC_REG_HOST_DIAGNOSTIC: /* The spec doesn't say anything about these registers, so we just ignore them */
    2971         case LSILOGIC_REG_TEST_BASE_ADDRESS:
     2993        case LSILOGIC_REG_HOST_DIAGNOSTIC:
     2994        {
     2995            if (pThis->fDiagnosticEnabled)
     2996                u32 = LSILOGIC_REG_HOST_DIAGNOSTIC_DRWE;
     2997            else
     2998                u32 = 0;
     2999            break;
     3000        }
     3001        case LSILOGIC_REG_TEST_BASE_ADDRESS: /* The spec doesn't say anything about these registers, so we just ignore them */
    29723002        case LSILOGIC_REG_DIAG_RW_DATA:
    29733003        case LSILOGIC_REG_DIAG_RW_ADDRESS:
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette