BXE: last debugging attempts bxe origin/bxe
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 3 Feb 2015 14:50:49 +0000 (09:50 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 6 Feb 2015 21:47:30 +0000 (16:47 -0500)
Keeping this around in case we need to come back.

kern/drivers/net/bxe/bxe.c
kern/drivers/net/bxe/ecore_sp.c
kern/src/init.c
kern/src/kdebug.c

index 21eca85..a5b1468 100644 (file)
@@ -2308,6 +2308,7 @@ struct eth_spe *bxe_sp_get_next(struct bxe_adapter *sc)
 {
     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 @@ struct eth_spe *bxe_sp_get_next(struct bxe_adapter *sc)
         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 @@ void bxe_sp_prod_update(struct bxe_adapter *sc)
      */
     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 @@ bxe_sp_post(struct bxe_adapter *sc,
     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 @@ bxe_sp_post(struct bxe_adapter *sc,
         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 @@ bxe_setup_queue(struct bxe_adapter    *sc,
 
     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 @@ bxe_setup_queue(struct bxe_adapter    *sc,
     /* 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 @@ bxe_setup_queue(struct bxe_adapter    *sc,
     /* 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 @@ bxe_initial_phy_init(struct bxe_adapter *sc,
     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_initial_phy_init(struct bxe_adapter *sc,
     }
 
     BXE_PHY_LOCK(sc);
+I_AM_HERE;
 
     if (load_mode == LOAD_DIAG) {
         lp->loopback_mode = ELINK_LOOPBACK_XGXS;
@@ -12384,12 +12400,15 @@ bxe_initial_phy_init(struct bxe_adapter *sc,
         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_nic_load(struct bxe_adapter *sc,
         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 @@ bxe_nic_load(struct bxe_adapter *sc,
     }
 
 
+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 @@ bxe_nic_load(struct bxe_adapter *sc,
                 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 @@ bxe_nic_load(struct bxe_adapter *sc,
             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 @@ bxe_nic_load(struct bxe_adapter *sc,
             rc = ENXIO;
             goto bxe_nic_load_error2;
         }
+I_AM_HERE;
     }
 
     /* attach interrupts */
@@ -12875,8 +12905,10 @@ bxe_nic_load(struct bxe_adapter *sc,
         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 @@ bxe_nic_load(struct bxe_adapter *sc,
         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 @@ bxe_nic_load(struct bxe_adapter *sc,
             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 @@ bxe_nic_load(struct bxe_adapter *sc,
             }
         }
 
+I_AM_HERE;
         rc = bxe_setup_leading(sc);
         if (rc) {
             BLOGE(sc, "Setup leading failed!\n");
@@ -12913,6 +12949,7 @@ bxe_nic_load(struct bxe_adapter *sc,
             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 @@ bxe_nic_load(struct bxe_adapter *sc,
             }
         }
 
+I_AM_HERE;
         rc = bxe_init_rss_pf(sc);
         if (rc) {
             BLOGE(sc, "PF RSS init failed\n");
@@ -12945,6 +12983,7 @@ bxe_nic_load(struct bxe_adapter *sc,
 
     /* 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 @@ bxe_nic_load(struct bxe_adapter *sc,
         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 @@ bxe_nic_load(struct bxe_adapter *sc,
 
     sc->link_params.feature_config_flags &=
         ~ELINK_FEATURE_CONFIG_BOOT_FROM_SAN;
+I_AM_HERE;
 
     /* start fast path */
 
@@ -12999,6 +13040,7 @@ bxe_nic_load(struct bxe_adapter *sc,
     default:
         break;
     }
+I_AM_HERE;
 
     if (sc->port.pmf) {
         bxe_update_drv_flags(sc, 1 << DRV_FLAGS_PORT_MASK, 0);
@@ -13008,6 +13050,7 @@ bxe_nic_load(struct bxe_adapter *sc,
 
     /* 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 @@ int bxe_attach(struct bxe_adapter *sc)
 
     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);
index 7a3c114..c59f706 100644 (file)
@@ -4507,17 +4507,21 @@ int ecore_queue_state_change(struct bxe_adapter *sc,
                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 @@ int ecore_queue_state_change(struct bxe_adapter *sc,
                        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_init(struct bxe_adapter *sc,
 
 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_q_send_empty(struct bxe_adapter *sc,
 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 inline int ecore_queue_send_cmd_cmn(struct bxe_adapter *sc,
 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 @@ static int ecore_queue_send_cmd_e1x(struct bxe_adapter *sc,
        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_e1x(struct bxe_adapter *sc,
 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 @@ void ecore_init_queue_obj(struct bxe_adapter *sc,
 {
        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 @@ void ecore_init_queue_obj(struct bxe_adapter *sc,
        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_hw_reset(struct bxe_adapter *sc,
 
 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 inline int ecore_func_send_tx_start(struct bxe_adapter *sc,
 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 @@ void ecore_init_func_obj(struct bxe_adapter *sc,
 
        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 @@ void ecore_init_func_obj(struct bxe_adapter *sc,
        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);
 }
 
 /**
index 774181d..7980c8d 100644 (file)
@@ -90,6 +90,8 @@ void kernel_init(multiboot_info_t *mboot_info)
        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
index 87f8132..ebe89ac 100644 (file)
@@ -62,6 +62,16 @@ static const char *blacklist[] = {
        "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)