diff --git a/res/values/strings.xml b/res/values/strings.xml
index 877da58..1af24a7 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7370,6 +7370,9 @@
     <!-- 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 b655865..eebf47d 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -91,6 +91,10 @@
         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 c673676..d13dba3 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -222,6 +222,8 @@
     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;
@@ -284,6 +286,7 @@
     private ListPreference mBluetoothSelectA2dpLdacPlaybackQuality;
 
     private SwitchPreference mOtaDisableAutomaticUpdate;
+    private SwitchPreference mEnableHalBinderization;
     private SwitchPreference mWifiAllowScansWithTraffic;
     private SwitchPreference mStrictMode;
     private SwitchPreference mPointerLocation;
@@ -522,6 +525,8 @@
 
         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) {
@@ -751,6 +756,7 @@
         updateShowAllANRsOptions();
         updateVerifyAppsOverUsbOptions();
         updateOtaDisableAutomaticUpdateOptions();
+        updateEnableHalBinderizationOptions();
         updateBugreportOptions();
         updateForceRtlOptions();
         updateLogdSizeValues();
@@ -1040,6 +1046,17 @@
                 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) {
@@ -2398,6 +2415,8 @@
             writeVerifyAppsOverUsbOptions();
         } else if (preference == mOtaDisableAutomaticUpdate) {
             writeOtaDisableAutomaticUpdateOptions();
+        } else if (preference == mEnableHalBinderization) {
+            writeEnableHalBinderizationOptions();
         } else if (preference == mStrictMode) {
             writeStrictModeVisualOptions();
         } else if (preference == mPointerLocation) {
