lkml.org 
[lkml]   [2007]   [Feb]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: 2.6.20-rc7: known regressions
    From
    Date
    Le samedi 03 février 2007 à 11:51 +0100, Andi Kleen a écrit :
    > > +
    > > +typedef efilinkage efi_status_t efi_get_time_t (efi_time_t *tm,
    > > + efi_time_cap_t *tc);
    >
    > I assume you have double checked it actually works? (i vaguely recall some
    > issues with applying attributes to typedefs). If not you would need
    > to put them to the declarations.

    OK, I tried the following patch (simply adding asmlinkage to the
    typedefs) with gcc 3.3, 3.4, 4.0 and 4.1. I couldn't easily try older
    compilers.

    New patch:

    When calling into the EFI firmware, the parameters need to be passed on
    the stack. The recent change to use -mregparm=3 breaks x86 EFI support.
    This patch is needed to allow the new Intel-based Macs to suspend to ram
    (efi.get_time is called during the suspend phase).

    Signed-off-by: Frederic Riss <frederic.riss@gmail.com>
    ---
    diff --git a/include/linux/efi.h b/include/linux/efi.h
    index f8ebd7c..578bc2a 100644
    --- a/include/linux/efi.h
    +++ b/include/linux/efi.h
    @@ -157,22 +157,33 @@ typedef struct {
    unsigned long reset_system;
    } efi_runtime_services_t;

    -typedef efi_status_t efi_get_time_t (efi_time_t *tm, efi_time_cap_t *tc);
    -typedef efi_status_t efi_set_time_t (efi_time_t *tm);
    -typedef efi_status_t efi_get_wakeup_time_t (efi_bool_t *enabled, efi_bool_t *pending,
    - efi_time_t *tm);
    -typedef efi_status_t efi_set_wakeup_time_t (efi_bool_t enabled, efi_time_t *tm);
    -typedef efi_status_t efi_get_variable_t (efi_char16_t *name, efi_guid_t *vendor, u32 *attr,
    - unsigned long *data_size, void *data);
    -typedef efi_status_t efi_get_next_variable_t (unsigned long *name_size, efi_char16_t *name,
    - efi_guid_t *vendor);
    -typedef efi_status_t efi_set_variable_t (efi_char16_t *name, efi_guid_t *vendor,
    - unsigned long attr, unsigned long data_size,
    - void *data);
    -typedef efi_status_t efi_get_next_high_mono_count_t (u32 *count);
    -typedef void efi_reset_system_t (int reset_type, efi_status_t status,
    - unsigned long data_size, efi_char16_t *data);
    -typedef efi_status_t efi_set_virtual_address_map_t (unsigned long memory_map_size,
    +typedef asmlinkage efi_status_t efi_get_time_t (efi_time_t *tm,
    + efi_time_cap_t *tc);
    +typedef asmlinkage efi_status_t efi_set_time_t (efi_time_t *tm);
    +typedef asmlinkage efi_status_t efi_get_wakeup_time_t (efi_bool_t *enabled,
    + efi_bool_t *pending,
    + efi_time_t *tm);
    +typedef asmlinkage efi_status_t efi_set_wakeup_time_t (efi_bool_t enabled,
    + efi_time_t *tm);
    +typedef asmlinkage efi_status_t efi_get_variable_t (efi_char16_t *name,
    + efi_guid_t *vendor,
    + u32 *attr,
    + unsigned long *data_size,
    + void *data);
    +typedef asmlinkage efi_status_t efi_get_next_variable_t (unsigned long *name_sz,
    + efi_char16_t *name,
    + efi_guid_t *vendor);
    +typedef asmlinkage efi_status_t efi_set_variable_t (efi_char16_t *name,
    + efi_guid_t *vendor,
    + unsigned long attr,
    + unsigned long data_size,
    + void *data);
    +typedef asmlinkage efi_status_t efi_get_next_high_mono_count_t (u32 *count);
    +typedef asmlinkage void efi_reset_system_t (int reset_type,
    + efi_status_t status,
    + unsigned long data_size,
    + efi_char16_t *data);
    +typedef asmlinkage efi_status_t efi_set_virtual_address_map_t (unsigned long memory_map_size,
    unsigned long descriptor_size,
    u32 descriptor_version,
    efi_memory_desc_t *virtual_map);

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-02-04 14:17    [W:2.911 / U:0.512 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site