Page MenuHomeFreeBSD

D14215.id.diff
No OneTemporary

D14215.id.diff

Index: head/sys/dev/mpr/mpr.c
===================================================================
--- head/sys/dev/mpr/mpr.c
+++ head/sys/dev/mpr/mpr.c
@@ -397,6 +397,7 @@
reqcr = MIN(reqcr, sc->facts->RequestCredit);
sc->num_reqs = prireqcr + reqcr;
+ sc->num_prireqs = prireqcr;
sc->num_replies = MIN(sc->max_replyframes + sc->max_evtframes,
sc->facts->MaxReplyDescriptorPostQueueDepth) - 1;
@@ -1507,7 +1508,7 @@
/* XXX Is a failure here a critical problem? */
if (bus_dmamap_create(sc->buffer_dmat, 0, &cm->cm_dmamap)
== 0) {
- if (i <= sc->facts->HighPriorityCredit)
+ if (i <= sc->num_prireqs)
mpr_free_high_priority_command(sc, cm);
else
mpr_free_command(sc, cm);
Index: head/sys/dev/mpr/mpr_sas.c
===================================================================
--- head/sys/dev/mpr/mpr_sas.c
+++ head/sys/dev/mpr/mpr_sas.c
@@ -728,7 +728,7 @@
{
struct mprsas_softc *sassc;
cam_status status;
- int unit, error = 0;
+ int unit, error = 0, reqs;
MPR_FUNCTRACE(sc);
mpr_dprint(sc, MPR_INIT, "%s entered\n", __func__);
@@ -758,7 +758,8 @@
sc->sassc = sassc;
sassc->sc = sc;
- if ((sassc->devq = cam_simq_alloc(sc->num_reqs)) == NULL) {
+ reqs = sc->num_reqs - sc->num_prireqs - 1;
+ if ((sassc->devq = cam_simq_alloc(reqs)) == NULL) {
mpr_dprint(sc, MPR_INIT|MPR_ERROR, "Cannot allocate SIMQ\n");
error = ENOMEM;
goto out;
@@ -766,7 +767,7 @@
unit = device_get_unit(sc->mpr_dev);
sassc->sim = cam_sim_alloc(mprsas_action, mprsas_poll, "mpr", sassc,
- unit, &sc->mpr_mtx, sc->num_reqs, sc->num_reqs, sassc->devq);
+ unit, &sc->mpr_mtx, reqs, reqs, sassc->devq);
if (sassc->sim == NULL) {
mpr_dprint(sc, MPR_INIT|MPR_ERROR, "Cannot allocate SIM\n");
error = EINVAL;
Index: head/sys/dev/mpr/mprvar.h
===================================================================
--- head/sys/dev/mpr/mprvar.h
+++ head/sys/dev/mpr/mprvar.h
@@ -357,6 +357,7 @@
MPI2_IOC_FACTS_REPLY *facts;
int num_reqs;
+ int num_prireqs;
int num_replies;
int fqdepth; /* Free queue */
int pqdepth; /* Post queue */
Index: head/sys/dev/mps/mps.c
===================================================================
--- head/sys/dev/mps/mps.c
+++ head/sys/dev/mps/mps.c
@@ -394,6 +394,7 @@
reqcr = MIN(reqcr, sc->facts->RequestCredit);
sc->num_reqs = prireqcr + reqcr;
+ sc->num_prireqs = prireqcr;
sc->num_replies = MIN(sc->max_replyframes + sc->max_evtframes,
sc->facts->MaxReplyDescriptorPostQueueDepth) - 1;
@@ -1453,7 +1454,7 @@
/* XXX Is a failure here a critical problem? */
if (bus_dmamap_create(sc->buffer_dmat, 0, &cm->cm_dmamap) == 0)
- if (i <= sc->facts->HighPriorityCredit)
+ if (i <= sc->num_prireqs)
mps_free_high_priority_command(sc, cm);
else
mps_free_command(sc, cm);
Index: head/sys/dev/mps/mps_sas.c
===================================================================
--- head/sys/dev/mps/mps_sas.c
+++ head/sys/dev/mps/mps_sas.c
@@ -718,7 +718,7 @@
{
struct mpssas_softc *sassc;
cam_status status;
- int unit, error = 0;
+ int unit, error = 0, reqs;
MPS_FUNCTRACE(sc);
mps_dprint(sc, MPS_INIT, "%s entered\n", __func__);
@@ -748,7 +748,8 @@
sc->sassc = sassc;
sassc->sc = sc;
- if ((sassc->devq = cam_simq_alloc(sc->num_reqs)) == NULL) {
+ reqs = sc->num_reqs - sc->num_prireqs - 1;
+ if ((sassc->devq = cam_simq_alloc(reqs)) == NULL) {
mps_dprint(sc, MPS_ERROR, "Cannot allocate SIMQ\n");
error = ENOMEM;
goto out;
@@ -756,7 +757,7 @@
unit = device_get_unit(sc->mps_dev);
sassc->sim = cam_sim_alloc(mpssas_action, mpssas_poll, "mps", sassc,
- unit, &sc->mps_mtx, sc->num_reqs, sc->num_reqs, sassc->devq);
+ unit, &sc->mps_mtx, reqs, reqs, sassc->devq);
if (sassc->sim == NULL) {
mps_dprint(sc, MPS_INIT|MPS_ERROR, "Cannot allocate SIM\n");
error = EINVAL;
Index: head/sys/dev/mps/mpsvar.h
===================================================================
--- head/sys/dev/mps/mpsvar.h
+++ head/sys/dev/mps/mpsvar.h
@@ -345,6 +345,7 @@
MPI2_IOC_FACTS_REPLY *facts;
int num_reqs;
+ int num_prireqs;
int num_replies;
int fqdepth; /* Free queue */
int pqdepth; /* Post queue */

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 6, 3:08 PM (6 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17011640
Default Alt Text
D14215.id.diff (4 KB)

Event Timeline