Message ID | 20160115201305.GN3520@mtj.duckdns.org |
---|---|
State | Not Applicable |
Delegated to: | David Miller |
Headers | show |
On Fri, Jan 15, 2016 at 12:13 PM, Tejun Heo <tj@kernel.org> wrote: > Some early controllers incorrectly reported zero ports in PORTS_IMPL > register and the ahci driver fabricates PORTS_IMPL from the number of > ports in those cases. This hasn't mattered but with the new nvme > controllers there are cases where zero PORTS_IMPL is valid and should > be honored. > > Disable the workaround for >= AHCI 1.3. Tested-by: Andy Lutomirski <luto@kernel.org> --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hello. On 1/15/2016 11:13 PM, Tejun Heo wrote: > Some early controllers incorrectly reported zero ports in PORTS_IMPL > register and the ahci driver fabricates PORTS_IMPL from the number of > ports in those cases. This hasn't mattered but with the new nvme > controllers there are cases where zero PORTS_IMPL is valid and should > be honored. > > Disable the workaround for >= AHCI 1.3. > > Signed-off-by: Tejun Heo <tj@kernel.org> > Reported-by: Andy Lutomirski <luto@amacapital.net> > Link: http://lkml.kernel.org/g/CALCETrU7yMvXEDhjAUShoHEhDwifJGapdw--BKxsP0jmjKGmRw@mail.gmail.com > --- > Hello, Andy. > > Can you please see whether this one works? > > Thanks. > > drivers/ata/libahci.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c > index d61740e..a91432a 100644 > --- a/drivers/ata/libahci.c > +++ b/drivers/ata/libahci.c > @@ -496,8 +496,9 @@ void ahci_save_initial_config(struct device *dev, struct ahci_host_priv *hpriv) > } > } > > - /* fabricate port_map from cap.nr_ports */ > - if (!port_map) { > + /* fabricate port_map from cap.nr_ports for < AHCI 1.3 */ > + if (!port_map && (!(vers >> 16) || > + ((vers >> 16) == 1 && (vers & 0xFFFF) < 0x300))) { Hm, won't just (vers < 0x1300) just work? MBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Jan 16, 2016 at 01:09:37PM +0300, Sergei Shtylyov wrote: > >+ /* fabricate port_map from cap.nr_ports for < AHCI 1.3 */ > >+ if (!port_map && (!(vers >> 16) || > >+ ((vers >> 16) == 1 && (vers & 0xFFFF) < 0x300))) { > > Hm, won't just (vers < 0x1300) just work? lol, indeed. Lemme update the patch. Thanks.
Hello. On 01/19/2016 08:22 PM, Tejun Heo wrote: >>> + /* fabricate port_map from cap.nr_ports for < AHCI 1.3 */ >>> + if (!port_map && (!(vers >> 16) || >>> + ((vers >> 16) == 1 && (vers & 0xFFFF) < 0x300))) { >> >> Hm, won't just (vers < 0x1300) just work? > > lol, indeed. Lemme update the patch. Oops. 0x10300, of course. > Thanks. MBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index d61740e..a91432a 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -496,8 +496,9 @@ void ahci_save_initial_config(struct device *dev, struct ahci_host_priv *hpriv) } } - /* fabricate port_map from cap.nr_ports */ - if (!port_map) { + /* fabricate port_map from cap.nr_ports for < AHCI 1.3 */ + if (!port_map && (!(vers >> 16) || + ((vers >> 16) == 1 && (vers & 0xFFFF) < 0x300))) { port_map = (1 << ahci_nr_ports(cap)) - 1; dev_warn(dev, "forcing PORTS_IMPL to 0x%x\n", port_map);
Some early controllers incorrectly reported zero ports in PORTS_IMPL register and the ahci driver fabricates PORTS_IMPL from the number of ports in those cases. This hasn't mattered but with the new nvme controllers there are cases where zero PORTS_IMPL is valid and should be honored. Disable the workaround for >= AHCI 1.3. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Andy Lutomirski <luto@amacapital.net> Link: http://lkml.kernel.org/g/CALCETrU7yMvXEDhjAUShoHEhDwifJGapdw--BKxsP0jmjKGmRw@mail.gmail.com --- Hello, Andy. Can you please see whether this one works? Thanks. drivers/ata/libahci.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html