Skip site navigation (1)Skip section navigation (2)
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>