Hi, What do you think, would it be better just to left the check for all x86 32-bit hardware?.
2014-07-18 11:31 GMT+04:00 Ondrej Zary <li...@rainbow-software.org>: > On Friday 18 July 2014, mat...@sai.msu.ru wrote: >> From: "Matwey V. Kornilov" <mat...@sai.msu.ru> >> >> The code in intel_bug_present is known to produce much false-positives. >> It is believed that the affected by the bug hardware are used with either >> Intel 80486 or Pentium. >> >> Perform the check only when the kernel configured as CONFIG_X86_32, >> then use cpuinfo_x86 of the first available CPU to check the model >> and run initial check code. >> >> Suggested-by: One Thousand Gnomes <gno...@lxorguk.ukuu.org.uk> >> Tested-by: Heiko Andreas Sommer <hsom...@eso.org> >> Signed-off-by: Matwey V. Kornilov <mat...@sai.msu.ru> >> --- >> drivers/parport/parport_pc.c | 21 ++++++++++++++++++++- >> 1 file changed, 20 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c >> index a6eaafb..6b28f9f 100644 >> --- a/drivers/parport/parport_pc.c >> +++ b/drivers/parport/parport_pc.c >> @@ -65,6 +65,7 @@ >> #include <linux/parport_pc.h> >> #include <linux/via.h> >> #include <asm/parport.h> >> +#include <asm/processor.h> >> >> #define PARPORT_PC_MAX_PORTS PARPORT_MAX >> >> @@ -1702,7 +1703,11 @@ static int parport_ECP_supported(struct parport *pb) >> } >> #endif >> >> -static int intel_bug_present(struct parport *pb) >> +/* It is believed that CPU model correlates with buggy LPT chipset model. >> + Here we check that or CPU is elder than Pentium Pro: either 80486 or >> Pentium. + If it is then we perform The Check. */ >> +#ifdef CONFIG_X86_32 >> +static int intel_bug_present_check_epp(struct parport *pb) >> { >> const struct parport_pc_private *priv = pb->private_data; >> int bug_present = 0; >> @@ -1725,6 +1730,20 @@ static int intel_bug_present(struct parport *pb) >> >> return bug_present; >> } >> +static int intel_bug_present(struct parport *pb) >> +{ >> + struct cpuinfo_x86 *c = &cpu_data(0); >> + >> + if (c->x86_vendor == X86_VENDOR_INTEL && (c->x86 == 4 || c->x86 == 5)) >> + return intel_bug_present_check_epp(pb); > > You can have a non-Intel CPU in a 486 or Pentium board. > >> + return 0; >> +} >> +#else >> +static int intel_bug_present(struct parport *pb) >> +{ >> + return 0; >> +} >> +#endif >> >> static int parport_ECPPS2_supported(struct parport *pb) >> { > > > > -- > Ondrej Zary -- With best regards, Matwey V. Kornilov. Sternberg Astronomical Institute, Lomonosov Moscow State University, Russia -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/