2014-06-30 08:49:17

by Matwey V. Kornilov

[permalink] [raw]
Subject: [PATCH 2/2] parport: parport_pc: Add force_epp module option for parport_pc.

>From f5384f47688c116ac765b18bfb01e28b4233b97f Mon Sep 17 00:00:00 2001
From: "Matwey V. Kornilov" <[email protected]>
Date: Wed, 25 Jun 2014 01:08:45 +0400
Subject: [PATCH 2/2] parport: parport_pc: Add force_epp module option for parport_pc.

The detection of Intel EPP bug is known to produce much false positives.
The new option is introduced to force enable EPP in spite of the test result.

Tested-by: Heiko Andreas Sommer <[email protected]>
Signed-off-by: Matwey V. Kornilov <[email protected]>
---
drivers/parport/parport_pc.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
index 4b851bb..1a15b9c 100644
--- a/drivers/parport/parport_pc.c
+++ b/drivers/parport/parport_pc.c
@@ -105,6 +105,9 @@ static int user_specified;
(defined(CONFIG_PARPORT_1284) && defined(CONFIG_PARPORT_PC_FIFO))
static int verbose_probing;
#endif
+#ifdef CONFIG_PARPORT_1284
+static int force_epp;
+#endif
static int pci_registered_parport;
static int pnp_registered_parport;

@@ -1765,7 +1768,7 @@ static int parport_EPP_supported(struct parport *pb)
return 0; /* No way to clear timeout */

/* Check for Intel bug. */
- if (intel_bug_present(pb))
+ if (!force_epp && intel_bug_present(pb))
return 0;

pb->modes |= PARPORT_MODE_EPP;
@@ -3148,6 +3151,10 @@ module_param_array(dma, charp, NULL, 0);
MODULE_PARM_DESC(verbose_probing, "Log chit-chat during initialisation");
module_param(verbose_probing, int, 0644);
#endif
+#ifdef CONFIG_PARPORT_1284
+MODULE_PARM_DESC(force_epp, "Do not disable EPP when it is detected to be broken (default is false)");
+module_param(force_epp, int, 0);
+#endif
#ifdef CONFIG_PCI
static char *init_mode;
MODULE_PARM_DESC(init_mode,
--
1.8.1.4


2014-06-30 22:53:15

by Adam Baker

[permalink] [raw]
Subject: Re: [Linux-parport] [PATCH 2/2] parport: parport_pc: Add force_epp module option for parport_pc.

On 30/06/14 09:48, Matwey V. Kornilov wrote:
>
> The detection of Intel EPP bug is known to produce much false positives.
> The new option is introduced to force enable EPP in spite of the test
> result.

I can confirm that this check produces false positives on a range of
hardware - I no longer have the machine that I experienced the problem
with but when I posted about the issue in the past I had several
responses from other users suffering from the problem.

>
> Tested-by: Heiko Andreas Sommer <[email protected]>
> Signed-off-by: Matwey V. Kornilov <[email protected]>
> ---
> drivers/parport/parport_pc.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
> index 4b851bb..1a15b9c 100644
> --- a/drivers/parport/parport_pc.c
> +++ b/drivers/parport/parport_pc.c
> @@ -105,6 +105,9 @@ static int user_specified;
> (defined(CONFIG_PARPORT_1284) && defined(CONFIG_PARPORT_PC_FIFO))
> static int verbose_probing;
> #endif
> +#ifdef CONFIG_PARPORT_1284
> +static int force_epp;
> +#endif
> static int pci_registered_parport;
> static int pnp_registered_parport;
>
> @@ -1765,7 +1768,7 @@ static int parport_EPP_supported(struct parport *pb)
> return 0; /* No way to clear timeout */
>
> /* Check for Intel bug. */
> - if (intel_bug_present(pb))
> + if (!force_epp && intel_bug_present(pb))
> return 0;
>
> pb->modes |= PARPORT_MODE_EPP;
> @@ -3148,6 +3151,10 @@ module_param_array(dma, charp, NULL, 0);
> MODULE_PARM_DESC(verbose_probing, "Log chit-chat during initialisation");
> module_param(verbose_probing, int, 0644);
> #endif
> +#ifdef CONFIG_PARPORT_1284
> +MODULE_PARM_DESC(force_epp, "Do not disable EPP when it is detected to
> be broken (default is false)");

I think this needs some more explanation - how about
"Disable check for broken Intel EPP hardware that gives false positives
on 2002 and newer hardware"

The 2002 date is based upon
http://thread.gmane.org/gmane.linux.parport/322/focus=326

Last time fixing this was discussed Jonathan Nieder did some digging in
the history and technical details and posted at the tail of the thread at

https://groups.google.com/forum/?_escaped_fragment_=topic/linux.debian.bugs.dist/nhK1ZU4x0Ok#!topic/linux.debian.bugs.dist/nhK1ZU4x0Ok


> +module_param(force_epp, int, 0);
> +#endif
> #ifdef CONFIG_PCI
> static char *init_mode;
> MODULE_PARM_DESC(init_mode,

2014-07-01 07:28:28

by Matwey V. Kornilov

[permalink] [raw]
Subject: Re: [Linux-parport] [PATCH 2/2] parport: parport_pc: Add force_epp module option for parport_pc.


>> +#ifdef CONFIG_PARPORT_1284
>> +MODULE_PARM_DESC(force_epp, "Do not disable EPP when it is detected to
>> be broken (default is false)");
>
> I think this needs some more explanation - how about
> "Disable check for broken Intel EPP hardware that gives false positives on
> 2002 and newer hardware"

I would like to keep force_epp option reusable, then description should be
hardware-agnostic.

Maybe: "Force EPP enabling when buggy hardware found by the module checks."