From owner-svn-src-head@freebsd.org Tue Jul 21 16:24:59 2015 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2201B9A7993 for ; Tue, 21 Jul 2015 16:24:59 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E2B7F10EE for ; Tue, 21 Jul 2015 16:24:58 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: by pabkd10 with SMTP id kd10so50763244pab.2 for ; Tue, 21 Jul 2015 09:24:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:subject:mime-version:content-type:from :in-reply-to:date:cc:message-id:references:to; bh=17rTFaQU4MI4ioPHRYZuD3JbtYcQ5T8ILLH2pmFvL/o=; b=K5MHsSqVMsPeoAvOu6qOdZ/fMDNAaE66qAkSC6h/KhO8+wgSX6phoW+1aA1qMCDGRw 23yKYZ3w6QBmwLk8i4P8mqViwQhMbUx0kuVSOCg14VdjtcaG41ycbZh+3PaZ3XFvZq1e UP5JeuI2U114HoO8DzBAnAtkdaWjiVVsqADEPTaVk4Tv3VQ3Bt0OlO2pSwKID3DsL9vy WVj5IAQAvqYO4yQj53g9A1kOw0Au7HIxKurRW0bySOyosaOrXVI8FqYuPKSqngmUNgh5 GDgZN0ZHPCesI3EWBN0JmCgyln6wodiCR3ymJW2BxTdWD/ccRwsILgflMRF332fwOTTu E2SA== X-Gm-Message-State: ALoCoQlLRfbo89wyh5mb1rgrq0zyWBmRsaFSS/Tj8Ti4gUc9hZE0JNFXXcTSzqj5Ij1G1EG+7VqM X-Received: by 10.70.98.200 with SMTP id ek8mr74706679pdb.95.1437495892588; Tue, 21 Jul 2015 09:24:52 -0700 (PDT) Received: from [10.64.26.8] ([69.53.236.236]) by smtp.gmail.com with ESMTPSA id hl6sm28367379pdb.28.2015.07.21.09.24.50 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 21 Jul 2015 09:24:51 -0700 (PDT) Sender: Warner Losh Subject: Re: svn commit: r285752 - in head/sys: arm64/arm64 dev/pci Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2102\)) Content-Type: multipart/signed; boundary="Apple-Mail=_BC466D0C-78A5-4437-812A-B519F59F46FE"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Pgp-Agent: GPGMail 2.5 From: Warner Losh In-Reply-To: Date: Tue, 21 Jul 2015 10:24:48 -0600 Cc: Andrew Turner , Zbigniew Bodek , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Message-Id: <90C4DA24-6770-4DB5-AF87-20CB8E812657@bsdimp.com> References: <201507211447.t6LElO3r098030@repo.freebsd.org> <20150721160145.65c9798b@bender> To: Zbigniew Bodek X-Mailer: Apple Mail (2.2102) X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2015 16:24:59 -0000 --Apple-Mail=_BC466D0C-78A5-4437-812A-B519F59F46FE Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Hi Zbigniew, This is a great brief explanation. Perhaps a one or two line comment to this effect would be useful for others trying to figure it out later? Warner > On Jul 21, 2015, at 10:02 AM, Zbigniew Bodek wrote: >=20 > Hello Andrew, >=20 > Please check in-line. >=20 > Best regards > zbb >=20 > 2015-07-21 17:01 GMT+02:00 Andrew Turner : >> On Tue, 21 Jul 2015 14:47:24 +0000 (UTC) >> Zbigniew Bodek wrote: >>=20 >>> Author: zbb >>> Date: Tue Jul 21 14:47:23 2015 >>> New Revision: 285752 >>> URL: https://svnweb.freebsd.org/changeset/base/285752 >>>=20 >>> Log: >>> Add support for vendor specific function for PCI devid acquisition >>> in ITS >>> It is possible that some HW will use different PCI devids, >>> hence allow to replace the default domain:bus:slot:func schema >>> by implementing and registering custom function. >>>=20 >>> Obtained from: Semihalf >>> Sponsored by: The FreeBSD Foundation >>> Differential Revision: https://reviews.freebsd.org/D3118 >>>=20 >>> Modified: >>> head/sys/arm64/arm64/gic_v3_its.c >>> head/sys/arm64/arm64/gic_v3_var.h >>> head/sys/dev/pci/pcireg.h >>>=20 >>> Modified: head/sys/arm64/arm64/gic_v3_its.c >>> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >>> --- head/sys/arm64/arm64/gic_v3_its.c Tue Jul 21 14:39:34 >>> 2015 (r285751) +++ head/sys/arm64/arm64/gic_v3_its.c >>> Tue Jul 21 14:47:23 2015 (r285752) @@ -44,6 +44,7 @@ >>> __FBSDID("$FreeBSD$"); #include >>> #include >>>=20 >>> +#include >>> #include >>>=20 >>> #include >>> @@ -89,6 +90,7 @@ static void its_free_tables(struct gic_v >>> static void its_init_commandq(struct gic_v3_its_softc *); >>> static int its_init_cpu(struct gic_v3_its_softc *); >>> static void its_init_cpu_collection(struct gic_v3_its_softc *); >>> +static uint32_t its_get_devid(device_t); >>>=20 >>> static int its_cmd_send(struct gic_v3_its_softc *, struct >>> its_cmd_desc *); >>> @@ -133,6 +135,23 @@ const char *its_ptab_type[] =3D { >>> [GITS_BASER_TYPE_RES7] =3D "Reserved (7)", >>> }; >>>=20 >>> +/* >>> + * Vendor specific quirks. >>> + * One needs to add appropriate entry to its_quirks[] >>> + * table if the imlementation varies from the generic ARM ITS. >>> + */ >>> + >>> +/* Cavium ThunderX PCI devid acquire function */ >>> +static uint32_t its_get_devid_thunder(device_t); >>> + >>> +static const struct its_quirks its_quirks[] =3D { >>> + { >>> + .cpuid =3D CPU_ID_RAW(CPU_IMPL_CAVIUM, >>> CPU_PART_THUNDER, 0, 0), >>> + .cpuid_mask =3D CPU_IMPL_MASK | CPU_PART_MASK, >>> + .devid_func =3D its_get_devid_thunder, >>> + }, >>> +}; >>> + >>> static struct gic_v3_its_softc *its_sc; >>>=20 >>> #define gic_its_read(sc, len, reg) \ >>> @@ -1300,7 +1319,7 @@ its_device_alloc_locked(struct gic_v3_it >>> if (newdev !=3D NULL) >>> return (newdev); >>>=20 >>> - devid =3D PCI_DEVID(pci_dev); >>> + devid =3D its_get_devid(pci_dev); >>>=20 >>> /* There was no previously created device. Create one now */ >>> newdev =3D malloc(sizeof(*newdev), M_GIC_V3_ITS, (M_WAITOK | >>> M_ZERO)); @@ -1353,6 +1372,73 @@ its_device_asign_lpi_locked(struct >>> gic_v its_dev->lpis.lpi_free); >>> its_dev->lpis.lpi_free--; >>> } >>> + >>> +/* >>> + * ITS quirks. >>> + * Add vendor specific PCI devid function here. >>> + */ >>> +static uint32_t >>> +its_get_devid_thunder(device_t pci_dev) >>> +{ >>> + int bsf; >>> + int pem; >>> + uint32_t bus; >>> + >>> + bus =3D pci_get_bus(pci_dev); >>> + >>> + bsf =3D PCI_RID(pci_get_bus(pci_dev), pci_get_slot(pci_dev), >>> + pci_get_function(pci_dev)); >>> + >>> + /* ECAM is on bus=3D0 */ >>> + if (bus =3D=3D 0) { >>> + return ((pci_get_domain(pci_dev) << >>> PCI_RID_DOMAIN_SHIFT) | >>> + bsf); >>> + /* PEM otherwise */ >>> + } else { >>> + /* PEM number is equal to domain */ >>> + pem =3D pci_get_domain(pci_dev); >>=20 >> But what is a PEM number? >=20 > PEM =3D=3D PCI-E MAC. > This is the number of root complex. >=20 >>=20 >>> + >>> + /* Hardcode appropriate PEM numbers */ >>> + if (pem < 3 ) >>> + return ((0x1 << PCI_RID_DOMAIN_SHIFT) | bsf); >>> + >>> + if (pem < 6 ) >>> + return ((0x3 << PCI_RID_DOMAIN_SHIFT) | bsf); >>> + >>> + if (pem < 9 ) >>> + return ((0x9 << PCI_RID_DOMAIN_SHIFT) | bsf); >>> + >>> + if (pem < 12 ) >>> + return ((0xB << PCI_RID_DOMAIN_SHIFT) | bsf); >>=20 >> What do these magic numbers mean? >=20 > This is a domain portion of PCI device ID passed by the HW along with > the transaction to memory. > In that case the methodology differs from the genuine (default in this > driver) ARM implementation and it is Thunder-specific. >=20 >>=20 >>> + } >>> + >>> + return (0); >>> +} >>> + >>=20 >> Andrew >> _______________________________________________ >> svn-src-all@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/svn-src-all >> To unsubscribe, send any mail to = "svn-src-all-unsubscribe@freebsd.org" --Apple-Mail=_BC466D0C-78A5-4437-812A-B519F59F46FE Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIcBAEBCgAGBQJVrnJQAAoJEGwc0Sh9sBEA/gQQAJERGWu5K1VvJgHiRVBnC70e B+5P4dxg2ANK0qHe4e2IZBbK8RLi70NGKHUkxsNf13eR3Tnu+g0sd+KDeUmdx3Pc 4J+GLGF190bDFG4MY8BGvGgQJnxcZrsFNDA4j0Rr9Brq4ymxY+0wHz7OxWwFn/JF q15iThqHIpUEPjld8/R3s/dV9NHih6k+l3O05EHzId4n3Ub6CjicVT7bZrJpZ0KH RxPHUKRgWHD8ps+0SGJ6tWCnxs8+AE0zI1CrRMEzVtCT3vIJfxyXbKjFqYIhz+q4 f43Zr+CrpLyzMlllAXPkVqI0X6MorhZuwIjrJY82TJBQ6Ha2VnyckLthcZAoNt0t bQwd1fKuiUHtVT9ut9gQ2DniWSOp4Nhit+37AK8I96RPhLnWsVcPHkU9lv80iR/A diBZZSDpxwYyzlyNK+4O3ZTle0CeLJVmZ/QHXyUBlPSJ1bDIG37us09ko6iyNOZh InYxuytaWY4rNrF0VvZH3ZYVpnPav9VOtQH6MI+L57Oe7p6Jl3b546hAMbpUNzeJ 0B9+gfqtV8qO/cCSw9FC8ofvBBtK6Bztn2/C62vH+UtwCRCsao8Y3Y4J5D45gJb7 Z02xQO6+jOuNAH+Is+QEc/+qVBgakuzeSqknOZ46ANpzjSzjItXbB9GHiK5R4IP1 /W7KVPz50o/H+OTwzMGF =Hu8R -----END PGP SIGNATURE----- --Apple-Mail=_BC466D0C-78A5-4437-812A-B519F59F46FE--