summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ic/ami.c13
-rw-r--r--sys/dev/ic/amivar.h4
2 files changed, 13 insertions, 4 deletions
diff --git a/sys/dev/ic/ami.c b/sys/dev/ic/ami.c
index 347a76c334a..a3bdda90670 100644
--- a/sys/dev/ic/ami.c
+++ b/sys/dev/ic/ami.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ami.c,v 1.158 2006/05/21 03:33:53 dlg Exp $ */
+/* $OpenBSD: ami.c,v 1.159 2006/05/21 18:28:24 dlg Exp $ */
/*
* Copyright (c) 2001 Michael Shalayeff
@@ -315,11 +315,18 @@ ami_attach(struct ami_softc *sc)
sc->sc_mbox_pa = htole32(AMIMEM_DVA(sc->sc_mbox_am));
AMI_DPRINTF(AMI_D_CMD, ("mbox_pa=%llx ", sc->sc_mbox_pa));
+ sc->sc_ccbs = malloc(sizeof(struct ami_ccb) * AMI_MAXCMDS,
+ M_DEVBUF, M_NOWAIT);
+ if (sc->sc_ccbs == NULL) {
+ printf(": unable to allocate ccbs\n");
+ goto free_mbox;
+ }
+
sc->sc_ccbmem_am = ami_allocmem(sc,
sizeof(struct ami_ccbmem) * AMI_MAXCMDS);
if (sc->sc_ccbmem_am == NULL) {
printf(": unable to allocate ccb dmamem\n");
- goto free_mbox;
+ goto free_ccbs;
}
ccbmem = AMIMEM_KVA(sc->sc_ccbmem_am);
@@ -566,6 +573,8 @@ destroy:
bus_dmamap_destroy(sc->sc_dmat, ccb->ccb_dmamap);
ami_freemem(sc, sc->sc_ccbmem_am);
+free_ccbs:
+ free(sc->sc_ccbs, M_DEVBUF);
free_mbox:
ami_freemem(sc, sc->sc_mbox_am);
free_idata:
diff --git a/sys/dev/ic/amivar.h b/sys/dev/ic/amivar.h
index d48b49efb68..dc861a51aa2 100644
--- a/sys/dev/ic/amivar.h
+++ b/sys/dev/ic/amivar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: amivar.h,v 1.47 2006/04/20 13:02:26 dlg Exp $ */
+/* $OpenBSD: amivar.h,v 1.48 2006/05/21 18:28:24 dlg Exp $ */
/*
* Copyright (c) 2001 Michael Shalayeff
@@ -110,7 +110,7 @@ struct ami_softc {
volatile struct ami_iocmd *sc_mbox;
paddr_t sc_mbox_pa;
- struct ami_ccb sc_ccbs[AMI_MAXCMDS];
+ struct ami_ccb *sc_ccbs;
struct ami_ccb_list sc_ccb_freeq, sc_ccb_preq, sc_ccb_runq;
struct ami_mem *sc_ccbmem_am;