Hi Luis - On Sat, 20 Jul 2013, "Luis R. Rodriguez" <mcgrof@xxxxxxxxxxxxxxxx> wrote: > From: "Luis R. Rodriguez" <mcgrof@xxxxxxxxxxxxxxxx> > > struct dmi_strmatch was modified on v3.11 with a > exact_match member. The DMI_EXACT_MATCH() macro was > added as a mod version of DMI_MATCH() to account for > dmi strings that look closely like each other. An > example is D510MO Vs D510MOV. > > Since exact_match is is not available on older kernels > we can't use it and must revert to the old DMI_MATCH(). > Addressing the desired behaviour will require a separate > change to deal with addressing the difference > in the behaviour. > > Chris Wilson recommends that if we can't use this we should > also rever the DMI related fixes. I believe these are: > > dcf6d294830d46b0e6901477fb4bf455281d90c8 - drm/i915: quirk away phantom LVDS on Intel's D525MW mainboard > e5614f0c2d0f4d7f0b8ef745d34593baf2c5dbf8 - drm/i915: quirk away phantom LVDS on Intel's D510MO mainboard > > Once we get confirmation we can do that. I agree with Chris about dropping the above two instead of carrying this patch, if you can't backport DMI_EXACT_MATCH implementation. As is, this would regress the longer named variants of D525MW and D510MO. If more users for DMI_EXACT_MATCH start showing up, you may need to figure out a better way if you want to backport the quirks. BR, Jani. > > Proof of why we can't backport DMI_EXACT_MATCH(): > > DMI_EXACT_MATCH uses struct dmi_strmatch's new > member exact_match: > > @@ -456,7 +456,8 @@ enum dmi_field { > }; > > struct dmi_strmatch { > - unsigned char slot; > + unsigned char slot:7; > + unsigned char exact_match:1; > char substr[79]; > }; > > Prior to 5017b285 we only had slot member so to use > DMI_EXACT_MATCH() with its intent we'd have to do something > like: > slot |= 1 > > if its called. This however assumes though that older code has > the sanity check as changed in 5017b285 on drivers/firmware/dmi_scan.c. > dmi_scan.o gets linked with CONFIG_DMI. At least for x86 that gets > objects sprinkled on arch/x86/, but more importantly CONFIG_DMI is > bool. I've argued how I envision us being able to backport core > components before (see 0935deab for the hint) but as it is right > now we can't. We only backport things we can throw in as modular. > > mcgrof@frijol ~/linux-stable (git::master)$ git describe --contains 5017b285 > v3.11-rc1~99^2~254 > > commit 5017b2851373ee15c7035151853bb1448800cae2 > Author: Jani Nikula <jani.nikula@xxxxxxxxx> > Date: Wed Jul 3 15:05:02 2013 -0700 > > dmi: add support for exact DMI matches in addition to substring matching > > dmi_match() considers a substring match to be a successful match. This is > not always sufficient to distinguish between DMI data for different > systems. Add support for exact string matching using strcmp() in addition > to the substring matching using strstr(). > > The specific use case in the i915 driver is to allow us to use an exact > match for D510MO, without also incorrectly matching D510MOV: > > { > .ident = "Intel D510MO", > .matches = { > DMI_MATCH(DMI_BOARD_VENDOR, "Intel"), > DMI_EXACT_MATCH(DMI_BOARD_NAME, "D510MO"), > }, > } > > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > Cc: <annndddrr@xxxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Cornel Panceac <cpanceac@xxxxxxxxx> > Acked-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Greg KH <greg@xxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > > Cc: jani.nikula@xxxxxxxxx > Cc: annndddrr@xxxxxxxxx > Cc: chris@xxxxxxxxxxxxxxxxxx > Cc: cpanceac@xxxxxxxxx > Cc: daniel.vetter@xxxxxxxx > Cc: greg@xxxxxxxxx > Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxxxxxxxxx> > --- > backport/backport-include/linux/mod_devicetable.h | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/backport/backport-include/linux/mod_devicetable.h b/backport/backport-include/linux/mod_devicetable.h > index 1f85ce6..5b63637 100644 > --- a/backport/backport-include/linux/mod_devicetable.h > +++ b/backport/backport-include/linux/mod_devicetable.h > @@ -2,6 +2,10 @@ > #define __BACKPORT_MOD_DEVICETABLE_H > #include_next <linux/mod_devicetable.h> > > +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) > +#define DMI_EXACT_MATCH(a, b) { a, b } > +#endif > + > #ifndef HID_BUS_ANY > #define HID_BUS_ANY 0xffff > #endif > -- > 1.7.10.4 > -- Jani Nikula, Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe backports" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html