From: Igor Mammedov <imammedo@redhat.com>
To: Shannon Zhao <zhaoshenglong@huawei.com>
Cc: peter.maydell@linaro.org, hangaohuai@huawei.com, mst@redhat.com,
a.spyridakis@virtualopensystems.com, claudio.fontana@huawei.com,
qemu-devel@nongnu.org, peter.huangpeng@huawei.com,
alex.bennee@linaro.org, hanjun.guo@linaro.org,
pbonzini@redhat.com, lersek@redhat.com,
christoffer.dall@linaro.org, shannon.zhao@linaro.org
Subject: Re: [Qemu-devel] [PATCH v5 13/20] hw/acpi/aml-build: Add ToUUID macro
Date: Tue, 28 Apr 2015 08:54:12 +0200 [thread overview]
Message-ID: <20150428085412.5d215d01@nial.brq.redhat.com> (raw)
In-Reply-To: <1429104309-3844-14-git-send-email-zhaoshenglong@huawei.com>
On Wed, 15 Apr 2015 21:25:02 +0800
Shannon Zhao <zhaoshenglong@huawei.com> wrote:
> From: Shannon Zhao <shannon.zhao@linaro.org>
>
> Add ToUUID macro, this is useful for generating PCIe ACPI table.
>
> Signed-off-by: Shannon Zhao <zhaoshenglong@huawei.com>
> Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
> ---
> hw/acpi/aml-build.c | 40 ++++++++++++++++++++++++++++++++++++++++
> include/hw/acpi/aml-build.h | 1 +
> 2 files changed, 41 insertions(+)
>
> diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> index b99bb13..316d5a5 100644
> --- a/hw/acpi/aml-build.c
> +++ b/hw/acpi/aml-build.c
> @@ -25,6 +25,7 @@
> #include <stdbool.h>
> #include <string.h>
> #include "hw/acpi/aml-build.h"
> +#include "qemu-common.h"
why do you need this hunk?
> #include "qemu/bswap.h"
> #include "qemu/bitops.h"
> #include "hw/acpi/bios-linker-loader.h"
> @@ -948,6 +949,45 @@ Aml *aml_qword_memory(AmlDecode dec, AmlMinFixed min_fixed,
> addr_trans, len, flags);
> }
>
> +/*
> + * ACPI 3.0: 17.5.124 ToUUID (Convert String to UUID Macro)
> + * e.g. UUID: E5C937D0-3553-4d7a-9117-EA4D19C3434D
> + * call aml_touuid("E5C937D0-3553-4d7a-9117-EA4D19C3434D");
> + */
> +Aml *aml_touuid(const char *uuid)
> +{
> + int i;
> + long int val;
unsigned long long int ???
> + char *end;
> + const char *start = uuid;
> + Aml *UUID = aml_buffer();
s/UUID/var/
> +
> + val = strtol(start, &end, 16);
may be use strtoull()
> + g_assert((end - start) == 8);
> + build_append_int_noprefix(UUID->buf, val, 4);
> + start = end + 1;
> + val = strtol(start, &end, 16);
> + g_assert((end - start) == 4);
> + build_append_int_noprefix(UUID->buf, val, 2);
> + start = end + 1;
> + val = strtol(start, &end, 16);
> + g_assert((end - start) == 4);
> + build_append_int_noprefix(UUID->buf, val, 2);
this corresponds to -gghh- part of UUID according to spec
it would be better if you add pattern mentioned in spec
in this function and then put comments marking places
which handle specific part of it.
> + start = end + 1;
> + val = strtol(start, &end, 16);
> + g_assert((end - start) == 4);
> + build_append_int_noprefix(UUID->buf, (val >> 8) & 0xFF, 1);
> + build_append_int_noprefix(UUID->buf, val & 0xFF, 1);
add comment to it that according to spec bytes here are flipped around
that's why special treatment.
> + start = end + 1;
> + val = strtol(start, &end, 16);
> + g_assert((end - start) == 12);
> + for (i = 40; i >= 0; i -= 8) {
> + build_append_int_noprefix(UUID->buf, (val >> i) & 0xFF, 1);
> + }
> +
btw:
whole thing might be simpler if an intermediate conversion is avoided,
just pack buffer as in spec byte by byte:
/* format: aabbccdd-eeff-gghh-iijj-kkllmmnnoopp */
assert(strlen(uuid) == ...);
build_append_byte(var->buf, HEX2BYTE(uuid[3]); /* dd */
build_append_byte(var->buf, HEX2BYTE(uuid[2]); /* cc */
...
easy to validate just by looking at "UUID Buffer Format" table in spec
> + return UUID;
> +}
> +
> void
> build_header(GArray *linker, GArray *table_data,
> AcpiTableHeader *h, const char *sig, int len, uint8_t rev)
> diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h
> index d1b9fe7..b41fd0c 100644
> --- a/include/hw/acpi/aml-build.h
> +++ b/include/hw/acpi/aml-build.h
> @@ -259,6 +259,7 @@ Aml *aml_buffer(void);
> Aml *aml_resource_template(void);
> Aml *aml_field(const char *name, AmlFieldFlags flags);
> Aml *aml_varpackage(uint32_t num_elements);
> +Aml *aml_touuid(const char *uuid);
>
> void
> build_header(GArray *linker, GArray *table_data,
next prev parent reply other threads:[~2015-04-28 6:54 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-15 13:24 [Qemu-devel] [PATCH v5 00/20] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM Shannon Zhao
2015-04-15 13:24 ` [Qemu-devel] [PATCH v5 01/20] hw/i386: Move ACPI header definitions in an arch-independent location Shannon Zhao
2015-04-15 13:24 ` [Qemu-devel] [PATCH v5 02/20] hw/i386/acpi-build: move generic acpi building helpers into dedictated file Shannon Zhao
2015-04-15 13:24 ` [Qemu-devel] [PATCH v5 03/20] hw/arm/virt-acpi-build: Basic framework for building ACPI tables on ARM Shannon Zhao
2015-04-15 13:24 ` [Qemu-devel] [PATCH v5 04/20] hw/acpi/aml-build: Add aml_memory32_fixed() term Shannon Zhao
2015-04-15 13:24 ` [Qemu-devel] [PATCH v5 05/20] hw/acpi/aml-build: Add aml_interrupt() term Shannon Zhao
2015-04-15 13:24 ` [Qemu-devel] [PATCH v5 06/20] hw/arm/virt-acpi-build: Generation of DSDT table for virt devices Shannon Zhao
2015-05-04 9:58 ` Igor Mammedov
2015-05-04 11:11 ` Shannon Zhao
2015-05-04 13:04 ` Igor Mammedov
2015-04-15 13:24 ` [Qemu-devel] [PATCH v5 07/20] hw/arm/virt-acpi-build: Generate FADT table and update ACPI headers Shannon Zhao
2015-04-15 13:24 ` [Qemu-devel] [PATCH v5 08/20] hw/arm/virt-acpi-build: Generate MADT table Shannon Zhao
2015-05-04 10:21 ` Igor Mammedov
2015-05-04 11:16 ` Shannon Zhao
2015-04-15 13:24 ` [Qemu-devel] [PATCH v5 09/20] hw/arm/virt-acpi-build: Generate GTDT table Shannon Zhao
2015-04-15 13:24 ` [Qemu-devel] [PATCH v5 10/20] hw/arm/virt-acpi-build: Generate RSDT table Shannon Zhao
2015-04-15 13:25 ` [Qemu-devel] [PATCH v5 11/20] hw/arm/virt-acpi-build: Generate RSDP table Shannon Zhao
2015-04-15 13:25 ` [Qemu-devel] [PATCH v5 12/20] hw/arm/virt-acpi-build: Add PCIe info and generate MCFG table Shannon Zhao
2015-04-15 13:25 ` [Qemu-devel] [PATCH v5 13/20] hw/acpi/aml-build: Add ToUUID macro Shannon Zhao
2015-04-28 6:54 ` Igor Mammedov [this message]
2015-04-28 7:46 ` Shannon Zhao
2015-04-28 8:15 ` Igor Mammedov
2015-04-28 8:52 ` Shannon Zhao
2015-04-28 9:35 ` Igor Mammedov
2015-04-28 9:48 ` Shannon Zhao
2015-04-29 13:41 ` Shannon Zhao
2015-05-04 9:22 ` Igor Mammedov
2015-05-04 9:30 ` Shannon Zhao
2015-05-04 10:53 ` Igor Mammedov
2015-04-28 8:08 ` Shannon Zhao
2015-04-15 13:25 ` [Qemu-devel] [PATCH v5 14/20] hw/acpi/aml-build: Add aml_or() term Shannon Zhao
2015-04-28 6:56 ` Igor Mammedov
2015-04-28 7:12 ` Shannon Zhao
2015-04-15 13:25 ` [Qemu-devel] [PATCH v5 15/20] hw/acpi/aml-build: Add aml_not() term Shannon Zhao
2015-05-05 2:45 ` Shannon Zhao
2015-05-05 8:26 ` Igor Mammedov
2015-04-15 13:25 ` [Qemu-devel] [PATCH v5 16/20] hw/acpi/aml-build: Add aml_else() term Shannon Zhao
2015-04-15 13:25 ` [Qemu-devel] [PATCH v5 17/20] hw/acpi/aml-build: Add aml_create_dword_field() term Shannon Zhao
2015-04-15 13:25 ` [Qemu-devel] [PATCH v5 18/20] hw/acpi/aml-build: Add aml_dword_io() term Shannon Zhao
2015-04-15 13:25 ` [Qemu-devel] [PATCH v5 19/20] hw/arm/virt-acpi-build: Add PCIe controller in ACPI DSDT table Shannon Zhao
2015-04-28 8:42 ` Igor Mammedov
2015-04-28 8:47 ` Michael S. Tsirkin
2015-04-28 9:06 ` Shannon Zhao
2015-04-28 9:54 ` Igor Mammedov
2015-04-28 12:57 ` Shannon Zhao
2015-04-28 15:13 ` Igor Mammedov
2015-04-28 15:54 ` Michael S. Tsirkin
2015-04-29 3:12 ` Shannon Zhao
2015-04-29 8:47 ` Igor Mammedov
2015-04-29 13:37 ` Shannon Zhao
2015-04-29 13:58 ` Igor Mammedov
2015-04-15 13:25 ` [Qemu-devel] [PATCH v5 20/20] hw/arm/virt: Enable dynamic generation of ACPI v5.1 tables Shannon Zhao
2015-04-28 2:49 ` [Qemu-devel] [PATCH v5 00/20] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM Shannon Zhao
2015-04-28 5:20 ` Michael S. Tsirkin
2015-04-28 6:13 ` Shannon Zhao
2015-04-28 6:56 ` Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150428085412.5d215d01@nial.brq.redhat.com \
--to=imammedo@redhat.com \
--cc=a.spyridakis@virtualopensystems.com \
--cc=alex.bennee@linaro.org \
--cc=christoffer.dall@linaro.org \
--cc=claudio.fontana@huawei.com \
--cc=hangaohuai@huawei.com \
--cc=hanjun.guo@linaro.org \
--cc=lersek@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.huangpeng@huawei.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=shannon.zhao@linaro.org \
--cc=zhaoshenglong@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).