[ofw] RE: Make all funcions no-pagable?

Tzachi Dar tzachid at mellanox.co.il
Thu Mar 12 02:35:57 PDT 2009


Applied on 2030, with small changes (I have removed *ALL* alloc_text)
from the code.
 
Thanks
Tzachi


________________________________

	From: James Yang [mailto:jyang at xsigo.com] 
	Sent: Wednesday, March 11, 2009 8:19 PM
	To: Tzachi Dar; ofw at lists.openfabrics.org
	Subject: RE: Make all funcions no-pagable?
	
	

	Here is the patch, it just removes all paged code to make it
simple.

	 

	Thanks,

	James

	 

	Index: core/bus/kernel/bus_driver.c

	
===================================================================

	--- core/bus/kernel/bus_driver.c    (revision 2022)

	+++ core/bus/kernel/bus_driver.c (working copy)

	@@ -126,11 +126,6 @@

	 #pragma alloc_text (INIT, DriverEntry)

	 #pragma alloc_text (INIT, __read_machine_name)

	 #pragma alloc_text (INIT, __read_registry)

	-#pragma alloc_text (PAGE, bus_drv_unload)

	-#pragma alloc_text (PAGE, bus_drv_open)

	-#pragma alloc_text (PAGE, bus_drv_close)

	-#pragma alloc_text (PAGE, bus_drv_ioctl)

	-#pragma alloc_text (PAGE_PNP, bus_drv_sysctl)

	 #endif

	 

	 

	Index: core/bus/kernel/bus_iou_mgr.c

	
===================================================================

	--- core/bus/kernel/bus_iou_mgr.c            (revision 2022)

	+++ core/bus/kernel/bus_iou_mgr.c         (working copy)

	@@ -207,29 +207,7 @@

	                        OUT
