VirtualBox

Changeset 7906 in vbox for trunk/src/VBox/Additions


Ignore:
Timestamp:
Apr 11, 2008 11:24:36 AM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
29534
Message:

Solaris installer: host and guest side fixes for Solaris 10, Indiana DP2.

Location:
trunk/src/VBox/Additions
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-solaris.c

    r7886 r7906  
    292292                {
    293293                    /*
    294                      * Check vendor and device ID.
     294                     * Map the register address space.
    295295                     */
    296                     uint16_t uVendorID = pci_config_get16(PciHandle, PCI_CONF_VENID);
    297                     uint16_t uDeviceID = pci_config_get16(PciHandle, PCI_CONF_DEVID);
    298                     if (   uVendorID == VMMDEV_VENDORID
    299                         && uDeviceID == VMMDEV_DEVICEID)
     296                    caddr_t baseAddr;
     297                    ddi_device_acc_attr_t deviceAttr;
     298                    deviceAttr.devacc_attr_version = DDI_DEVICE_ATTR_V0;
     299                    deviceAttr.devacc_attr_endian_flags = DDI_NEVERSWAP_ACC;
     300                    deviceAttr.devacc_attr_dataorder = DDI_STRICTORDER_ACC;
     301                    deviceAttr.devacc_attr_access = DDI_DEFAULT_ACC;
     302                    rc = ddi_regs_map_setup(pDip, 1, &baseAddr, 0, 0, &deviceAttr, &pState->PciIOHandle);
     303                    if (rc == DDI_SUCCESS)
    300304                    {
    301305                        /*
    302                          * Verify PCI class of the device (a bit paranoid).
     306                         * Read size of the MMIO region.
    303307                         */
    304                         uint8_t uClass = pci_config_get8(PciHandle, PCI_CONF_BASCLASS);
    305                         uint8_t uSubClass = pci_config_get8(PciHandle, PCI_CONF_SUBCLASS);
    306                         if (   uClass == PCI_CLASS_PERIPH
    307                             && uSubClass == PCI_PERIPH_OTHER)
     308                        pState->uIOPortBase = (uintptr_t)baseAddr;
     309                        rc = ddi_dev_regsize(pDip, 2, &pState->cbMMIO);
     310                        if (rc == DDI_SUCCESS)
    308311                        {
    309                             /*
    310                              * Map the register address space.
    311                              */
    312                             caddr_t baseAddr;
    313                             ddi_device_acc_attr_t deviceAttr;
    314                             deviceAttr.devacc_attr_version = DDI_DEVICE_ATTR_V0;
    315                             deviceAttr.devacc_attr_endian_flags = DDI_NEVERSWAP_ACC;
    316                             deviceAttr.devacc_attr_dataorder = DDI_STRICTORDER_ACC;
    317                             deviceAttr.devacc_attr_access = DDI_DEFAULT_ACC;
    318                             rc = ddi_regs_map_setup(pDip, 1, &baseAddr, 0, 0, &deviceAttr, &pState->PciIOHandle);
     312                            rc = ddi_regs_map_setup(pDip, 2, &pState->pMMIOBase, 0, pState->cbMMIO, &deviceAttr,
     313                                        &pState->PciMMIOHandle);
    319314                            if (rc == DDI_SUCCESS)
    320315                            {
    321316                                /*
    322                                  * Read size of the MMIO region.
     317                                 * Add IRQ of VMMDev.
    323318                                 */
    324                                 pState->uIOPortBase = (uintptr_t)baseAddr;
    325                                 rc = ddi_dev_regsize(pDip, 2, &pState->cbMMIO);
     319                                rc = VBoxGuestSolarisAddIRQ(pDip, pState);
    326320                                if (rc == DDI_SUCCESS)
    327321                                {
    328                                     rc = ddi_regs_map_setup(pDip, 2, &pState->pMMIOBase, 0, pState->cbMMIO, &deviceAttr,
    329                                                 &pState->PciMMIOHandle);
    330                                     if (rc == DDI_SUCCESS)
     322                                    /*
     323                                     * Call the common device extension initializer.
     324                                     */
     325                                    rc = VBoxGuestInitDevExt(&g_DevExt, pState->uIOPortBase, pState->pMMIOBase,
     326                                                pState->cbMMIO, VBOXOSTYPE_Solaris);
     327                                    if (RT_SUCCESS(rc))
    331328                                    {
    332                                         /*
    333                                          * Add IRQ of VMMDev.
    334                                          */
    335                                         rc = VBoxGuestSolarisAddIRQ(pDip, pState);
     329                                        rc = ddi_create_minor_node(pDip, DEVICE_NAME, S_IFCHR, instance, DDI_PSEUDO, 0);
    336330                                        if (rc == DDI_SUCCESS)
    337331                                        {
    338                                             /*
    339                                              * Call the common device extension initializer.
    340                                              */
    341                                             rc = VBoxGuestInitDevExt(&g_DevExt, pState->uIOPortBase, pState->pMMIOBase,
    342                                                         pState->cbMMIO, VBOXOSTYPE_Solaris);
    343                                             if (RT_SUCCESS(rc))
    344                                             {
    345                                                 rc = ddi_create_minor_node(pDip, DEVICE_NAME, S_IFCHR, instance, DDI_PSEUDO, 0);
    346                                                 if (rc == DDI_SUCCESS)
    347                                                 {
    348                                                     g_pDip = pDip;
    349                                                     ddi_set_driver_private(pDip, pState);
    350                                                     pci_config_teardown(&PciHandle);
    351                                                     ddi_report_dev(pDip);
    352                                                     return DDI_SUCCESS;
    353                                                 }
    354 
    355                                                 LogRel((DEVICE_NAME ":ddi_create_minor_node failed.\n"));
    356                                             }
    357                                             else
    358                                                 LogRel((DEVICE_NAME ":VBoxGuestInitDevExt failed.\n"));
    359                                             VBoxGuestSolarisRemoveIRQ(pDip, pState);
     332                                            g_pDip = pDip;
     333                                            ddi_set_driver_private(pDip, pState);
     334                                            pci_config_teardown(&PciHandle);
     335                                            ddi_report_dev(pDip);
     336                                            return DDI_SUCCESS;
    360337                                        }
    361                                         else
    362                                             LogRel((DEVICE_NAME ":VBoxGuestSolarisAddIRQ failed.\n"));
    363                                         ddi_regs_map_free(&pState->PciMMIOHandle);
     338
     339                                        LogRel((DEVICE_NAME ":ddi_create_minor_node failed.\n"));
    364340                                    }
    365341                                    else
    366                                         LogRel((DEVICE_NAME ":ddi_regs_map_setup for MMIO region failed.\n"));
     342                                        LogRel((DEVICE_NAME ":VBoxGuestInitDevExt failed.\n"));
     343                                    VBoxGuestSolarisRemoveIRQ(pDip, pState);
    367344                                }
    368345                                else
    369                                     LogRel((DEVICE_NAME ":ddi_dev_regsize for MMIO region failed.\n"));
    370                                 ddi_regs_map_free(&pState->PciIOHandle);
     346                                    LogRel((DEVICE_NAME ":VBoxGuestSolarisAddIRQ failed.\n"));
     347                                ddi_regs_map_free(&pState->PciMMIOHandle);
    371348                            }
    372349                            else
    373                                 LogRel((DEVICE_NAME ":ddi_regs_map_setup for IOport failed.\n"));
     350                                LogRel((DEVICE_NAME ":ddi_regs_map_setup for MMIO region failed.\n"));
    374351                        }
    375352                        else
    376                             LogRel((DEVICE_NAME ":PCI class/sub-class does not match.\n"));
     353                            LogRel((DEVICE_NAME ":ddi_dev_regsize for MMIO region failed.\n"));
     354                        ddi_regs_map_free(&pState->PciIOHandle);
    377355                    }
    378356                    else
    379                         LogRel((DEVICE_NAME ":PCI vendorID, deviceID does not match.\n"));
     357                        LogRel((DEVICE_NAME ":ddi_regs_map_setup for IOport failed.\n"));
    380358                    pci_config_teardown(&PciHandle);
    381359                }
  • trunk/src/VBox/Additions/solaris/Installer/postinstall.sh

    r7886 r7906  
    8484
    8585    # Some distros like Indiana have no xorg.conf, deal with this
    86     if ! (test -f '/etc/X11/xorg.conf' -o -f '/etc/X11/.xorg.conf'); then
     86    if test ! -f '/etc/X11/xorg.conf' && test ! -f '/etc/X11/.xorg.conf'; then
    8787        mv -f $vboxadditions_path/solaris_xorg.conf /etc/X11/.xorg.conf
    8888    fi
  • trunk/src/VBox/Additions/solaris/Installer/vboxguest.sh

    r7404 r7906  
    1 #!/bin/bash
     1#!/bin/sh
    22# innotek VirtualBox
    33# VirtualBox Guest Additions kernel module control script for Solaris.
     
    6262check_root()
    6363{
    64     if test `id -u` -ne 0; then
     64    if test `/usr/xpg4/bin/id -u` -ne 0; then
    6565        abort "This program must be run with administrator privileges.  Aborting"
    6666    fi
    6767}
    6868
    69 start()
     69start_module()
    7070{
    7171    if module_loaded; then
     
    7373    else
    7474        /usr/sbin/add_drv -i'pci80ee,cafe' -m'* 0666 root sys' vboxguest
    75         if ! module_loaded; then
     75        if test ! module_loaded; then
    7676            abort "Failed to load vboxguest."
    7777        elif test -c "/devices/pci@0,0/pci80ee,cafe@4:vboxguest"; then
     
    8484}
    8585
    86 stop()
     86stop_module()
    8787{
    8888    if module_loaded; then
     
    9494}
    9595
    96 restart()
     96restart_module()
    9797{
    98     stop
     98    stop_module
    9999    sync
    100     start
     100    start_module
    101101    return 0
    102102}
    103103
    104 status()
     104status_module()
    105105{
    106106    if module_loaded; then
     
    121121case "$1" in
    122122start)
    123     start
     123    start_module
    124124    ;;
    125125stop)
    126     stop
     126    stop_module
    127127    ;;
    128128restart)
    129     restart
     129    restart_module
    130130    ;;
    131131status)
    132     status
     132    status_module
    133133    ;;
    134134*)
  • trunk/src/VBox/Additions/solaris/Makefile.kmk

    r7886 r7906  
    101101        $(QUIET)$(INSTALL) -m 0644 $(VBOX_PATH_SOLARIS_ADDITION_INSTALLER)/vboxdevlink.sed                  $(SOLARISINSTDIR)/etc/devlink.tab
    102102        $(call MSG_L1,Creating install package: $@)
    103         $(QUIET)$(SOLARISINSTDIR)/makepackage.sh $(SOLARISINSTDIR) $(PKGFILENAME)
     103        $(QUIET)$(SOLARISINSTDIR)/makepackage.sh $(SOLARISINSTDIR) $(PKGFILENAME) 1>/dev/null 2>/dev/null
    104104        $(QUIET)$(INSTALL) -m 0644 $(SOLARISINSTDIR)/$(PKGFILENAME) $(PATH_BIN)/additions/$(PKGFILENAME)
    105105
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