diff --git a/roles/p100_firmware/README.md b/roles/p100_firmware/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..bb5b0479846737672576214a275b578870ba50c6
--- /dev/null
+++ b/roles/p100_firmware/README.md
@@ -0,0 +1,5 @@
+Role to upgrade firwmare on P100 nodes
+
+Usage
+ - { role: p100_firmware, BINARY_NAME: "P100_PCN204260.bin" , tags: [p100]  }
+
diff --git a/roles/p100_firmware/tasks/main.yml b/roles/p100_firmware/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..44580f195db1bab74e0bf39dabd725c233c5d8c0
--- /dev/null
+++ b/roles/p100_firmware/tasks/main.yml
@@ -0,0 +1,69 @@
+---
+- name: "stop nvidia persistence daemon"
+  service: name=nvidia-persistenced  state=stopped
+  become: true
+  become_user: root
+  ignore_errors: true
+- name: stop collectd
+  service: name=collectd state=stopped
+  become: true
+  become_user: root
+  ignore_errors: true
+- name: stop create-dev-uvm 
+  service: name=collectd state=stopped
+  become: true
+  become_user: root
+  ignore_errors: true
+- name: remove nvidia_drm from kernel
+  modprobe:
+    name: nvidia_drm
+    state: absent
+  become: true
+  become_user: root
+- name: remove nvidia_modeset from kernel
+  modprobe:
+    name: nvidia_modeset
+    state: absent
+  become: true
+  become_user: root
+- name: remove nvidia from kernel
+  modprobe:
+    name: nvidia
+    state: absent
+  become: true
+  become_user: root
+- name: check for nvidia modules
+  shell: /usr/sbin/lsmod | grep nvidia
+  ignore_errors: true
+#- meta: end_play
+- name: download Firwmare 
+  get_url:
+    url: "http://consistency0/src/{{ BINARY_NAME }}"
+    dest: "/tmp/{{ BINARY_NAME }}"
+    mode: "0755"
+- name: Run the binary command
+  command: "/tmp/{{ BINARY_NAME }}"
+  #command: "ls -l /tmp/{{ BINARY_NAME }}"
+  become: true
+  become_user: root 
+  register: upgrade_out
+- name: stdout of upgrade is
+  debug: var=upgrade_out.stdout
+- name: stderr of upgrade is
+  debug: var=upgrade_out.stderr
+- name: enable persistenced on boot
+  service: name=nvidia-persistenced state=started enabled=yes
+  become: true
+  become_user: root
+- name: start collectd
+  service: name=collectd state=started
+  become: true
+  become_user: root
+  ignore_errors: true
+- name: start create-dev-uvm 
+  service : name=create-dev-uvm state=started
+  become: true
+  become_user: root
+  ignore_errors: true
+- name: DON'T FORGET TO REBOOT
+  debug: msg="And I really mean it."