All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kamal Mostafa <kamal@canonical.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: "James Hogan" <james@albanarts.com>,
	"Aaron Lu" <aaron.lu@intel.com>, "Kalle Valo" <kvalo@adurom.com>,
	"Linus Torvalds" <torvalds@linux-foundation.org>,
	"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
	"Matthew Garrett" <matthew.garrett@nebula.com>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	"Steven Newbury" <steve@snewbury.org.uk>,
	"ACPI Devel Maling List" <linux-acpi@vger.kernel.org>,
	"Jörg Otte" <jrg.otte@gmail.com>,
	"Martin Steigerwald" <Martin@lichtvoll.de>,
	"Daniel Vetter" <daniel.vetter@ffwll.ch>,
	intel-gfx <intel-gfx@lists.freedesktop.org>,
	"Jani Nikula" <jani.nikula@linux.intel.com>
Subject: Re: Linux 3.11-rc2 (acpi backlight, revert)
Date: Thu, 25 Jul 2013 07:43:17 -0700	[thread overview]
Message-ID: <1374763397.5374.30.camel@fourier> (raw)
In-Reply-To: <2218913.HKGjJcYT1G@vostro.rjw.lan>

[-- Attachment #1: Type: text/plain, Size: 11597 bytes --]

On Thu, 2013-07-25 at 15:00 +0200, Rafael J. Wysocki wrote:
> On Monday, July 22, 2013 09:54:21 PM Rafael J. Wysocki wrote:
> > On Monday, July 22, 2013 11:11:54 AM Linus Torvalds wrote:
> > > On Mon, Jul 22, 2013 at 6:02 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > > >
> > > > Linus, do you want me to send a pull request reverting 8c5bd7a and efaa14c?
> > > 
> > > Yes, but let's wait a while. Not because I think we'll fix the problem
> > > (hey, miracles might happen), but because I think it would be useful
> > > to couple the reverts with information about the particular machines
> > > that broke (and the people who reported it). So that when we
> > > inevitably try again, we can perhaps get some testing effort with
> > > those machines/people.
> > > 
> > > It doesn't seem to be a show-stopped for a large number of people, so
> > > there's no huge hurry. I'd suggest doing the revert just in time for
> > > rc3, but waiting until then to gather info about people who see
> > > breakage.
> > > 
> > > Sound like a plan?
> > 
> > Yes, it does.
> 
> OK, time to revert I guess.
> 
> James, Kamal, Steven, Jörg, Martin, Kalle, please check if the apppended patch
> fixes the backlight for you.

Yes, this revert patch does re-enable backlight control for the affected
Dell XPS13 models.

 -Kamal


> Aaron, please double check if acpi_video_backlight_quirks() will still work as
> needed.
> 
> Thanks,
> Rafael
> 
> 
> ---
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Subject: Revert "ACPI / video / i915: No ACPI backlight if firmware expects Windows 8"
> 
> We attempted to address a regression introduced by commit a57f7f9
> (ACPICA: Add Windows8/Server2012 string for _OSI method.) after which
> ACPI video backlight support doesn't work on a number of systems,
> because the relevant AML methods in the ACPI tables in their BIOSes
> become useless after the BIOS has been told that the OS is compatible
> with Windows 8.  That problem is tracked by the bug entry at:
> 
> https://bugzilla.kernel.org/show_bug.cgi?id=51231
> 
> Commit 8c5bd7a (ACPI / video / i915: No ACPI backlight if firmware
> expects Windows 8) introduced for this purpose essentially prevented
> the ACPI backlight support from being used if the BIOS had been told
> that the OS was compatible with Windows 8 and the i915 driver was
> loaded, in which case the backlight would always be handled by i915.
> Unfortunately, however, that turned out to cause problems with
> backlight to appear on multiple systems with symptoms indicating that
> i915 was unable to control the backlight on those systems as
> expected.
> 
> For this reason, revert commit 8c5bd7a, but leave the function
> acpi_video_backlight_quirks() introduced by it, because another
> commit on top of it uses that function.
> 
> References: https://lkml.org/lkml/2013/7/21/119
> References: https://lkml.org/lkml/2013/7/22/261
> References: https://lkml.org/lkml/2013/7/23/429
> References: https://lkml.org/lkml/2013/7/23/459
> References: https://lkml.org/lkml/2013/7/23/81
> References: https://lkml.org/lkml/2013/7/24/27
> Reported-by: James Hogan <james@albanarts.com>
> Reported-by: Steven Newbury <steve@snewbury.org.uk>
> Reported-by: Kamal Mostafa <kamal@canonical.com>
> Reported-by: Martin Steigerwald <Martin@lichtvoll.de>
> Reported-by: Jörg Otte <jrg.otte@gmail.com>
> Reported-by: Kalle Valo <kvalo@adurom.com>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
>  drivers/acpi/internal.h         |    2 -
>  drivers/acpi/video.c            |   67 ++++------------------------------------
>  drivers/acpi/video_detect.c     |   15 --------
>  drivers/gpu/drm/i915/i915_dma.c |    2 -
>  include/acpi/video.h            |   11 ------
>  include/linux/acpi.h            |    1 
>  6 files changed, 11 insertions(+), 87 deletions(-)
> 
> Index: linux-pm/drivers/acpi/video.c
> ===================================================================
> --- linux-pm.orig/drivers/acpi/video.c
> +++ linux-pm/drivers/acpi/video.c
> @@ -897,7 +897,7 @@ static void acpi_video_device_find_cap(s
>  	if (acpi_video_init_brightness(device))
>  		return;
>  
> -	if (acpi_video_verify_backlight_support()) {
> +	if (acpi_video_backlight_support()) {
>  		struct backlight_properties props;
>  		struct pci_dev *pdev;
>  		acpi_handle acpi_parent;
> @@ -1344,8 +1344,8 @@ acpi_video_switch_brightness(struct acpi
>  	unsigned long long level_current, level_next;
>  	int result = -EINVAL;
>  
> -	/* no warning message if acpi_backlight=vendor or a quirk is used */
> -	if (!acpi_video_verify_backlight_support())
> +	/* no warning message if acpi_backlight=vendor is used */
> +	if (!acpi_video_backlight_support())
>  		return 0;
>  
>  	if (!device->brightness)
> @@ -1843,46 +1843,6 @@ static int acpi_video_bus_remove(struct
>  	return 0;
>  }
>  
> -static acpi_status video_unregister_backlight(acpi_handle handle, u32 lvl,
> -					      void *context, void **rv)
> -{
> -	struct acpi_device *acpi_dev;
> -	struct acpi_video_bus *video;
> -	struct acpi_video_device *dev, *next;
> -
> -	if (acpi_bus_get_device(handle, &acpi_dev))
> -		return AE_OK;
> -
> -	if (acpi_match_device_ids(acpi_dev, video_device_ids))
> -		return AE_OK;
> -
> -	video = acpi_driver_data(acpi_dev);
> -	if (!video)
> -		return AE_OK;
> -
> -	acpi_video_bus_stop_devices(video);
> -	mutex_lock(&video->device_list_lock);
> -	list_for_each_entry_safe(dev, next, &video->video_device_list, entry) {
> -		if (dev->backlight) {
> -			backlight_device_unregister(dev->backlight);
> -			dev->backlight = NULL;
> -			kfree(dev->brightness->levels);
> -			kfree(dev->brightness);
> -		}
> -		if (dev->cooling_dev) {
> -			sysfs_remove_link(&dev->dev->dev.kobj,
> -					  "thermal_cooling");
> -			sysfs_remove_link(&dev->cooling_dev->device.kobj,
> -					  "device");
> -			thermal_cooling_device_unregister(dev->cooling_dev);
> -			dev->cooling_dev = NULL;
> -		}
> -	}
> -	mutex_unlock(&video->device_list_lock);
> -	acpi_video_bus_start_devices(video);
> -	return AE_OK;
> -}
> -
>  static int __init is_i740(struct pci_dev *dev)
>  {
>  	if (dev->device == 0x00D1)
> @@ -1914,25 +1874,14 @@ static int __init intel_opregion_present
>  	return opregion;
>  }
>  
> -int __acpi_video_register(bool backlight_quirks)
> +int acpi_video_register(void)
>  {
> -	bool no_backlight;
> -	int result;
> -
> -	no_backlight = backlight_quirks ? acpi_video_backlight_quirks() : false;
> -
> +	int result = 0;
>  	if (register_count) {
>  		/*
> -		 * If acpi_video_register() has been called already, don't try
> -		 * to register acpi_video_bus, but unregister backlight devices
> -		 * if no backlight support is requested.
> +		 * if the function of acpi_video_register is already called,
> +		 * don't register the acpi_vide_bus again and return no error.
>  		 */
> -		if (no_backlight)
> -			acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
> -					    ACPI_UINT32_MAX,
> -					    video_unregister_backlight,
> -					    NULL, NULL, NULL);
> -
>  		return 0;
>  	}
>  
> @@ -1948,7 +1897,7 @@ int __acpi_video_register(bool backlight
>  
>  	return 0;
>  }
> -EXPORT_SYMBOL(__acpi_video_register);
> +EXPORT_SYMBOL(acpi_video_register);
>  
>  void acpi_video_unregister(void)
>  {
> Index: linux-pm/drivers/gpu/drm/i915/i915_dma.c
> ===================================================================
> --- linux-pm.orig/drivers/gpu/drm/i915/i915_dma.c
> +++ linux-pm/drivers/gpu/drm/i915/i915_dma.c
> @@ -1648,7 +1648,7 @@ int i915_driver_load(struct drm_device *
>  	if (INTEL_INFO(dev)->num_pipes) {
>  		/* Must be done after probing outputs */
>  		intel_opregion_init(dev);
> -		acpi_video_register_with_quirks();
> +		acpi_video_register();
>  	}
>  
>  	if (IS_GEN5(dev))
> Index: linux-pm/include/acpi/video.h
> ===================================================================
> --- linux-pm.orig/include/acpi/video.h
> +++ linux-pm/include/acpi/video.h
> @@ -17,21 +17,12 @@ struct acpi_device;
>  #define ACPI_VIDEO_DISPLAY_LEGACY_TV      0x0200
>  
>  #if (defined CONFIG_ACPI_VIDEO || defined CONFIG_ACPI_VIDEO_MODULE)
> -extern int __acpi_video_register(bool backlight_quirks);
> -static inline int acpi_video_register(void)
> -{
> -	return __acpi_video_register(false);
> -}
> -static inline int acpi_video_register_with_quirks(void)
> -{
> -	return __acpi_video_register(true);
> -}
> +extern int acpi_video_register(void);
>  extern void acpi_video_unregister(void);
>  extern int acpi_video_get_edid(struct acpi_device *device, int type,
>  			       int device_id, void **edid);
>  #else
>  static inline int acpi_video_register(void) { return 0; }
> -static inline int acpi_video_register_with_quirks(void) { return 0; }
>  static inline void acpi_video_unregister(void) { return; }
>  static inline int acpi_video_get_edid(struct acpi_device *device, int type,
>  				      int device_id, void **edid)
> Index: linux-pm/drivers/acpi/video_detect.c
> ===================================================================
> --- linux-pm.orig/drivers/acpi/video_detect.c
> +++ linux-pm/drivers/acpi/video_detect.c
> @@ -235,12 +235,7 @@ static void acpi_video_caps_check(void)
>  
>  bool acpi_video_backlight_quirks(void)
>  {
> -	if (acpi_gbl_osi_data >= ACPI_OSI_WIN_8) {
> -		acpi_video_caps_check();
> -		acpi_video_support |= ACPI_VIDEO_SKIP_BACKLIGHT;
> -		return true;
> -	}
> -	return false;
> +	return acpi_gbl_osi_data >= ACPI_OSI_WIN_8;
>  }
>  EXPORT_SYMBOL(acpi_video_backlight_quirks);
>  
> @@ -288,14 +283,6 @@ int acpi_video_backlight_support(void)
>  }
>  EXPORT_SYMBOL(acpi_video_backlight_support);
>  
> -/* For the ACPI video driver use only. */
> -bool acpi_video_verify_backlight_support(void)
> -{
> -	return (acpi_video_support & ACPI_VIDEO_SKIP_BACKLIGHT) ?
> -		false : acpi_video_backlight_support();
> -}
> -EXPORT_SYMBOL(acpi_video_verify_backlight_support);
> -
>  /*
>   * Use acpi_backlight=vendor/video to force that backlight switching
>   * is processed by vendor specific acpi drivers or video.ko driver.
> Index: linux-pm/include/linux/acpi.h
> ===================================================================
> --- linux-pm.orig/include/linux/acpi.h
> +++ linux-pm/include/linux/acpi.h
> @@ -191,7 +191,6 @@ extern bool wmi_has_guid(const char *gui
>  #define ACPI_VIDEO_BACKLIGHT_DMI_VIDEO			0x0200
>  #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VENDOR		0x0400
>  #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VIDEO		0x0800
> -#define ACPI_VIDEO_SKIP_BACKLIGHT			0x1000
>  
>  #if defined(CONFIG_ACPI_VIDEO) || defined(CONFIG_ACPI_VIDEO_MODULE)
>  
> Index: linux-pm/drivers/acpi/internal.h
> ===================================================================
> --- linux-pm.orig/drivers/acpi/internal.h
> +++ linux-pm/drivers/acpi/internal.h
> @@ -169,10 +169,8 @@ int acpi_create_platform_device(struct a
>    -------------------------------------------------------------------------- */
>  #if defined(CONFIG_ACPI_VIDEO) || defined(CONFIG_ACPI_VIDEO_MODULE)
>  bool acpi_video_backlight_quirks(void);
> -bool acpi_video_verify_backlight_support(void);
>  #else
>  static inline bool acpi_video_backlight_quirks(void) { return false; }
> -static inline bool acpi_video_verify_backlight_support(void) { return false; }
>  #endif
>  
>  #endif /* _ACPI_INTERNAL_H_ */
> 


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  parent reply	other threads:[~2013-07-25 14:43 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-21 19:53 Linux 3.11-rc2 Linus Torvalds
2013-07-21 21:07 ` Tobias Klausmann
2013-07-22 13:08   ` Rafael J. Wysocki
2013-07-22 15:43     ` Tobias Klausmann
2013-07-21 23:08 ` James Hogan
2013-07-22 13:02   ` Rafael J. Wysocki
2013-07-22 13:15     ` Martin Steigerwald
2013-07-22 13:37       ` Rafael J. Wysocki
2013-07-22 18:46         ` Martin Steigerwald
2013-07-22 19:57           ` Rafael J. Wysocki
2013-07-24  5:10         ` Kalle Valo
2013-07-22 13:21     ` James Hogan
2013-07-22 18:11     ` Linus Torvalds
2013-07-22 19:54       ` Rafael J. Wysocki
2013-07-23 18:46         ` Linux 3.11-rc2 (acpi backlight) Kamal Mostafa
2013-07-24  0:05           ` Rafael J. Wysocki
2013-07-24  4:54             ` Steven Newbury
2013-07-24  6:49             ` James Hogan
2013-07-24  7:14               ` Mike Galbraith
2013-07-24  7:19               ` Igor Gnatenko
2013-07-24  7:19                 ` Igor Gnatenko
2013-07-24 12:06                 ` Rafael J. Wysocki
2013-07-24 11:45             ` Jörg Otte
2013-07-25 13:00         ` Linux 3.11-rc2 (acpi backlight, revert) Rafael J. Wysocki
2013-07-25 13:00           ` Rafael J. Wysocki
2013-07-25 14:13           ` Aaron Lu
2013-07-25 14:43           ` Kamal Mostafa [this message]
2013-07-25 14:46             ` Daniel Vetter
2013-07-25 14:46               ` Daniel Vetter
2013-07-25 14:59               ` Kamal Mostafa
2013-07-25 14:52           ` Jörg Otte
2013-07-25 14:52             ` Jörg Otte
2013-07-25 15:52             ` Jörg Otte
2013-07-25 15:52               ` Jörg Otte
2013-07-25 19:14           ` James Hogan
2013-07-25 19:14             ` James Hogan
2013-07-25 19:47             ` Rafael J. Wysocki
2013-07-25 19:47               ` Rafael J. Wysocki
2013-07-26  4:23               ` Joerg Platte
2013-07-26 11:22               ` Igor Gnatenko
2013-07-26 11:22                 ` Igor Gnatenko
2013-07-26  7:43           ` Steven Newbury
2013-07-26  7:43             ` Steven Newbury
2013-07-26 12:09           ` Martin Steigerwald
2013-07-26 12:09             ` Martin Steigerwald
2013-07-26 12:40             ` Rafael J. Wysocki
2013-07-26 12:40               ` Rafael J. Wysocki
2013-08-04 19:33               ` Martin Steigerwald
2013-08-04 19:33                 ` Martin Steigerwald
2013-08-04 22:15                 ` Rafael J. Wysocki
2013-08-04 22:15                   ` Rafael J. Wysocki
2013-07-27  5:34           ` Kalle Valo
2013-07-27 12:18             ` Rafael J. Wysocki
2013-07-27 12:18               ` Rafael J. Wysocki
2013-07-22 18:16     ` Linux 3.11-rc2 Matthew Garrett
2013-07-22 19:56       ` Rafael J. Wysocki
2013-07-23 17:47         ` Steven Newbury
2013-07-23 19:51           ` Matthew Garrett
2013-07-23 19:51             ` Matthew Garrett
2013-07-23 21:10             ` Steven Newbury
2013-07-23 21:24           ` Rafael J. Wysocki
2013-07-23 22:49             ` Steven Newbury
2013-07-22  1:25 ` Dave Chinner
2013-07-22  4:06   ` Al Viro
2013-07-24  3:22     ` Dave Chinner
2013-07-23  1:04 ` rydberg
2013-07-23  1:17   ` Myklebust, Trond
2013-07-23 18:31     ` Myklebust, Trond
2013-07-23 19:08       ` rydberg
2013-07-23 20:42         ` Linus Torvalds
2013-07-23 20:52           ` Myklebust, Trond

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1374763397.5374.30.camel@fourier \
    --to=kamal@canonical.com \
    --cc=Martin@lichtvoll.de \
    --cc=aaron.lu@intel.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=james@albanarts.com \
    --cc=jani.nikula@linux.intel.com \
    --cc=jrg.otte@gmail.com \
    --cc=kvalo@adurom.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthew.garrett@nebula.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=rjw@sisk.pl \
    --cc=steve@snewbury.org.uk \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.