RE: FAILED: patch "[PATCH] Revert "ACPI / EC: Add support to disallow QR_EC to be issued ACPI / EC: Add support to disallow QR_EC to be issued before ACPI / EC: Add support to disallow QR_EC to be issued when" failed to apply to 3.17-stable tree

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

 



Hi, Greg

Samsung users have reported that this reversion is required.
I can help to port it back to 3.17-stable.
I'll send it later.

Best regards
-Lv

> From: gregkh@xxxxxxxxxxxxxxxxxxx [mailto:gregkh@xxxxxxxxxxxxxxxxxxx]
> Sent: Monday, November 10, 2014 12:12 PM
> 
> 
> The patch below does not apply to the 3.17-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@xxxxxxxxxxxxxxx>.
> 
> thanks,
> 
> greg k-h
> 
> ------------------ original commit in Linus's tree ------------------
> 
> From df9ff91801da603079018f21a9412385b62f0f8e Mon Sep 17 00:00:00 2001
> From: Lv Zheng <lv.zheng@xxxxxxxxx>
> Date: Wed, 29 Oct 2014 11:33:43 +0800
> Subject: [PATCH] Revert "ACPI / EC: Add support to disallow QR_EC to be issued
>  before completing previous QR_EC"
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
> 
> It is reported that the following commit breaks Samsung hardware:
>  Commit: 558e4736f2e1b0e6323adf7a5e4df77ed6cfc1a4.
>  Subject: ACPI / EC: Add support to disallow QR_EC to be issued before
>           completing previous QR_EC
> 
> Which means the Samsung behavior conflicts with the Acer behavior.
> 
> 1. Samsung may behave like:
>    [ +event 1 ] SCI_EVT set
>    [ +event 2 ] SCI_EVT set
>                               write QR_EC
>                               read event
>    [ -event 1 ] SCI_EVT clear
>    Without the above commit, Samsung can work:
>    [ +event 1 ] SCI_EVT set
>    [ +event 2 ] SCI_EVT set
>                               write QR_EC
>                               CAN prepare next QR_EC as SCI_EVT=1
>                               read event
>    [ -event 1 ] SCI_EVT clear
>                               write QR_EC
>                               read event
>    [ -event 2 ] SCI_EVT clear
>    With the above commit, Samsung cannot work:
>    [ +event 1 ] SCI_EVT set
>    [ +event 2 ] SCI_EVT set
>                               write QR_EC
>                               read event
>    [ -event 1 ] SCI_EVT clear
>                               CANNOT prepare next QR_EC as SCI_EVT=0
> 2. Acer may behave like:
>    [ +event 1 ] SCI_EVT set
>    [ +event 2 ]
>                               write QR_EC
>                               read event
>    [ -event 1 ] SCI_EVT clear
>    [ +event 2 ] SCI_EVT set
>    Without the above commit, Acer cannot work when there is only 1 event:
>    [ +event 1 ] SCI_EVT set
>                               write QR_EC
>                               can prepared next QR_EC as SCI_EVT=1
>                               read event
>    [ -event 1 ] SCI_EVT clear
>                               CANNOT write QR_EC as SCI_EVT=0
>    With the above commit, Acer can work:
>    [ +event 1 ] SCI_EVT set
>    [ +event 2 ]
>                               write QR_EC
>                               read event
>    [ -event 1 ] SCI_EVT set
>                               can prepare next QR_EC because SCI_EVT=0
>                               CAN write QR_EC as SCI_EVT=1
> 
> Since Acer can also work with only the following commit applied:
>  Commit: 3afcf2ece453e1a8c2c6de19cdf06da3772a1b08
>  Subject: ACPI / EC: Add support to disallow QR_EC to be issued when
>           SCI_EVT isn't set
> commit 558e4736f2e1b0e6323adf7a5e4df77ed6cfc1a4 can be reverted.
> 
> Fixes: 558e4736f2e1 (ACPI / EC: Add support to disallow QR_EC to be issued ...)
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=44161
> Reported-and-tested-by: Ortwin Glück <odi@xxxxxx>
> Signed-off-by: Lv Zheng <lv.zheng@xxxxxxxxx>
> Cc: 3.17+ <stable@xxxxxxxxxxxxxxx> # 3.17+
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
> 
> diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
> index 3d304ff7f095..31b699f2d088 100644
> --- a/drivers/acpi/ec.c
> +++ b/drivers/acpi/ec.c
> @@ -334,13 +334,13 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec,
>  	pr_debug("***** Command(%s) started *****\n",
>  		 acpi_ec_cmd_string(t->command));
>  	start_transaction(ec);
> -	spin_unlock_irqrestore(&ec->lock, tmp);
> -	ret = ec_poll(ec);
> -	spin_lock_irqsave(&ec->lock, tmp);
>  	if (ec->curr->command == ACPI_EC_COMMAND_QUERY) {
>  		clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags);
>  		pr_debug("***** Event stopped *****\n");
>  	}
> +	spin_unlock_irqrestore(&ec->lock, tmp);
> +	ret = ec_poll(ec);
> +	spin_lock_irqsave(&ec->lock, tmp);
>  	pr_debug("***** Command(%s) stopped *****\n",
>  		 acpi_ec_cmd_string(t->command));
>  	ec->curr = NULL;

��.n��������+%������w��{.n�����������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]