Show a cover letter.

GET /api/covers/55668/?format=api
Content-Type: application/json
Vary: Accept

    "id": 55668,
    "url": "",
    "web_url": "",
    "project": {
        "id": 1,
        "url": "",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "",
        "list_email": "",
        "web_url": "",
        "scm_url": "git://",
        "webscm_url": ""
    "msgid": "<>",
    "date": "2019-06-30T16:21:11",
    "name": "[RFC,0/5] use WFE for locks and ring on aarch64",
    "submitter": {
        "id": 1018,
        "url": "",
        "name": "Gavin Hu",
        "email": ""
    "mbox": "",
    "series": [
            "id": 5234,
            "url": "",
            "web_url": "",
            "date": "2019-06-30T16:21:11",
            "name": "use WFE for locks and ring on aarch64",
            "version": 1,
            "mbox": ""
    "comments": "",
    "headers": {
        "X-Mailer": "git-send-email 2.7.4",
        "List-Id": "DPDK patches and discussions <>",
        "From": "Gavin Hu <>",
        "List-Help": "<>",
        "Date": "Mon,  1 Jul 2019 00:21:11 +0800",
        "X-BeenThere": "",
        "X-Mailman-Version": "2.1.15",
        "Delivered-To": "",
        "Cc": ",,,\n\,,\n\,,",
        "To": "",
        "Errors-To": "",
        "Sender": "\"dev\" <>",
        "Return-Path": "<>",
        "List-Subscribe": "<>,\n\t<>",
        "List-Post": "<>",
        "Received": [
            "from [] (localhost [])\n\tby (Postfix) with ESMTP id D15477CBC;\n\tSun, 30 Jun 2019 18:21:41 +0200 (CEST)",
            "from ( [])\n\tby (Postfix) with ESMTP id 34E785689\n\tfor <>; Sun, 30 Jun 2019 18:21:40 +0200 (CEST)",
            "from (unknown [])\n\tby (Postfix) with ESMTP id 4832B344;\n\tSun, 30 Jun 2019 09:21:39 -0700 (PDT)",
            "from\n\t( [])\n\tby (Postfix) with ESMTPA id\n\t6317F3F718; Sun, 30 Jun 2019 09:21:37 -0700 (PDT)"
        "List-Archive": "<>",
        "Subject": "[dpdk-dev] [RFC 0/5] use WFE for locks and ring on aarch64",
        "Message-Id": "<>",
        "Precedence": "list",
        "List-Unsubscribe": "<>,\n\t<>",
        "X-Original-To": ""
    "content": "DPDK has multiple use cases where the core repeatedly polls a location in\nmemory. This polling results in many cache and memory transactions.\n\nArm architecture provides WFE (Wait For Event) instruction, which allows\nthe cpu core to enter a low power state until woken up by the update to the\nmemory location being polled. Thus reducing the cache and memory\ntransactions.\n\nx86 has the PAUSE hint instruction to reduce such overhead.\n\nThe rte_wait_until_equal_xxx APIs abstract the functionality of 'polling\nfor a memory location to become equal to a given value'.\n\nFor non-Arm platforms, these APIs are just wrappers around do-while loop\nwith rte_pause, so there are no performance differences.\n\nFor Arm platforms, use of WFE can be configured using CONFIG_RTE_USE_WFE\noption. It is disabled by default.\n\nCurrently, use of WFE is supported only for aarch64 platforms. armv7\nplatforms do support the WFE instruction, but they require explicit wake up\nevents(sev) and are less performannt.\n\nTesting shows that, performance varies across different platforms, with\nsome showing degradation.\n\nCONFIG_RTE_USE_WFE should be enabled depending on the performance on the\ntarget platforms.\n\nGavin Hu (5):\n  eal: add the APIs to wait until equal\n  ticketlock: use new API to reduce contention on aarch64\n  ring: use wfe to wait for ring tail update on aarch64\n  spinlock: use wfe to reduce contention on aarch64\n  config: add WFE config entry for aarch64\n\n config/arm/                             |   1 +\n config/common_armv8a_linux                         |   6 +\n .../common/include/arch/arm/rte_pause_64.h         | 143 +++++++++++++++++++++\n .../common/include/arch/arm/rte_spinlock.h         |  25 ++++\n lib/librte_eal/common/include/generic/rte_pause.h  |  20 +++\n .../common/include/generic/rte_spinlock.h          |   2 +-\n .../common/include/generic/rte_ticketlock.h        |   4 +-\n lib/librte_ring/rte_ring_c11_mem.h                 |   5 +-\n lib/librte_ring/rte_ring_generic.h                 |   4 +-\n 9 files changed, 203 insertions(+), 7 deletions(-)"