[POWERPC] Change rheap functions to use ulongs instead of pointers
The rheap allocation functions return a pointer, but the actual value is based on how the heap was initialized, and so it can be anything, e.g. an offset into a buffer. A ulong is a better representation of the value returned by the allocation functions. This patch changes all of the relevant rheap functions to use a unsigned long integers instead of a pointer. In case of an error, the value returned is a negative error code that has been cast to an unsigned long. The caller can use the IS_ERR_VALUE() macro to check for this. All code which calls the rheap functions is updated accordingly. Macros IS_MURAM_ERR() and IS_DPERR(), have been deleted in favor of IS_ERR_VALUE(). Also added error checking to rh_attach_region(). Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
@@ -293,7 +293,7 @@ static int fill_init_enet_entries(struct ucc_geth_private *ugeth,
|
||||
else {
|
||||
init_enet_offset =
|
||||
qe_muram_alloc(thread_size, thread_alignment);
|
||||
if (IS_MURAM_ERR(init_enet_offset)) {
|
||||
if (IS_ERR_VALUE(init_enet_offset)) {
|
||||
ugeth_err
|
||||
("fill_init_enet_entries: Can not allocate DPRAM memory.");
|
||||
qe_put_snum((u8) snum);
|
||||
@@ -2594,7 +2594,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
ugeth->tx_bd_ring_offset[j] =
|
||||
qe_muram_alloc(length,
|
||||
UCC_GETH_TX_BD_RING_ALIGNMENT);
|
||||
if (!IS_MURAM_ERR(ugeth->tx_bd_ring_offset[j]))
|
||||
if (!IS_ERR_VALUE(ugeth->tx_bd_ring_offset[j]))
|
||||
ugeth->p_tx_bd_ring[j] =
|
||||
(u8 *) qe_muram_addr(ugeth->
|
||||
tx_bd_ring_offset[j]);
|
||||
@@ -2629,7 +2629,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
ugeth->rx_bd_ring_offset[j] =
|
||||
qe_muram_alloc(length,
|
||||
UCC_GETH_RX_BD_RING_ALIGNMENT);
|
||||
if (!IS_MURAM_ERR(ugeth->rx_bd_ring_offset[j]))
|
||||
if (!IS_ERR_VALUE(ugeth->rx_bd_ring_offset[j]))
|
||||
ugeth->p_rx_bd_ring[j] =
|
||||
(u8 *) qe_muram_addr(ugeth->
|
||||
rx_bd_ring_offset[j]);
|
||||
@@ -2713,7 +2713,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
ugeth->tx_glbl_pram_offset =
|
||||
qe_muram_alloc(sizeof(struct ucc_geth_tx_global_pram),
|
||||
UCC_GETH_TX_GLOBAL_PRAM_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->tx_glbl_pram_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->tx_glbl_pram_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for p_tx_glbl_pram.",
|
||||
__FUNCTION__);
|
||||
@@ -2735,7 +2735,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
sizeof(struct ucc_geth_thread_data_tx) +
|
||||
32 * (numThreadsTxNumerical == 1),
|
||||
UCC_GETH_THREAD_DATA_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->thread_dat_tx_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->thread_dat_tx_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for p_thread_data_tx.",
|
||||
__FUNCTION__);
|
||||
@@ -2763,7 +2763,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
qe_muram_alloc(ug_info->numQueuesTx *
|
||||
sizeof(struct ucc_geth_send_queue_qd),
|
||||
UCC_GETH_SEND_QUEUE_QUEUE_DESCRIPTOR_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->send_q_mem_reg_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->send_q_mem_reg_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for p_send_q_mem_reg.",
|
||||
__FUNCTION__);
|
||||
@@ -2806,7 +2806,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
ugeth->scheduler_offset =
|
||||
qe_muram_alloc(sizeof(struct ucc_geth_scheduler),
|
||||
UCC_GETH_SCHEDULER_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->scheduler_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->scheduler_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for p_scheduler.",
|
||||
__FUNCTION__);
|
||||
@@ -2854,7 +2854,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
qe_muram_alloc(sizeof
|
||||
(struct ucc_geth_tx_firmware_statistics_pram),
|
||||
UCC_GETH_TX_STATISTICS_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->tx_fw_statistics_pram_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->tx_fw_statistics_pram_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for"
|
||||
" p_tx_fw_statistics_pram.", __FUNCTION__);
|
||||
@@ -2893,7 +2893,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
ugeth->rx_glbl_pram_offset =
|
||||
qe_muram_alloc(sizeof(struct ucc_geth_rx_global_pram),
|
||||
UCC_GETH_RX_GLOBAL_PRAM_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->rx_glbl_pram_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->rx_glbl_pram_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for p_rx_glbl_pram.",
|
||||
__FUNCTION__);
|
||||
@@ -2914,7 +2914,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
qe_muram_alloc(numThreadsRxNumerical *
|
||||
sizeof(struct ucc_geth_thread_data_rx),
|
||||
UCC_GETH_THREAD_DATA_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->thread_dat_rx_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->thread_dat_rx_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for p_thread_data_rx.",
|
||||
__FUNCTION__);
|
||||
@@ -2937,7 +2937,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
qe_muram_alloc(sizeof
|
||||
(struct ucc_geth_rx_firmware_statistics_pram),
|
||||
UCC_GETH_RX_STATISTICS_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->rx_fw_statistics_pram_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->rx_fw_statistics_pram_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for"
|
||||
" p_rx_fw_statistics_pram.", __FUNCTION__);
|
||||
@@ -2959,7 +2959,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
qe_muram_alloc(ug_info->numQueuesRx *
|
||||
sizeof(struct ucc_geth_rx_interrupt_coalescing_entry)
|
||||
+ 4, UCC_GETH_RX_INTERRUPT_COALESCING_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->rx_irq_coalescing_tbl_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->rx_irq_coalescing_tbl_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for"
|
||||
" p_rx_irq_coalescing_tbl.", __FUNCTION__);
|
||||
@@ -3027,7 +3027,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
(sizeof(struct ucc_geth_rx_bd_queues_entry) +
|
||||
sizeof(struct ucc_geth_rx_prefetched_bds)),
|
||||
UCC_GETH_RX_BD_QUEUES_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->rx_bd_qs_tbl_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->rx_bd_qs_tbl_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for p_rx_bd_qs_tbl.",
|
||||
__FUNCTION__);
|
||||
@@ -3116,7 +3116,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
ugeth->exf_glbl_param_offset =
|
||||
qe_muram_alloc(sizeof(struct ucc_geth_exf_global_pram),
|
||||
UCC_GETH_RX_EXTENDED_FILTERING_GLOBAL_PARAMETERS_ALIGNMENT);
|
||||
if (IS_MURAM_ERR(ugeth->exf_glbl_param_offset)) {
|
||||
if (IS_ERR_VALUE(ugeth->exf_glbl_param_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for"
|
||||
" p_exf_glbl_param.", __FUNCTION__);
|
||||
@@ -3258,7 +3258,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
|
||||
|
||||
/* Allocate InitEnet command parameter structure */
|
||||
init_enet_pram_offset = qe_muram_alloc(sizeof(struct ucc_geth_init_pram), 4);
|
||||
if (IS_MURAM_ERR(init_enet_pram_offset)) {
|
||||
if (IS_ERR_VALUE(init_enet_pram_offset)) {
|
||||
ugeth_err
|
||||
("%s: Can not allocate DPRAM memory for p_init_enet_pram.",
|
||||
__FUNCTION__);
|
||||
|
Reference in New Issue
Block a user