cl_irp_action_t* const                 p_action );

	 

	 

	-/* All PnP code is called at passive, so it can all be paged
out. */

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, iou_start)

	-#pragma alloc_text (PAGE, iou_query_remove)

	-#pragma alloc_text (PAGE, iou_release_resources)

	-#pragma alloc_text (PAGE, iou_remove)

	-#pragma alloc_text (PAGE, iou_surprise_remove)

	-#pragma alloc_text (PAGE, iou_query_capabilities)

	-#pragma alloc_text (PAGE, iou_query_target_relations)

	-#pragma alloc_text (PAGE, iou_query_device_id)

	-#pragma alloc_text (PAGE, iou_query_hardware_ids)

	-#pragma alloc_text (PAGE, iou_query_compatible_ids)

	-#pragma alloc_text (PAGE, iou_query_unique_id)

	-#pragma alloc_text (PAGE, iou_query_description)

	-#pragma alloc_text (PAGE, iou_query_location)

	-#pragma alloc_text (PAGE, iou_query_bus_info)

	-#pragma alloc_text (PAGE, iou_query_interface)

	-#pragma alloc_text (PAGE_PNP, iou_set_power)

	-#pragma alloc_text (PAGE, iou_mgr_iou_add)

	-#pragma alloc_text (PAGE, iou_mgr_iou_remove)

	-#endif

	 

	-

	 /*

	  * Global virtual function pointer tables shared between all 

	  * instances of Port PDOs.

	Index: core/bus/kernel/bus_port_mgr.c

	
===================================================================

	--- core/bus/kernel/bus_port_mgr.c          (revision 2022)

	+++ core/bus/kernel/bus_port_mgr.c       (working copy)

	@@ -198,30 +198,7 @@

	                        OUT
cl_irp_action_t* const                 p_action );

	 

	 

	-/* All PnP code is called at passive, so it can all be paged
out. */

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, port_start)

	-#pragma alloc_text (PAGE, port_query_remove)

	-#pragma alloc_text (PAGE, port_release_resources)

	-#pragma alloc_text (PAGE, port_remove)

	-#pragma alloc_text (PAGE, port_surprise_remove)

	-#pragma alloc_text (PAGE, port_query_capabilities)

	-#pragma alloc_text (PAGE, port_query_target_relations)

	-#pragma alloc_text (PAGE, port_query_device_id)

	-#pragma alloc_text (PAGE, port_query_hardware_ids)

	-#pragma alloc_text (PAGE, port_query_compatible_ids)

	-#pragma alloc_text (PAGE, port_query_unique_id)

	-#pragma alloc_text (PAGE, port_query_description)

	-#pragma alloc_text (PAGE, port_query_location)

	-#pragma alloc_text (PAGE, port_query_bus_info)

	-#pragma alloc_text (PAGE, port_query_ipoib_ifc)

	-#pragma alloc_text (PAGE, port_query_interface)

	-#pragma alloc_text (PAGE_PNP, port_set_power)

	-#pragma alloc_text (PAGE, port_mgr_port_add)

	-#pragma alloc_text (PAGE, port_mgr_port_remove)

	-#endif

	 

	-

	 /*

	  * Global virtual function pointer tables shared between all

	  * instances of Port PDOs.

	Index: core/iou/kernel/iou_driver.c

	
===================================================================

	--- core/iou/kernel/iou_driver.c      (revision 2022)

	+++ core/iou/kernel/iou_driver.c   (working copy)

	@@ -99,11 +99,6 @@

	 #ifdef ALLOC_PRAGMA

	 #pragma alloc_text (INIT, DriverEntry)

	 #pragma alloc_text (INIT, __read_registry)

	-#pragma alloc_text (PAGE, iou_unload)

	-#pragma alloc_text (PAGE, iou_drv_open)

	-#pragma alloc_text (PAGE, iou_drv_close)

	-#pragma alloc_text (PAGE, iou_drv_ioctl)

	-#pragma alloc_text (PAGE_PNP, iou_sysctl)

	 #endif

	 

	 

	Index: core/iou/kernel/iou_ioc_mgr.c

	
===================================================================

	--- core/iou/kernel/iou_ioc_mgr.c  (revision 2022)

	+++ core/iou/kernel/iou_ioc_mgr.c           (working copy)

	@@ -190,28 +190,7 @@

	                        OUT
cl_irp_action_t* const                 p_action );

	 

	 

	-/* All PnP code is called at passive, so it can all be paged
out. */

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, ioc_start)

	-#pragma alloc_text (PAGE, ioc_release_resources)

	-#pragma alloc_text (PAGE, ioc_remove)

	-#pragma alloc_text (PAGE, ioc_surprise_remove)

	-#pragma alloc_text (PAGE, ioc_query_capabilities)

	-#pragma alloc_text (PAGE, ioc_query_target_relations)

	-#pragma alloc_text (PAGE, ioc_query_device_id)

	-#pragma alloc_text (PAGE, ioc_query_hardware_ids)

	-#pragma alloc_text (PAGE, ioc_query_compatible_ids)

	-#pragma alloc_text (PAGE, ioc_query_unique_id)

	-#pragma alloc_text (PAGE, ioc_query_description)

	-#pragma alloc_text (PAGE, ioc_query_location)

	-#pragma alloc_text (PAGE, ioc_query_bus_info)

	-#pragma alloc_text (PAGE, ioc_query_interface)

	-#pragma alloc_text (PAGE_PNP, ioc_set_power)

	-#pragma alloc_text (PAGE, ioc_mgr_ioc_add)

	-#pragma alloc_text (PAGE, ioc_mgr_ioc_remove)

	-#endif

	 

	-

	 /*

	  * Global virtual function pointer tables shared between all

	  * instances of Port PDOs.

	Index: core/iou/kernel/iou_pnp.c

	
===================================================================

	--- core/iou/kernel/iou_pnp.c        (revision 2022)

	+++ core/iou/kernel/iou_pnp.c     (working copy)

	@@ -98,19 +98,7 @@

	                        OUT
cl_irp_action_t* const                 p_action );

	 

	 

	-/* All PnP code is called at passive, so it can all be paged
out. */

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, iou_add_device)

	-#pragma alloc_text (PAGE, fdo_start)

	-#pragma alloc_text (PAGE, fdo_query_remove)

	-#pragma alloc_text (PAGE, fdo_release_resources)

	-#pragma alloc_text (PAGE, fdo_query_capabilities)

	-#pragma alloc_text (PAGE, fdo_query_iou_relations)

	-#pragma alloc_text (PAGE_PNP, __fdo_query_power)

	-#pragma alloc_text (PAGE_PNP, __fdo_set_power)

	-#endif

	 

	-

	 /* Global virtual function pointer tables shared between all
instances of FDO. */

	 static const cl_vfptr_pnp_po_t                vfptr_fdo_pnp = {

	            "IB IOU",

	Index: hw/mlx4/kernel/bus/drv/drv.c

	
===================================================================

	--- hw/mlx4/kernel/bus/drv/drv.c   (revision 2022)

	+++ hw/mlx4/kernel/bus/drv/drv.c            (working copy)

	@@ -31,12 +31,6 @@

	 

	 #ifdef ALLOC_PRAGMA

	 #pragma alloc_text (INIT, DriverEntry)

	-#pragma alloc_text (PAGE, EvtDeviceAdd)

	-#pragma alloc_text (PAGE, EvtDriverUnload)

	-#pragma alloc_text (PAGE, EvtDeviceD0Entry)

	-#pragma alloc_text (PAGE, EvtDeviceD0Exit)

	-#pragma alloc_text (PAGE, EvtPrepareHardware)

	-#pragma alloc_text (PAGE, EvtReleaseHardware)

	 #endif

	 

	 #define DRV_VERSION "1.0"

	Index: hw/mlx4/kernel/bus/drv/pci.c

	
===================================================================

	--- hw/mlx4/kernel/bus/drv/pci.c   (revision 2022)

	+++ hw/mlx4/kernel/bus/drv/pci.c            (working copy)

	@@ -128,11 +128,6 @@

	            IN
PCI_COMMON_CONFIG* const  pConfig );

	 

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, __get_bus_ifc)

	-#pragma alloc_text (PAGE, __restore_pci_config)

	-#endif

	-

	 /*

	  * Returns the offset in configuration space of the PCI-X
capabilites.

	  */

	Index: hw/mlx4/kernel/bus/drv/pdo.c

	
