Changeset 66
- Timestamp:
- Dec 23, 2010, 11:06:03 PM (15 years ago)
- Location:
- trunk/src/os2ahci
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/os2ahci/ahci.c
r57 r66 235 235 if (ai->pci->vendor == PCI_VENDOR_ID_JMICRON && 236 236 ai->pci->device == 0x2361 && ai->port_map != 1) { 237 dprintf("JMB361 has only one port, port_map 0x% x -> 0x%x\n", ai->port_map, 1);237 dprintf("JMB361 has only one port, port_map 0x%lx -> 0x%lx\n", ai->port_map, 1); 238 238 ai->port_map = 1; 239 239 } … … 1029 1029 1030 1030 if (add_workspace(iorb)->complete | (iorb->Status | IORB_ERROR)) { 1031 aws_free(add_workspace(iorb));1032 1031 iorb_done(iorb); 1033 1032 } … … 1230 1229 1231 1230 if (aws->complete) { 1232 /* this IORB is complete */ 1233 aws_free(aws); 1234 1235 /* move IORB to our temporary done queue */ 1231 /* this IORB is complete; move IORB to our temporary done queue */ 1236 1232 iorb_queue_del(&ai->ports[p].iorb_queue, iorb); 1237 1233 iorb_queue_add(&done_queue, iorb); … … 1250 1246 next = iorb->pNxtIORB; 1251 1247 iorb->Status = IORB_DONE; 1248 aws_free(iorb_workspace(iorb)); 1252 1249 if (iorb->RequestControl & IORB_ASYNC_POST) { 1253 1250 iorb->NotifyAddress(iorb); -
trunk/src/os2ahci/ata.c
r60 r66 422 422 423 423 if (rc != 0) { 424 free(aws->buf);425 424 iorb_seterr(iorb, IOERR_CMD_ADD_SOFTWARE_FAILURE); 426 425 } … … 636 635 iorb_requeue(iorb); 637 636 } 638 639 637 } 640 638 -
trunk/src/os2ahci/atapi.c
r65 r66 284 284 } 285 285 286 /* free sense buffer */ 287 aws_free(aws); 288 289 } 290 286 /* mark IORB as complete */ 287 aws->complete = 1; 288 } 289 -
trunk/src/os2ahci/ctxhook.c
r63 r66 117 117 need_reset = 0; 118 118 119 dprintf("port %d, TF_DATA: 0x%lx\n", p, readl(port_mmio + PORT_TFDATA)); 120 119 121 /* get "current command slot"; only valid if there are no NCQ cmds */ 120 122 ccs = (int) ((readl(port_mmio + PORT_CMD) >> 8) & 0x0f); 121 123 122 for (iorb = ai->ports[p].iorb_queue.root; iorb != NULL; iorb = next) {124 for (iorb = ai->ports[p].iorb_queue.root; iorb != NULL; iorb = next) { 123 125 ADD_WORKSPACE _far *aws = add_workspace(iorb); 124 126 next = iorb->pNxtIORB; … … 285 287 286 288 /* move IORB to the local 'done' queue */ 287 aws_free(add_workspace(iorb));288 289 iorb_queue_del(&abort_queue, iorb); 289 290 iorb_queue_add(&done_queue, iorb); … … 331 332 if (add_workspace(iorb)->queued_hw) { 332 333 /* this IORB had already been queued to HW when we reset the port */ 333 aws_free(add_workspace(iorb));334 334 if (add_workspace(iorb)->idempotent) { 335 335 /* We can retry this IORB; just reset its status and it will be 336 336 * picked up by subsequent trigger_engine() calls. 337 337 */ 338 memset(&iorb->ADDWorkSpace, sizeof(iorb->ADDWorkSpace), 0x00);338 requeue_iorb(iorn); 339 339 340 340 } else { … … 356 356 next = iorb->pNxtIORB; 357 357 iorb->Status = IORB_DONE | IORB_ERROR; 358 aws_free(add_workspace(iorb)); 358 359 if (iorb->RequestControl & IORB_ASYNC_POST) { 359 360 iorb->NotifyAddress(iorb); -
trunk/src/os2ahci/libc.c
r37 r66 95 95 /****************************************************************************** 96 96 * Initialize COM1 to 115200,n,8,1 97 * 98 * NOTE: Something is wrong with this code, or the init sequence, but we never 99 * got around to fixing it because it works fine on Virtualbox, and on 100 * physical machines we tend to have the kernel debugger running on the 101 * same port simply because serial ports are not that plenty on PCs 102 * these days, thus KDB will set port parameters for us. This is going 103 * to be fixed eventually... 97 104 */ 98 105 void init_com1(void)
Note:
See TracChangeset
for help on using the changeset viewer.