All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: Shannon Zhao <zhaoshenglong@huawei.com>
Cc: peter.maydell@linaro.org, hangaohuai@huawei.com,
	"Michael S. Tsirkin" <mst@redhat.com>,
	a.spyridakis@virtualopensystems.com, claudio.fontana@huawei.com,
	qemu-devel@nongnu.org, peter.huangpeng@huawei.com,
	hanjun.guo@linaro.org, imammedo@redhat.com, pbonzini@redhat.com,
	alex.bennee@linaro.org, christoffer.dall@linaro.org,
	shannon.zhao@linaro.org
Subject: Re: [Qemu-devel] [PATCH v7 14/23] hw/acpi/aml-build: Add ToUUID macro
Date: Mon, 18 May 2015 20:34:42 +0200	[thread overview]
Message-ID: <555A30C2.1000206@redhat.com> (raw)
In-Reply-To: <20150518180850-mutt-send-email-mst@redhat.com>

On 05/18/15 18:17, Michael S. Tsirkin wrote:
> On Thu, May 14, 2015 at 05:19:33PM +0800, Shannon Zhao 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         | 46 +++++++++++++++++++++++++++++++++++++++++++++
>>  include/hw/acpi/aml-build.h |  1 +
>>  2 files changed, 47 insertions(+)
>>
>> diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
>> index 6197896..0e4d35f 100644
>> --- a/hw/acpi/aml-build.c
>> +++ b/hw/acpi/aml-build.c
>> @@ -956,6 +956,52 @@ Aml *aml_qword_memory(AmlDecode dec, AmlMinFixed min_fixed,
>>                               addr_trans, len, flags);
>>  }
>>  
>> +static uint8_t Hex2Byte(const char *src)
>> +{
>> +    int hi = Hex2Digit(*src++);
>> +    int lo = Hex2Digit(*src);
> 
> 
> Just src[0] src[1] would be clearer.
> 
>> +
>> +    g_assert(((hi >= 0) && (hi <= 15)) && ((lo >= 0) && (lo <= 15)));
> 
> Pls use simple assert everywhere, it does not matter
> and rest of acpi uses plain assert.

In addition, please break up conjunctions into different lines:

  assert(a && b);

should be

  assert(a);
  assert(b);

If one of "a" and "b" fails, the second form gives more info.

(Quite from the sidelines, but I think this is a reasonable, generic
style hint.)

> 
>> +    return (hi << 4) | lo;
>> +}
> 
> Really should be lower-case. We need to fix Hex2Digit too,
> but since Hex2Digit is broken, I'll let this one in
> and we can fix both with a patch on top.
> 
>> +
>> +/*
>> + * ACPI 3.0: 17.5.124 ToUUID (Convert String to UUID Macro)
>> + * e.g. UUID: aabbccdd-eeff-gghh-iijj-kkllmmnnoopp
>> + * call aml_touuid("aabbccdd-eeff-gghh-iijj-kkllmmnnoopp");
>> + */
>> +Aml *aml_touuid(const char *uuid)
>> +{
>> +    Aml *var = aml_bundle(0x11 /* BufferOp */, AML_BUFFER);
>> +
>> +    /* format: aabbccdd-eeff-gghh-iijj-kkllmmnnoopp */
> 
> This documents the argument, so really belongs near the
> function's head.
> 
>> +    g_assert((strlen(uuid) == 36) && (uuid[8] == '-') && (uuid[13] == '-')
>> +              && (uuid[18] == '-') && (uuid[23] == '-'));

Ditto (assuming this assert() stays at all, based on Michael's feedback).

Thanks
Laszlo

> Does something else validate the parameter?
> It's not friendly to handle errors by assert.
> Why doesn't that something else give us a pre-parse structure then?
> 
> 
>> +
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 6)); /* dd - at offset 00 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 4)); /* cc - at offset 01 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 2)); /* bb - at offset 02 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 0)); /* aa - at offset 03 */
>> +
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 11)); /* ff - at offset 04 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 9)); /* ee - at offset 05 */
>> +
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 16)); /* hh - at offset 06 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 14)); /* gg - at offset 07 */
>> +
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 19)); /* ii - at offset 08 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 21)); /* jj - at offset 09 */
>> +
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 24)); /* kk - at offset 10 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 26)); /* ll - at offset 11 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 28)); /* mm - at offset 12 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 30)); /* nn - at offset 13 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 32)); /* oo - at offset 14 */
>> +    build_append_byte(var->buf, Hex2Byte(uuid + 34)); /* pp - at offset 15 */
> 
> Can we use strtoull?
> 
> 
>> +
>> +    return var;
>> +}
>> +
>>  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 615f3c1..f5e764c 100644
>> --- a/include/hw/acpi/aml-build.h
>> +++ b/include/hw/acpi/aml-build.h
>> @@ -265,6 +265,7 @@ Aml *aml_buffer(int buffer_size, uint8_t *byte_list);
>>  Aml *aml_resource_template(void);
>>  Aml *aml_field(const char *name, AmlAccessType type, AmlUpdateRule rule);
>>  Aml *aml_varpackage(uint32_t num_elements);
>> +Aml *aml_touuid(const char *uuid);
>>  
>>  void
>>  build_header(GArray *linker, GArray *table_data,
>> -- 
>> 2.1.0
>>

  reply	other threads:[~2015-05-18 18:35 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-14  9:19 [Qemu-devel] [PATCH v7 00/23] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 01/23] hw/arm/virt: Move common definitions to virt.h Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 02/23] hw/arm/virt: Record PCIe ranges in MemMapEntry array Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 03/23] hw/arm/virt-acpi-build: Basic framework for building ACPI tables on ARM Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 04/23] hw/acpi/aml-build: Add aml_memory32_fixed() term Shannon Zhao
