lkml.org 
[lkml]   [2015]   [May]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH 15/17] ACPICA/ARM: ACPI 5.1: Update for GTDT table changes.
    From
    On Tue, Jul 29, 2014 at 11:21 PM, Lv Zheng <lv.zheng@intel.com> wrote:
    > From: Tomasz Nowicki <tomasz.nowicki@linaro.org>
    >
    > New fields and new subtables. Tomasz Nowicki.
    > tomasz.nowicki@linaro.org
    >
    > Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
    > Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
    > Signed-off-by: Bob Moore <robert.moore@intel.com>
    > Signed-off-by: Lv Zheng <lv.zheng@intel.com>

    Hi, I know this patch is old, but something confuses me about it:

    > +/* Common GTDT subtable header */
    > +
    > +struct acpi_gtdt_header {
    > + u8 type;
    > + u16 length;
    > +};

    I'm trying to write a function that parses the watchdog structure
    (acpi_gtdt_watchdog). The first entry in that structure is
    acpi_gtdt_header. Looking at the ACPI specification, I see that this
    is correct: the type is one byte, and the length is two bytes.

    However, this means that I cannot use acpi_parse_entries() to parse
    the watchdog subtable:

    int __init
    acpi_parse_entries(char *id, unsigned long table_size,
    acpi_tbl_entry_handler handler,
    struct acpi_table_header *table_header,
    int entry_id, unsigned int max_entries)

    acpi_tbl_entry_handler takes an acpi_subtable_header as its first
    parameter. However, that structure looks like this:

    struct acpi_subtable_header {
    u8 type;
    u8 length;
    };

    This is not compatible, so I'm confused now. How do I properly parse
    the watchdog subtable, if I cannot use acpi_parse_entries?

    For context, here is my patch:

    http://www.spinics.net/lists/linux-watchdog/msg06240.html

    Scroll down to function arm_sbsa_wdt_parse_gtdt(). The typecast in
    first line is invalid:

    + struct acpi_gtdt_watchdog *wdg = (struct acpi_gtdt_watchdog *)header;

    because of the mismatch. I don't know how to fix this.


    \
     
     \ /
      Last update: 2015-05-02 01:01    [W:4.056 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site