get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/128236/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 128236,
    "url": "https://patches.dpdk.org/api/patches/128236/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20230607015709.336420-2-chaoyong.he@corigine.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20230607015709.336420-2-chaoyong.he@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230607015709.336420-2-chaoyong.he@corigine.com",
    "date": "2023-06-07T01:57:00",
    "name": "[01/10] net/nfp: fix the problem of rtsym",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "a9adac0c0e1bb8d8a07ff48b950170fd5617f11b",
    "submitter": {
        "id": 2554,
        "url": "https://patches.dpdk.org/api/people/2554/?format=api",
        "name": "Chaoyong He",
        "email": "chaoyong.he@corigine.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20230607015709.336420-2-chaoyong.he@corigine.com/mbox/",
    "series": [
        {
            "id": 28380,
            "url": "https://patches.dpdk.org/api/series/28380/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=28380",
            "date": "2023-06-07T01:56:59",
            "name": "support rte_flow for flower firmware with NFDk",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/28380/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/128236/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/128236/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 29E2042C45;\n\tWed,  7 Jun 2023 03:58:00 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 3D1F1410F9;\n\tWed,  7 Jun 2023 03:57:55 +0200 (CEST)",
            "from NAM11-CO1-obe.outbound.protection.outlook.com\n (mail-co1nam11on2091.outbound.protection.outlook.com [40.107.220.91])\n by mails.dpdk.org (Postfix) with ESMTP id AE80A40ED5;\n Wed,  7 Jun 2023 03:57:53 +0200 (CEST)",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5)\n by PH7PR13MB5453.namprd13.prod.outlook.com (2603:10b6:510:138::5)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.33; Wed, 7 Jun\n 2023 01:57:52 +0000",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::d2cb:a650:e1ce:2174]) by SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::d2cb:a650:e1ce:2174%3]) with mapi id 15.20.6455.030; Wed, 7 Jun 2023\n 01:57:52 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=Q9dMwUjWgdVKb6QwS5uLWXdqRbKBUBHcOYAOETuQ6iKyMhutAsZ7EcWqfpaFXPwUpTIT+4k9hCvI26EFthL2TtwscnxDUcdAT7nZXA7Jo9V5RlMinXFiKABY1vIwF6Xh6v2nwmtX2AQfzKR0589GlMAJI45+AtfsgWTDAfI9ARXTsQE54UljfQdZGCmNpZIjoHWK+/9vKuARBYFy10tr12odarOWSsP/QPjiWGdq5GaHpc3qxCruSX9elFqqMkHR/80n70jl5LvUL99lVVqWFdVpMgPdfoFwUVcVUYQ5fL+VHiKqgXdt5EFNf7xiwshiapbPQCa/LDXGjFFSW0qKnw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=0ll45wBH6A5M0c91gQ45thAwM1rh4xxT2922M1QQ0NU=;\n b=AQYuC7CR616KnypyqAV5BVwDt6mwvw6fU/ufe7UsXIqqybIMb/SlLaeYVEB6XPQp2Tf6b6pvNdozRzR6dQb87AaYJk0NNMKt19Y6RWnShJv3fTKEASUAsMUn6XjEHny4AtDj6s62v146n4IrooSUUNwdQcoRk8i2gUxbcGN7oYMz2UKy52K05XPn5bz0mvWMt+NJw3OxCELWZdXz6JOf6A9u8whsMZ/ONwFM5lpiXWL3NF5I5K7P89Q87XSh0o7NMoYLBxE2QHcx8Tl/W+oX8YGxpFo4t5kHeh0hKhLxC5yRGTQ+3hbs9RjyYWuDdC0thYBSqHopL//L1ygrpkHAig==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com;\n dkim=pass header.d=corigine.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=0ll45wBH6A5M0c91gQ45thAwM1rh4xxT2922M1QQ0NU=;\n b=KKZ+KhE3WligWn4pEDUSEHmDPt4wt3Gc+iCbHh6b95TitwonNG/gkM8PlgvMHBGq/cagYycZSXWazdNn1Qe4GnWNtrgnzD3b4Dwra+4IN40HA7BsFq8+hfZRmrHD2YKO8bPzknfYPrUvK7SXmFUp2xVBpwoDylT978tEPnOVhW4=",
        "Authentication-Results": "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=corigine.com;",
        "From": "Chaoyong He <chaoyong.he@corigine.com>",
        "To": "dev@dpdk.org",
        "Cc": "oss-drivers@corigine.com, niklas.soderlund@corigine.com,\n Chaoyong He <chaoyong.he@corigine.com>, stable@dpdk.org",
        "Subject": "[PATCH 01/10] net/nfp: fix the problem of rtsym",
        "Date": "Wed,  7 Jun 2023 09:57:00 +0800",
        "Message-Id": "<20230607015709.336420-2-chaoyong.he@corigine.com>",
        "X-Mailer": "git-send-email 2.39.1",
        "In-Reply-To": "<20230607015709.336420-1-chaoyong.he@corigine.com>",
        "References": "<20230607015709.336420-1-chaoyong.he@corigine.com>",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-ClientProxiedBy": "SG2PR02CA0131.apcprd02.prod.outlook.com\n (2603:1096:4:188::6) To SJ0PR13MB5545.namprd13.prod.outlook.com\n (2603:10b6:a03:424::5)",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "SJ0PR13MB5545:EE_|PH7PR13MB5453:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "01850548-f172-4534-976e-08db66fa9a4e",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n Xh88ugmX9iyrVyuT1BuwdVmKZZ3xEb4D9LjPTzVhXIB3lYyzUMT2WDRgIS5o9ZD5EvEnvOkZyN1ap8jYYJwARVQyftAYDw9cGdLUFBVTYrUwmdlRHUzTb9+QwRcdQW0TjvWZYzEt0dbcNtZTKeWkg6RmtibSP0U09oxx5piJ9JLf+PojSNZfeTcSS22GpSi5SOORXUM0bNd4tAV6yAMNWNTsozH9UqF5uS4t4gzCm+fr4b1uTQc2vuMBYEBph/67Y+9fU6Jkfuo6PM6csZ1hQ3svTPm7lq0meTfo+JlmrI/yyxLKjrEDIZgNNKVxFoIGa0ryrlgcj9VywCAwtMpFRu12SzBGXhJmupWthbIGTd8ZaHUuoX/vZHjs0761/MQrklCpDaQUYDNzBpzBf6EfzDe7V0ETgpBk801NJ5itkds4YZgwgXu54EIFmWNzEYzla48ByTaYlFgD7q3yxYdnnjWYAtFlkpv1nnQQlDTwBvJPX9SC9G1E/nyKaj/748ZejZOxOAYiwCxq2Gy8LKgSgFaKFbTOgwEzDLJNgceidzrK1zBokHqJepH3LOt4miH1Vptv8HP3qXupi2LpFjo4xeuoqBWDR49daUaJ31oF4lZRj/Zg0ULSlZ0ng8T/iFpR",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230028)(4636009)(346002)(396003)(376002)(136003)(366004)(39840400004)(451199021)(1076003)(6506007)(26005)(6512007)(36756003)(66574015)(83380400001)(38350700002)(86362001)(38100700002)(186003)(2616005)(8676002)(4326008)(41300700001)(44832011)(6916009)(478600001)(66946007)(66476007)(450100002)(2906002)(316002)(8936002)(5660300002)(6486002)(52116002)(66556008)(6666004);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?nVP9uOTVOmJz8kTjeTxu1N4unz/S?=\n\t=?utf-8?q?koC3wWTWOMBLt9MK7ZdR1FDcBKVmG7LYaLJ8Y7fJYfMURX9AY1xblbP+OdrWz1jUB?=\n\t=?utf-8?q?Wn5ZS1g1g0ScHcaU5e4uIX03zLzvwpndwKb38gw0deaoFgpyVrsXRM+BGEO31wcpA?=\n\t=?utf-8?q?SMZlDGzz0UUC3/TVQxvpvlwLS13qK9HRCEIUklAJ7q8sLrG9FSBOWkJ/xkgXqLyfh?=\n\t=?utf-8?q?LyMwrayONNdNEAjYssaZja//GRErIpb73UZG0IZOcz9pL5jyPsVLqbbVgefOOvgCf?=\n\t=?utf-8?q?7/GOVWaePaPYRIwe0QnhPMC11pkrdkmLz/jXOj3fb/lCGDXvO3f0mhG3bEeSr8EAT?=\n\t=?utf-8?q?qtx8Cq+xszUmJjk2XRI8UwVkY8g1Ai06pP0DoxCXotyPSxXFPW9eB+lh9hD/1MmVK?=\n\t=?utf-8?q?ACeBG+S/HAz7BnYPY0gNhu/Ne/YNGESGGekC9Z40aIf7DiDjuti9SkWaQRoXvXcST?=\n\t=?utf-8?q?2WP9lZXsbUQFwPL6/tH69vUglCDUalfHymFMpFaytW4go9x1KiDNJenvV1KdWc41E?=\n\t=?utf-8?q?RhInnc9KVyyXY1LQdlshQYkaQ3a+rTT3mSQRPgDHLM88b7DSNNSAfqjY+G43LqGpX?=\n\t=?utf-8?q?ml47y0NY17s6OI3255uvVYsgJLJ/7jmYhtbTPt8dnzI7FbSqD/Zyp8/KP2Il+Ip0f?=\n\t=?utf-8?q?NkSdoALJs9Pnqbeph+J8uRYq/s4eECXyOtOix1hOfDeEN4dG8AKHGD/GE8PuF3Se0?=\n\t=?utf-8?q?0w0Ut7KdMR4IWQrIUHBct/kGqF37NtJ3OTBuSgU5M7HOpieuhHr4dk7g+cxhw+AGm?=\n\t=?utf-8?q?ef3mZjXGL90fNsgYU+SZGKHltdGl8/lmTuIj1opmEYN3TV13gvqHI18tPR1vbmlz7?=\n\t=?utf-8?q?5O4nyi9Eg/0wXSdP8+Yq4YldJdrS+feW0OgtbOmG7zfIVxcYZfrKbZCgMoOhIlNjR?=\n\t=?utf-8?q?uXajwUGiHjFqF1CUMZOHpOayfSjd4010UDr+Yx6jonEvXPMxfcaofHKF4njgHjHkv?=\n\t=?utf-8?q?oZ8mrTPbxjMT+QjRIpKSLWFAYeFBF+dCXEndAOxGkk977clCRMfqHd1lI6v0QG/3i?=\n\t=?utf-8?q?LN/g+3sVwm72Bqd5AbmX0VYoeizjnskvgJjiBHkLHJzIGkECNSMPOZuudNwfUxOFh?=\n\t=?utf-8?q?b9V1Gg+nuIb4c+roCenGALJAz3sXcpuWEw1LYgv0t2UV+Bf+4Pzoalq6ZSdbppymt?=\n\t=?utf-8?q?OqKsEzaXOSdj/fGE2NtCMgruslY9OBmf9+PZ2pxx2cf7H0cuiVXXUC4DDtIQ+mBh/?=\n\t=?utf-8?q?46SEQWdPa8/YcIUrAWL4FVdXPKx0Fo4Wp3pgYBT/64me8HE1vbe8cu0jWPVH6MKoT?=\n\t=?utf-8?q?dJko0DELYWQPXwLAub0djTSECDdWw8Zg1+q4/BckawT1lXn0Ubl57blrL/c9qJNqp?=\n\t=?utf-8?q?Ih2Btf4F4HXam7BGDWsYUCNdiGSVOS3mSadgDJir0xMnM8Hfc1AwiS/keGdG7c5dW?=\n\t=?utf-8?q?KyXyKeQJmyhoOZhfWXWsKSBJnrIkKoo6Rnh02Xc/Ws7FF4OpQvVyZ5VvHwa2nk8Qz?=\n\t=?utf-8?q?lu4U54rxq3kYvARClYOTHGhh3013Gu9j0MHHDU4VUJNCCC7U6NI+RuW+cqOpGwSu/?=\n\t=?utf-8?q?7ZGr7cBH/yfBEPtXj9J1N40qajhl9CVfCQ=3D=3D?=",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 01850548-f172-4534-976e-08db66fa9a4e",
        "X-MS-Exchange-CrossTenant-AuthSource": "SJ0PR13MB5545.namprd13.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "07 Jun 2023 01:57:52.3276 (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "fe128f2c-073b-4c20-818e-7246a585940c",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n sR7tAlYCZtKs+4JlBqiEpD4kk2xa9zkpT6HRD1InXtisg7TEcd2l4pS2NetEwwY40u43JG5jFi85ZKJvqcxs7S7gEGXFXu6zE4oizMeC6cQ=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "PH7PR13MB5453",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "The symbol '_abi_flower_extra_features' is in IMEM for NFP4000,\nbut in EMU_CACHE for NFP3800 because which does not have IMEM.\n\nThe original logic can't read symbol from EMU_CACHE, so the probe\nprocess will fail when we try to offload flows use NFP3800.\n\nModify the related data structure and logics to support read symbol\nfrom EMU_CACHE.\n\nFixes: c7e9729da6b5 (\"net/nfp: support CPP\")\nCc: stable@dpdk.org\n\nSigned-off-by: Chaoyong He <chaoyong.he@corigine.com>\nReviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>\n---\n drivers/net/nfp/nfp_ethdev.c          |   4 +-\n drivers/net/nfp/nfpcore/nfp_cpp.h     |   7 +-\n drivers/net/nfp/nfpcore/nfp_cppcore.c |  51 +++++++---\n drivers/net/nfp/nfpcore/nfp_rtsym.c   | 132 ++++++++++++++++++++++++--\n 4 files changed, 171 insertions(+), 23 deletions(-)",
    "diff": "diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c\nindex f73bffc09b..e84d2ac82e 100644\n--- a/drivers/net/nfp/nfp_ethdev.c\n+++ b/drivers/net/nfp/nfp_ethdev.c\n@@ -937,6 +937,7 @@ nfp_pf_init(struct rte_pci_device *pci_dev)\n \tint ret;\n \tint err = 0;\n \tuint64_t addr;\n+\tuint32_t cpp_id;\n \tstruct nfp_cpp *cpp;\n \tenum nfp_app_fw_id app_fw_id;\n \tstruct nfp_pf_dev *pf_dev;\n@@ -1036,7 +1037,8 @@ nfp_pf_init(struct rte_pci_device *pci_dev)\n \t\tgoto pf_cleanup;\n \t}\n \n-\tpf_dev->hw_queues = nfp_cpp_map_area(pf_dev->cpp, 0, 0,\n+\tcpp_id = NFP_CPP_ISLAND_ID(0, NFP_CPP_ACTION_RW, 0, 0);\n+\tpf_dev->hw_queues = nfp_cpp_map_area(pf_dev->cpp, cpp_id,\n \t\t\taddr, NFP_QCP_QUEUE_AREA_SZ,\n \t\t\t&pf_dev->hwqueues_area);\n \tif (pf_dev->hw_queues == NULL) {\ndiff --git a/drivers/net/nfp/nfpcore/nfp_cpp.h b/drivers/net/nfp/nfpcore/nfp_cpp.h\nindex 2441012b95..8f87c09327 100644\n--- a/drivers/net/nfp/nfpcore/nfp_cpp.h\n+++ b/drivers/net/nfp/nfpcore/nfp_cpp.h\n@@ -31,6 +31,9 @@ struct nfp_cpp {\n \t */\n \tuint32_t imb_cat_table[16];\n \n+\t/* MU access type bit offset */\n+\tuint32_t mu_locality_lsb;\n+\n \tint driver_lock_needed;\n };\n \n@@ -455,7 +458,7 @@ struct nfp_cpp_area *nfp_cpp_area_alloc_acquire(struct nfp_cpp *cpp,\n  */\n void nfp_cpp_area_release_free(struct nfp_cpp_area *area);\n \n-uint8_t *nfp_cpp_map_area(struct nfp_cpp *cpp, int domain, int target,\n+uint8_t *nfp_cpp_map_area(struct nfp_cpp *cpp, uint32_t cpp_id,\n \t\t\t   uint64_t addr, unsigned long size,\n \t\t\t   struct nfp_cpp_area **area);\n /*\n@@ -869,4 +872,6 @@ int nfp_cpp_mutex_unlock(struct nfp_cpp_mutex *mutex);\n  */\n int nfp_cpp_mutex_trylock(struct nfp_cpp_mutex *mutex);\n \n+uint32_t nfp_cpp_mu_locality_lsb(struct nfp_cpp *cpp);\n+\n #endif /* !__NFP_CPP_H__ */\ndiff --git a/drivers/net/nfp/nfpcore/nfp_cppcore.c b/drivers/net/nfp/nfpcore/nfp_cppcore.c\nindex 681ec93b96..6daee313ce 100644\n--- a/drivers/net/nfp/nfpcore/nfp_cppcore.c\n+++ b/drivers/net/nfp/nfpcore/nfp_cppcore.c\n@@ -118,6 +118,36 @@ nfp_cpp_area_name(struct nfp_cpp_area *cpp_area)\n \treturn cpp_area->name;\n }\n \n+#define NFP_IMB_TGTADDRESSMODECFG_MODE_of(_x)       (((_x) >> 13) & 0x7)\n+#define NFP_IMB_TGTADDRESSMODECFG_ADDRMODE          RTE_BIT32(12)\n+\n+static int\n+nfp_cpp_set_mu_locality_lsb(struct nfp_cpp *cpp)\n+{\n+\tint ret;\n+\tint mode;\n+\tint addr40;\n+\tuint32_t imbcppat;\n+\n+\timbcppat = cpp->imb_cat_table[NFP_CPP_TARGET_MU];\n+\tmode = NFP_IMB_TGTADDRESSMODECFG_MODE_of(imbcppat);\n+\taddr40 = imbcppat & NFP_IMB_TGTADDRESSMODECFG_ADDRMODE;\n+\n+\tret = nfp_cppat_mu_locality_lsb(mode, addr40);\n+\tif (ret < 0)\n+\t\treturn ret;\n+\n+\tcpp->mu_locality_lsb = ret;\n+\n+\treturn 0;\n+}\n+\n+uint32_t\n+nfp_cpp_mu_locality_lsb(struct nfp_cpp *cpp)\n+{\n+\treturn cpp->mu_locality_lsb;\n+}\n+\n /*\n  * nfp_cpp_area_alloc - allocate a new CPP area\n  * @cpp:    CPP handle\n@@ -142,10 +172,6 @@ nfp_cpp_area_alloc_with_name(struct nfp_cpp *cpp, uint32_t dest,\n \tif (cpp == NULL)\n \t\treturn NULL;\n \n-\t/* CPP bus uses only a 40-bit address */\n-\tif ((address + size) > (1ULL << 40))\n-\t\treturn NULL;\n-\n \t/* Remap from cpp_island to cpp_target */\n \terr = nfp_target_cpp(dest, tmp64, &dest, &tmp64, cpp->imb_cat_table);\n \tif (err < 0)\n@@ -578,6 +604,13 @@ nfp_cpp_alloc(struct rte_pci_device *dev, int driver_lock_needed)\n \t\t}\n \t}\n \n+\terr = nfp_cpp_set_mu_locality_lsb(cpp);\n+\tif (err < 0) {\n+\t\tPMD_DRV_LOG(ERR, \"Can't calculate MU locality bit offset\");\n+\t\tfree(cpp);\n+\t\treturn NULL;\n+\t}\n+\n \treturn cpp;\n }\n \n@@ -809,8 +842,7 @@ __nfp_cpp_model_autodetect(struct nfp_cpp *cpp, uint32_t *model)\n /*\n  * nfp_cpp_map_area() - Helper function to map an area\n  * @cpp:    NFP CPP handler\n- * @domain: CPP domain\n- * @target: CPP target\n+ * @cpp_id: CPP ID\n  * @addr:   CPP address\n  * @size:   Size of the area\n  * @area:   Area handle (output)\n@@ -821,15 +853,12 @@ __nfp_cpp_model_autodetect(struct nfp_cpp *cpp, uint32_t *model)\n  * Return: Pointer to memory mapped area or NULL\n  */\n uint8_t *\n-nfp_cpp_map_area(struct nfp_cpp *cpp, int domain, int target, uint64_t addr,\n+nfp_cpp_map_area(struct nfp_cpp *cpp, uint32_t cpp_id, uint64_t addr,\n \t\t unsigned long size, struct nfp_cpp_area **area)\n {\n \tuint8_t *res;\n-\tuint32_t dest;\n-\n-\tdest = NFP_CPP_ISLAND_ID(target, NFP_CPP_ACTION_RW, 0, domain);\n \n-\t*area = nfp_cpp_area_alloc_acquire(cpp, dest, addr, size);\n+\t*area = nfp_cpp_area_alloc_acquire(cpp, cpp_id, addr, size);\n \tif (*area == NULL)\n \t\tgoto err_eio;\n \ndiff --git a/drivers/net/nfp/nfpcore/nfp_rtsym.c b/drivers/net/nfp/nfpcore/nfp_rtsym.c\nindex 9713605580..343b0d0bcf 100644\n--- a/drivers/net/nfp/nfpcore/nfp_rtsym.c\n+++ b/drivers/net/nfp/nfpcore/nfp_rtsym.c\n@@ -211,6 +211,113 @@ nfp_rtsym_lookup(struct nfp_rtsym_table *rtbl, const char *name)\n \treturn NULL;\n }\n \n+static uint64_t\n+nfp_rtsym_size(const struct nfp_rtsym *sym)\n+{\n+\tswitch (sym->type) {\n+\tcase NFP_RTSYM_TYPE_NONE:\n+\t\tPMD_DRV_LOG(ERR, \"rtsym '%s': type NONE\", sym->name);\n+\t\treturn 0;\n+\tcase NFP_RTSYM_TYPE_OBJECT:    /* Fall through */\n+\tcase NFP_RTSYM_TYPE_FUNCTION:\n+\t\treturn sym->size;\n+\tcase NFP_RTSYM_TYPE_ABS:\n+\t\treturn sizeof(uint64_t);\n+\tdefault:\n+\t\tPMD_DRV_LOG(ERR, \"rtsym '%s': unknown type: %d\", sym->name, sym->type);\n+\t\treturn 0;\n+\t}\n+}\n+\n+static int\n+nfp_rtsym_to_dest(struct nfp_cpp *cpp,\n+\t\tconst struct nfp_rtsym *sym,\n+\t\tuint8_t action,\n+\t\tuint8_t token,\n+\t\tuint64_t offset,\n+\t\tuint32_t *cpp_id,\n+\t\tuint64_t *addr)\n+{\n+\tif (sym->type != NFP_RTSYM_TYPE_OBJECT) {\n+\t\tPMD_DRV_LOG(ERR, \"rtsym '%s': direct access to non-object rtsym\",\n+\t\t\t\tsym->name);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\t*addr = sym->addr + offset;\n+\n+\tif (sym->target >= 0) {\n+\t\t*cpp_id = NFP_CPP_ISLAND_ID(sym->target, action, token, sym->domain);\n+\t} else if (sym->target == NFP_RTSYM_TARGET_EMU_CACHE) {\n+\t\tint locality_off = nfp_cpp_mu_locality_lsb(cpp);\n+\n+\t\t*addr &= ~(NFP_MU_ADDR_ACCESS_TYPE_MASK << locality_off);\n+\t\t*addr |= NFP_MU_ADDR_ACCESS_TYPE_DIRECT << locality_off;\n+\n+\t\t*cpp_id = NFP_CPP_ISLAND_ID(NFP_CPP_TARGET_MU, action, token,\n+\t\t\t\tsym->domain);\n+\t} else {\n+\t\tPMD_DRV_LOG(ERR, \"rtsym '%s': unhandled target encoding: %d\",\n+\t\t\t\tsym->name, sym->target);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static int\n+nfp_rtsym_readl(struct nfp_cpp *cpp,\n+\t\tconst struct nfp_rtsym *sym,\n+\t\tuint8_t action,\n+\t\tuint8_t token,\n+\t\tuint64_t offset,\n+\t\tuint32_t *value)\n+{\n+\tint ret;\n+\tuint64_t addr;\n+\tuint32_t cpp_id;\n+\n+\tif (offset + 4 > nfp_rtsym_size(sym)) {\n+\t\tPMD_DRV_LOG(ERR, \"rtsym '%s': readl out of bounds\", sym->name);\n+\t\treturn -ENXIO;\n+\t}\n+\n+\tret = nfp_rtsym_to_dest(cpp, sym, action, token, offset, &cpp_id, &addr);\n+\tif (ret != 0)\n+\t\treturn ret;\n+\n+\treturn nfp_cpp_readl(cpp, cpp_id, addr, value);\n+}\n+\n+static int\n+nfp_rtsym_readq(struct nfp_cpp *cpp,\n+\t\tconst struct nfp_rtsym *sym,\n+\t\tuint8_t action,\n+\t\tuint8_t token,\n+\t\tuint64_t offset,\n+\t\tuint64_t *value)\n+{\n+\tint ret;\n+\tuint64_t addr;\n+\tuint32_t cpp_id;\n+\n+\tif (offset + 8 > nfp_rtsym_size(sym)) {\n+\t\tPMD_DRV_LOG(ERR, \"rtsym '%s': readq out of bounds\", sym->name);\n+\t\treturn -ENXIO;\n+\t}\n+\n+\tif (sym->type == NFP_RTSYM_TYPE_ABS) {\n+\t\t*value = sym->addr;\n+\t\treturn 0;\n+\t}\n+\n+\tret = nfp_rtsym_to_dest(cpp, sym, action, token, offset, &cpp_id, &addr);\n+\tif (ret != 0)\n+\t\treturn ret;\n+\n+\treturn nfp_cpp_readq(cpp, cpp_id, addr, value);\n+}\n+\n /*\n  * nfp_rtsym_read_le() - Read a simple unsigned scalar value from symbol\n  * @rtbl:\tNFP RTsym table\n@@ -227,7 +334,7 @@ uint64_t\n nfp_rtsym_read_le(struct nfp_rtsym_table *rtbl, const char *name, int *error)\n {\n \tconst struct nfp_rtsym *sym;\n-\tuint32_t val32, id;\n+\tuint32_t val32;\n \tuint64_t val;\n \tint err;\n \n@@ -237,17 +344,13 @@ nfp_rtsym_read_le(struct nfp_rtsym_table *rtbl, const char *name, int *error)\n \t\tgoto exit;\n \t}\n \n-\tid = NFP_CPP_ISLAND_ID(sym->target, NFP_CPP_ACTION_RW, 0, sym->domain);\n-\n-\tPMD_DRV_LOG(DEBUG, \"Reading symbol %s with size %\" PRIu64 \" at %\" PRIx64 \"\",\n-\t\tname, sym->size, sym->addr);\n \tswitch (sym->size) {\n \tcase 4:\n-\t\terr = nfp_cpp_readl(rtbl->cpp, id, sym->addr, &val32);\n+\t\terr = nfp_rtsym_readl(rtbl->cpp, sym, NFP_CPP_ACTION_RW, 0, 0, &val32);\n \t\tval = val32;\n \t\tbreak;\n \tcase 8:\n-\t\terr = nfp_cpp_readq(rtbl->cpp, id, sym->addr, &val);\n+\t\terr = nfp_rtsym_readq(rtbl->cpp, sym, NFP_CPP_ACTION_RW, 0, 0, &val);\n \t\tbreak;\n \tdefault:\n \t\tPMD_DRV_LOG(ERR, \"rtsym '%s' unsupported size: %\" PRId64,\n@@ -272,8 +375,11 @@ uint8_t *\n nfp_rtsym_map(struct nfp_rtsym_table *rtbl, const char *name,\n \t      unsigned int min_size, struct nfp_cpp_area **area)\n {\n-\tconst struct nfp_rtsym *sym;\n+\tint ret;\n \tuint8_t *mem;\n+\tuint64_t addr;\n+\tuint32_t cpp_id;\n+\tconst struct nfp_rtsym *sym;\n \n \tPMD_DRV_LOG(DEBUG, \"mapping symbol %s\", name);\n \tsym = nfp_rtsym_lookup(rtbl, name);\n@@ -282,14 +388,20 @@ nfp_rtsym_map(struct nfp_rtsym_table *rtbl, const char *name,\n \t\treturn NULL;\n \t}\n \n+\tret = nfp_rtsym_to_dest(rtbl->cpp, sym, NFP_CPP_ACTION_RW, 0, 0,\n+\t\t\t&cpp_id, &addr);\n+\tif (ret != 0) {\n+\t\tPMD_DRV_LOG(ERR, \"rtsym '%s': mapping failed\", name);\n+\t\treturn NULL;\n+\t}\n+\n \tif (sym->size < min_size) {\n \t\tPMD_DRV_LOG(ERR, \"Symbol %s too small (%\" PRIu64 \" < %u)\", name,\n \t\t\tsym->size, min_size);\n \t\treturn NULL;\n \t}\n \n-\tmem = nfp_cpp_map_area(rtbl->cpp, sym->domain, sym->target, sym->addr,\n-\t\t\t       sym->size, area);\n+\tmem = nfp_cpp_map_area(rtbl->cpp, cpp_id, addr, sym->size, area);\n \tif (mem == NULL) {\n \t\tPMD_INIT_LOG(ERR, \"Failed to map symbol %s\", name);\n \t\treturn NULL;\n",
    "prefixes": [
        "01/10"
    ]
}