RE: [PATCH -mm] ACPI: re-add important comment about P_LVLx register

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

 



applied.
thanks,
-Len 

>-----Original Message-----
>From: Andreas Mohr [mailto:andi@xxxxxxxxxxxxxxxxxxxxxxx] 
>Sent: Monday, June 26, 2006 3:58 PM
>To: Andrew Morton
>Cc: Brown, Len; linux-acpi@xxxxxxxxxxxxxxx
>Subject: [PATCH -mm] ACPI: re-add important comment about 
>P_LVLx register
>
>Hi all,
>
>- re-add explanatory comment to P_LVLx invocation that had been removed
>  a while ago
>
>While trying to look for superfluous I/O accesses that can be optimized
>away, I stumbled upon this ACPI sleep I/O access and couldn't 
>figure out
>why the hell this dummy op was necessary.
>After more than one hour of internet research, I had collected 
>a sufficient
>number of documents (among those very old kernel versions) that finally
>told me what this dummy read was about: STPCLK# doesn't get 
>asserted in time
>on (some) chipsets, which is why we need to have a dummy I/O 
>read to delay
>further instruction processing until the CPU is fully stopped.
>
>Compile-tested on 2.6.17-mm1.
>
>Signed-off-by: Andreas Mohr <andi@xxxxxxxx>
>
>
>diff -urN linux-2.6.17-mm2.orig/drivers/acpi/processor_idle.c 
>linux-2.6.17-mm2.my/drivers/acpi/processor_idle.c
>--- linux-2.6.17-mm2.orig/drivers/acpi/processor_idle.c	
>2006-06-26 11:18:52.000000000 +0200
>+++ linux-2.6.17-mm2.my/drivers/acpi/processor_idle.c	
>2006-06-26 18:06:18.000000000 +0200
>@@ -361,7 +361,9 @@
> 		t1 = inl(acpi_fadt.xpm_tmr_blk.address);
> 		/* Invoke C2 */
> 		inb(cx->address);
>-		/* Dummy op - must do something useless after 
>P_LVL2 read */
>+		/* Dummy wait op - must do something useless 
>after P_LVL2 read
>+		   because chipsets cannot guarantee that STPCLK# signal
>+		   gets asserted in time to freeze execution 
>properly. */
> 		t2 = inl(acpi_fadt.xpm_tmr_blk.address);
> 		/* Get end time (ticks) */
> 		t2 = inl(acpi_fadt.xpm_tmr_blk.address);
>@@ -399,7 +401,7 @@
> 		t1 = inl(acpi_fadt.xpm_tmr_blk.address);
> 		/* Invoke C3 */
> 		inb(cx->address);
>-		/* Dummy op - must do something useless after 
>P_LVL3 read */
>+		/* Dummy wait op (see above) */
> 		t2 = inl(acpi_fadt.xpm_tmr_blk.address);
> 		/* Get end time (ticks) */
> 		t2 = inl(acpi_fadt.xpm_tmr_blk.address);
>
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux