If using pfile, it must be a filesystem file on local filesystem.
If using spfile, then it can be in the following locations.
-- a filesystem file spfile on local filesystem
-- spfile on shared device
-- a ASM file in a ASM diskgroup (only for spfile for DB instances before 11.2)

Trying to put ASM spfile on a shared device.

Solution

Here are steps to put ASM spfile on a shared device.

1. Edit the pfile and make sure all the parameters could be used for all instances.

2. Login to ASM with sqlplus and startup nomount with pfile.

3. Run the following commands
SQL> create spfile=<shared_device> from pfile;
SQL> Shutdown immediate

4. Backup the pfile to a new filename.

5. Modify the pfile to have only the following entry.
spfile=<shared_device>

6. Do step 4 and 5 on remote nodes.

7. Startup the instances on all nodes with sqlplus to see if it works.

8. If all works, update the OCR ASM registry to have the new spfile location with srvctl command.
Usage: srvctl modify asm -n <node_name> -i <asm_inst_name> [-o <oracle_home>] [-p <spfile>]
-n <node> Node name
-i <asm_inst_name> ASM instance name
-o <oracle_home> ORACLE_HOME path
-p <spfile> Server parameter file path

9. Repeat step 8 for all nodes.

10. Test instance startup with srvctl on all nodes.