===================================================================

	--- hw/mlx4/kernel/bus/drv/pdo.c  (revision 2022)

	+++ hw/mlx4/kernel/bus/drv/pdo.c           (working copy)

	@@ -9,10 +9,6 @@

	 #include "pdo.tmh"

	 #endif 

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text(PAGE, create_pdo)

	-#endif

	-

	 #define MAX_ID_LEN 80

	 

	 NTSTATUS

	Index: hw/mlx4/kernel/bus/drv/wmi.c

	
===================================================================

	--- hw/mlx4/kernel/bus/drv/wmi.c  (revision 2022)

	+++ hw/mlx4/kernel/bus/drv/wmi.c           (working copy)

	@@ -30,13 +30,6 @@

	 #include "wmi.tmh"

	 #endif 

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text(PAGE,WmiRegistration)

	-#pragma alloc_text(PAGE,EvtStdDataSetItem)

	-#pragma alloc_text(PAGE,EvtStdDataSetInstance)

	-#pragma alloc_text(PAGE,EvtStdDataQueryInstance)

	-#endif

	-

	 NTSTATUS

	 WmiRegistration(

	            WDFDEVICE      Device

	Index: hw/mlx4/kernel/hca/drv.c

	
===================================================================

	--- hw/mlx4/kernel/hca/drv.c        (revision 2022)

	+++ hw/mlx4/kernel/hca/drv.c     (working copy)

	@@ -95,12 +95,6 @@

	 

	 #ifdef ALLOC_PRAGMA

	 #pragma alloc_text (INIT, DriverEntry)

	-#pragma alloc_text (PAGE, EvtDeviceAdd)

	-#pragma alloc_text (PAGE, EvtDriverUnload)

	-#pragma alloc_text (PAGE, EvtDeviceD0Entry)

	-#pragma alloc_text (PAGE, EvtDeviceD0Exit)

	-#pragma alloc_text (PAGE, EvtPrepareHardware)

	-#pragma alloc_text (PAGE, EvtReleaseHardware)

	 #endif

	 

	 static NTSTATUS

	@@ -1092,23 +1086,6 @@

	 #ifdef ALLOC_PRAGMA

	 #pragma alloc_text (INIT, DriverEntry)

	 #pragma alloc_text (INIT, __read_registry)

	-#pragma alloc_text (PAGE, hca_drv_unload)

	-#pragma alloc_text (PAGE, hca_sysctl)

	-#pragma alloc_text (PAGE, hca_add_device)

	-#pragma alloc_text (PAGE, hca_start)

	-#pragma alloc_text (PAGE, hca_query_stop)

	-#pragma alloc_text (PAGE, hca_stop)

	-#pragma alloc_text (PAGE, hca_cancel_stop)

	-#pragma alloc_text (PAGE, hca_query_remove)

	-#pragma alloc_text (PAGE, hca_release_resources)

	-#pragma alloc_text (PAGE, hca_cancel_remove)

	-#pragma alloc_text (PAGE, hca_surprise_remove)

	-#pragma alloc_text (PAGE, hca_query_capabilities)

	-#pragma alloc_text (PAGE, hca_query_interface)

	-#pragma alloc_text (PAGE, hca_query_pnp_state)

	-#pragma alloc_text (PAGE, hca_set_power)

	-#pragma alloc_text (PAGE, __alloc_hca_ifc)

	-#pragma alloc_text (PAGE, __get_ci_interface)

	 #endif

	 

	 

	Index: hw/mlx4/kernel/hca/wmi.c

	
===================================================================

	--- hw/mlx4/kernel/hca/wmi.c       (revision 2022)

	+++ hw/mlx4/kernel/hca/wmi.c    (working copy)

	@@ -42,13 +42,6 @@

	 #include "wmi.tmh"

	 #endif

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text(PAGE,WmiRegistration)

	-#pragma alloc_text(PAGE,EvtStdDataSetItem)

	-#pragma alloc_text(PAGE,EvtStdDataSetInstance)

	-#pragma alloc_text(PAGE,EvtStdDataQueryInstance)

	-#endif

	-

	 NTSTATUS

	 WmiRegistration(

	            WDFDEVICE      Device

	Index: hw/mthca/kernel/hca_driver.c

	
===================================================================

	--- hw/mthca/kernel/hca_driver.c  (revision 2022)

	+++ hw/mthca/kernel/hca_driver.c           (working copy)

	@@ -165,8 +165,6 @@

	 #ifdef ALLOC_PRAGMA

	 #pragma alloc_text (INIT, DriverEntry)

	 #pragma alloc_text (INIT, __read_registry)

	-#pragma alloc_text (PAGE, hca_drv_unload)

	-#pragma alloc_text (PAGE, hca_sysctl)

	 #endif

	 

	 NTSTATUS

	Index: hw/mthca/kernel/hca_pci.c

	
===================================================================

	--- hw/mthca/kernel/hca_pci.c     (revision 2022)

	+++ hw/mthca/kernel/hca_pci.c  (working copy)

	@@ -99,13 +99,6 @@

	            IN                                             const
int
is_bridge );

	 

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, __get_bus_ifc)

	-#pragma alloc_text (PAGE, __fixup_pci_capabilities)

	-#pragma alloc_text (PAGE, __save_pci_config)

	-#pragma alloc_text (PAGE, __restore_pci_config)

	-#endif

	-

	 /*

	  * Returns the offset in configuration space of the PCI-X
capabilites.

	  */

	Index: hw/mthca/kernel/hca_pnp.c

	
