BXE: last debugging attempts

Keeping this around in case we need to come back.
diff --git a/kern/drivers/net/bxe/bxe.c b/kern/drivers/net/bxe/bxe.c
index 21eca85..a5b1468 100644
--- a/kern/drivers/net/bxe/bxe.c
+++ b/kern/drivers/net/bxe/bxe.c
@@ -2308,6 +2308,7 @@
 {
     struct eth_spe *next_spe = sc->spq_prod_bd;
 
+static int cnt = 0;
     if (sc->spq_prod_bd == sc->spq_last_bd) {
         /* wrap back to the first eth_spq */
         sc->spq_prod_bd = sc->spq;
@@ -2317,6 +2318,7 @@
         sc->spq_prod_idx++;
     }
 
+printk("SP_GET_NEXT, cnt %d, ret %p, spq %p\n", cnt++, next_spe, sc->spq);
     return (next_spe);
 }
 
@@ -2333,6 +2335,8 @@
      */
     mb();
 
+printk("ABOUT TO WRITE %p to reg %p\n", sc->spq_prod_idx,
+       (BAR_XSTRORM_INTMEM + XSTORM_SPQ_PROD_OFFSET(func)));
     REG_WR16(sc, (BAR_XSTRORM_INTMEM + XSTORM_SPQ_PROD_OFFSET(func)),
              sc->spq_prod_idx);
 
@@ -2389,6 +2393,7 @@
     uint16_t type;
     int common;
 
+printk("SP POST, cmd %d, cid %d hi %08x lo %08x\n", command, cid, data_hi, data_lo);
     common = bxe_is_contextless_ramrod(command, cmd_type);
 
     BXE_SP_LOCK(sc);
@@ -2435,8 +2440,8 @@
         atomic_add(&sc->cq_spq_left, -1);
     }
 
