I got below error when I ran “./rootcrs.pl –patch” as a last command 
[root@Server1 ~]# cd /usr/grid_app/oracle/product/11.2/grid/crs/install
[root@Server1 install]# ./rootcrs.pl -patch
Using configuration parameter file: ./crsconfig_params
Undefined subroutine &main::read_file called at crspatch.pm line 86.
Followed roothas.pl -patch or rootcrs.pl -patch Fails with ‘Undefined subroutine’ (Doc ID 1268390.1)
2]     Take a backup of the file /crs/install/crsconfig_lib.pm
# cd /crs/install
# cp crsconfig_lib.pm crsconfig_lib.pm.bak
Make the following change in that file crsconfig_lib.pm
From
     my @exp_func = qw(check_CRSConfig validate_olrconfig validateOCR
To
     my @exp_func = qw(check_CRSConfig validate_olrconfig validateOCR read_file
Now try with
roothas.pl -patch
or
rootcrs.pl -patch
				 
                
			 
			
                
				
					[racserver1:oracle] /usr/oracle $ crsctl stat res -t -init
——————————————————————————–
NAME           TARGET  STATE        SERVER                   STATE_DETAILS
——————————————————————————–
Cluster Resources
——————————————————————————–
ora.asm
      1        ONLINE  ONLINE       racserver1                 Started
ora.cluster_interconnect.haip
      1        ONLINE  OFFLINE
ora.crf
      1        ONLINE  ONLINE       racserver1
ora.crsd
      1        ONLINE  ONLINE       racserver1
ora.cssd
      1        ONLINE  ONLINE       racserver1
ora.cssdmonitor
      1        ONLINE  ONLINE       racserver1
ora.ctssd
      1        ONLINE  ONLINE       racserver1                 OBSERVER
ora.diskmon
      1        ONLINE  ONLINE       racserver1
ora.drivers.acfs
      1        ONLINE  ONLINE       racserver1
ora.evmd
      1        ONLINE  ONLINE       racserver1
ora.gipcd
      1        ONLINE  ONLINE       racserver1
ora.gpnpd
      1        ONLINE  ONLINE       racserver1
ora.mdnsd
      1        ONLINE  ONLINE       racserver1
 Continue reading HAIP is up on some nodes but not on all RAC nodes »
				 
                
			 
			
                
				
					(1) Get SERVERNUM value from onconfig:
$ onstat -c | grep SERVERNUM
SERVERNUM       2
(2) Convert SERVERNUM value from Decimal (base10) to Hexadecimal (base16):
Decimal 2 = Hex 2
          = 0x2
Note: you may use ms-windows “calc” programmer view.
(3) Apply this fomular with Hexadecimal calculation:
IPC Shared Mem Address = (SERVERNUM_In_Hex * 0x10000) + 0x52564801
                       = (0x2 * 0x10000) + 0x52564801
                       = 0x20000 + 0x52564801
                       = 0x52584801
(4) Therefore, you will get the IPC shared memory address started from 0x52584801..
$ ipcs -m | grep 5258480
key        shmid      owner     perms      bytes      nattch     status
0x52584801 92864520   root      660        2606284800 68         locked
0x52584802 92897299   root      660        2097152000 68         locked
0x52584803 92930070   root      666        561152     68