===================================================================

	--- hw/mthca/kernel/hca_pnp.c    (revision 2022)

	+++ hw/mthca/kernel/hca_pnp.c (working copy)

	@@ -124,25 +124,7 @@

	            IN
DEVICE_OBJECT* const                        p_dev_obj );

	 

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, hca_add_device)

	-#pragma alloc_text (PAGE, hca_start)

	-#pragma alloc_text (PAGE, hca_query_stop)

	-#pragma alloc_text (PAGE, hca_stop)

	-#pragma alloc_text (PAGE, hca_cancel_stop)

	-#pragma alloc_text (PAGE, hca_query_remove)

	-#pragma alloc_text (PAGE, hca_release_resources)

	-#pragma alloc_text (PAGE, hca_cancel_remove)

	-#pragma alloc_text (PAGE, hca_surprise_remove)

	-#pragma alloc_text (PAGE, hca_query_capabilities)

	-#pragma alloc_text (PAGE, hca_query_interface)

	-#pragma alloc_text (PAGE, hca_query_pnp_state)

	-#pragma alloc_text (PAGE, hca_set_power)

	-#pragma alloc_text (PAGE, __alloc_hca_ifc)

	-#pragma alloc_text (PAGE, __get_ci_interface)

	-#endif

	 

	-

	 static cl_vfptr_pnp_po_t vfptrHcaPnp;

	 

	 

	Index: hw/mthca/kernel/mt_cache.c

	
