diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1af24a7..877da58 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7370,9 +7370,6 @@
     <!-- Name of the setting to disable the automatic update -->
     <string name="ota_disable_automatic_update">Automatic system updates</string>
 
-    <!-- Name of the setting to enable hal binderization -->
-    <string name="enable_hal_binderization">Binderized HALs (requires reboot)</string>
-
     <!-- Label for category for data usage [CHAR LIMIT=30] -->
     <string name="usage">Usage</string>
 
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index b8f7c84..0c6932d 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -91,10 +91,6 @@
         android:summary="@string/color_temperature_desc" />
 
     <SwitchPreference
-        android:key="enable_hal_binderization"
-        android:title="@string/enable_hal_binderization" />
-
-    <SwitchPreference
         android:key="ota_disable_automatic_update"
         android:title="@string/ota_disable_automatic_update" />
 
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 5958f7b..06c3050 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -226,8 +226,6 @@
     private static final String KEY_CONVERT_FBE = "convert_to_file_encryption";
 
     private static final String OTA_DISABLE_AUTOMATIC_UPDATE_KEY = "ota_disable_automatic_update";
-    private static final String ENABLE_HAL_BINDERIZATION_KEY = "enable_hal_binderization";
-    private static final String ENABLE_HAL_BINDERIZATION_PROPERTY = "persist.hal.binderization";
 
     private static final int RESULT_DEBUG_APP = 1000;
     private static final int RESULT_MOCK_LOCATION_APP = 1001;
@@ -291,7 +289,6 @@
     private ListPreference mBluetoothSelectA2dpLdacPlaybackQuality;
 
     private SwitchPreference mOtaDisableAutomaticUpdate;
-    private SwitchPreference mEnableHalBinderization;
     private SwitchPreference mWifiAllowScansWithTraffic;
     private SwitchPreference mStrictMode;
     private SwitchPreference mPointerLocation;
@@ -531,8 +528,6 @@
 
         mOtaDisableAutomaticUpdate = findAndInitSwitchPref(OTA_DISABLE_AUTOMATIC_UPDATE_KEY);
 
-        mEnableHalBinderization = findAndInitSwitchPref(ENABLE_HAL_BINDERIZATION_KEY);
-
         mColorModePreference = (ColorModePreference) findPreference(KEY_COLOR_MODE);
         mColorModePreference.updateCurrentAndSupported();
         if (mColorModePreference.getColorModeCount() < 2) {
@@ -762,7 +757,6 @@
         updateShowAllANRsOptions();
         updateVerifyAppsOverUsbOptions();
         updateOtaDisableAutomaticUpdateOptions();
-        updateEnableHalBinderizationOptions();
         updateBugreportOptions();
         updateForceRtlOptions();
         updateLogdSizeValues();
@@ -1052,17 +1046,6 @@
                 mOtaDisableAutomaticUpdate.isChecked() ? 0 : 1);
     }
 
-    private void updateEnableHalBinderizationOptions() {
-        updateSwitchPreference(mEnableHalBinderization,
-                SystemProperties.getBoolean(ENABLE_HAL_BINDERIZATION_PROPERTY, false));
-    }
-
-    private void writeEnableHalBinderizationOptions() {
-        SystemProperties.set(ENABLE_HAL_BINDERIZATION_PROPERTY,
-                             mEnableHalBinderization.isChecked() ? "true" : "false");
-        pokeSystemProperties();
-    }
-
     private boolean enableVerifierSetting() {
         final ContentResolver cr = getActivity().getContentResolver();
         if (Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) == 0) {
@@ -2466,8 +2449,6 @@
             writeVerifyAppsOverUsbOptions();
         } else if (preference == mOtaDisableAutomaticUpdate) {
             writeOtaDisableAutomaticUpdateOptions();
-        } else if (preference == mEnableHalBinderization) {
-            writeEnableHalBinderizationOptions();
         } else if (preference == mStrictMode) {
             writeStrictModeVisualOptions();
         } else if (preference == mPointerLocation) {
