tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: physio split the request.. cannot proceed



Thor Lancelot Simon <tls%panix.com@localhost> wrote:

> It looks like the problem is that the driver has a bug -- it is only
> using enough bus_dma segments to support a transfer smaller than the
> requested 512K, but trying to set up the full transfer anyway.

The OpenBSD version seems to have fixed it:
-       iiq.system_request_frame_size = htole16(MPII_REQUEST_SIZE / 4);
+       iiq.system_request_frame_size = htole16(sc->sc_request_size / 4);
and later:
-       if (len > MPII_REQUEST_SIZE - sizeof(struct mpii_msg_config_request) ||
-           len < page_length * 4)
+       if (len > sc->sc_request_size - sizeof(*cq) || len < page_length * 4)
                return (1);

> I also notice it has its own minphys() method which _should be_
> constraining the size of this transfer (since it should be the minphys
> on the scsipi channel) but seemingly is not!  That's also worrisome.

The OpenBSD version just uses scsi_minphys.

Updating from it will not be easy, the changeset between 1.51-1.73 
is huge, and we have our own fixes.

-- 
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
manu%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index