===================================================================

	--- hw/mthca/kernel/mt_cache.c  (revision 2022)

	+++ hw/mthca/kernel/mt_cache.c           (working copy)

	@@ -47,12 +47,7 @@

	 

	 #include "ib_cache.h"

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, ib_cache_setup)

	-#pragma alloc_text (PAGE, ib_cache_cleanup)

	-#endif

	 

	-

	 #pragma warning( disable : 4200)

	 struct ib_pkey_cache {

	            int             table_len;

	Index: hw/mthca/kernel/mthca_av.c

	
===================================================================

	--- hw/mthca/kernel/mthca_av.c   (revision 2022)

	+++ hw/mthca/kernel/mthca_av.c            (working copy)

	@@ -43,11 +43,6 @@

	 #include "mthca_av.tmh"

	 #endif

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, mthca_init_av_table)

	-#pragma alloc_text (PAGE, mthca_cleanup_av_table)

	-#endif

	-           

	 

	 struct mthca_av {

	            __be32 port_pd;

	Index: hw/mthca/kernel/mthca_cq.c

	
===================================================================

	--- hw/mthca/kernel/mthca_cq.c  (revision 2022)

	+++ hw/mthca/kernel/mthca_cq.c           (working copy)

	@@ -49,12 +49,6 @@

	 #include "mthca_memfree.h"

	 #include "mthca_wqe.h"

	 

	-

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, mthca_init_cq_table)

	-#pragma alloc_text (PAGE, mthca_cleanup_cq_table)

	-#endif

	-

	 enum {

	            MTHCA_MAX_DIRECT_CQ_SIZE = 4 * PAGE_SIZE

	 };

	Index: hw/mthca/kernel/mthca_eq.c

	
===================================================================

	--- hw/mthca/kernel/mthca_eq.c  (revision 2022)

	+++ hw/mthca/kernel/mthca_eq.c           (working copy)

	@@ -55,18 +55,6 @@

	                                                     struct
