From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0059.outbound.protection.outlook.com [104.47.34.59]) by dpdk.org (Postfix) with ESMTP id DB6B3558B for ; Thu, 17 Nov 2016 06:28:06 +0100 (CET) Received: from BY2PR03CA067.namprd03.prod.outlook.com (10.141.249.40) by CY4PR03MB2469.namprd03.prod.outlook.com (10.168.163.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.707.6; Thu, 17 Nov 2016 05:28:05 +0000 Received: from BY2FFO11OLC015.protection.gbl (2a01:111:f400:7c0c::181) by BY2PR03CA067.outlook.office365.com (2a01:111:e400:2c5d::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.721.10 via Frontend Transport; Thu, 17 Nov 2016 05:28:05 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;nxp.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BY2FFO11OLC015.mail.protection.outlook.com (10.1.15.59) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.721.5 via Frontend Transport; Thu, 17 Nov 2016 05:28:04 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:521; Count:8 Received: from Tophie.ap.freescale.net ([10.232.14.87]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id uAH5S1pp018741; Wed, 16 Nov 2016 22:28:02 -0700 From: Shreyansh Jain To: CC: , Shreyansh Jain Date: Thu, 17 Nov 2016 10:59:59 +0530 Message-ID: <1479360605-20558-1-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 X-IncomingHeaderCount: 8 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131238340851260456; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1110001)(1109001)(336004)(339900001)(199003)(189002)(106466001)(8936002)(626004)(50466002)(2351001)(110136003)(36756003)(105606002)(50226002)(81156014)(6916009)(6666003)(8676002)(87936001)(33646002)(81166006)(86362001)(97736004)(4326007)(5003940100001)(48376002)(85426001)(2906002)(104016004)(189998001)(356003)(8666005)(77096005)(47776003)(68736007)(5660300001)(92566002)(305945005)(50986999)(7846002)(15395725005)(7059030)(21314002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR03MB2469; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC015; 1:3D5CJsLyxsR/SyEXrWp58InZMi+9DNY+l+YfZ3KoZM32XCzp4SG6NdlXbjNSJRyU2WmWk7R4Taqe67NfL9RHokvLyKU4m3KPoas18yYicdXZEiGSd4nqhyjYyaSNcgpxb9FstzMKhAefVGdaEO1cI7WPJsFyCSMPaes3lRHyktsZSj+8FXk359W9ZjMLUCUcRWKBDSMIwYmJOOKNKPKuuOyBGIXVBKOPV2rXxqgWzZ5EeNwsGzQDwgOwG8oGDLWs8PWJucZibljm1pB9erCuihjw+pPaWYAAWDXIvmZXcpuDYx8ozZZFvL0AJrFNVk91rEoDuyHNlvr9gki3KsP0VG8hpO64WV8FC2oIVDaAuUFMjCPRIz7gHPIjlcIxL+0jy0Hd51Kn8PPFm+CjxI0aq0mh8FPL19Ywl/lr763Ml4ZlyKZtifAe+4MuU7eQ+C0pULL1Ta/1WJP1HrjFgd11vVMwjjEsk7gJAHAhRz8jIU125sOF86TRcaIb00l5m8+CrzNTzc90M1X6Rsdi0AmZW5CRCVuZlXAu0rNU7DkX9HyDSrIYtG1B+TAroiOjItttkSX5GXkllReNOezzDk14z5VbtP3kYXTBNaLULEfl/87SYbkZdDpvAG94McEmQC4CEloCgwWirnRk5GCiV6LXp43y5R9jdtn1DLypx2MX3lli0TvVZOG1qyt9mS7QFTeZ1oSDAkhPH0Q2l5Pb7QfoqzRhm6kM5p7Qkuv57mW8eQw= MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2469; 2:1c2KysnoBwBdU6o9KHMu9Ofkp21MH/i59bCyvJSMjcTKO1Ee6fyX1JqKYXxGYfqHIqbcHMsY/bgLhp1LfqNM/Cp74iV6Py+kg2sTjgYC+JD9qsi+FeutQyEoZ/52p+N8eN/l5n1gsPPuii3QLxqOztC5HN0RLwpcX8n2cMW1RIM=; 3:rNpGfuhTnQeRr+FF1zV4AMTAVfV34Ly6p9FisFmZm+KRQ6Ct/G0b+pxeZm6LilTuZxpY66Z7s8efQh+N/IzDE38c4ke8Wi/GDuCGH2yaXH4sWryPA+/SQ8ULx0O8fBMCvD+SXk6tcEdn8qVlHSbCMglwGlilYDuiXNUJsrsjRZEAzNVpj3ZRctGAAk17ziEfs6PBAGCg+BgfgPrGxPj3jZY5yCY+x796hNKJCjIkElUUCbxKcKGp0p0RUEfYlTJDo6/xI53XFI9umVuR5ftyVg== X-MS-Office365-Filtering-Correlation-Id: 4e9e9b61-0676-410b-dc28-08d40eaa81d0 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY4PR03MB2469; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2469; 25:oWaicv/+Ax+bFa98RMoz86etjA6o+vATNQNkwgOQhwSA3OXNG+TJCa74q0eq8sQKIxqD8edj2B9JPulzuNaufGuAfYFiF24vyrb/z7WSLoyMFKMuBTDUlBuF4W2pIWNUjWdKaLQPNmYK1HuknTkZrTyLvvEEsN0y/r+wCZPgGlS//+hVsjn+p4MpYYpljoZZziLM+20NNYpoZiUgvASZRkwY+W0roFLVY21wbqQoYsjW34t4SLEquGuuBXxxwj8tXE9X3baHu2m58b0VqCpxOb7AnVpbZdIPOF8/pa+LxVV1sJQ8XalpZ3P9DO7XwfsTc03OHR8dXoUL7vwRmvZ4n4cUItA62EvDsv/yQbtk2NgNv3ovEJ6QlqEN1JN81Zkkc0aTu8K1nTfVdSsl0X1JCCyavgd/py8UMx1Iy12oMPhMNQSQZ0ovH74iII608OKobNXKSrciQoEsfHYpYg6VrThk6+VgjNoK+L3T7VEGhiQcKuhJFiVcYeXUG2lbZZHBuRMc2MWYIJO0zNAOIxWfBCxRH/Y5Nqazo2glzaiKRfKfJfqUx6EHCUUXxzzM2B1z8JqEHW4tFrxUwRG/ZqNiu6wVvoMIkPUtw37zCksb4ikMQUiYEOMneqqEnytzqKsuwwiPIyqIcNyZ/ftpgyUrCXlxaN97SoA9l6kzByO9T6lQP4xuBxSafhwIYKxzpBcC2PO7ZQH2+LiXl7QZDrlfAcdMYYN/R5sYr2LHhUxKE3YSwK8KtM649y3LPi4JeVvJDUAco9sdsWdo7fsv4eM9VgT4aLo+0WCWugknTYmRxDZfFX4qYQr8pEQZ+xbvb6CNKQxvE0W+AUItjFydJiGWG5e2EcUNTaeqVGuEnIL0Bm6xpWHKuQ7kzNt7PUxNTDBz X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2469; 31:NZ+95Gt1JoX3ageSFpQe7y6byVZvyDCuJGLG4fLGKIh8sdXHan0K2+sLngARqtQE8Gip4Vfv1AkdKK4nf8ft6DBbFd45U5iGmc/iSMayhgVrI7IIctito4oHu0GaKxr8De7HApHEhUtZpD4OPU9iJ1bcbIe+ckhaKZ44iLnDGpgPFunnqmm7lSsELof8FK8VnbvMhuT6PwZ+jKO5pqu1fuAaiJ4AAIppfLLNqgtuvYBfLjzG9dZvqyweYI6KkGLsGDx7Q3Tef4I742wSatzZfkvE6+hKs0tiWmhyXbtF7SNFUt85NCtJ4ARn3VZ+iIyW; 4:fAEa+rMFTej73bxzfnN4e9zGeL2BAgo+48YUgMm4JtE7mXhlvIQVXQkJNnSSB2yr6Jzv4cvIa2assKoDqwWx2dMhnv7za4jREa7XMsXv76KNZA9Lgg8l5x0Dfi4T479HQcS6hkOhdry/IHe66eVnTM5EdgDkmYwOHnmSOJXSYl9DSq/HCuqcasZkZMH1zGi9FLoIyiVYKqjqbfyjbTsx84M0LIsuNYrn7iJ15rvLxfNJnDs3EhbVkmbWr+2cSYg687J3lEN3e3AncUt1tZAZ/JinhyHZu4IrqdPQE+tWAORlOltqliyWiwRnjwtfavO/rIudz0vr9IGS+Yx4AmvMVsvbJYVBd+BnB7hVysOuClm8NkFlPxWkrcxoGk6y2MBbBO7anr+5a+YGxydCL4qzUtDhBmpTwuy7QJPGeETZQXNrpJIu6N7zl0DMPRtVbrnDpuP8TGXeYgUCBchsaEH+J/c9IJPyUZrveSSKHXyQ0J7+n6X6Izq8y1B7zols+J3JO5gxgcJWsUQFyQjrVqJcsQipF0Qu2+nFsVsmqoNGN7QBhc4Lqy5psF7ds+m5slK7JZeDj35kzQ9dC5zx0eQ6QztG1Po8lxqalkQGvZCoyao= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278428928389397)(21532816269658); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095035)(601004)(2401047)(13017025)(13018025)(13023025)(13015025)(8121501046)(13024025)(5005006)(3002001)(10201501046)(6055026)(6096035); SRVR:CY4PR03MB2469; BCL:0; PCL:0; RULEID:(400006); SRVR:CY4PR03MB2469; X-Forefront-PRVS: 01294F875B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB2469; 23:85Uu+nK/0IFe8aAtwso4qG9/+T3qp75mZspQNPCRf?= =?us-ascii?Q?YCldakkHf7J+dq/rBsoHhtuKkjAWMR70RpJdfwOGHhr8Cq4lTmBD3rtvwUhp?= =?us-ascii?Q?D4mRlt+k77xXXhv6rixT6H4hWKIxkJw5p6WW9oDmlEkiHd90NrfPUNPiWhdZ?= =?us-ascii?Q?YIPKGQR27BwF34vXdipJvxX5UOtceRz/D5JBH+wgvSjcPMLNmzRh0TMBkRP6?= =?us-ascii?Q?f0jX6cFvu9e/lqLwbw1Y2sI26E4Xp+cLtyl9uLN/W3tjZ1JQEiV21nq4x48W?= =?us-ascii?Q?vYhbGHskSPr8z5lPMX6Dos5/0zkUDKqXwv1gAYAz0fqMO/Qu+qCzsT/NMtuV?= =?us-ascii?Q?FNdT745Ss7rnqhQpVjaViLioZ7V5bWiVToF7TLO4LmgYAPCTYmUOT12uklx/?= =?us-ascii?Q?CZGu69MlHg/+nbmbDJQzKSFgC4NJegXEZ9heDfDF5ngnC4kQ9a64Pzk8uGT/?= =?us-ascii?Q?VIan69bjnvTWFHKAJ9Y0Ws3HdVYSJuYSdMxvUu2dqWZjZatFOpdga4qH6qeC?= =?us-ascii?Q?9kXYktl+7Tp1q+4TSCRilIqimA4Vo4ny0g73e1bmelUFaZ8Ma6SKe3kqDTkr?= =?us-ascii?Q?woqzxHtUUXeaegXp4I8KkVvsB5N71JRJIkL7nOBMTqE+nHZop4ImgwoTxkM8?= =?us-ascii?Q?Xju3Q9shizSOigNSWxc3b8TYxBnRiZhtHHsOY6Yp6+KA7b8eNr83hYVnIwn7?= =?us-ascii?Q?5SjqcEitjuq13r+P2NFQUbivKZ/JIaDSbyYYqqdvQoJ34cK8bmBlHuzzB5ye?= =?us-ascii?Q?PQfEkWZ3e13qxPX+YbXYv0l1PWo55Sn2PHn5FzupTGk35o+b5x7nKFAqcTSK?= =?us-ascii?Q?+7uC0km7tqiudvf74mJxYWDEtFVrazEeXlBraFiwIb88dSJikX6c/8V8ATNQ?= =?us-ascii?Q?GxgTUHVxF45GBuvg5AKd8uJV6McB08C1bb8VmLt+xo6dKceAwZhpj+qEd5Xc?= =?us-ascii?Q?9yxaqM9v1UovOXQ3484oXciAEHM9aRa6hA/InE6RIBNco7Fp/QE9qmxBmsFU?= =?us-ascii?Q?fzE85utOWhAsh+/oEvKbqRvwSsN4HKAE3b8bSrCpiQstvp5u4pSxTFU1PGnR?= =?us-ascii?Q?lSMQK+qEQ9PmZ8iLGOJbEoMtNyMs531xnDnzlv/eps0IH8InIcxA5Ans5zyr?= =?us-ascii?Q?yfJhQaXXxMfkEQyOWFwFD1FMPyYZ2ZJ?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2469; 6:0qI1q9H2hTaLC5T0mSvEWqN9DD2CZ9B6B2kedsOetyvxmtB0mh6/CXPkxzjIxrqrWNZW1qh7mfV1o/opRFF758xVktqW4nHQ/UFHom7M+ceRHAI04DaFN5ZH4HX4ChM8pqu0MD7C8LP/ztYLZX+iu+q5QpRfcvstxobjDjrIYoxveKMzYFyaebeBGiKX+txb38dPEA3kjHF3nkXpvaja5AdpM7Vd9kWWLYkP2UnYYppS48mBKs7ewU/DKBPx9I5CgzyA34SJWKywI4uQAjX0/aBhnWpKbnMeUaavNn47hGVo6H/KBlNWvBhVyK+YPlbFWRTzUFIY/8K0WU9FhydTWA==; 5:9CCr3pumj75lbdk9llGasn6UCSbwc1mElDZORtuKUQLyQxqrgLmePb8NAXEB21e3Ck9DJcaBlG6NW8u7+hoFA+Tvy4nY9/Nq9FcpA7Bl6LZTrDU8oR2ocSJG/LRN6cvQRfwwLTq2Cw2xPS+AX5JXPUVqbdeQJE8a3kSTy2e8zTsoQ0418BliR+1w9AED3u+Z; 24:E+rN2XWC8UpNSmCg9oD9LBfWIlGZu86pw8a22ZXCZMD9bSgzRhEOZWeY12gkeaZ0A7zR/RHXENf6H2Jr08bgdujJGWjdmg9ST8pLGSGnk1A= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2469; 7:9L4H+nTLfFlNj36c074PuB/TkKzxhg7IKa/gi4kJxQD8Kwt2w7kixObYm1rCajGHcz60edvM5Q63S4ORMGoOmE3HMV921Hw5AV5bcbjXvHwQtex/JTWqUK/DrEexDJInbSJZm5adkcRH2jNN91HrGBR78hRyK55cV9lkc0XbV36rUboGHk60rI8g0UOGb4UGtMXNHIsmqW0OHv3iBAf9BkgGY1aOby8jDjZzlEezYGH02Qe/J0nShcIFdd7yV2OcrSRwKrMJo8Lcs1ZqpvK10C/KoO3l7wsH6yXmqlV0HHGVxemsmUMmhLXZ5an2ISjZIURPtEb7mUCICbDk7LEykw7NeGVtDgAswscEtPlUCpM= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2016 05:28:04.9232 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2469 Subject: [dpdk-dev] [RFC PATCH 0/6] Restructure EAL device model for bus support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Nov 2016 05:28:07 -0000 DPDK has been inherently a PCI inclined framework. Because of this, the design of device tree (or list) within DPDK is also PCI inclined. A non-PCI device doesn't have a way of being expressed without using hooks started from EAL to PMD. With this cover letter, some patches are presented which try to break this strict linkage of EAL with PCI devices. Aim is to generalize the device hierarchy on the lines of how Linux handles it: device A1 | +==.===='==============.============+ Bus A. | `--> driver A11 \ device A2 `-> driver A12 \______ |CPU | /````` device A1 / | / +==.===='==============.============+ Bus A` | `--> driver B11 device A2 `-> driver B12 Simply put: - a bus is connect to CPU (or core) - devices are conneted to Bus - drivers are running instances which manage one or more devices - bus is responsible for identifying devices (and interrupt propogation) - driver is responsible for initializing the device (*Reusing text from email [1]) In context of DPDK EAL: - a generic bus (not a driver, not a device). I don't know how to categorize a bus. It is certainly not a device, and then handler for a bus (physical) can be considered a 'bus driver'. So, just 'rte_bus'. - there is a bus for each physical implementation (or virtual). So, a rte_bus Object for PCI, VDEV, ABC, DEF and so on. - Buses are registered just like a PMD - RTE_PMD_BUS_REGISTER() - Each registered bus is part of a doubly list. -- Each device inherits rte_bus -- Each driver inherits rte_bus -- Device and Drivers lists are part of rte_bus - eth_driver is no more required - it was just a holder for PMDs to register themselves. It can be replaced with rte_xxx_driver and corresponding init/ uninit moved to rte_driver - rte_eth_dev modified to disassociate itself from rte_pci_device and connect to generic rte_device Once again, improvising from [1]: __ rte_bus_list / +----------'---+ |rte_bus | | driver_list------> List of rte_bus specific | device_list---- devices | scan | `-> List of rte_bus associated | match | drivers | dump | | ..some refcnt| (#) +--|------|----+ _________/ \_________ +--------/----+ +-\---------------+ |rte_device | |rte_driver | | rte_bus | | rte_bus | | rte_driver |(#) | init | | | | uninit | | devargs | | dev_private_size| +---||--------+ | drv_flags |(#) || | intr_handle(2*) |(#) | \ +----------\\\----+ | \_____________ \\\ | \ ||| +------|---------+ +----|----------+ ||| |rte_pci_device | |rte_xxx_device | (4*) ||| | PCI specific | | xxx device | ||| | info (mem,) | | specific fns | / | \ +----------------+ +---------------+ / | \ _____________________/ / \ / ___/ \ +-------------'--+ +------------'---+ +--'------------+ |rte_pci_driver | |rte_vdev_driver | |rte_xxx_driver | | PCI id table, | | | +---------------+ | data | +----------------+ +----------------+ (1*) Problem is that probe functions have different arguments. So, generalizing them might be some rework in the respective device layers (2*) Interrupt handling for each driver type might be different. I am not sure how to generalize that either. This is grey area for me. (3*) Probably exposing a bitmask for device capabilities. Nothing similar exists now to relate it. Don't know if that is useful. Allowing applications to question a device about what it supports and what it doesn't - making it more flexible at application layer (but more code as well.) (4*) Even vdev would be an instantiated as a device. It is not being done currently. (#) Items which are still pending With this cover letter, some patches have been posted. These are _only_ for discussion purpose. They are not complete and neither compilable. All the patches, except 0001, have sufficient context about what the changes are and rationale for same. Obviously, code is best answer. === Patch description: === Patch 0001: Introduce container_of macro. Originally a patch from Jan. Patch 0002: introduce changes to rte_device/rte_driver for rte_bus, and rte_bus definition itself. Patch 0003: Add a new layer for 'bus driver' with linuxapp PCI as an example Patch 0004: Changes with respect to rte_bus APIs and impact on eal_common_pci Patch 0005: Change to rte_eal_init (of linuxapp only, for now) for supporting bus->scan. Probe is still being done old way, but in a new wrapper Patch 0006: eth_driver removal and corresponding changes in ixgbe_ethdev, as an example. Includes changes to rte_ethdev to remove most possible PCI references. But, work still remains. === Pending Items/Questions: === - Interrupt and notification handling. How to allow drivers to be notified of presence/plugging of a device. - Placement of bus driver/handling code. librte_bus, bus/, drivers/bus? -- Also from a pespective of a external library and whether symbols would be available in that. -- and secondary processes - VDEV bus is missing from current set. - Locking of list for supporting hotplugging. Or, at the least safe add/ remove - PMDINFOGEN support or lack of it. - Is there ever a case where rte_eth_dev needs to be resolved from rte_pci_device? I couldn't find any such use and neither a use-case for it. - There should be a way for Bus APIs to return a generic list handle so that EAL doesn't need to bother about bus->driver_list like dereferencing. This is untidy as well as less portable (in terms of code movement, not arch). - Are more helper hooks required for a bus? -- I can think of scan, match, dump, find, plug (device), unplug (device), associate (driver), disassociate (driver). But, most of the work is already being done by lower instances (rte_device/driver etc). Further: - In next few days I will make all necessary changes on the lines mentioned in the patches. This would include changing the drivers/* and librte_eal/* - As an when review comments float in and agreement reached, I will keep changing the model - There are grey areas like interrupt, notification, locking of bus/list which require more discussion. I will try and post a rfc for those as well or if someone can help me on those - great - Change would include PCI bus and VDEV bus handling. A new bus (NXP's FSLMC) would also be layered over this series to verify the model of 'bus registration'. This is also part of 17.02 roadmap. [1] http://dpdk.org/ml/archives/dev/2016-November/050186.html Jan Viktorin (1): eal: define container macro Shreyansh Jain (5): eal: introduce bus-device-driver structure bus: add bus driver layer eal/common: handle bus abstraction for device/driver objects eal: supporting bus model in init process eal: removing eth_driver bus/Makefile | 36 +++ bus/pci/Makefile | 37 +++ bus/pci/linuxapp/pci_bus.c | 418 +++++++++++++++++++++++++++++ bus/pci/linuxapp/pci_bus.h | 55 ++++ drivers/net/ixgbe/ixgbe_ethdev.c | 49 ++-- lib/librte_eal/common/eal_common_bus.c | 188 +++++++++++++ lib/librte_eal/common/eal_common_dev.c | 31 ++- lib/librte_eal/common/eal_common_pci.c | 226 +++++++++------- lib/librte_eal/common/include/rte_bus.h | 243 +++++++++++++++++ lib/librte_eal/common/include/rte_common.h | 18 ++ lib/librte_eal/common/include/rte_dev.h | 36 +-- lib/librte_eal/common/include/rte_pci.h | 11 +- lib/librte_eal/linuxapp/eal/Makefile | 1 + lib/librte_eal/linuxapp/eal/eal.c | 51 +++- lib/librte_eal/linuxapp/eal/eal_pci.c | 298 -------------------- lib/librte_ether/rte_ethdev.c | 36 ++- lib/librte_ether/rte_ethdev.h | 6 +- 17 files changed, 1262 insertions(+), 478 deletions(-) create mode 100644 bus/Makefile create mode 100644 bus/pci/Makefile create mode 100644 bus/pci/linuxapp/pci_bus.c create mode 100644 bus/pci/linuxapp/pci_bus.h create mode 100644 lib/librte_eal/common/eal_common_bus.c create mode 100644 lib/librte_eal/common/include/rte_bus.h -- 2.7.4