diff mbox

Linux 3.11-rc2 (acpi backlight, revert)

Message ID 2218913.HKGjJcYT1G@vostro.rjw.lan (mailing list archive)
State New, archived
Headers show

Commit Message

Rafael Wysocki July 25, 2013, 1 p.m. UTC
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.

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(-)

Comments

Aaron Lu July 25, 2013, 2:13 p.m. UTC | #1
On Thu, Jul 25, 2013 at 9:00 PM, Rafael J. Wysocki <rjw@sisk.pl> 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.
>
> Aaron, please double check if acpi_video_backlight_quirks() will still
> work as
> needed.
>

Yes, I think so.

Thanks,
Aaron


>
> 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_ */
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
Kamal Mostafa July 25, 2013, 2:43 p.m. UTC | #2
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_ */
>
Daniel Vetter July 25, 2013, 2:46 p.m. UTC | #3
On Thu, Jul 25, 2013 at 07:43:17AM -0700, Kamal Mostafa wrote:
> 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.

Are these the same models that neeed the special quirk to not write
PCH_PWM_ENABLE? Or do they need both?
-Daniel
Jörg Otte July 25, 2013, 2:52 p.m. UTC | #4
2013/7/25 Rafael J. Wysocki <rjw@sisk.pl>:
> 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.
>

Problems, problems :-) I tried to apply on top of 3.11-rc2:

jojo@ahorn:/data/kernel/linux$ git log --pretty=oneline | head -5
3b2f64d00c46e1e4e9bd0bb9bb12619adac27a4b Linux 3.11-rc2
ea45ea70b6131fa0b006f5b687b9b1398b24f681 Merge tag 'acpi-video-3.11'
of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
90db76e829479ef2ba1fed8f2552846015469831 Merge tag 'ext4_for_linus' of
git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
dda5690defe4af62ee120f055e98e40d97e4c760 ext3: fix a BUG when opening
a file with O_TMPFILE flag
e94bd3490f4ef342801cfc76b33d8baf9ccc9437 ext4: fix a BUG when opening
a file with O_TMPFILE flag

jojo@ahorn:/data/kernel/linux$ git apply --check
/data/kernel/acpi-backlight-revert.patch
error: patch failed: drivers/acpi/video.c:897
error: drivers/acpi/video.c: patch does not apply
error: patch failed: drivers/gpu/drm/i915/i915_dma.c:1648
error: drivers/gpu/drm/i915/i915_dma.c: patch does not apply
error: patch failed: include/acpi/video.h:17
error: include/acpi/video.h: patch does not apply
error: patch failed: drivers/acpi/video_detect.c:235
error: drivers/acpi/video_detect.c: patch does not apply
error: patch failed: include/linux/acpi.h:191
error: include/linux/acpi.h: patch does not apply
error: patch failed: drivers/acpi/internal.h:169
error: drivers/acpi/internal.h: patch does not apply
Kamal Mostafa July 25, 2013, 2:59 p.m. UTC | #5
On Thu, 2013-07-25 at 16:46 +0200, Daniel Vetter wrote:
> On Thu, Jul 25, 2013 at 07:43:17AM -0700, Kamal Mostafa wrote:
> > 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.
> 
> Are these the same models that neeed the special quirk to not write
> PCH_PWM_ENABLE? Or do they need both?

Hi Daniel-

Yes, these are the same models (Dell XPS13) that need the PCH_PWM_ENABLE
quirk, but that's not related to this ACPI problem...

All of the XPS13 models still need the PCH_PWM_ENABLE quirk which is now
present in mainline (e85843b "drm/i915: quirk no PCH_PWM_ENABLE for Dell
XPS13 backlight").

Separately from that, some of the XPS13 models were _also_ adversely
affected (as were some other machines) by the ACPI changes that are
about to be reverted.

 -Kamal
Jörg Otte July 25, 2013, 3:52 p.m. UTC | #6
2013/7/25 Jörg Otte <jrg.otte@gmail.com>:
> 2013/7/25 Rafael J. Wysocki <rjw@sisk.pl>:
>> 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.
>>
>
> Problems, problems :-) I tried to apply on top of 3.11-rc2:
>

Ok, with the help of Kamal I got my source tree back to a consistent
state. The patch now applies successfully.

Rafael, I now can confirm the patch fixes the problems for me.

Thanks, Jörg
James Hogan July 25, 2013, 7:14 p.m. UTC | #7
On 25 July 2013 14:00, Rafael J. Wysocki <rjw@sisk.pl> 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.

Works for me

Cheers
James
Rafael Wysocki July 25, 2013, 7:47 p.m. UTC | #8
On Thursday, July 25, 2013 08:14:08 PM James Hogan wrote:
> On 25 July 2013 14:00, Rafael J. Wysocki <rjw@sisk.pl> 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.
> 
> Works for me

Great!

James, Kamal, Jörg, thanks for confirmations.  I'll tentatively put the revert
into linux-next in a while.

Other people who experienced problems with backlight in 3.11-rc2, please let me
know whether or not the revert works for you too if you can.

Rafael
Joerg Platte July 26, 2013, 4:23 a.m. UTC | #9
On 25.07.2013 21:47, Rafael J. Wysocki wrote:

> Other people who experienced problems with backlight in 3.11-rc2, please let me
> know whether or not the revert works for you too if you can.

Before reverting the patch /sys/class/backlight was empty and backlight 
brightness was set to max, now it again contains a link to acpi_video0 
on my Thinkpad 420s with intel video and adjusting the backlight works 
again.

Joerg
Steven Newbury July 26, 2013, 7:43 a.m. UTC | #10
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.
> 
> 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.
> 
Works fine for me.

Tested-by: Steven Newbury <steve@snewbury.org.uk>

By the way, I'm willing to test any i915 backlight patches if it helps.
Igor Gnatenko July 26, 2013, 11:22 a.m. UTC | #11
On Thu, 2013-07-25 at 21:47 +0200, Rafael J. Wysocki wrote:
> On Thursday, July 25, 2013 08:14:08 PM James Hogan wrote:
> > On 25 July 2013 14:00, Rafael J. Wysocki <rjw@sisk.pl> 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.
> > 
> > Works for me
> 
> Great!
> 
> James, Kamal, Jörg, thanks for confirmations.  I'll tentatively put the revert
> into linux-next in a while.
> 
> Other people who experienced problems with backlight in 3.11-rc2, please let me
> know whether or not the revert works for you too if you can.
> 
> Rafael
> 
> 

Rafael, feel free to CC me in messages with backlight ;) I want to test
its)
Martin Steigerwald July 26, 2013, 12:09 p.m. UTC | #12
Am Donnerstag, 25. Juli 2013, 15:00:26 schrieb Rafael J. Wysocki:
> 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.

Rafael, do you still need more testing urgently? Otherwise I´d wait till its 
in some next 3.11 rc and test then.

Thanks,
Rafael Wysocki July 26, 2013, 12:40 p.m. UTC | #13
On Friday, July 26, 2013 02:09:08 PM Martin Steigerwald wrote:
> Am Donnerstag, 25. Juli 2013, 15:00:26 schrieb Rafael J. Wysocki:
> > 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.
> 
> Rafael, do you still need more testing urgently? Otherwise I´d wait till its 
> in some next 3.11 rc and test then.

Well, it seems to work for everybody else (Steven, Joerg, thanks for your
reports!), so I don't think you need to test it urgently.

Thanks,
Rafael
Kalle Valo July 27, 2013, 5:34 a.m. UTC | #14
"Rafael J. Wysocki" <rjw@sisk.pl> writes:

> James, Kamal, Steven, Jörg, Martin, Kalle, please check if the apppended patch
> fixes the backlight for you.

I did three suspend-resume cycles and didn't notice anything wrong so
this patch fixes the issue for me. I'll continue testing and will report
if I spot any problems.

Tested-by: Kalle Valo <kvalo@adurom.com>
Rafael Wysocki July 27, 2013, 12:18 p.m. UTC | #15
On Saturday, July 27, 2013 08:34:13 AM Kalle Valo wrote:
> "Rafael J. Wysocki" <rjw@sisk.pl> writes:
> 
> > James, Kamal, Steven, Jörg, Martin, Kalle, please check if the apppended patch
> > fixes the backlight for you.
> 
> I did three suspend-resume cycles and didn't notice anything wrong so
> this patch fixes the issue for me. I'll continue testing and will report
> if I spot any problems.
> 
> Tested-by: Kalle Valo <kvalo@adurom.com>

Thanks a lot for the confirmation, this already is in the Linus' tree.

Rafael
Martin Steigerwald Aug. 4, 2013, 7:33 p.m. UTC | #16
Am Freitag, 26. Juli 2013, 14:40:58 schrieb Rafael J. Wysocki:
> On Friday, July 26, 2013 02:09:08 PM Martin Steigerwald wrote:
> > Am Donnerstag, 25. Juli 2013, 15:00:26 schrieb Rafael J. Wysocki:
> > > 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.
> > 
> > Rafael, do you still need more testing urgently? Otherwise I´d wait till
> > its in some next 3.11 rc and test then.
> 
> Well, it seems to work for everybody else (Steven, Joerg, thanks for your
> reports!), so I don't think you need to test it urgently.

Just a late confirmation: With 3.11-rc3 back light stuff is working nicely on 
this ThinkPad T520.

Thanks,
Rafael Wysocki Aug. 4, 2013, 10:15 p.m. UTC | #17
On Sunday, August 04, 2013 09:33:43 PM Martin Steigerwald wrote:
> Am Freitag, 26. Juli 2013, 14:40:58 schrieb Rafael J. Wysocki:
> > On Friday, July 26, 2013 02:09:08 PM Martin Steigerwald wrote:
> > > Am Donnerstag, 25. Juli 2013, 15:00:26 schrieb Rafael J. Wysocki:
> > > > 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.
> > > 
> > > Rafael, do you still need more testing urgently? Otherwise I´d wait till
> > > its in some next 3.11 rc and test then.
> > 
> > Well, it seems to work for everybody else (Steven, Joerg, thanks for your
> > reports!), so I don't think you need to test it urgently.
> 
> Just a late confirmation: With 3.11-rc3 back light stuff is working nicely on 
> this ThinkPad T520.

Thanks!
diff mbox

Patch

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_ */