Date: Wed, 2 Nov 2022 13:24:01 +0000 From: Andrew Turner <andrew@fubar.geek.nz> To: Souradeep Chakrabarti <schakrabarti@microsoft.com> Cc: Warner Losh <imp@bsdimp.com>, Wei Hu <weh@microsoft.com>, "freebsd-hackers@FreeBSD.org" <freebsd-hackers@freebsd.org> Subject: Re: pcib msix allocation in arm64 Message-ID: <146F5D18-6366-4953-A8D9-61FE7EC67F71@fubar.geek.nz> In-Reply-To: <PSAP153MB05363055DF2B4AE3F39C987BCC399@PSAP153MB0536.APCP153.PROD.OUTLOOK.COM> References: <PSAP153MB05363055DF2B4AE3F39C987BCC399@PSAP153MB0536.APCP153.PROD.OUTLOOK.COM>
next in thread | previous in thread | raw e-mail | index | archive | help
> On 2 Nov 2022, at 12:56, Souradeep Chakrabarti = <schakrabarti@microsoft.com> wrote: >=20 > Hi, > I can see in x86 nexus.c has implemented pcib_alloc_msix using = nexus_alloc_msix(). > Which calls msix_alloc() for msix allocation. >=20 > But in case of arm64 I don't find similar pcib_alloc_msix = implementation in nexus.c . > So, on arm64 what is correct way to get allocate msix ? For an arm64 system with ACPI it is most likely handled in = generic_pcie_acpi_release_msix. For FDT it can depend on which PCI = driver is used. In either case it will call into intr_release_msix that then calls into = the MSI controller to allocate the vectors. For a GICv3 driver it will = either be gicv3_its_alloc_msix if you have an ITS device, or = gic_v3_alloc_msix if using MBI ranges. On ACPI we don=E2=80=99t currently support MBI ranges, although it looks = like this could be handled by the existing gicv2m driver. This driver = should already work as a child of the GICv3, however it appears to be = FDT only, so will need some work to add ACPI support. Andrew
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?146F5D18-6366-4953-A8D9-61FE7EC67F71>