get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1992872,
    "url": "http://patchwork.ozlabs.org/api/patches/1992872/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20241004163042.85922-9-philmd@linaro.org/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20241004163042.85922-9-philmd@linaro.org>",
    "list_archive_url": null,
    "date": "2024-10-04T16:30:24",
    "name": "[v2,08/25] hw/i386: Use explicit little-endian LD/ST API",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "65f0a325f5962e4481e613775c6b787c5a406937",
    "submitter": {
        "id": 85046,
        "url": "http://patchwork.ozlabs.org/api/people/85046/?format=api",
        "name": "Philippe Mathieu-Daudé",
        "email": "philmd@linaro.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20241004163042.85922-9-philmd@linaro.org/mbox/",
    "series": [
        {
            "id": 426623,
            "url": "http://patchwork.ozlabs.org/api/series/426623/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=426623",
            "date": "2024-10-04T16:30:18",
            "name": "misc: Use explicit endian LD/ST API",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/426623/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1992872/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1992872/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=KyU2KUAQ;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4XKvJT0G1Vz1xtH\n\tfor <incoming@patchwork.ozlabs.org>; Sat,  5 Oct 2024 02:34:17 +1000 (AEST)",
            "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1swlEo-00073R-2Y; Fri, 04 Oct 2024 12:33:06 -0400",
            "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1swlEf-0006UG-I7\n for qemu-devel@nongnu.org; Fri, 04 Oct 2024 12:32:57 -0400",
            "from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1swlEb-0005ns-Co\n for qemu-devel@nongnu.org; Fri, 04 Oct 2024 12:32:57 -0400",
            "by mail-lf1-x12f.google.com with SMTP id\n 2adb3069b0e04-53997328633so3376208e87.3\n for <qemu-devel@nongnu.org>; Fri, 04 Oct 2024 09:32:51 -0700 (PDT)",
            "from localhost.localdomain ([91.223.100.150])\n by smtp.gmail.com with ESMTPSA id\n 2adb3069b0e04-539afec1096sm2073e87.8.2024.10.04.09.32.44\n (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);\n Fri, 04 Oct 2024 09:32:49 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1728059570; x=1728664370; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=jZ9Y3dHzcheJ9MIl5G4LIQKrlHzrSEJ4E+LpPuujorA=;\n b=KyU2KUAQ25rGA/7hl5DZJFVaMVukNyEetIlZ46G6/Qe+gtkicCP4LbHlZxiYR2wIFS\n IzfX9HyhwTjC6QnC5fqIzUhN5Swb36E5jez2XTE2LGEcMjXrGKEnpYYHeNoyIlbo4vgV\n 3AzngzeOwPYjRx+tp8jzGTK1AICOSrX8RIb3/OHDw2GOfWgdxcwoZnDLh3Kg8m5+/kIL\n e+/AnFK1psOXT34vChOohtJwQuiUVXCBA6WIZ+SgsqrdTYXr9uhBpR0/nRb8MqUPdUGM\n a93HufKtqS/J1PI/QGGEOGVdVbQneyyR14OzlvFlLbiLFAvM6pvfZkc1DCkVGgtw+yhY\n Uz7Q==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1728059570; x=1728664370;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=jZ9Y3dHzcheJ9MIl5G4LIQKrlHzrSEJ4E+LpPuujorA=;\n b=HU6hZfCuVmCIJ4gCUZJn+gd+c+oLq+tO47pMYvKIr3pD3MTwSijnBNUQUVWydcLUea\n LrrGbtwFjbYS1zIV64VemJFK2Iugy3Wnkv7EGuIykCG2+GicD6Prcsyv2IsiRfaV0avY\n ZTEQiL9QbZ05r9VJUdMCAj9inRtr4zSTXqBbtsq0AjpPQS9f1aTGTHIdCiPgsc2lllLH\n BAAYEwcR2b1m0ClDlHWE6hxlriQ73UeKE4o8bxyyDi5fcul8wK4VOYvFk7Ims/jF/LHx\n Mj4EZxzwxafx4WY3TgWLw7Z8gYepapDImSvfH53vx0PK1xi9SDgvGoMIROdA6qB3kASB\n Ir3A==",
        "X-Gm-Message-State": "AOJu0YyD6Eg3lkD69W2UOliXpA01gJAU5iNWNGVwbh87hwVVGnNGSM6d\n DaJxxpevGuPbQVciiYSDfAX1LKalg7ZtBmlSt3J3t2ldY77apN5Z5Y3XrpqCV1korH4MWWPsTml\n ag6PD2A==",
        "X-Google-Smtp-Source": "\n AGHT+IHO/h9QS0QGe+oGvo2tEB19fT95aY4PEqiVdzvqtaeaTRCYxnudY6thA7Ns5FFkcfpZXrtGFw==",
        "X-Received": "by 2002:a05:6512:ad2:b0:539:905c:15c5 with SMTP id\n 2adb3069b0e04-539ab87df0fmr3562367e87.35.1728059569747;\n Fri, 04 Oct 2024 09:32:49 -0700 (PDT)",
        "From": "=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>",
        "To": "qemu-devel@nongnu.org",
        "Cc": "qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,\n Thomas Huth <thuth@redhat.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n Pierrick Bouvier <pierrick.bouvier@linaro.org>, qemu-ppc@nongnu.org,\n\t=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>",
        "Subject": "[PATCH v2 08/25] hw/i386: Use explicit little-endian LD/ST API",
        "Date": "Fri,  4 Oct 2024 13:30:24 -0300",
        "Message-ID": "<20241004163042.85922-9-philmd@linaro.org>",
        "X-Mailer": "git-send-email 2.45.2",
        "In-Reply-To": "<20241004163042.85922-1-philmd@linaro.org>",
        "References": "<20241004163042.85922-1-philmd@linaro.org>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Received-SPF": "pass client-ip=2a00:1450:4864:20::12f;\n envelope-from=philmd@linaro.org; helo=mail-lf1-x12f.google.com",
        "X-Spam_score_int": "-20",
        "X-Spam_score": "-2.1",
        "X-Spam_bar": "--",
        "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no",
        "X-Spam_action": "no action",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"
    },
    "content": "The x86 architecture uses little endianness. Directly use\nthe little-endian LD/ST API.\n\nMechanical change using:\n\n  $ end=le; \\\n    for acc in uw w l q tul; do \\\n      sed -i -e \"s/ld${acc}_p(/ld${acc}_${end}_p(/\" \\\n             -e \"s/st${acc}_p(/st${acc}_${end}_p(/\" \\\n        $(git grep -wlE '(ld|st)t?u?[wlq]_p' hw/i386/); \\\n    done\n\nSigned-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>\n---\n hw/i386/multiboot.c  | 36 ++++++++++++++++++------------------\n hw/i386/x86-common.c | 26 +++++++++++++-------------\n 2 files changed, 31 insertions(+), 31 deletions(-)",
    "diff": "diff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c\nindex 3332712ab35..ba4ead5270c 100644\n--- a/hw/i386/multiboot.c\n+++ b/hw/i386/multiboot.c\n@@ -133,9 +133,9 @@ static void mb_add_mod(MultibootState *s,\n \n     p = (char *)s->mb_buf + s->offset_mbinfo + MB_MOD_SIZE * s->mb_mods_count;\n \n-    stl_p(p + MB_MOD_START,   start);\n-    stl_p(p + MB_MOD_END,     end);\n-    stl_p(p + MB_MOD_CMDLINE, cmdline_phys);\n+    stl_le_p(p + MB_MOD_START,   start);\n+    stl_le_p(p + MB_MOD_END,     end);\n+    stl_le_p(p + MB_MOD_CMDLINE, cmdline_phys);\n \n     mb_debug(\"mod%02d: \"HWADDR_FMT_plx\" - \"HWADDR_FMT_plx,\n              s->mb_mods_count, start, end);\n@@ -168,9 +168,9 @@ int load_multiboot(X86MachineState *x86ms,\n     /* Ok, let's see if it is a multiboot image.\n        The header is 12x32bit long, so the latest entry may be 8192 - 48. */\n     for (i = 0; i < (8192 - 48); i += 4) {\n-        if (ldl_p(header+i) == 0x1BADB002) {\n-            uint32_t checksum = ldl_p(header+i+8);\n-            flags = ldl_p(header+i+4);\n+        if (ldl_le_p(header+i) == 0x1BADB002) {\n+            uint32_t checksum = ldl_le_p(header+i+8);\n+            flags = ldl_le_p(header+i+4);\n             checksum += flags;\n             checksum += (uint32_t)0x1BADB002;\n             if (!checksum) {\n@@ -223,11 +223,11 @@ int load_multiboot(X86MachineState *x86ms,\n                  mb_kernel_size, (size_t)mh_entry_addr);\n     } else {\n         /* Valid if mh_flags sets MULTIBOOT_HEADER_HAS_ADDR. */\n-        uint32_t mh_header_addr = ldl_p(header+i+12);\n-        uint32_t mh_load_end_addr = ldl_p(header+i+20);\n-        uint32_t mh_bss_end_addr = ldl_p(header+i+24);\n+        uint32_t mh_header_addr = ldl_le_p(header+i+12);\n+        uint32_t mh_load_end_addr = ldl_le_p(header+i+20);\n+        uint32_t mh_bss_end_addr = ldl_le_p(header+i+24);\n \n-        mh_load_addr = ldl_p(header+i+16);\n+        mh_load_addr = ldl_le_p(header+i+16);\n         if (mh_header_addr < mh_load_addr) {\n             error_report(\"invalid load_addr address\");\n             exit(1);\n@@ -239,7 +239,7 @@ int load_multiboot(X86MachineState *x86ms,\n \n         uint32_t mb_kernel_text_offset = i - (mh_header_addr - mh_load_addr);\n         uint32_t mb_load_size = 0;\n-        mh_entry_addr = ldl_p(header+i+28);\n+        mh_entry_addr = ldl_le_p(header+i+28);\n \n         if (mh_load_end_addr) {\n             if (mh_load_end_addr < mh_load_addr) {\n@@ -364,22 +364,22 @@ int load_multiboot(X86MachineState *x86ms,\n \n     /* Commandline support */\n     kcmdline = g_strdup_printf(\"%s %s\", kernel_filename, kernel_cmdline);\n-    stl_p(bootinfo + MBI_CMDLINE, mb_add_cmdline(&mbs, kcmdline));\n+    stl_le_p(bootinfo + MBI_CMDLINE, mb_add_cmdline(&mbs, kcmdline));\n \n-    stl_p(bootinfo + MBI_BOOTLOADER, mb_add_bootloader(&mbs, bootloader_name));\n+    stl_le_p(bootinfo + MBI_BOOTLOADER, mb_add_bootloader(&mbs, bootloader_name));\n \n-    stl_p(bootinfo + MBI_MODS_ADDR,  mbs.mb_buf_phys + mbs.offset_mbinfo);\n-    stl_p(bootinfo + MBI_MODS_COUNT, mbs.mb_mods_count); /* mods_count */\n+    stl_le_p(bootinfo + MBI_MODS_ADDR,  mbs.mb_buf_phys + mbs.offset_mbinfo);\n+    stl_le_p(bootinfo + MBI_MODS_COUNT, mbs.mb_mods_count); /* mods_count */\n \n     /* the kernel is where we want it to be now */\n-    stl_p(bootinfo + MBI_FLAGS, MULTIBOOT_FLAGS_MEMORY\n+    stl_le_p(bootinfo + MBI_FLAGS, MULTIBOOT_FLAGS_MEMORY\n                                 | MULTIBOOT_FLAGS_BOOT_DEVICE\n                                 | MULTIBOOT_FLAGS_CMDLINE\n                                 | MULTIBOOT_FLAGS_MODULES\n                                 | MULTIBOOT_FLAGS_MMAP\n                                 | MULTIBOOT_FLAGS_BOOTLOADER);\n-    stl_p(bootinfo + MBI_BOOT_DEVICE, 0x8000ffff); /* XXX: use the -boot switch? */\n-    stl_p(bootinfo + MBI_MMAP_ADDR,   ADDR_E820_MAP);\n+    stl_le_p(bootinfo + MBI_BOOT_DEVICE, 0x8000ffff); /* XXX: use the -boot switch? */\n+    stl_le_p(bootinfo + MBI_MMAP_ADDR,   ADDR_E820_MAP);\n \n     mb_debug(\"multiboot: entry_addr = %#x\", mh_entry_addr);\n     mb_debug(\"           mb_buf_phys   = \"HWADDR_FMT_plx, mbs.mb_buf_phys);\ndiff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c\nindex 992ea1f25e9..b86c38212ea 100644\n--- a/hw/i386/x86-common.c\n+++ b/hw/i386/x86-common.c\n@@ -586,7 +586,7 @@ static bool load_elfboot(const char *kernel_filename,\n     uint64_t elf_low, elf_high;\n     int kernel_size;\n \n-    if (ldl_p(header) != 0x464c457f) {\n+    if (ldl_le_p(header) != 0x464c457f) {\n         return false; /* no elfboot */\n     }\n \n@@ -669,8 +669,8 @@ void x86_load_linux(X86MachineState *x86ms,\n      * kernel protocol version.\n      * Please see https://www.kernel.org/doc/Documentation/x86/boot.txt\n      */\n-    if (ldl_p(header + 0x202) == 0x53726448) /* Magic signature \"HdrS\" */ {\n-        protocol = lduw_p(header + 0x206);\n+    if (ldl_le_p(header + 0x202) == 0x53726448) /* Magic signature \"HdrS\" */ {\n+        protocol = lduw_le_p(header + 0x206);\n     } else {\n         /*\n          * This could be a multiboot kernel. If it is, let's stop treating it\n@@ -762,7 +762,7 @@ void x86_load_linux(X86MachineState *x86ms,\n \n     /* highest address for loading the initrd */\n     if (protocol >= 0x20c &&\n-        lduw_p(header + 0x236) & XLF_CAN_BE_LOADED_ABOVE_4G) {\n+        lduw_le_p(header + 0x236) & XLF_CAN_BE_LOADED_ABOVE_4G) {\n         /*\n          * Linux has supported initrd up to 4 GB for a very long time (2007,\n          * long before XLF_CAN_BE_LOADED_ABOVE_4G which was added in 2013),\n@@ -781,7 +781,7 @@ void x86_load_linux(X86MachineState *x86ms,\n          */\n         initrd_max = UINT32_MAX;\n     } else if (protocol >= 0x203) {\n-        initrd_max = ldl_p(header + 0x22c);\n+        initrd_max = ldl_le_p(header + 0x22c);\n     } else {\n         initrd_max = 0x37ffffff;\n     }\n@@ -797,10 +797,10 @@ void x86_load_linux(X86MachineState *x86ms,\n     sev_load_ctx.cmdline_size = strlen(kernel_cmdline) + 1;\n \n     if (protocol >= 0x202) {\n-        stl_p(header + 0x228, cmdline_addr);\n+        stl_le_p(header + 0x228, cmdline_addr);\n     } else {\n-        stw_p(header + 0x20, 0xA33F);\n-        stw_p(header + 0x22, cmdline_addr - real_addr);\n+        stw_le_p(header + 0x20, 0xA33F);\n+        stw_le_p(header + 0x22, cmdline_addr - real_addr);\n     }\n \n     /* handle vga= parameter */\n@@ -824,7 +824,7 @@ void x86_load_linux(X86MachineState *x86ms,\n                 exit(1);\n             }\n         }\n-        stw_p(header + 0x1fa, video_mode);\n+        stw_le_p(header + 0x1fa, video_mode);\n     }\n \n     /* loader type */\n@@ -839,7 +839,7 @@ void x86_load_linux(X86MachineState *x86ms,\n     /* heap */\n     if (protocol >= 0x201) {\n         header[0x211] |= 0x80; /* CAN_USE_HEAP */\n-        stw_p(header + 0x224, cmdline_addr - real_addr - 0x200);\n+        stw_le_p(header + 0x224, cmdline_addr - real_addr - 0x200);\n     }\n \n     /* load initrd */\n@@ -879,8 +879,8 @@ void x86_load_linux(X86MachineState *x86ms,\n         sev_load_ctx.initrd_data = initrd_data;\n         sev_load_ctx.initrd_size = initrd_size;\n \n-        stl_p(header + 0x218, initrd_addr);\n-        stl_p(header + 0x21c, initrd_size);\n+        stl_le_p(header + 0x218, initrd_addr);\n+        stl_le_p(header + 0x21c, initrd_size);\n     }\n \n     /* load kernel and setup */\n@@ -926,7 +926,7 @@ void x86_load_linux(X86MachineState *x86ms,\n         kernel_size = setup_data_offset + sizeof(struct setup_data) + dtb_size;\n         kernel = g_realloc(kernel, kernel_size);\n \n-        stq_p(header + 0x250, prot_addr + setup_data_offset);\n+        stq_le_p(header + 0x250, prot_addr + setup_data_offset);\n \n         setup_data = (struct setup_data *)(kernel + setup_data_offset);\n         setup_data->next = 0;\n",
    "prefixes": [
        "v2",
        "08/25"
    ]
}