VirtualBox

Ignore:
Timestamp:
Mar 14, 2014 3:36:19 AM (11 years ago)
Author:
vboxsync
Message:

Define a printk() wrapper that prints pci device id if device is
available. Can't use dev_printk() since device is bound to stub and
also since older kernels don't handle NULL device pointer. Use the
new wrapper in few places, with more clean up to come.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c

    r50781 r50782  
    100100#define DRIVER_NAME      "vboxpci"
    101101
     102/*
     103 * Currently we keep the device bound to pci stub driver, so
     104 * dev_printk() &co would report that instead of our name. They also
     105 * expect non-NULL dev pointer in older kernels.
     106 */
     107#define vbpci_printk(level, pdev, format, arg...)               \
     108       printk(level DRIVER_NAME "%s%s: " format,                \
     109              pdev ? " " : "", pdev ? pci_name(pdev) : "",      \
     110              ## arg)
     111
     112
    102113/**
    103114 * Initialize module.
     
    198209    int rc;
    199210    int status;
     211    struct pci_dev *pPciDev = pIns->pPciDev;
    200212    PVBOXRAWPCIDRVVM pData = VBOX_DRV_VMDATA(pIns);
    201213
    202214    if (!pData)
    203215    {
    204         printk(KERN_DEBUG "vboxpci: VM data not initialized (attach)\n");
     216        vbpci_printk(KERN_DEBUG, pPciDev,
     217                     "cannot attach to IOMMU, no VM data\n");
    205218        return VERR_INVALID_PARAMETER;
    206219    }
     
    208221    if (!pData->pIommuDomain)
    209222    {
    210         printk(KERN_DEBUG "vboxpci: No IOMMU domain (attach)\n");
     223        vbpci_printk(KERN_DEBUG, pIns->pPciDev,
     224                     "cannot attach to IOMMU, no domain\n");
    211225        return VERR_NOT_FOUND;
    212226    }
    213227
    214     status = iommu_attach_device(pData->pIommuDomain, &pIns->pPciDev->dev);
     228    status = iommu_attach_device(pData->pIommuDomain, &pPciDev->dev);
    215229    if (status == 0)
    216230    {
    217         printk(KERN_DEBUG "vboxpci: iommu_attach_device() success\n");
     231        vbpci_printk(KERN_DEBUG, pPciDev, "attached to IOMMU\n");
    218232        pIns->fIommuUsed = true;
    219233        rc = VINF_SUCCESS;
     
    221235    else
    222236    {
    223         printk(KERN_DEBUG "vboxpci: iommu_attach_device() failed\n");
     237        vbpci_printk(KERN_DEBUG, pPciDev,
     238                     "failed to attach to IOMMU, error %d\n", status);
    224239        rc = VERR_INTERNAL_ERROR;
    225240    }
     
    239254#ifdef VBOX_WITH_IOMMU
    240255    int rc = VINF_SUCCESS;
     256    struct pci_dev *pPciDev = pIns->pPciDev;
    241257    PVBOXRAWPCIDRVVM pData = VBOX_DRV_VMDATA(pIns);
    242258
    243259    if (!pData)
    244260    {
    245         printk(KERN_DEBUG "vboxpci: VM data not inited (detach)\n");
     261        vbpci_printk(KERN_DEBUG, pPciDev,
     262                     "cannot detach from IOMMU, no VM data\n");
    246263        return VERR_INVALID_PARAMETER;
    247264    }
     
    249266    if (!pData->pIommuDomain)
    250267    {
    251         printk(KERN_DEBUG "vboxpci: No IOMMU domain (detach)\n");
     268        vbpci_printk(KERN_DEBUG, pPciDev,
     269                     "cannot detach from IOMMU, no domain\n");
    252270        return VERR_NOT_FOUND;
    253271    }
     
    256274    {
    257275        iommu_detach_device(pData->pIommuDomain, &pIns->pPciDev->dev);
    258         printk(KERN_DEBUG "vboxpci: iommu_detach_device()\n");
     276        vbpci_printk(KERN_DEBUG, pPciDev, "detached from IOMMU\n");
    259277        pIns->fIommuUsed = false;
    260278    }
     
    628646    if (pci_enable_msi(pPciDev) == 0)
    629647    {
    630         printk(KERN_DEBUG "vboxpci: enabled MSI\n");
     648        vbpci_printk(KERN_DEBUG, pPciDev, "enabled MSI\n");
    631649        pIns->fMsiUsed = true;
    632650    }
     
    644662int  vboxPciOsDevDeinit(PVBOXRAWPCIINS pIns, uint32_t fFlags)
    645663{
    646     struct pci_dev *pPciDev = NULL;
    647 
    648     printk(KERN_DEBUG "vboxpci: vboxPciOsDevDeinit: dev=%x\n", pIns->HostPciAddress);
    649 
    650     pPciDev = pIns->pPciDev;
     664    struct pci_dev *pPciDev = pIns->pPciDev;
     665
     666    vbpci_printk(KERN_DEBUG, pPciDev, "%s\n", __func__);
    651667
    652668    if (pPciDev)
     
    702718    }
    703719
    704     printk(KERN_DEBUG "%x: linux vboxPciOsDevGetRegionInfo: reg=%d\n",
    705            pIns->HostPciAddress, iRegion);
    706 
    707720    flags = pci_resource_flags(pPciDev, iRegion);
    708721    if (((flags & (IORESOURCE_MEM | IORESOURCE_IO)) == 0)
     
    735748    *pu64RegionSize = pci_resource_len  (pPciDev, iRegion);
    736749
    737     printk(KERN_DEBUG "got %s region: %llx:%lld\n",
    738            (flags & IORESOURCE_MEM) ? "mmio" : "pio", *pRegionStart, *pu64RegionSize);
     750    vbpci_printk(KERN_DEBUG, pPciDev,
     751                 "region %d: %s %llx+%lld\n",
     752                 iRegion, (flags & IORESOURCE_MEM) ? "mmio" : "pio",
     753                 *pRegionStart, *pu64RegionSize);
    739754
    740755    return 0;
     
    894909    if (iIrq == 0)
    895910    {
    896         printk(KERN_DEBUG "device not assigned host interrupt\n");
     911        vbpci_printk(KERN_NOTICE, pIns->pPciDev, "no irq assigned\n");
    897912        return VERR_INVALID_PARAMETER;
    898913    }
     
    921936    if (rc)
    922937    {
    923         printk(KERN_DEBUG "could not request IRQ %d: err=%d\n", iIrq, rc);
     938        vbpci_printk(KERN_DEBUG, pIns->pPciDev,
     939                     "could not request irq %d, error %d\n", iIrq, rc);
    924940        return VERR_RESOURCE_BUSY;
    925941    }
    926942
    927     printk(KERN_DEBUG "got PCI IRQ: %d\n", iIrq);
     943    vbpci_printk(KERN_DEBUG, pIns->pPciDev, "got irq %d\n", iIrq);
    928944    *piHostIrq = iIrq;
    929945    return VINF_SUCCESS;
     
    932948int vboxPciOsDevUnregisterIrqHandler(PVBOXRAWPCIINS pIns, int32_t iHostIrq)
    933949{
    934     printk(KERN_DEBUG "free PCI IRQ: %d\n", iHostIrq);
     950    vbpci_printk(KERN_DEBUG, pIns->pPciDev, "freeing irq %d\n", iHostIrq);
    935951    free_irq(iHostIrq, pIns);
    936952    return VINF_SUCCESS;
     
    941957    int rc;
    942958
    943     printk(KERN_DEBUG "power state: %d\n", (int)aState);
    944 
    945959    switch (aState)
    946960    {
    947961        case PCIRAW_POWER_ON:
     962            vbpci_printk(KERN_DEBUG, pIns->pPciDev, "PCIRAW_POWER_ON\n");
    948963            /* Reset device, just in case. */
    949964            vboxPciOsDevReset(pIns);
     
    952967            break;
    953968        case PCIRAW_POWER_RESET:
     969            vbpci_printk(KERN_DEBUG, pIns->pPciDev, "PCIRAW_POWER_RESET\n");
    954970            rc = vboxPciOsDevReset(pIns);
    955971            break;
    956972        case PCIRAW_POWER_OFF:
     973            vbpci_printk(KERN_DEBUG, pIns->pPciDev, "PCIRAW_POWER_OFF\n");
    957974            /* unregister us from IOMMU */
    958975            rc = vboxPciOsDevUnregisterWithIommu(pIns);
    959976            break;
    960977        case PCIRAW_POWER_SUSPEND:
    961         case PCIRAW_POWER_RESUME:
     978            vbpci_printk(KERN_DEBUG, pIns->pPciDev, "PCIRAW_POWER_SUSPEND\n");
    962979            rc = VINF_SUCCESS;
    963980            /// @todo: what do we do here?
    964981            break;
     982        case PCIRAW_POWER_RESUME:
     983            vbpci_printk(KERN_DEBUG, pIns->pPciDev, "PCIRAW_POWER_RESUME\n");
     984            rc = VINF_SUCCESS;
     985            /// @todo: what do we do here?
     986            break;
    965987        default:
     988            vbpci_printk(KERN_DEBUG, pIns->pPciDev, "unknown power state %u\n", aState);
    966989            /* to make compiler happy */
    967990            rc = VERR_NOT_SUPPORTED;
     
    10231046int  vboxPciOsInitVm(PVBOXRAWPCIDRVVM pThis, PVM pVM, PRAWPCIPERVM pVmData)
    10241047{
    1025 #ifdef DEBUG
    1026     printk(KERN_DEBUG "vboxPciOsInitVm: %p\n", pThis);
    1027 #endif
    10281048#ifdef VBOX_WITH_IOMMU
    10291049    if (IOMMU_PRESENT())
     
    10321052        if (!pThis->pIommuDomain)
    10331053        {
    1034             printk(KERN_DEBUG "cannot allocate IOMMU domain\n");
     1054            vbpci_printk(KERN_DEBUG, NULL, "cannot allocate IOMMU domain\n");
    10351055            return VERR_NO_MEMORY;
    10361056        }
     
    10381058        pVmData->pfnContigMemInfo = vboxPciOsContigMemInfo;
    10391059
    1040         printk(KERN_DEBUG "created IOMMU domain %p\n", pThis->pIommuDomain);
     1060        vbpci_printk(KERN_DEBUG, NULL, "created IOMMU domain %p\n",
     1061                     pThis->pIommuDomain);
    10411062    }
    10421063#endif
     
    10461067void vboxPciOsDeinitVm(PVBOXRAWPCIDRVVM pThis, PVM pVM)
    10471068{
    1048 #ifdef DEBUG
    1049     printk(KERN_DEBUG "vboxPciOsDeinitVm: %p\n", pThis);
    1050 #endif
    10511069#ifdef VBOX_WITH_IOMMU
    10521070    if (pThis->pIommuDomain)
    10531071    {
     1072        vbpci_printk(KERN_DEBUG, NULL, "freeing IOMMU domain %p\n",
     1073                     pThis->pIommuDomain);
    10541074        iommu_domain_free(pThis->pIommuDomain);
    10551075        pThis->pIommuDomain = NULL;
Note: See TracChangeset for help on using the changeset viewer.

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