Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Jun 2022 15:36:03 +0200
From:      Hans Petter Selasky <hps@selasky.org>
To:        Souradeep Chakrabarti <schakrabarti@microsoft.com>, "freebsd-arm@FreeBSD.org" <freebsd-arm@FreeBSD.org>, Andrew Turner <andrew@freebsd.org>, Li-Wen Hsu <lwhsu@freebsd.org>, Warner Losh <imp@bsdimp.com>
Cc:        Wei Hu <weh@microsoft.com>
Subject:   Re: bus_alloc_resource_any failing to allocate irq for vmbus in amd64
Message-ID:  <57312f49-c6cf-868e-885d-c61ad8de7de1@selasky.org>
In-Reply-To: <PSAP153MB053627262A8BC9EF3AAA21ABCCA69@PSAP153MB0536.APCP153.PROD.OUTLOOK.COM>
References:  <PSAP153MB05369D4402537B4FB5F6EC5FCCA69@PSAP153MB0536.APCP153.PROD.OUTLOOK.COM> <PSAP153MB053627262A8BC9EF3AAA21ABCCA69@PSAP153MB0536.APCP153.PROD.OUTLOOK.COM>

next in thread | previous in thread | raw e-mail | index | archive | help
On 6/10/22 15:16, Souradeep Chakrabarti wrote:
> +Warner Losh
> 
> 
> Thanks & Regards,
>   Souradeep
> 
> 
> 
> From: Souradeep Chakrabarti <schakrabarti@microsoft.com>
> Sent: Friday, June 10, 2022 6:44 PM
> To: freebsd-arm@FreeBSD.org <freebsd-arm@FreeBSD.org>; Andrew Turner <andrew@freebsd.org>; Li-Wen Hsu <lwhsu@freebsd.org>
> Cc: Wei Hu <weh@microsoft.com>
> Subject: bus_alloc_resource_any failing to allocate irq for vmbus in amd64
>   
> Hi,
> I am trying to use bus_alloc_resource_any() to allocate a irq line for vmbus but it is failing.
> 
> this is the patch :
> 
> +  sc->sc_vmbus_irid = 1;
> +  device_t parent = device_get_parent(device_get_parent(sc->vmbus_dev));
> +  sc->sc_vmbus_ires = bus_alloc_resource_any(parent,
> +                                                   SYS_RES_IRQ, &(sc->sc_vmbus_irid), RF_ACTIVE|RF_SHAREABLE);
> +   if (sc->sc_vmbus_ires == NULL) {
> +           device_printf(sc->vmbus_dev, "could not allocate IRQ\n");
> +           return (ENXIO);
> +   }
> +   error = bus_setup_intr(sc->vmbus_dev, sc->sc_vmbus_ires, INTR_TYPE_NET | INTR_MPSAFE,
> +                                   NULL, vmbus_handle_intr_new, sc, &(sc->sc_vmbus_ihand));
> +   if (error) {
> +           device_printf(sc->vmbus_dev, "failed to setup IRQ\n");
> +           if (bus_release_resource(sc->vmbus_dev, SYS_RES_IRQ, sc->sc_vmbus_irid, sc->sc_vmbus_ires))
> +                   device_printf(sc->vmbus_dev, "could not release IRQ\n");
> +           sc->sc_vmbus_ires = NULL;
> +           return (error);
> +   }
> 
> What am I missing here? Any help would be greatly appreciated.
> 
> Thanks & Regards,
> Souradeep

Maybe the IRQ is not sharable:

RF_SHAREABLE

--HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?57312f49-c6cf-868e-885d-c61ad8de7de1>