Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754136AbcKRTJz (ORCPT ); Fri, 18 Nov 2016 14:09:55 -0500 Received: from mail-by2nam03on0046.outbound.protection.outlook.com ([104.47.42.46]:45376 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751613AbcKRTJx (ORCPT ); Fri, 18 Nov 2016 14:09:53 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=David.Daney@cavium.com; Message-ID: <582F4EA7.9030303@caviumnetworks.com> Date: Fri, 18 Nov 2016 10:55:35 -0800 From: David Daney User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: CC: , , , , George Cherian Subject: Re: [PATCH 1/3] drivers: crypto: Add Support for Octeon-tx CPT Engine References: <1479481209-11475-1-git-send-email-gcherianv@gmail.com> <1479481209-11475-2-git-send-email-gcherianv@gmail.com> In-Reply-To: <1479481209-11475-2-git-send-email-gcherianv@gmail.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: BY2PR07CA0095.namprd07.prod.outlook.com (10.166.107.48) To CY1PR07MB2134.namprd07.prod.outlook.com (10.164.112.12) X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2134;2:Hfuq+7BcFGxvIHJwTmUDel2qf2AyY2pxalO7KOHLZKb1rAmEH5n4GG/KPTq0DCZfcJVtAYtzojZpLHKZtLgMdexxxYGNODDeUdBS6ajOo1NjuHUOORMqG6V/4sFT9bld03DW8ilPRiK1qAd2dAgZ62lS04IQ/zlJnMillo7Ppqc=;3:iUoDMlZw5HMVJ9ryCK/WltqiLLyuU7tCXi7RAECEv+Ad7w2KJ5BIhPOLxM9Uda7GlKNI137YJuZDWxjv1OLyU8CmrBho5NUERjxFZEuu3FmJEKAffKwhn9Npt9RzBEHJ+6Jz//R8uVQMh+JQpt3GJf0fXzt21pxMO55DiPYL4e4= X-MS-Office365-Filtering-Correlation-Id: ffab0563-7940-4199-4717-08d40fe47cb6 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY1PR07MB2134; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2134;25:ESH+IsI4a6M6TTKCWe1FR8yJLkIpTaT6Z6YwPFYNdLUfv4JgtE8o4SYBkAGPz069zhUWxSt8mF2TtSWFbRRfRD7auQwVcSTuLYutRxBOXfzJNsAAFew25biKKJJoG8ezKZT2z+x9BmaVMSoYSlqBwOYNjfCp0xYX4gO2Knqf30qruUAKnA3rAAhLSqFeJDcAzqTeMzcQ+zl6az+GIwlBlBwBj3B+noZVF+vBalsyTlYAkeCfGzAaRXH1BrlrMRNqF7tLBcilstuZrCoki6iVyYaBy4t2Op2iP34kp0UYzUJ5TrK92Kbfja8Y6joTU9GH0B+vzWXlqXRfxSGOqfxx88GShOUzNa7caJljbSganYreUK2jRB2ZgW87qMubKD6W+uo5NMSDiseSpbmKz3rAN876TCc+D2tUXJ70QYsQ6C3oKqLTz3+A3pxF5St+j0PCruSJoRE2SWV4VgcNAZseRNWoIM7GCmFtOEHYKT31jtRmf8FJ1vGHl5Gna934+AtvL+136gvl6m0R1MnmF2ODWhjkh3IxQonSkjUoxwYHDR090foujIk9O2eOSQQS4wKU7vw9kr5OjjWuuMMJk8Fxi5px0srjh8WC0K1lDatN1PuueEVWwR30/IdKPyuNp++pJ3rgaTV4ONiF92EXPdxImlmEC8rzC7CzkLmSNZVTUGWiZW+C6ejWuZkgMRQPG6o6HQ1baU1bzEAgzSSXV9N+VJT1NJbfxce4Qnr0e5/42pTbmtqJbdd18GizdFEl/3Vv4doHDLtPyqdnUeWpSVsQGw== X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2134;31:drz526DSyTTmr279oWkOuxyU4xckcPOg2oRko4tAvNVdPckrwzAss/1t4iHgl8+frbbpSbhcud0NEucUFQ707sAcBgFNhVrcO3VMqfHxOfDC5GkQGrPvXuD+KeyC2m4hS6CXTHUYOK3Zkky8X1UlQ5Wqi7kwMHLBQmgJwF+eHoU8d1jJjkebb1eblRj7FLq1hoVYUCLIsKIv6i7GSnhHpOnSZa0JrBR1BfwDb0TDfkhJyZqAN436tE5oh2Fv2XSrqBQE+g/iW7DYOZ+R5PYnQw==;20:9lcjRvVXPiVEj54WsfDxc66twrm7dZqYdPGPr82BD7h67Ju9XitIFll7K2/aJW5l1mBD4tdbnlFMTwrbUcXyjN3HkxdlOkP3Arn7xkQBsx32DbKHkRktd0zMXMh3OJFeKT3xvJUOamenmyHgcjV0jf006wbFou2q58QJ1GwZ9TnJW3+LltDEeuWbBktvSjr/dQWUaIMtNFBLf9AV99I1TMpJwN2LF8yMkh3jE5dzH4QP2CjTMT0cyfpISLT3tKgEvjt3Xvj6nEsYyaedlXuuf5LK8W4Jp7UWV9SE0hitn09rBzipWg13yZJOEKfzIroN/HTWXQwRl1GZy0+aPHGna8uMfyw+htk1ARWxpPrcwhLEZVgFlxDTqFx/wp/qlXo5oDqRmp2AKSS4ihZbbQ51Jh/iAly//tHd472L7DmsOIfXNwS48XsTJkVE/LzO0fWH+xTa0hflkHyPrq4fV1fu0C2DbcDQu2rQYf9gOxi8j42c6ka68M30CcjBv27sbqAZKOTsuZOaSXpT7qcLyMsk7+yqji0DY9KoiZgrS9/MLcd0pKBd5D6BQi4p/DxlvadDDbIjZdUDEZgpnD2mMpklIcr3YwjV738zSSbop/HJQUQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6060326)(6040281)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6061324)(6041223);SRVR:CY1PR07MB2134;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2134; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2134;4:EjND8PTRFmfiVOuoaEqBJc6uEsSIBS0DboCm4cDUnli7dtURIZL/xtk93ZfLVmmNVKDLU71qfMFpFWi7sRrr5lmDifc+btzjFghWnUMo3G3TWsI8QEQAoFrNfC2HipH1mfMoqM2O6P9zCSB5IkMCT4narPsnastSlZl/ZWW1Wku3SJpjYegQK9t5rIbFntq6ZafsRyqpJbTUXc8/qu4AYPinWq8oqmzkRdwp3n3fYUGFBBn+BTPRNcCdLVseny26JjnXFY4aRqfWmZ2eJSoEJhBcRVj7PYocZe72aT7bXqA9o9q1IrO3518g7xrGfVqx2chu1R+lkXmg0qpUDtkRtkODef0ertlBDsnrDzHNM5WCmYUAhZyWhv8HWgwSWywxXWSy66CUJ/02Wh4srQpvo81Ru7W7qJKM9ondx/Tb+yp71+WE51Vu84rUQ6OjDoCiWf7T6TGOkiIt0fAXZS3aog== X-Forefront-PRVS: 01304918F3 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(199003)(377454003)(189002)(24454002)(42882006)(8676002)(66066001)(97736004)(4001350100001)(76176999)(189998001)(4001430100002)(77096005)(65956001)(107886002)(33656002)(305945005)(65806001)(23756003)(2351001)(65816999)(68736007)(83506001)(50986999)(38730400001)(64126003)(54356999)(2950100002)(87266999)(6116002)(229853002)(6916009)(47776003)(6666003)(3846002)(69596002)(92566002)(230700001)(7736002)(101416001)(105586002)(81156014)(2906002)(106356001)(59896002)(80316001)(81166006)(5660300001)(53416004)(42186005)(50466002)(7846002)(36756003)(4326007)(110136003)(2004002);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR07MB2134;H:dl.caveonetworks.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;CY1PR07MB2134;23:n1jvHDHK0hoTQd9vn1pc95iicnRkUAf4APqcTFR?= =?iso-8859-1?Q?mNT2T4EyoLNxdBY/SQOcI5lMfnEB79xblSBKFs6LtK5CcpFGUqqEVKkrw+?= =?iso-8859-1?Q?FlIGpz5vZAOKI60i1c7F/l3tI7PyPqsHvnc8LeplsLoqU2Vze2tJcopYI8?= =?iso-8859-1?Q?qe2wKx2g0WKmu1ufzChe5JP+JzKSOTxeTGthGRqjewItwMJtSz0FUKLKgl?= =?iso-8859-1?Q?YETr5IxfOWnuFmzyesSXjAnbA5dbJl8Bilgza8DoBi9xQlQAz689G3UuhH?= =?iso-8859-1?Q?KcydbS8F9jilUgHABPo+kXyJ5maibT1wmtgzatn6eSP/zKAATxFH8n3TS4?= =?iso-8859-1?Q?OnAdhZ57fyVry1XQHKrHwsrpwSwKiw0R3cnBqexZHvQIe2oPue6VdS7suU?= =?iso-8859-1?Q?uHSoelMeQSIva7C4d/LoBcuu1iiB5cYycyFVL7wluF+V0tRyCTMVB9ervW?= =?iso-8859-1?Q?MRPj3fzodEL1GkYISVw6gOt6A+SkUa3xj8wGiVjeb2zSOgnnsGgpCOxP5y?= =?iso-8859-1?Q?70v/dWZm7Wt4kTDsDRHUxyjvUcAC88A3MxjZEo4Un1Ol/DdOyWtXHV9AUF?= =?iso-8859-1?Q?v4FVjYn23KHvcbAG1dDvuu9Esv8XqnFuTl4vYcNbtZiCvwVLjLI7Qx3Ihu?= =?iso-8859-1?Q?/bFhT4rcIa9Q3jyR2ZriaaQMoXPW0gY5/ZwUEgHgyCgWXAD6qpZvH2CHAr?= =?iso-8859-1?Q?Q4FSYpflNCDY7TiWrI93x/LcLUlcnFgZ50JDzrmZUBo5fwbiin5CA2U/rp?= =?iso-8859-1?Q?kzaQRoT/GCybbEtEPutrXHGjqtqyaLyA72glDmN+vt9LZ2BYFgHHTEVziM?= =?iso-8859-1?Q?hMmu5qMGpiWwjM4JcJfa9AgiRmomaQviFKUfn01lH455D6Gx+lhvQEiNrH?= =?iso-8859-1?Q?icb3xCMT73L9XF+9MbJCW0O5V1gS6PoWJNqksSgUL1eTSxuWx3pGc1EPQX?= =?iso-8859-1?Q?RSFrH8ahHDuhyYV+J/96+q/w2tEx31g3rp21qLYx+57q9lzwTdyTnHkt+X?= =?iso-8859-1?Q?r7fy8yXuPL3FrH3R9dyw8mwWQLzmRA4c+e1TQzgOkh3CT+xYGAnMtNRKkW?= =?iso-8859-1?Q?ti46G8jD9Ouhu4eQnooPxm+XmsniXJMaHgt/rC3ciAFOEM9BL4wzADs3/E?= =?iso-8859-1?Q?RzGwMi+iGL4h5R53zem8GbRTX4arQQY7PF44XB3LWhN6zgRPKXC234wcJa?= =?iso-8859-1?Q?ACYZnA9toPvaovpSzoB0+fY7ws+B7qWao/GHnYEIiI9ecm6Z8GBt3kD3fk?= =?iso-8859-1?Q?niuwgZNYgw0f0QvK4a4fmF4NV8b43jFuOT/b21ZIBBHf1Me4kIgg2wTMOo?= =?iso-8859-1?Q?x1hJ7oiHIuKWKBePICK+r3siUeELdP8Vm/6Ldu8ifF6xS4S9FltF8twMvY?= =?iso-8859-1?Q?Hb71qsxIsxxAh9H5VyfFtKWXbi7u/AMsNNw5g9CaypzrpmLeKmpu1RlMRH?= =?iso-8859-1?Q?/lk1IhQwGjh5gQIKC+ydkWNXeKuT/4AqDSDWyR7wZ0Vxj5eZhHedyF6LNi?= =?iso-8859-1?Q?b1IWY9XxnYoEFR+Y8b7o=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2134;6:NFptAmDxm3WJBQrzPmUmRJzbMqSg0UWsXLaZVzmc3RI6jSncf7uvauHm6FXbKsFcaSRU71jVAg4g0N7QdcOytfxu+Z67U22LK2SICM/anaMMy4VznOwT3aJWjK0qvcv7XMQ3jCnRyZbxlLkfKrGf9SQnZEfxwZ+ECpZHi96w73Vi4/gEe9SzcIFSOMlOnAyzhm8uEqCWXmuW53wGoDb7r2RMWxmoR4ESIpBeiz2iMnkXNmkYwPq6vheDpgQMayt+QDO2W9ARYllWn5UU7S5m3ZFKEXcunpGTxqC5qjDjuHnoPTk9rggXis8c3KlPOe3IzRb5GNi4YdzOwNeZlErHsLdwA6TX9kqCjrdXIKCmmpE=;5:+6Auu2D6ulnCnesGvDVQfIYaZUQBDaJh7gmZkk+mB3w9LGanVQc/896aFxL56PpO/erlGljotvypEhIO9tn0hb2/I2eewuKfy0LOpow/J9HqPj1SCH0VHa6lQuaSNXGAJ67okCuHaFC3lsup3xON0Q==;24:z0+etmsb2x6V0DoSqSw5ojxHKPxAFLG6rDqlpNNWfYrnr7N3hx9QJVlUx0FN1zmgjxrDAu+6pvPE3W3oY0WlequDp6Vxu4BNu/Ef3QMM7Hw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2134;7:M88perc+LnTIO1iqzGEp8+QmreYlPlqd7szdbkthU0AmlHQqVkc7rHMC4oNmkYDqtQRfPEMEmd/6GjuH7HrxZuu/IXZJIic46LfXyWKO5+b1hGVOr2RQYHBDpaAfKkychdW3ZuQKSxii9JNRttIImfLIy2slICmYElqEVMk1YgrWw8uJ768JLoHZzcDut4j0P4HKZ2OUQDaUGdglQqbQ1ll40Nr9vaVNwh/YMoDdUFkjnpAjOK3oCk8svhqm3X6O42Wv0RM1YqYs4Q348X2murM8LfeX2hztvwuT8rrn3PCMP3lO+324GepAW6WcQVGziRoJWttcEw3rU+eDV+CGw3x1dZD5eb04w8nl2WpSHQY= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Nov 2016 18:55:38.2260 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2134 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 6835 Lines: 236 On 11/18/2016 07:00 AM, gcherianv@gmail.com wrote: > From: George Cherian > > Enable the Physical Function diver for the Cavium Crypto Engine (CPT) > found in Octeon-tx series of SoC's. CPT is the Cryptographic Acceleration > Unit. CPT includes microcoded GigaCypher symmetric engines (SEs) and > asymmetric engines (AEs). > > Signed-off-by: George Cherian How was this tested? > --- > drivers/crypto/cavium/cpt/Kconfig | 22 + > drivers/crypto/cavium/cpt/Makefile | 2 + > drivers/crypto/cavium/cpt/cpt.h | 90 +++ > drivers/crypto/cavium/cpt/cpt_common.h | 377 +++++++++++++ > drivers/crypto/cavium/cpt/cpt_hw_types.h | 940 +++++++++++++++++++++++++++++++ > drivers/crypto/cavium/cpt/cpt_main.c | 891 +++++++++++++++++++++++++++++ > drivers/crypto/cavium/cpt/cpt_pf_mbox.c | 174 ++++++ > 7 files changed, 2496 insertions(+) > create mode 100644 drivers/crypto/cavium/cpt/Kconfig > create mode 100644 drivers/crypto/cavium/cpt/Makefile > create mode 100644 drivers/crypto/cavium/cpt/cpt.h > create mode 100644 drivers/crypto/cavium/cpt/cpt_common.h > create mode 100644 drivers/crypto/cavium/cpt/cpt_hw_types.h > create mode 100644 drivers/crypto/cavium/cpt/cpt_main.c > create mode 100644 drivers/crypto/cavium/cpt/cpt_pf_mbox.c > > diff --git a/drivers/crypto/cavium/cpt/Kconfig b/drivers/crypto/cavium/cpt/Kconfig > new file mode 100644 > index 0000000..8fe3f44 > --- /dev/null > +++ b/drivers/crypto/cavium/cpt/Kconfig > @@ -0,0 +1,22 @@ > +# > +# Cavium crypto device configuration > +# > + > +config CRYPTO_DEV_CPT > + tristate > + select HW_RANDOM_OCTEON This makes no sense. HW_RANDOM_OCTEON is for a mips64 based SOC and isn't present on devices that have this crypto block. Why select this? > + select CRYPTO_AES > + select CRYPTO_DES > + select CRYPTO_BLKCIPHER > + select FW_LOADER > + > +config OCTEONTX_CPT_PF > + tristate "Octeon-tx CPT Physical function driver" > + depends on ARCH_THUNDER > + select CRYPTO_DEV_CPT > + help > + Support for Cavium CPT block found in octeon-tx series of > + processors. > + > + To compile this as a module, choose M here: the module will be > + called cptpf. > diff --git a/drivers/crypto/cavium/cpt/Makefile b/drivers/crypto/cavium/cpt/Makefile > new file mode 100644 > index 0000000..bf758e2 > --- /dev/null > +++ b/drivers/crypto/cavium/cpt/Makefile > @@ -0,0 +1,2 @@ > +obj-$(CONFIG_OCTEONTX_CPT_PF) += cptpf.o > +cptpf-objs := cpt_main.o cpt_pf_mbox.o > diff --git a/drivers/crypto/cavium/cpt/cpt.h b/drivers/crypto/cavium/cpt/cpt.h > new file mode 100644 > index 0000000..63d12da > --- /dev/null > +++ b/drivers/crypto/cavium/cpt/cpt.h > @@ -0,0 +1,90 @@ > +/* > + * Copyright (C) 2016 Cavium, Inc. > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of version 2 of the GNU General Public License > + * as published by the Free Software Foundation. > + */ > + > +#ifndef __CPT_H > +#define __CPT_H > + > +#include "cpt_common.h" > + > +#define BASE_PROC_DIR "cavium" > + > +#define PF 0 > +#define VF 1 > + > +struct cpt_device; > + > +struct microcode { > + uint8_t is_mc_valid; s/uint8_t/u8/ ?? That could be done everywhere. [...] > diff --git a/drivers/crypto/cavium/cpt/cpt_common.h b/drivers/crypto/cavium/cpt/cpt_common.h > new file mode 100644 > index 0000000..351ed4a > --- /dev/null > +++ b/drivers/crypto/cavium/cpt/cpt_common.h > @@ -0,0 +1,377 @@ > +/* > + * Copyright (C) 2016 Cavium, Inc. > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of version 2 of the GNU General Public License > + * as published by the Free Software Foundation. > + */ > + > +#ifndef __CPT_COMMON_H > +#define __CPT_COMMON_H > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "cpt_hw_types.h" > + > +/* configuration space offsets */ > +#ifndef PCI_VENDOR_ID > +#define PCI_VENDOR_ID 0x00 /* 16 bits */ > +#endif > +#ifndef PCI_DEVICE_ID > +#define PCI_DEVICE_ID 0x02 /* 16 bits */ > +#endif > +#ifndef PCI_REVISION_ID > +#define PCI_REVISION_ID 0x08 /* Revision ID */ > +#endif > +#ifndef PCI_CAPABILITY_LIST > +#define PCI_CAPABILITY_LIST 0x34 /* first capability list entry */ > +#endif > + Standard PCI core functions give you access to all that information, use pdev->device, pdev->revision, etc. instead of reinventing the wheel here with all these #defines. > +/* Device ID */ > +#define PCI_VENDOR_ID_CAVIUM 0x177d This is defined in pci_ids.h, use value from there instead of placing a duplicate definition here. > +#define CPT_81XX_PCI_PF_DEVICE_ID 0xa040 > +#define CPT_81XX_PCI_VF_DEVICE_ID 0xa041 > + > +#define PASS_1_0 0x0 > + > +/* CPT Models ((Device ID<<16)|Revision ID) */ > +/* CPT models */ > +#define CPT_81XX_PASS1_0 ((CPT_81XX_PCI_PF_DEVICE_ID << 8) | PASS_1_0) > +#define CPTVF_81XX_PASS1_0 ((CPT_81XX_PCI_VF_DEVICE_ID << 8) | PASS_1_0) > + > +#define PF 0 > +#define VF 1 > + > +#define DEFAULT_DEVICE_QUEUES CPT_NUM_QS_PER_VF > + > +#define SUCCESS (0) > +#define FAIL (1) > + > +#ifndef ROUNDUP4 > +#define ROUNDUP4(val) (((val) + 3) & 0xfffffffc) > +#endif > + > +#ifndef ROUNDUP8 > +#define ROUNDUP8(val) (((val) + 7) & 0xfffffff8) > +#endif > + > +#ifndef ROUNDUP16 > +#define ROUNDUP16(val) (((val) + 15) & 0xfffffff0) > +#endif > + kernel.h has round_up(), use that instead of defining all these. > +#define ERR_ADDR_LEN 8 > + What is that for? It looks unused. [...] > +/*###### PCIE EP-Mode Configuration Registers #########*/ > +#define PCIEEP0_CFG000 (0x0) > +#define PCIEEP0_CFG002 (0x8) > +#define PCIEEP0_CFG011 (0x2C) > +#define PCIEEP0_CFG020 (0x50) > +#define PCIEEP0_CFG025 (0x64) > +#define PCIEEP0_CFG030 (0x78) > +#define PCIEEP0_CFG044 (0xB0) > +#define PCIEEP0_CFG045 (0xB4) > +#define PCIEEP0_CFG082 (0x148) > +#define PCIEEP0_CFG095 (0x17C) > +#define PCIEEP0_CFG096 (0x180) > +#define PCIEEP0_CFG097 (0x184) > +#define PCIEEP0_CFG103 (0x19C) > +#define PCIEEP0_CFG460 (0x730) > +#define PCIEEP0_CFG461 (0x734) > +#define PCIEEP0_CFG462 (0x738) > + > +/*####### PCIe EP-Mode SR-IOV Configuration Registers #####*/ > +#define PCIEEPVF0_CFG000 (0x0) > +#define PCIEEPVF0_CFG002 (0x8) > +#define PCIEEPVF0_CFG011 (0x2C) > +#define PCIEEPVF0_CFG030 (0x78) > +#define PCIEEPVF0_CFG044 (0xB0) > + Where are all those defines used? What are they for? That's all I can look at for now. David.