qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/2] ACPI: Add definitions for the DBG2 table


From: Michael S. Tsirkin
Subject: Re: [Qemu-devel] [PATCH 1/2] ACPI: Add definitions for the DBG2 table
Date: Thu, 10 Sep 2015 11:19:09 +0300

On Mon, Sep 07, 2015 at 05:51:50PM +0200, Andrew Jones wrote:
> On Mon, Sep 07, 2015 at 03:23:45PM +0100, Leif Lindholm wrote:
> > The DBG2 table can be considered a "companion" to SPCR - it points out
> > debug consoles available in the system.
> > 
> > Signed-off-by: Leif Lindholm <address@hidden>
> > ---
> >  include/hw/acpi/acpi-defs.h | 37 +++++++++++++++++++++++++++++++++++--
> >  1 file changed, 35 insertions(+), 2 deletions(-)
> > 
> > diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h
> > index 2b431e6..af062a7 100644
> > --- a/include/hw/acpi/acpi-defs.h
> > +++ b/include/hw/acpi/acpi-defs.h
> > @@ -197,10 +197,43 @@ enum {
> >  };
> >  
> >  /*
> > - * Serial Port Console Redirection Table (SPCR), Rev. 1.02
> > + * Debug Port Table 2 (DBG2)
> >   *
> >   * For .interface_type see Debug Port Table 2 (DBG2) serial port
> > - * subtypes in Table 3, Rev. May 22, 2012
> > + * subtypes in Table 3, Rev. Aug 10, 2015
> > + *
> > + * The specification permits multiple ports with multiple addresses, but 
> > this
> > + * implementation is limited to one port with one address.
> > + */
> > +struct AcpiDebugPort2 {
> > +    ACPI_TABLE_HEADER_DEF
> > +    uint32_t debug_devices_offset;
> > +    uint32_t number_debug_devices;
> > +    struct {
> > +      uint8_t  revision;
> > +      uint16_t length;
> > +      uint8_t  number_generic_address_registers;
> > +      uint16_t namespace_string_length;
> > +      uint16_t namespace_string_offset;
> > +      uint16_t oem_data_length;
> > +      uint16_t oem_data_offset;
> > +      uint16_t port_type;
> > +      uint16_t port_subtype;
> > +      uint8_t  reserved1[2];
> > +      uint16_t base_address_register_offset;
> > +      uint16_t address_size_offset;
> > +      struct AcpiGenericAddress base_address[1];
> 
> Not sure we want to limit the number of addresses. Non ARM (non PL011)
> users of this table may not find one address sufficient.
> 
> > +      uint32_t address_size[1];
> > +      uint8_t  namespace_string[2];
> > +    } QEMU_PACKED debug_devices[1];
> 
> I'm guessing it's unlikely we'll ever want more than one debug port. So
> can we just drop the debug_devices array, flatting the table? OTOH, this
> is generic acpi table generation code here, and maybe x86 will want to
> use more than one port? In that case we should pull the debug device
> structure definition out, and then properly handle the variable length
> array. But this is where Igor and mst will suggest just using aml_appends,
> instead of defining these structures at all :-)

Yes - structures are fine when they are static, but for dynamic
stuff, aml_append wins hands down.
You simply add comments in code documenting each field as
it's added.




Igor actually likes aml_append for static things as well
but it's a matter of taste.

> > +} QEMU_PACKED;
> > +typedef struct AcpiDebugPort2
> > +               AcpiDebugPort2;
> > +
> > +/*
> > + * Serial Port Console Redirection Table (SPCR), Rev. 1.03
> > + *
> > + * .interface_type format same as for DBG2.
> >   */
> >  struct AcpiSerialPortConsoleRedirection {
> >      ACPI_TABLE_HEADER_DEF
> > -- 
> > 2.1.4
> > 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]