2015-05-18 16:06   ` Michael S. Tsirkin
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 05/23] hw/acpi/aml-build: Add aml_interrupt() term Shannon Zhao
2015-05-18 16:07   ` Michael S. Tsirkin
2015-05-20  4:23   ` [Qemu-devel] [RESEND PATCH " Shannon Zhao
2015-05-20 11:05     ` Igor Mammedov
2015-05-20 11:28       ` Shannon Zhao
2015-05-20 13:49         ` Igor Mammedov
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 06/23] hw/arm/virt-acpi-build: Generation of DSDT table for virt devices Shannon Zhao
2015-05-21 14:30   ` Alex Bennée
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 07/23] hw/arm/virt-acpi-build: Generate FADT table and update ACPI headers Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 08/23] hw/arm/virt-acpi-build: Generate MADT table Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 09/23] hw/arm/virt-acpi-build: Generate GTDT table Shannon Zhao
2015-05-21 14:31   ` Alex Bennée
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 10/23] hw/arm/virt-acpi-build: Generate RSDT table Shannon Zhao
2015-05-21 14:38   ` Alex Bennée
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 11/23] hw/arm/virt-acpi-build: Generate RSDP table Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 12/23] hw/arm/virt-acpi-build: Generate MCFG table Shannon Zhao
2015-05-21 14:38   ` Alex Bennée
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 13/23] hw/acpi/aml-build: Make aml_buffer() definition consistent with the spec Shannon Zhao
2015-05-18 16:08   ` Michael S. Tsirkin
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 14/23] hw/acpi/aml-build: Add ToUUID macro Shannon Zhao
2015-05-18 16:17   ` Michael S. Tsirkin
2015-05-18 18:34     ` Laszlo Ersek [this message]
2015-05-19  0:41     ` Shannon Zhao
2015-05-19  8:37       ` Michael S. Tsirkin
2015-05-20  4:19   ` [Qemu-devel] [RESEND PATCH " Shannon Zhao
2015-05-20 10:57     ` Igor Mammedov
2015-05-20 11:02       ` Shannon Zhao
2015-05-20 13:41         ` Igor Mammedov
2015-05-20 13:46           ` Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 15/23] hw/acpi/aml-build: Add aml_or() term Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 16/23] hw/acpi/aml-build: Add aml_lnot() term Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 17/23] hw/acpi/aml-build: Add aml_else() term Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 18/23] hw/acpi/aml-build: Add aml_create_dword_field() term Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 19/23] hw/acpi/aml-build: Add aml_dword_io() term Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 20/23] hw/acpi/aml-build: Add Unicode macro Shannon Zhao
2015-05-18 16:18   ` Michael S. Tsirkin
2015-05-20  5:00   ` [Qemu-devel] [RESEND PATCH " Shannon Zhao
2015-05-20 11:01     ` Igor Mammedov
2015-05-20 11:12       ` Shannon Zhao
2015-05-20 13:47         ` Igor Mammedov
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 21/23] hw/arm/virt-acpi-build: Add PCIe controller in ACPI DSDT table Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 22/23] ACPI: split CONFIG_ACPI into 4 pieces Shannon Zhao
2015-05-18 16:19   ` Michael S. Tsirkin
2015-05-20  5:02   ` [Qemu-devel] [RESEND PATCH " Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 23/23] hw/arm/virt: Enable dynamic generation of ACPI v5.1 tables Shannon Zhao
2015-05-18 15:59 ` [Qemu-devel] [PATCH v7 00/23] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM Peter Maydell

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=555A30C2.1000206@redhat.com \
    --to=lersek@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=imammedo@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.