Yet another driver that probably wouldn't like big mem. ok?

.... Ken

Index: dev/ata/ata.c
===================================================================
RCS file: /cvs/src/sys/dev/ata/ata.c,v
retrieving revision 1.30
diff -u -p -r1.30 ata.c
--- dev/ata/ata.c       23 Jul 2010 07:47:12 -0000      1.30
+++ dev/ata/ata.c       2 Apr 2011 16:23:15 -0000
@@ -32,6 +32,7 @@
 #include <sys/malloc.h>
 #include <sys/device.h>
 #include <sys/syslog.h>
+#include <sys/pool.h>
 
 #include <machine/bus.h>
 
@@ -85,7 +86,7 @@ ata_get_params(struct ata_drive_datas *d
                return CMD_ERR;
        }
 
-       tb = malloc(ATAPARAMS_SIZE, M_DEVBUF, M_NOWAIT | M_ZERO); /* XXX dma 
reachable */
+       tb = dma_alloc(ATAPARAMS_SIZE, PR_NOWAIT | PR_ZERO);
        if (tb == NULL)
                return CMD_AGAIN;
        wdc_c.flags = AT_READ | flags;
@@ -95,7 +96,7 @@ ata_get_params(struct ata_drive_datas *d
        if ((ret = wdc_exec_command(drvp, &wdc_c)) != WDC_COMPLETE) {
                WDCDEBUG_PRINT(("%s: wdc_exec_command failed: %d\n",
                    __func__, ret), DEBUG_PROBE);
-               free(tb, M_DEVBUF);
+               dma_free(tb, ATAPARAMS_SIZE);
                return CMD_AGAIN;
        }
 
@@ -103,7 +104,7 @@ ata_get_params(struct ata_drive_datas *d
                WDCDEBUG_PRINT(("%s: IDENTIFY failed: 0x%x\n", __func__,
                    wdc_c.flags), DEBUG_PROBE);
 
-               free(tb, M_DEVBUF);
+               dma_free(tb, ATAPARAMS_SIZE);
                return CMD_ERR;
        } else {
 #if BYTE_ORDER == BIG_ENDIAN
@@ -150,7 +151,7 @@ ata_get_params(struct ata_drive_datas *d
                        *p = swap16(*p);
                }
 
-               free(tb, M_DEVBUF);
+               dma_free(tb, ATAPARAMS_SIZE);
                return CMD_OK;
        }
 }

Reply via email to