diff --git a/meta-phosphor/classes/phosphor-mapper.bbclass b/meta-phosphor/classes/phosphor-mapper.bbclass
index 2910763..7bafecb 100644
--- a/meta-phosphor/classes/phosphor-mapper.bbclass
+++ b/meta-phosphor/classes/phosphor-mapper.bbclass
@@ -18,12 +18,6 @@
 # Add interfaces to be monitored:
 # PHOSPHOR_MAPPER_INTERFACE_append = " foo.bar"
 
-# Blacklist paths from being monitored:
-# PHOSPHOR_MAPPER_NAMESPACE_BLACKLIST_append = " /foo/bar/baz"
-
-# Blacklist interfaces from being monitored:
-# PHOSPHOR_MAPPER_INTERFACE_BLACKLIST_append = " foo.bar.baz"
-
 inherit phosphor-mapperdir
 inherit obmc-phosphor-utils
 
@@ -41,13 +35,8 @@
 
     process_var(d, 'PHOSPHOR_MAPPER_NAMESPACE', 'namespace_dir')
     process_var(d, 'PHOSPHOR_MAPPER_INTERFACE', 'interface_dir')
-    process_var(d, 'PHOSPHOR_MAPPER_NAMESPACE_BLACKLIST', 'blacklist_dir')
-    process_var(
-        d, 'PHOSPHOR_MAPPER_INTERFACE_BLACKLIST', 'interfaceblacklist_dir')
 }
 
 do_install[vardeps] += "PHOSPHOR_MAPPER_NAMESPACE"
 do_install[vardeps] += "PHOSPHOR_MAPPER_INTERFACE"
-do_install[vardeps] += "PHOSPHOR_MAPPER_NAMESPACE_BLACKLIST"
-do_install[vardeps] += "PHOSPHOR_MAPPER_INTERFACE_BLACKLIST"
 do_install[postfuncs] += "phosphor_mapper_do_postinst"
diff --git a/meta-phosphor/classes/phosphor-mapperdir.bbclass b/meta-phosphor/classes/phosphor-mapperdir.bbclass
index 591b63d..33962f2 100644
--- a/meta-phosphor/classes/phosphor-mapperdir.bbclass
+++ b/meta-phosphor/classes/phosphor-mapperdir.bbclass
@@ -1,4 +1,2 @@
 namespace_dir="${datadir}/phosphor-mapper/namespace"
 interface_dir="${datadir}/phosphor-mapper/interface"
-blacklist_dir="${datadir}/phosphor-mapper/blacklist"
-interfaceblacklist_dir="${datadir}/phosphor-mapper/interfaceblacklist"
diff --git a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper-config-native.bb b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper-config-native.bb
index 976c59b..dcc5bd3 100644
--- a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper-config-native.bb
+++ b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper-config-native.bb
@@ -27,15 +27,7 @@
 # Add interfaces to be monitored.
 PHOSPHOR_MAPPER_INTERFACE = ""
 
-# Blacklist paths from being monitored.
-PHOSPHOR_MAPPER_NAMESPACE_BLACKLIST = ""
-
-# Blacklist interfaces from being monitored.
-PHOSPHOR_MAPPER_INTERFACE_BLACKLIST = ""
-
 do_install() {
         install -d ${D}/${namespace_dir}
         install -d ${D}/${interface_dir}
-        install -d ${D}/${blacklist_dir}
-        install -d ${D}/${interfaceblacklist_dir}
 }
diff --git a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service
index aeb734d..394e0ed 100644
--- a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service
+++ b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper/xyz.openbmc_project.ObjectMapper.service
@@ -8,9 +8,7 @@
 Type=dbus
 ExecStart=/usr/bin/env phosphor-mapper \
         --path_namespaces="${{MAPPER_NAMESPACES}}" \
-        --interface_namespaces="${{MAPPER_INTERFACES}}" \
-        --blacklists="${{MAPPER_BLACKLISTS}}" \
-        --interface_blacklists="${{MAPPER_INTERFACEBLACKLISTS}}"
+        --interface_namespaces="${{MAPPER_INTERFACES}}"
 SyslogIdentifier=phosphor-mapper
 BusName={BUSNAME}
 TimeoutStartSec=300
diff --git a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper_git.bb b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper_git.bb
index a67a3ca..6b6cadf 100644
--- a/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper_git.bb
+++ b/meta-phosphor/recipes-phosphor/dbus/phosphor-mapper_git.bb
@@ -64,18 +64,6 @@
     for i in os.listdir(path):
         interfaces.append('.'.join(i.split('-')))
 
-    path = d.getVar('STAGING_DIR_NATIVE', True) + \
-        d.getVar('blacklist_dir', True)
-    blacklists = []
-    for b in os.listdir(path):
-        blacklists.append(os.sep + os.sep.join(b.split('-')))
-
-    path = d.getVar('STAGING_DIR_NATIVE', True) + \
-        d.getVar('interfaceblacklist_dir', True)
-    interface_blacklists = []
-    for ib in os.listdir(path):
-        interface_blacklists.append('.'.join(ib.split('-')))
-
     path = [d.getVar('D', True) + d.getVar('envfiledir', True)]
     path.append('obmc')
     path.append('mapper')
@@ -89,10 +77,6 @@
         fd.write('\n')
         fd.write('MAPPER_INTERFACES="{}"'.format(' '.join(interfaces)))
         fd.write('\n')
-        fd.write('MAPPER_BLACKLISTS="{}"'.format(' '.join(blacklists)))
-        fd.write('\n')
-        fd.write('MAPPER_INTERFACEBLACKLISTS="{}"'.format(' '.join(interface_blacklists)))
-        fd.write('\n')
 }
 
 do_install[postfuncs] += "do_emit_env"
