lkml.org 
[lkml]   [2009]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: patch acpi-remove-locking-from-pm1x_sts-register-reads.patch added to 2.6.28-stable tree
    Date
    Hi

    On Sonntag, 8. Februar 2009, gregkh@suse.de wrote:
    >
    > This is a note to let you know that we have just queued up the patch titled
    >
    > Subject: ACPI: remove locking from PM1x_STS register reads
    >
    > to the 2.6.28-stable tree. Its filename is
    >
    > acpi-remove-locking-from-pm1x_sts-register-reads.patch
    [...]
    > From a2b7b01c072435b7832ab392167545a1b38cabc3 Mon Sep 17 00:00:00 2001
    > From: Len Brown <len.brown@intel.com>
    > Date: Wed, 28 Jan 2009 12:47:15 -0500
    > Subject: ACPI: remove locking from PM1x_STS register reads
    >
    > From: Len Brown <len.brown@intel.com>
    >
    > commit a2b7b01c072435b7832ab392167545a1b38cabc3 upstream.
    >
    > PM1a_STS and PM1b_STS are twins that get OR'd together
    > on reads, and all writes are repeated to both.
    >
    > The fields in PM1x_STS are single bits only,
    > there are no multi-bit fields.
    >
    > So it is not necessary to lock PM1x_STS reads against
    > writes because it is impossible to read an intermediate
    > value of a single bit. It will either be 0 or 1,
    > even if a write is in progress during the read.
    > Reads are asynchronous to writes no matter if a lock
    > is used or not.
    >
    > Signed-off-by: Len Brown <len.brown@intel.com>
    > Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    This patch fails to compile on 2.6.28.4 + queue-2.6.28 (and 2.6.27 as
    well):


    BUILD arch/x86/boot/bzImage
    Root device is (254, 1)
    Setup is 11676 bytes (padded to 11776 bytes).
    System is 2175 kB
    CRC d4d9303a
    Kernel: arch/x86/boot/bzImage is ready (#1)
    ERROR: "acpi_get_register_unlocked" [drivers/acpi/processor.ko] undefined!
    make[4]: *** [__modpost] Error 1
    make[3]: *** [modules] Error 2


    because it seems to depend on the larger changes started in, but not
    limited to:


    From ecfbbc7b46f74ca48b9f42132739114c9e70f8e4 Mon Sep 17 00:00:00 2001
    From: Bob Moore <robert.moore@intel.com>
    Date: Wed, 31 Dec 2008 02:55:32 +0800
    Subject: [PATCH] ACPICA: New: acpi_read and acpi_write public interfaces

    Changed the acpi_hw_low_level_read and acpi_hw_low_level_write functions to
    the public acpi_read and acpi_write to allow direct access to
    ACPI registers. Removed the "width" parameter since the width
    can be obtained from the input GAS structure. Updated the FADT
    initialization to setup the GAS structures with the proper
    widths. Some widths are still hardcoded because many FADTs have
    incorrect register lengths.

    Signed-off-by: Bob Moore <robert.moore@intel.com
    Signed-off-by: Lin Ming <ming.m.lin@intel.com>
    Signed-off-by: Len Brown <len.brown@intel.com>


    acpi_get_register_unlocked() seems to be a new feature and lots of h/w
    interfaces have been converted to use it for 2.6.29-git, a quick grep
    reveals:


    From 7db5d82d0278b506441ab6025f0c6ce2f2aa3019 Mon Sep 17 00:00:00 2001
    From: Bob Moore <robert.moore@intel.com>
    Date: Tue, 30 Dec 2008 11:04:48 +0800
    Subject: [PATCH] ACPICA: Move all public H/W interfaces to new hwxface

    From 95b482a8d31116f3f5c2a5089569393234d06385 Mon Sep 17 00:00:00 2001
    From: Len Brown <len.brown@intel.com>
    Date: Fri, 9 Jan 2009 00:13:17 -0500
    Subject: [PATCH] ACPICA: create acpica/ directory

    From 9fdd54f206722ecee7fd7ba9dba26140450e7c32 Mon Sep 17 00:00:00 2001
    From: Len Brown <len.brown@intel.com>
    Date: Fri, 6 Feb 2009 12:24:17 -0500
    Subject: [PATCH] ACPI: delete CPU_IDLE=n code


    and this patch, amounting to rather large changes in total.

    > drivers/acpi/processor_idle.c | 4 ++--
    > 1 file changed, 2 insertions(+), 2 deletions(-)
    >
    > --- a/drivers/acpi/processor_idle.c
    > +++ b/drivers/acpi/processor_idle.c
    > @@ -446,7 +446,7 @@ static void acpi_processor_idle(void)
    >
    > pr->power.bm_activity <<= diff;
    >
    > - acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
    > + acpi_get_register_unlocked(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
    > if (bm_status) {
    > pr->power.bm_activity |= 0x1;
    > acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1);
    > @@ -1382,7 +1382,7 @@ static int acpi_idle_bm_check(void)
    > {
    > u32 bm_status = 0;
    >
    > - acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
    > + acpi_get_register_unlocked(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
    > if (bm_status)
    > acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1);
    > /*

    Regards
    Stefan Lippers-Hollmann
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2009-02-09 01:27    [W:0.034 / U:212.900 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site