diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index feaf7335c04085a9e6acb46fc119cee9baa57f69..daf116d2558939da700a00d87e650c5b5bbb9102 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -37,6 +37,8 @@
 #include "llavataractions.h"
 #include "llagent.h"
 
+#include "llimview.h"
+#include "llnotificationsutil.h"
 #include "llparticipantlist.h"
 #include "llspeakers.h"
 #include "llviewercontrol.h"
@@ -809,10 +811,43 @@ void LLParticipantList::LLParticipantListMenu::moderateVoiceOtherParticipants(co
 	LLIMSpeakerMgr* mgr = dynamic_cast<LLIMSpeakerMgr*>(mParent.mSpeakerMgr);
 	if (mgr)
 	{
+		if (!unmute)
+		{
+			LLSD payload;
+			payload["session_id"] = mgr->getSessionID();
+			payload["excluded_avatar_id"] = excluded_avatar_id;
+			LLNotificationsUtil::add("ConfirmMuteAll", LLSD(), payload, confirmMuteAllCallback);
+			return;
+		}
+
 		mgr->moderateVoiceOtherParticipants(excluded_avatar_id, unmute);
 	}
 }
 
+// static
+void LLParticipantList::LLParticipantListMenu::confirmMuteAllCallback(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+	if (option != 1)
+	{
+		return;
+	}
+
+	const LLSD& payload = notification["payload"];
+	const LLUUID& session_id = payload["session_id"];
+	const LLUUID& excluded_avatar_id = payload["excluded_avatar_id"];
+
+	LLIMSpeakerMgr * speaker_manager = dynamic_cast<LLIMSpeakerMgr*> (
+			LLIMModel::getInstance()->getSpeakerManager(session_id));
+	if (speaker_manager)
+	{
+		speaker_manager->moderateVoiceOtherParticipants(excluded_avatar_id, false);
+	}
+
+	return;
+}
+
+
 bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& userdata)
 {
 	std::string item = userdata.asString();
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
index bbef8baaac25e70214f7be59fb64c70704ca7029..abaf50386831eb7ffd4104fac27be50edad28af5 100644
--- a/indra/newview/llparticipantlist.h
+++ b/indra/newview/llparticipantlist.h
@@ -216,6 +216,8 @@ class LLParticipantList
 			 * @see moderateVoiceParticipant()
 			 */
 			void moderateVoiceOtherParticipants(const LLUUID& excluded_avatar_id, bool unmute);
+
+			static void confirmMuteAllCallback(const LLSD& notification, const LLSD& response);
 		};
 
 		/**
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 4f46e345203b1288d153c0a1fef700a74df2a4d7..cde1e4774783b09408a7cd9c1b77184fb8e782bd 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -6139,6 +6139,23 @@ Are you sure you want to leave this call?
      <unique/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="ConfirmMuteAll"
+   type="alert">
+You have selected to mute all participants in a group call.
+This will also cause all residents that later join the call to be
+muted, even after you have left the call.
+
+Mute everyone?
+    <usetemplate
+     ignoretext="Confirm before I mute all participants in a group call"
+     name="okcancelignore"
+     notext="Ok"
+     yestext="Cancel"/>
+     <unique/>
+  </notification>
+
   <global name="UnsupportedCPU">
 - Your CPU speed does not meet the minimum requirements.
   </global>