mthca_eq *eq);

	 

	 

	-

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, mthca_map_reg)

	-#pragma alloc_text (PAGE, mthca_map_eq_regs)

	-#pragma alloc_text (PAGE, mthca_init_eq_table)

	-#pragma alloc_text (PAGE, mthca_unmap_eq_regs)

	-#pragma alloc_text (PAGE, mthca_map_eq_icm)

	-#pragma alloc_text (PAGE, mthca_unmap_eq_icm)

	-#pragma alloc_text (PAGE, mthca_create_eq)

	-#pragma alloc_text (PAGE, mthca_cleanup_eq_table)

	-#endif

	-

	 enum {

	            MTHCA_NUM_ASYNC_EQE = 0x80,

	            MTHCA_NUM_CMD_EQE   = 0x80,

	Index: hw/mthca/kernel/mthca_mcg.c

	
===================================================================

	--- hw/mthca/kernel/mthca_mcg.c            (revision 2022)

	+++ hw/mthca/kernel/mthca_mcg.c         (working copy)

	@@ -42,11 +42,6 @@

	 #include "mthca_cmd.h"

	 

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, mthca_init_mcg_table)

	-#pragma alloc_text (PAGE, mthca_cleanup_mcg_table)

	-#endif

	-

	 struct mthca_mgm {

	            __be32 next_gid_index;

	            u32    reserved[3];

	Index: hw/mthca/kernel/mthca_mr.c

	
===================================================================

	--- hw/mthca/kernel/mthca_mr.c  (revision 2022)

	+++ hw/mthca/kernel/mthca_mr.c           (working copy)

	@@ -46,13 +46,6 @@

	 static int mthca_buddy_init(struct mthca_buddy *buddy, int
max_order);

	 static void mthca_buddy_cleanup(struct mthca_buddy *buddy);

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, mthca_buddy_init)

	-#pragma alloc_text (PAGE, mthca_buddy_cleanup)

	-#pragma alloc_text (PAGE, mthca_init_mr_table)

	-#pragma alloc_text (PAGE, mthca_cleanup_mr_table)

	-#endif

	-

	 struct mthca_mtt {

	            struct mthca_buddy *buddy;

	            int                 order;

	Index: hw/mthca/kernel/mthca_pd.c

	
===================================================================

	--- hw/mthca/kernel/mthca_pd.c  (revision 2022)

	+++ hw/mthca/kernel/mthca_pd.c           (working copy)

	@@ -37,11 +37,6 @@

	 #include "mthca_dev.h"

	 

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, mthca_init_pd_table)

	-#pragma alloc_text (PAGE, mthca_cleanup_pd_table)

	-#endif

	-

	 int mthca_pd_alloc(struct mthca_dev *dev, int privileged,
struct mthca_pd *pd)

	 {

	            int err = 0;

	Index: hw/mthca/kernel/mthca_qp.c

	
===================================================================

	--- hw/mthca/kernel/mthca_qp.c  (revision 2022)

	+++ hw/mthca/kernel/mthca_qp.c           (working copy)

	@@ -51,11 +51,6 @@

	 #include "mthca_wqe.h"

	 

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, mthca_init_qp_table)

	-#pragma alloc_text (PAGE, mthca_cleanup_qp_table)

	-#endif

	-

	 enum {

	            MTHCA_MAX_DIRECT_QP_SIZE = 4 * PAGE_SIZE,

	            MTHCA_ACK_REQ_FREQ       = 10,

	Index: hw/mthca/kernel/mthca_srq.c

	
===================================================================

	--- hw/mthca/kernel/mthca_srq.c (revision 2022)

	+++ hw/mthca/kernel/mthca_srq.c          (working copy)

	@@ -45,12 +45,6 @@

	 #include "mthca_wqe.h"

	 

	 

	-#ifdef ALLOC_PRAGMA

	-#pragma alloc_text (PAGE, mthca_init_srq_table)

	-#pragma alloc_text (PAGE, mthca_cleanup_srq_table)

	-#endif

	-

	-

	 enum {

	            MTHCA_MAX_DIRECT_SRQ_SIZE = 4 * PAGE_SIZE

	 };

	Index: tests/alts/kernel/alts_driver.c

	
===================================================================

	--- tests/alts/kernel/alts_driver.c   (revision 2022)

	+++ tests/alts/kernel/alts_driver.c            (working copy)

	@@ -87,9 +87,6 @@

	 

	 #ifdef ALLOC_PRAGMA

	 #pragma alloc_text (INIT, DriverEntry)

	-#pragma alloc_text (PAGE, alts_drv_unload)

	-//#pragma alloc_text (PAGE, alts_ioctl)

	-#pragma alloc_text (PAGE, alts_sysctl)

	 #endif

	 

	 

	 

	
________________________________


	From: Tzachi Dar [mailto:tzachid at mellanox.co.il] 
	Sent: Tuesday, March 03, 2009 7:18 AM
	To: James Yang; ofw at lists.openfabrics.org
	Subject: RE: Make all funcions no-pagable?

	 

	Hi James,

	 

	Please prepare a patch that removes all the #pragma alloc_text
from the code and we will apply it.

	 

	Thanks 

	Tzachi & Leonid

		 

		
________________________________


		From: James Yang [mailto:jyang at xsigo.com] 
		Sent: Tuesday, March 03, 2009 1:29 AM
		To: ofw at lists.openfabrics.org
		Cc: Tzachi Dar
		Subject: Make all funcions no-pagable?

		Hi,

		 

		We discussed this topic before. Today I saw system hangs
during shutdown again. This time function __restore_pci_config caused
the page out problem and stopped forever. Attached is the stack.

		 

		Is there any simple way to disable all the page pragma?
Or we have to go to each line the take them out?

		#pragma alloc_text (PAGE, __restore_pci_config).

		 

		Thanks,

		James

		 

	
------------------------------------------------------------------------
----------

		fffffadf`243d4680 fffff800`01027682
nt!KiSwapContext+0x85

		fffffadf`243d4800 fffff800`0102828e
nt!KiSwapThread+0x3c9

		fffffadf`243d4860 fffff800`01056806
nt!KeWaitForSingleObject+0x5a6

		fffffadf`243d48e0 fffff800`01017091
nt!MiWaitForInPageComplete+0x66

		fffffadf`243d4970 fffff800`01043d24
nt!MiDispatchFault+0x1845

		fffffadf`243d4ab0 fffff800`0102d459
nt!MmAccessFault+0xbb3

		fffffadf`243d4b80 fffffadf`29367b60 nt!KiPageFault+0x119

		fffffadf`243d4d18 fffffadf`2933ff57
mlx4_bus!__restore_pci_config
[c:\windows-openib\src\winib-1864a\hw\mlx4\kernel\bus\drv\pci.c @ 163]

		fffffadf`243d4d20 fffffadf`2934cc63
mlx4_bus!pci_hca_reset+0x667
[c:\windows-openib\src\winib-1864a\hw\mlx4\kernel\bus\drv\pci.c @ 381]

		fffffadf`243d4de0 fffffadf`2933c077
mlx4_bus!mlx4_remove_one+0x1bf
[c:\windows-openib\src\winib-1864a\hw\mlx4\kernel\bus\net\main.c @ 1090]

		fffffadf`243d4e20 fffffadf`2933c502
mlx4_bus!__stop_card+0x37
[c:\windows-openib\src\winib-1864a\hw\mlx4\kernel\bus\drv\drv.c @ 355]

		fffffadf`243d4e50 fffffadf`294e3217
mlx4_bus!EvtDeviceD0Exit+0xf2
[c:\windows-openib\src\winib-1864a\hw\mlx4\kernel\bus\drv\drv.c @ 414]

		fffffadf`243d4ea0 fffffadf`294e2d91
wdf01000!FxPkgPnp::PowerGotoDxIoStopped+0x243

		fffffadf`243d4f50 fffffadf`294e1f5d
wdf01000!FxPkgPnp::PowerGotoDNotZeroIoStopped+0x9

		fffffadf`243d4f80 fffffadf`294e1837
wdf01000!FxPkgPnp::PowerEnterNewState+0x345

		fffffadf`243d50f0 fffffadf`294e1596
wdf01000!FxPkgPnp::PowerProcessEventInner+0x13f

		fffffadf`243d51c0 fffffadf`294f29a6
wdf01000!FxPkgPnp::PowerProcessEvent+0x436

		fffffadf`243d5290 fffffadf`294ee72d
wdf01000!FxPkgPnp::NotPowerPolOwnerGotoDx+0xe

		fffffadf`243d52c0 fffffadf`294edecc
wdf01000!FxPkgPnp::PowerPolicyEnterNewState+0x345

		fffffadf`243d5430 fffffadf`294edc29
wdf01000!FxPkgPnp::PowerPolicyProcessEventInner+0x144

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20090312/4431af34/attachment.html>


More information about the ofw mailing list