qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger@redhat.com>
To: Andrew Jones <drjones@redhat.com>
Cc: peter.maydell@linaro.org, gshan@redhat.com, mst@redhat.com,
	qemu-devel@nongnu.org, shannon.zhaosl@gmail.com,
	qemu-arm@nongnu.org, imammedo@redhat.com, philmd@redhat.com,
	ardb@kernel.org, eric.auger.pro@gmail.com
Subject: Re: [PATCH v3 2/3] hw/arm/virt_acpi_build: Generate DBG2 table
Date: Wed, 6 Oct 2021 11:57:07 +0200	[thread overview]
Message-ID: <2b284309-1dd6-6d73-225d-f83ad4af8657@redhat.com> (raw)
In-Reply-To: <20211006091523.qaub5xg3kxuwjmlh@gator.home>

Hi,

On 10/6/21 11:15 AM, Andrew Jones wrote:
> On Mon, Sep 27, 2021 at 03:17:31PM +0200, Eric Auger wrote:
>> ARM SBBR specification mandates DBG2 table (Debug Port Table 2)
>> since v1.0 (ARM DEN0044F 8.3.1.7 DBG2).
>>
>> The DBG2 table allows to describe one or more debug ports.
>>
>> Generate an DBG2 table featuring a single debug port, the PL011.
>>
>> The DBG2 specification can be found at
>> "Microsoft Debug Port Table 2 (DBG2)"
>> https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/acpi-debug-port-table?redirectedfrom=MSDN
>>
>> Signed-off-by: Eric Auger <eric.auger@redhat.com>
>>
>> ---
>>
>> v2 -> v3:
>> Took into account all comments from Igor on v2:
>> mostly style adjustment, revision references
>>
>> v1 -> v2:
>> - rebased on Igor's refactoring
>> ---
>>  hw/arm/virt-acpi-build.c | 62 +++++++++++++++++++++++++++++++++++++++-
>>  1 file changed, 61 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
>> index 6cec97352b..257d0fee17 100644
>> --- a/hw/arm/virt-acpi-build.c
>> +++ b/hw/arm/virt-acpi-build.c
>> @@ -616,6 +616,63 @@ build_gtdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
>>      acpi_table_end(linker, &table);
>>  }
>>  
>> +/* Debug Port Table 2 (DBG2) */
>> +static void
>> +build_dbg2(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
> nit: I didn't think QEMU liked this style, i.e. QEMU prefers
>
>  static void build_dbg2(GArray *table_data, BIOSLinker *linker,
>                         VirtMachineState *vms)
>
> Eh, I see that hw/arm/virt-acpi-build.c is full of the format you have
> here, so never mind.
>
>> +{
>> +    AcpiTable table = { .sig = "DBG2", .rev = 3, .oem_id = vms->oem_id,
> Can you explain where the .rev = 3 comes from? The spec says "For this
> version of the specification, this value is 0."
The above revision field belongs to the acpi table header. Not to be
mixed with the Revision field of the DBG2 table
which is set below (set to 0):

+    build_append_int_noprefix(table_data, 0, 1); /* Revision */

Besides that's a good question. I have rev=3 here but that must come from a copy/paste. when googling I
found

https://lists.denx.de/pipermail/u-boot/2015-June/217134.html
/header->revision = 1; /* ACPI 1.0/2.0: 1, ACPI 3.0: 2, ACPI 4.0: 3 */
Not sure if 3 is the right value though? Igor, please could you advise?
Thanks Eric /

>
>
>> +                        .oem_table_id = vms->oem_table_id };
>> +    int dbg2devicelength;
>> +    const char name[] = "COM0";
>> +    const int namespace_length = sizeof(name);
>> +
>> +    acpi_table_begin(&table, table_data);
>> +
>> +    dbg2devicelength = 22 /* BaseAddressRegister[] offset */ +
>> +                       12 /* BaseAddressRegister[] */ +
>> +                       4 /* AddressSize[] */ +
> I'd personally prefer the '+' before the comment, but maybe Igor has a
> special ACPI code format preference here.
>
>> +                       namespace_length /* NamespaceString[] */;
>> +
>> +    /* OffsetDbgDeviceInfo */
>> +    build_append_int_noprefix(table_data, 44, 4);
>> +    /* NumberDbgDeviceInfo */
>> +    build_append_int_noprefix(table_data, 1, 4);
>> +
>> +    /* Table 2. Debug Device Information structure format */
>> +    build_append_int_noprefix(table_data, 0, 1); /* Revision */
>> +    build_append_int_noprefix(table_data, dbg2devicelength, 2); /* Length */
>> +    /* NumberofGenericAddressRegisters */
>> +    build_append_int_noprefix(table_data, 1, 1);
>> +    /* NameSpaceStringLength */
>> +    build_append_int_noprefix(table_data, namespace_length, 2);
>> +    build_append_int_noprefix(table_data, 38, 2); /* NameSpaceStringOffset */
>> +    build_append_int_noprefix(table_data, 0, 2); /* OemDataLength */
>> +    /* OemDataOffset (0 means no OEM data) */
>> +    build_append_int_noprefix(table_data, 0, 2);
>> +
>> +    /* Port Type */
>> +    build_append_int_noprefix(table_data, 0x8000 /* Serial */, 2);
>> +    /* Port Subtype */
>> +    build_append_int_noprefix(table_data, 0x3 /* ARM PL011 UART */, 2);
>> +    build_append_int_noprefix(table_data, 0, 2); /* Reserved */
>> +    /* BaseAddressRegisterOffset */
>> +    build_append_int_noprefix(table_data, 22, 2);
>> +    /* AddressSizeOffset */
>> +    build_append_int_noprefix(table_data, 34, 2);
>> +
>> +    /* BaseAddressRegister[] */
>> +    build_append_gas(table_data, AML_AS_SYSTEM_MEMORY, 8, 0, 1,
>> +                     vms->memmap[VIRT_UART].base);
>> +
>> +    /* AddressSize[] */
>> +    build_append_int_noprefix(table_data, 0x1000 /* Register Space */, 4);
>> +
>> +    /* NamespaceString[] */
>> +    g_array_append_vals(table_data, name, namespace_length);
>> +
>> +    acpi_table_end(linker, &table);
>> +};
>> +
>>  /*
>>   * ACPI spec, Revision 5.1 Errata A
>>   * 5.2.12 Multiple APIC Description Table (MADT)
>> @@ -875,7 +932,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
>>      dsdt = tables_blob->len;
>>      build_dsdt(tables_blob, tables->linker, vms);
>>  
>> -    /* FADT MADT GTDT MCFG SPCR pointed to by RSDT */
>> +    /* FADT MADT GTDT MCFG SPCR DBG2 pointed to by RSDT */
>>      acpi_add_table(table_offsets, tables_blob);
>>      build_fadt_rev5(tables_blob, tables->linker, vms, dsdt);
>>  
>> @@ -898,6 +955,9 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
>>      acpi_add_table(table_offsets, tables_blob);
>>      build_spcr(tables_blob, tables->linker, vms);
>>  
>> +    acpi_add_table(table_offsets, tables_blob);
>> +    build_dbg2(tables_blob, tables->linker, vms);
>> +
>>      if (vms->ras) {
>>          build_ghes_error_table(tables->hardware_errors, tables->linker);
>>          acpi_add_table(table_offsets, tables_blob);
>> -- 
>> 2.26.3
>>
> Thanks,
> drew 
>



  reply	other threads:[~2021-10-06  9:59 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-27 13:17 [PATCH v3 0/3] hw/arm/virt_acpi_build: Generate DBG2 table Eric Auger
2021-09-27 13:17 ` [PATCH v3 1/3] tests/acpi: Add void table for virt/DBG2 bios-tables-test Eric Auger
2021-09-27 13:17 ` [PATCH v3 2/3] hw/arm/virt_acpi_build: Generate DBG2 table Eric Auger
2021-10-06  8:25   ` Igor Mammedov
2021-10-06  9:15   ` Andrew Jones
2021-10-06  9:57     ` Eric Auger [this message]
2021-10-06 13:46       ` Igor Mammedov
2021-10-06 13:59         ` Eric Auger
2021-09-27 13:17 ` [PATCH v3 3/3] bios-tables-test: Generate reference table for virt/DBG2 Eric Auger
2021-10-05 15:08 ` [PATCH v3 0/3] hw/arm/virt_acpi_build: Generate DBG2 table 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=2b284309-1dd6-6d73-225d-f83ad4af8657@redhat.com \
    --to=eric.auger@redhat.com \
    --cc=ardb@kernel.org \
    --cc=drjones@redhat.com \
    --cc=eric.auger.pro@gmail.com \
    --cc=gshan@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=mst@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=shannon.zhaosl@gmail.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).