Re: [PATCH] i915: slow acpi_lid_open() causes flickering

From: Andrew Morton
Date: Mon Feb 01 2010 - 17:34:24 EST


On Mon, 01 Feb 2010 19:20:53 +0100
Thomas Meyer <thomas@xxxxxxxx> wrote:

> acpi_lid_open() could take up to 10ms on my computer.
> Some component is calling the drm GETCONNECTOR ioctl many times in a row.
> This results in flickering (for example, when starting a video).
> Fix it by assuming an always connected lid status.
>
> This fixes bug http://bugzilla.kernel.org/show_bug.cgi?id=14670
>
> ---
> drivers/gpu/drm/i915/intel_lvds.c | 15 ++++++++++++++-
> 1 files changed, 14 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
> index aa74e59..0f0779c 100644
> --- a/drivers/gpu/drm/i915/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/intel_lvds.c
> @@ -632,6 +632,18 @@ static const struct dmi_system_id bad_lid_status[] = {
> { }
> };
>
> +/* Some lid devices take a long time to report the lid status, assume they're connected*/
> +static const struct dmi_system_id slow_lid_status[] = {
> + {
> + .ident = "Aspire 1810T",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 1810T"),
> + },
> + },
> + { }
> +};
> +
> /**
> * Detect the LVDS connection.
> *
> @@ -643,7 +655,8 @@ static enum drm_connector_status intel_lvds_detect(struct drm_connector *connect
> {
> enum drm_connector_status status = connector_status_connected;
>
> - if (!acpi_lid_open() && !dmi_check_system(bad_lid_status))
> + if (!dmi_check_system(slow_lid_status) && !dmi_check_system(bad_lid_status))
> + if (!acpi_lid_open())
> status = connector_status_disconnected;
>
> return status;

The patch is missing your Signed-off-by: line. I cheekily added it.
Please check Documentation/SubmittingPatches, let me know if you
disagree with this, thanks.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/