Message ID | 9f0486e5-7ff7-b612-3465-04f47e8c2545@redhat.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On Tue, 14 Nov 2017, Hans de Goede wrote: > Hi, > > On 14-11-17 15:00, Hans de Goede wrote: > > Just like all previous UAS capable Seagate disk enclosures, this > > one needs a US_FL_NO_ATA_1X quirk. > > > > Cc: stable@vger.kernel.org # 3.16 > > Reported-by: Wido <wido.gg@gmail.com> > > Signed-off-by: Hans de Goede <hdegoede@redhat.com> > > > So far we've been adding quirks for Seagate drives on a one by one > basis (I started this myself) hoping that one day they will fix > their ATA_1X pass-through support. But that does not seem to > be happening. > > Maybe we need to do something like this instead ? : > > --- a/drivers/usb/storage/uas-detect.h > +++ b/drivers/usb/storage/uas-detect.h > @@ -111,6 +111,10 @@ static int uas_use_uas_driver(struct usb_interface *intf, > } > } > > + /* All Seagate disk enclosures have broken ATA pass-through support */ > + if (le16_to_cpu(udev->descriptor.idVendor) == 0x0bc2) > + flags |= US_FL_NO_ATA_1X; > + > usb_stor_adjust_quirks(udev, &flags); > > if (flags & US_FL_IGNORE_UAS) { > > > Then we can remove a whole lot of quirks and we avoid future > churn when new Seagate device ids show up. That is a reasonable approach. For what it's worth, usb-storage has had similar code for many years, affecting devices from Nokia, Nikon, Pentax, and Motorola. Alan Stern
Hi, On 11/14/2017 04:25 PM, Alan Stern wrote: > On Tue, 14 Nov 2017, Hans de Goede wrote: > >> Hi, >> >> On 14-11-17 15:00, Hans de Goede wrote: >>> Just like all previous UAS capable Seagate disk enclosures, this >>> one needs a US_FL_NO_ATA_1X quirk. >>> >>> Cc: stable@vger.kernel.org # 3.16 >>> Reported-by: Wido <wido.gg@gmail.com> >>> Signed-off-by: Hans de Goede <hdegoede@redhat.com> >> >> >> So far we've been adding quirks for Seagate drives on a one by one >> basis (I started this myself) hoping that one day they will fix >> their ATA_1X pass-through support. But that does not seem to >> be happening. >> >> Maybe we need to do something like this instead ? : >> >> --- a/drivers/usb/storage/uas-detect.h >> +++ b/drivers/usb/storage/uas-detect.h >> @@ -111,6 +111,10 @@ static int uas_use_uas_driver(struct usb_interface *intf, >> } >> } >> >> + /* All Seagate disk enclosures have broken ATA pass-through support */ >> + if (le16_to_cpu(udev->descriptor.idVendor) == 0x0bc2) >> + flags |= US_FL_NO_ATA_1X; >> + >> usb_stor_adjust_quirks(udev, &flags); >> >> if (flags & US_FL_IGNORE_UAS) { >> >> >> Then we can remove a whole lot of quirks and we avoid future >> churn when new Seagate device ids show up. > > That is a reasonable approach. For what it's worth, usb-storage has > had similar code for many years, affecting devices from Nokia, Nikon, > Pentax, and Motorola. Ok. Greg, please do no merge the 2 recent uas seagate quirks I send then. I will submit a patch with the new approach right away. Once the patch with the new approach is merged I will submit a patch to remove all the seagate quirks. Regards, Hans
Am Dienstag, den 14.11.2017, 18:44 +0100 schrieb Hans de Goede: > > Greg, please do no merge the 2 recent uas seagate quirks I send > then. I will submit a patch with the new approach right away. Hi, I am afraid in that case we will need a way to override a quirk in the other direction, that is, to not apply it. Regards Oliver
Hi, On 15-11-17 10:06, Oliver Neukum wrote: > Am Dienstag, den 14.11.2017, 18:44 +0100 schrieb Hans de Goede: >> >> Greg, please do no merge the 2 recent uas seagate quirks I send >> then. I will submit a patch with the new approach right away. > > Hi, > > I am afraid in that case we will need a way to override a > quirk in the other direction, that is, to not apply it. We already have that usb_stor_adjust_quirks when a match to the device's vend:prod ids is found in usb_storage.quirks, usb_stor_adjust_quirks will clear all quirks it allows to be set through the usb_storage.quirks module option. Regards, Hans
--- a/drivers/usb/storage/uas-detect.h +++ b/drivers/usb/storage/uas-detect.h @@ -111,6 +111,10 @@ static int uas_use_uas_driver(struct usb_interface *intf, } } + /* All Seagate disk enclosures have broken ATA pass-through support */ + if (le16_to_cpu(udev->descriptor.idVendor) == 0x0bc2) + flags |= US_FL_NO_ATA_1X; + usb_stor_adjust_quirks(udev, &flags); if (flags & US_FL_IGNORE_UAS) {