This drove me crazy for the past few days!

https://lists.freebsd.org/pipermail/freebsd-current/2014-September/052215.html

Not sure about the first trace there, but the others I encountered were
due to this not being fixed yet. smh@ tracked the ordering down and then
we found this. I couldn't try a newer build easily since my system would
panic on just buildworld :)

On 9/6/2014 1:20 PM, Warner Losh wrote:
> Author: imp
> Date: Sat Sep  6 18:20:50 2014
> New Revision: 271201
> URL: http://svnweb.freebsd.org/changeset/base/271201
> 
> Log:
>   Restore order of interrupt setup. Minor problems can result by
>   setting up the interrupts too early:
>   
>   Reviewed by: mav@
>   Sponsored by: Netflix
> 
> Modified:
>   head/sys/dev/ahci/ahci.c
>   head/sys/dev/ahci/ahci_pci.c
> 
> Modified: head/sys/dev/ahci/ahci.c
> ==============================================================================
> --- head/sys/dev/ahci/ahci.c  Sat Sep  6 18:08:21 2014        (r271200)
> +++ head/sys/dev/ahci/ahci.c  Sat Sep  6 18:20:50 2014        (r271201)
> @@ -229,6 +229,15 @@ ahci_attach(device_t dev)
>  
>       ahci_ctlr_setup(dev);
>  
> +     /* Setup interrupts. */
> +     if (ahci_setup_interrupt(dev)) {
> +             bus_dma_tag_destroy(ctlr->dma_tag);
> +             bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid,
> +                 ctlr->r_mem);
> +             rman_fini(&ctlr->sc_iomem);
> +             return ENXIO;
> +     }
> +
>       i = 0;
>       for (u = ctlr->ichannels; u != 0; u >>= 1)
>               i += (u & 1);
> 
> Modified: head/sys/dev/ahci/ahci_pci.c
> ==============================================================================
> --- head/sys/dev/ahci/ahci_pci.c      Sat Sep  6 18:08:21 2014        
> (r271200)
> +++ head/sys/dev/ahci/ahci_pci.c      Sat Sep  6 18:20:50 2014        
> (r271201)
> @@ -417,13 +417,6 @@ ahci_pci_attach(device_t dev)
>               ctlr->numirqs = 1;
>       }
>  
> -     if (ahci_setup_interrupt(dev)) {
> -             if (ctlr->msi)
> -                     pci_release_msi(dev);
> -             bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid, 
> ctlr->r_mem);
> -             return ENXIO;
> -     }
> -
>       error = ahci_attach(dev);
>       if (error != 0)
>               if (ctlr->msi)
> 


-- 
Regards,
Bryan Drewery

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to