OS/2, eCS & ArcaOS - Technical > Hardware

New ArcaOS USB driver.

<< < (2/4) > >>

Mike Kölling:

--- Quote from: Lars on November 24, 2021, 08:52:21 am ---What version is "the new USB driver"?

--- End quote ---
Hello Lars,

version is 12.10

Regards
Mike

Lars:
Yes, I saw that 12.10 is out. Ok, let's assume that is the version that Remy is talking about ...

I am just too lazy to update stuff that still does not work reliably. But maybe I'll give it a try in a VM (ArcaOS guest) and see if it solves that problems that I have in a VM.

Remy:

--- Quote from: Lars on November 24, 2021, 03:47:51 pm ---Yes, I saw that 12.10 is out. Ok, let's assume that is the version that Remy is talking about ...

I am just too lazy to update stuff that still does not work reliably. But maybe I'll give it a try in a VM (ArcaOS guest) and see if it solves that problems that I have in a VM.

--- End quote ---

Yes,
v12.10

Lars:
The error happens here in OS2DASD.DMD, in routine "VOID _loadds FAR NotifyDoneIORB (fpIORB)":

...
   if ( ((PRPH)pDMWork->pRequest)->Cmd == PB_REQ_LIST)
      NotifyDoneIORB_RLE(pIORB, (PPB_Read_Write) pDMWork->pRequest, pUnitCB);
   else
   {
      NotifyDoneIORB_RP (pIORB, (PBYTE) pDMWork->pRequest, pUnitCB);
   }
...

It happens because "pDMWork->pRequest" is NULL. This is an error within OS2DASD.DMD because it should itself save a request packet pointer to "pRequest" (it is not the ADD [USBMSD.ADD in this case] calling into OS2DASD.DMD, invoking this routine, that sets this pointer, but rather OS2DASD.DMD itself).

The only fix I see is to update OS2DASD.DMD to check if that pointer has a valid value:

if ((PRPH)pDMWork->pRequest)
{
   if ( ((PRPH)pDMWork->pRequest)->Cmd == PB_REQ_LIST)
      NotifyDoneIORB_RLE(pIORB, (PPB_Read_Write) pDMWork->pRequest, pUnitCB);
   else
   {
      NotifyDoneIORB_RP (pIORB, (PBYTE) pDMWork->pRequest, pUnitCB);
   }
}

One of the gazillion bugs that still linger in OS/2 code ...

Cheers,
Lars

Remy:

--- Quote from: Lars on November 25, 2021, 01:19:14 am ---The error happens here in OS2DASD.DMD, in routine "VOID _loadds FAR NotifyDoneIORB (fpIORB)":

...
   if ( ((PRPH)pDMWork->pRequest)->Cmd == PB_REQ_LIST)
      NotifyDoneIORB_RLE(pIORB, (PPB_Read_Write) pDMWork->pRequest, pUnitCB);
   else
   {
      NotifyDoneIORB_RP (pIORB, (PBYTE) pDMWork->pRequest, pUnitCB);
   }
...

It happens because "pDMWork->pRequest" is NULL. This is an error within OS2DASD.DMD because it should itself save a request packet pointer to "pRequest" (it is not the ADD [USBMSD.ADD in this case] calling into OS2DASD.DMD, invoking this routine, that sets this pointer, but rather OS2DASD.DMD itself).

The only fix I see is to update OS2DASD.DMD to check if that pointer has a valid value:

if ((PRPH)pDMWork->pRequest)
{
   if ( ((PRPH)pDMWork->pRequest)->Cmd == PB_REQ_LIST)
      NotifyDoneIORB_RLE(pIORB, (PPB_Read_Write) pDMWork->pRequest, pUnitCB);
   else
   {
      NotifyDoneIORB_RP (pIORB, (PBYTE) pDMWork->pRequest, pUnitCB);
   }
}

One of the gazillion bugs that still linger in OS/2 code ...

Cheers,
Lars

--- End quote ---

Great Lars,

I checked OS2DASD.DMD bldlevel and it is the same under ArcaOS 5.0.2 or 5.0.6
| Build Level Display Facility Version 6.12.675 Sep 25 2001
| (C) Copyright IBM Corporation 1993-2001
| Signature:       @#IBM:14.105#@ IBM DASD Manager
| Vendor:          IBM
| Revision:        14.105
| File Version:    14.105
| Description:     IBM DASD Manager

Regards
Rémy

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version