-    BLOGD(sc, DBG_SP, "SPQE -> %#jx\n", (uintmax_t)sc->spq_dma.paddr);
-    BLOGD(sc, DBG_SP, "FUNC_RDATA -> %p / %#jx\n",
+    BLOGD(sc, DBG_SP, "SPE %p, SPQE -> %p\n", spe, (uintmax_t)sc->spq_dma.paddr);
+    BLOGD(sc, DBG_SP, "FUNC_RDATA -> %p / %p\n",
           BXE_SP(sc, func_rdata), (uintmax_t)BXE_SP_MAPPING(sc, func_rdata));
     BLOGD(sc, DBG_SP,
           "SPQE[%x] (%x:%x) (cmd, common?) (%d,%d) hw_cid %x data (%x:%x) type(0x%x) left (CQ, EQ) (%lx,%lx)\n",
@@ -11789,6 +11794,7 @@
 
     q_params.q_obj = &BXE_SP_OBJ(sc, fp).q_obj;
 
+I_AM_HERE;
     /* we want to wait for completion in this context */
     bxe_set_bit(RAMROD_COMP_WAIT, &q_params.ramrod_flags);
 
@@ -11798,8 +11804,10 @@
     /* Set the command */
     q_params.cmd = ECORE_Q_CMD_INIT;
 
+I_AM_HERE;
     /* Change the state to INIT */
     rc = ecore_queue_state_change(sc, &q_params);
+I_AM_HERE;  // made it here
     if (rc) {
         BLOGE(sc, "Queue(%d) INIT failed\n", fp->index);
         return (rc);
@@ -11813,23 +11821,28 @@
     /* set Queue flags */
     setup_params->flags = bxe_get_q_flags(sc, fp, leading);
 
+I_AM_HERE;
     /* set general SETUP parameters */
     bxe_pf_q_prep_general(sc, fp, &setup_params->gen_params,
                           FIRST_TX_COS_INDEX);
+I_AM_HERE;
 
     bxe_pf_rx_q_prep(sc, fp,
                      &setup_params->pause_params,
                      &setup_params->rxq_params);
 
+I_AM_HERE;
     bxe_pf_tx_q_prep(sc, fp,
                      &setup_params->txq_params,
                      FIRST_TX_COS_INDEX);
 
+I_AM_HERE;
     /* Set the command */
     q_params.cmd = ECORE_Q_CMD_SETUP;
 
-    /* change the state to SETUP */
+    /* change the state to SETUP */// XME GO IN HERE
     rc = ecore_queue_state_change(sc, &q_params);
+I_AM_HERE; // never get here
     if (rc) {
         BLOGE(sc, "Queue(%d) SETUP failed\n", fp->index);
         return (rc);
@@ -12335,8 +12348,10 @@
     uint16_t req_line_speed = sc->link_params.req_line_speed[cfg_idx];
     struct elink_params *lp = &sc->link_params;
 
+I_AM_HERE;
     bxe_set_requested_fc(sc);
 
+I_AM_HERE;
     if (CHIP_REV_IS_SLOW(sc)) {
         uint32_t bond = CHIP_BOND_ID(sc);
         uint32_t feat = 0;
@@ -12366,6 +12381,7 @@
     }
 
     BXE_PHY_LOCK(sc);
+I_AM_HERE;
 
     if (load_mode == LOAD_DIAG) {
         lp->loopback_mode = ELINK_LOOPBACK_XGXS;
@@ -12384,12 +12400,15 @@
         lp->loopback_mode = ELINK_LOOPBACK_EXT;
     }
 
+I_AM_HERE;
     rc = elink_phy_init(&sc->link_params, &sc->link_vars);
 
+I_AM_HERE;
     BXE_PHY_UNLOCK(sc);
 
     bxe_calc_fc_adv(sc);
 
+I_AM_HERE;
     if (sc->link_vars.link_up) {
         bxe_stats_handle(sc, STATS_EVENT_LINK_UP);
         bxe_link_report(sc);
@@ -12803,6 +12822,8 @@
         bxe_ilt_set_info(sc);
     }
 
+I_AM_HERE;
+
 //    sc->last_reported_link_state = LINK_STATE_UNKNOWN;
 
     bxe_set_fp_rx_buf_size(sc);
@@ -12815,21 +12836,25 @@
     }
 
 
+I_AM_HERE;
     if (bxe_alloc_mem(sc) != 0) {
         sc->state = BXE_STATE_CLOSED;
         rc = ENOMEM;
         goto bxe_nic_load_error0;
     }
 
+I_AM_HERE;
     if (bxe_alloc_fw_stats_mem(sc) != 0) {
         sc->state = BXE_STATE_CLOSED;
         rc = ENOMEM;
         goto bxe_nic_load_error0;
     }
 
+I_AM_HERE;
     if (IS_PF(sc)) {
         /* set pf load just before approaching the MCP */
         bxe_set_pf_load(sc);
+I_AM_HERE;
 
         /* if MCP exists send load request and analyze response */
         if (!BXE_NOMCP(sc)) {
@@ -12840,6 +12865,7 @@
                 goto bxe_nic_load_error1;
             }
 
+I_AM_HERE;
             /* what did the MCP say? */
             if (bxe_nic_load_analyze_req(sc, load_code) != 0) {
                 bxe_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
@@ -12851,13 +12877,16 @@
             BLOGI(sc, "Device has no MCP!\n");
             load_code = bxe_nic_load_no_mcp(sc);
         }
+I_AM_HERE;
 
         /* mark PMF if applicable */
         bxe_nic_load_pmf(sc, load_code);
+I_AM_HERE;
 
         /* Init Function state controlling object */
         bxe_init_func_obj(sc);
 
+I_AM_HERE;
         /* Initialize HW */
         if (bxe_init_hw(sc, load_code) != 0) {
             BLOGE(sc, "HW init failed\n");
@@ -12866,6 +12895,7 @@
             rc = ENXIO;
             goto bxe_nic_load_error2;
         }
+I_AM_HERE;
     }
 
     /* attach interrupts */
@@ -12875,8 +12905,10 @@
         goto bxe_nic_load_error2;
     }
 
+I_AM_HERE;
     bxe_nic_init(sc, load_code);
 
+I_AM_HERE;
     /* Init per-function objects */
     if (IS_PF(sc)) {
         bxe_init_objs(sc);
@@ -12886,8 +12918,10 @@
         sc->devinfo.mf_info.afex_def_vlan_tag = -1;
         // XXX bxe_nic_load_afex_dcc(sc, load_code);
 
+I_AM_HERE;
         sc->state = BXE_STATE_OPENING_WAITING_PORT;
         rc = bxe_func_start(sc);
+I_AM_HERE;
         if (rc) {
             BLOGE(sc, "Function start failed!\n");
             bxe_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
@@ -12895,8 +12929,9 @@
             goto bxe_nic_load_error3;
         }
 
+I_AM_HERE;
         /* send LOAD_DONE command to MCP */
-        if (!BXE_NOMCP(sc)) {
+        if (!BXE_NOMCP(sc)) {// lllllllllllllllll
             load_code = bxe_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
             if (!load_code) {
                 BLOGE(sc, "MCP response failure, aborting\n");
@@ -12906,6 +12941,7 @@
             }
         }
 
+I_AM_HERE;
         rc = bxe_setup_leading(sc);
         if (rc) {
             BLOGE(sc, "Setup leading failed!\n");
@@ -12913,6 +12949,7 @@
             goto bxe_nic_load_error3;
         }
 
+I_AM_HERE;
         FOR_EACH_NONDEFAULT_ETH_QUEUE(sc, i) {
             rc = bxe_setup_queue(sc, &sc->fp[i], FALSE);
             if (rc) {
@@ -12922,6 +12959,7 @@
             }
         }
 
+I_AM_HERE;
         rc = bxe_init_rss_pf(sc);
         if (rc) {
             BLOGE(sc, "PF RSS init failed\n");
@@ -12945,6 +12983,7 @@
 
     /* now when Clients are configured we are ready to work */
     sc->state = BXE_STATE_OPEN;
+I_AM_HERE;
 
     /* Configure a ucast MAC */
     if (IS_PF(sc)) {
@@ -12968,6 +13007,7 @@
         sc->pending_max = 0;
     }
 #endif
+I_AM_HERE;
 
     if (sc->port.pmf) {
         rc = bxe_initial_phy_init(sc, /* XXX load_mode */LOAD_OPEN);
@@ -12979,6 +13019,7 @@
 
     sc->link_params.feature_config_flags &=
         ~ELINK_FEATURE_CONFIG_BOOT_FROM_SAN;
+I_AM_HERE;
 
     /* start fast path */
 
@@ -12999,6 +13040,7 @@
     default:
         break;
     }
+I_AM_HERE;
 
     if (sc->port.pmf) {
         bxe_update_drv_flags(sc, 1 << DRV_FLAGS_PORT_MASK, 0);
@@ -13008,6 +13050,7 @@
 
     /* start the periodic timer alarm */
     bxe_periodic_start(sc);
+I_AM_HERE;
 
     if (IS_PF(sc) && SHMEM2_HAS(sc, drv_capabilities_flag)) {
         /* mark driver is loaded in shmem2 */
@@ -16267,7 +16310,7 @@
 
     sc->state = BXE_STATE_CLOSED;
 
-	/* what is this? */
+	/* what is this? brho: seems like the device id number.  used in prints */
     //sc->unit = device_get_unit(dev);
 
     BLOGD(sc, DBG_LOAD, "softc = %p\n", sc);
diff --git a/kern/drivers/net/bxe/ecore_sp.c b/kern/drivers/net/bxe/ecore_sp.c
index 7a3c114..c59f706 100644
--- a/kern/drivers/net/bxe/ecore_sp.c
+++ b/kern/drivers/net/bxe/ecore_sp.c
@@ -4507,17 +4507,21 @@
 		return ECORE_INVAL;
 	}
 
+I_AM_HERE;
 	/* Set "pending" bit */
 	ECORE_MSG(sc, "pending bit was=%lx\n", o->pending);
 	pending_bit = o->set_pending(o, params);
 	ECORE_MSG(sc, "pending bit now=%lx\n", o->pending);
 
+I_AM_HERE;
 	/* Don't send a command if only driver cleanup was requested */
 	if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, &params->ramrod_flags))
 		o->complete_cmd(sc, o, pending_bit);
 	else {
 		/* Send a ramrod */
+I_AM_HERE;
 		rc = o->send_cmd(sc, params);
+I_AM_HERE;
 		if (rc) {
 			o->next_state = ECORE_Q_STATE_MAX;
 			ECORE_CLEAR_BIT(pending_bit, pending);
@@ -4525,8 +4529,11 @@
 			return rc;
 		}
 
+I_AM_HERE;
 		if (ECORE_TEST_BIT(RAMROD_COMP_WAIT, &params->ramrod_flags)) {
+I_AM_HERE;
 			rc = o->wait_comp(sc, o, pending_bit);
+I_AM_HERE;
 			if (rc)
 				return rc;
 
@@ -4892,7 +4899,7 @@
 
 static inline int ecore_q_send_setup_e1x(struct bxe_adapter *sc,
 					struct ecore_queue_state_params *params)
-{
+{ // sending this fails XME
 	struct ecore_queue_sp_obj *o = params->q_obj;
 	struct client_init_ramrod_data *rdata =
 		(struct client_init_ramrod_data *)o->rdata;
@@ -5216,28 +5223,40 @@
 static inline int ecore_queue_send_cmd_cmn(struct bxe_adapter *sc,
 					struct ecore_queue_state_params *params)
 {
+I_AM_HERE;
 	switch (params->cmd) {
 	case ECORE_Q_CMD_INIT:
+I_AM_HERE;
 		return ecore_q_init(sc, params);
 	case ECORE_Q_CMD_SETUP_TX_ONLY:
+I_AM_HERE;
 		return ecore_q_send_setup_tx_only(sc, params);
 	case ECORE_Q_CMD_DEACTIVATE:
+I_AM_HERE;
 		return ecore_q_send_deactivate(sc, params);
 	case ECORE_Q_CMD_ACTIVATE:
+I_AM_HERE;
 		return ecore_q_send_activate(sc, params);
 	case ECORE_Q_CMD_UPDATE:
+I_AM_HERE;
 		return ecore_q_send_update(sc, params);
 	case ECORE_Q_CMD_UPDATE_TPA:
+I_AM_HERE;
 		return ecore_q_send_update_tpa(sc, params);
 	case ECORE_Q_CMD_HALT:
+I_AM_HERE;
 		return ecore_q_send_halt(sc, params);
 	case ECORE_Q_CMD_CFC_DEL:
+I_AM_HERE;
 		return ecore_q_send_cfc_del(sc, params);
 	case ECORE_Q_CMD_TERMINATE:
+I_AM_HERE;
 		return ecore_q_send_terminate(sc, params);
 	case ECORE_Q_CMD_EMPTY:
+I_AM_HERE;
 		return ecore_q_send_empty(sc, params);
 	default:
+I_AM_HERE;
 		ECORE_ERR("Unknown command: %d\n", params->cmd);
 		return ECORE_INVAL;
 	}
@@ -5246,8 +5265,10 @@
 static int ecore_queue_send_cmd_e1x(struct bxe_adapter *sc,
 				    struct ecore_queue_state_params *params)
 {
+I_AM_HERE;
 	switch (params->cmd) {
 	case ECORE_Q_CMD_SETUP:
+I_AM_HERE;
 		return ecore_q_send_setup_e1x(sc, params);
 	case ECORE_Q_CMD_INIT:
 	case ECORE_Q_CMD_SETUP_TX_ONLY:
@@ -5259,6 +5280,7 @@
 	case ECORE_Q_CMD_CFC_DEL:
 	case ECORE_Q_CMD_TERMINATE:
 	case ECORE_Q_CMD_EMPTY:
+I_AM_HERE;
 		return ecore_queue_send_cmd_cmn(sc, params);
 	default:
 		ECORE_ERR("Unknown command: %d\n", params->cmd);
@@ -5269,6 +5291,7 @@
 static int ecore_queue_send_cmd_e2(struct bxe_adapter *sc,
 				   struct ecore_queue_state_params *params)
 {
+I_AM_HERE;
 	switch (params->cmd) {
 	case ECORE_Q_CMD_SETUP:
 		return ecore_q_send_setup_e2(sc, params);
@@ -5539,6 +5562,7 @@
 {
 	ECORE_MEMSET(obj, 0, sizeof(*obj));
 
+I_AM_HERE;
 	/* We support only ECORE_MULTI_TX_COS Tx CoS at the moment */
 	ECORE_BUG_ON(ECORE_MULTI_TX_COS < cid_cnt);
 
@@ -5564,6 +5588,7 @@
 	obj->complete_cmd = ecore_queue_comp_cmd;
 	obj->wait_comp = ecore_queue_wait_comp;
 	obj->set_pending = ecore_queue_set_pending;
+printk("INIT QUEU OBJ, obj %p rdata %p mapping %p\n", obj, obj->rdata, obj->rdata_mapping);
 }
 
 /* return a queue object's logical state*/
@@ -6005,7 +6030,7 @@
 
 static inline int ecore_func_send_start(struct bxe_adapter *sc,
 					struct ecore_func_state_params *params)
-{
+{ // sending this works XME
 	struct ecore_func_sp_obj *o = params->f_obj;
 	struct function_start_data *rdata =
 		(struct function_start_data *)o->rdata;
@@ -6171,26 +6196,37 @@
 static int ecore_func_send_cmd(struct bxe_adapter *sc,
 			       struct ecore_func_state_params *params)
 {
+	I_AM_HERE;
 	switch (params->cmd) {
 	case ECORE_F_CMD_HW_INIT:
+	I_AM_HERE;
 		return ecore_func_hw_init(sc, params);
 	case ECORE_F_CMD_START:
+	I_AM_HERE; // w
 		return ecore_func_send_start(sc, params);
 	case ECORE_F_CMD_STOP:
+	I_AM_HERE;
 		return ecore_func_send_stop(sc, params);
 	case ECORE_F_CMD_HW_RESET:
+	I_AM_HERE;
 		return ecore_func_hw_reset(sc, params);
 	case ECORE_F_CMD_AFEX_UPDATE:
+	I_AM_HERE;
 		return ecore_func_send_afex_update(sc, params);
 	case ECORE_F_CMD_AFEX_VIFLISTS:
+	I_AM_HERE;
 		return ecore_func_send_afex_viflists(sc, params);
 	case ECORE_F_CMD_TX_STOP:
+	I_AM_HERE;
 		return ecore_func_send_tx_stop(sc, params);
 	case ECORE_F_CMD_TX_START:
+	I_AM_HERE;
 		return ecore_func_send_tx_start(sc, params);
 	case ECORE_F_CMD_SWITCH_UPDATE:
+	I_AM_HERE;
 		return ecore_func_send_switch_update(sc, params);
 	default:
+	I_AM_HERE;
 		ECORE_ERR("Unknown command: %d\n", params->cmd);
 		return ECORE_INVAL;
 	}
@@ -6206,6 +6242,7 @@
 
 	ECORE_MUTEX_INIT(&obj->one_pending_mutex);
 
+I_AM_HERE;
 	obj->rdata = rdata;
 	obj->rdata_mapping = rdata_mapping;
 	obj->afex_rdata = afex_rdata;
@@ -6215,6 +6252,7 @@
 	obj->complete_cmd = ecore_func_comp_cmd;
 	obj->wait_comp = ecore_func_wait_comp;
 	obj->drv = drv_iface;
+printk("INIT FUNC OBJ, obj %p rdata %p mapping %p\n", obj, obj->rdata, obj->rdata_mapping);
 }
 
 /**
diff --git a/kern/src/init.c b/kern/src/init.c
index 774181d..7980c8d 100644
--- a/kern/src/init.c
+++ b/kern/src/init.c
@@ -90,6 +90,8 @@
 	kb_buf_init(&cons_buf);
 	arch_init();
 	block_init();
+
+	printx_on = TRUE;
 	enable_irq();
 	run_linker_funcs();
 	/* reset/init devtab after linker funcs 3 and 4.  these run NIC and medium
diff --git a/kern/src/kdebug.c b/kern/src/kdebug.c
index 87f8132..ebe89ac 100644
--- a/kern/src/kdebug.c
+++ b/kern/src/kdebug.c
@@ -62,6 +62,16 @@
 	"limborexmit",
 	"rangecompare",
 	"walkadd",
+	"bxe_read_dmae",
+	"bxe_write_dmae",
+	"bxe_prep_dmae_with_comp",
+	"bxe_dmae_opcode",
+	"bxe_dmae_opcode_add_comp",
+	"bxe_issue_dmae_with_comp",
+	"bxe_post_dmae",
+	"ecore_write_dmae_phys_len",
+	"bxe_write_dmae_phys_len",
+	"bxe_dma_alloc",
 };
 
 static bool is_blacklisted(const char *s)