Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIMotherboardFeaturesEditor.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIMotherboardFeaturesEditor.cpp	(revision 107121)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIMotherboardFeaturesEditor.cpp	(revision 107130)
@@ -36,4 +36,7 @@
 #include "UIMessageCenter.h"
 #include "UIMotherboardFeaturesEditor.h"
+
+/* COM includes: */
+#include "KPlatformArchitecture.h"
 
 
@@ -148,4 +151,19 @@
 }
 
+void UIMotherboardFeaturesEditor::handleFilterChange()
+{
+    /* Some options hidden for ARM machines: */
+    const KPlatformArchitecture enmArch = optionalFlags().contains("arch")
+                                        ? optionalFlags().value("arch").value<KPlatformArchitecture>()
+                                        : KPlatformArchitecture_x86;
+    const bool fARMMachine = enmArch == KPlatformArchitecture_ARM;
+    if (fARMMachine)
+    {
+        if (m_pCheckBoxEnableIoApic)
+            m_pCheckBoxEnableIoApic->hide();
+        rebuildLayout();
+    }
+}
+
 void UIMotherboardFeaturesEditor::sltRetranslateUI()
 {
@@ -243,40 +261,25 @@
         m_pLabel = new QLabel(this);
         if (m_pLabel)
-        {
             m_pLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
-            m_pLayout->addWidget(m_pLabel, 0, 0);
-        }
         /* Prepare 'enable IO APIC' check-box: */
         m_pCheckBoxEnableIoApic = new QCheckBox(this);
         if (m_pCheckBoxEnableIoApic)
-        {
             connect(m_pCheckBoxEnableIoApic, &QCheckBox::stateChanged,
                     this, &UIMotherboardFeaturesEditor::sigChangedIoApic);
-            m_pLayout->addWidget(m_pCheckBoxEnableIoApic, 0, 1);
-        }
         /* Prepare 'enable UTC time' check-box: */
         m_pCheckBoxEnableUtcTime = new QCheckBox(this);
         if (m_pCheckBoxEnableUtcTime)
-        {
             connect(m_pCheckBoxEnableUtcTime, &QCheckBox::stateChanged,
                     this, &UIMotherboardFeaturesEditor::sigChangedUtcTime);
-            m_pLayout->addWidget(m_pCheckBoxEnableUtcTime, 1, 1);
-        }
         /* Prepare 'enable EFI' check-box: */
         m_pCheckBoxEnableEfi = new QCheckBox(this);
         if (m_pCheckBoxEnableEfi)
-        {
             connect(m_pCheckBoxEnableEfi, &QCheckBox::stateChanged,
                     this, &UIMotherboardFeaturesEditor::sltHandleEnableEfiToggling);
-            m_pLayout->addWidget(m_pCheckBoxEnableEfi, 2, 1);
-        }
         /* Prepare 'enable secure boot' check-box: */
         m_pCheckBoxEnableSecureBoot = new QCheckBox(this);
         if (m_pCheckBoxEnableSecureBoot)
-        {
             connect(m_pCheckBoxEnableSecureBoot, &QCheckBox::stateChanged,
                     this, &UIMotherboardFeaturesEditor::sltHandleEnableSecureBootToggling);
-            m_pLayout->addWidget(m_pCheckBoxEnableSecureBoot, 3, 1);
-        }
         /* Prepare 'reset secure boot' tool-button: */
         m_pPushButtonResetSecureBoot = new QPushButton(this);
@@ -286,6 +289,7 @@
             connect(m_pPushButtonResetSecureBoot, &QPushButton::clicked,
                     this, &UIMotherboardFeaturesEditor::sltResetSecureBoot);
-            m_pLayout->addWidget(m_pPushButtonResetSecureBoot, 4, 1);
         }
+
+        rebuildLayout();
     }
 
@@ -297,2 +301,31 @@
     sltRetranslateUI();
 }
+
+void UIMotherboardFeaturesEditor::rebuildLayout()
+{
+    if (m_pLayout)
+    {
+        /* Remove all the widgets from the layout if any: */
+        m_pLayout->removeWidget(m_pLabel);
+        m_pLayout->removeWidget(m_pCheckBoxEnableIoApic);
+        m_pLayout->removeWidget(m_pCheckBoxEnableUtcTime);
+        m_pLayout->removeWidget(m_pCheckBoxEnableEfi);
+        m_pLayout->removeWidget(m_pCheckBoxEnableSecureBoot);
+        m_pLayout->removeWidget(m_pPushButtonResetSecureBoot);
+
+        /* Put them back only if they are visible: */
+        int i = 0;
+        if (m_pLabel)
+            m_pLayout->addWidget(m_pLabel, i, 0);
+        if (m_pCheckBoxEnableIoApic && !m_pCheckBoxEnableIoApic->isHidden())
+            m_pLayout->addWidget(m_pCheckBoxEnableIoApic, i++, 1);
+        if (m_pCheckBoxEnableUtcTime && !m_pCheckBoxEnableUtcTime->isHidden())
+            m_pLayout->addWidget(m_pCheckBoxEnableUtcTime, i++, 1);
+        if (m_pCheckBoxEnableEfi && !m_pCheckBoxEnableEfi->isHidden())
+            m_pLayout->addWidget(m_pCheckBoxEnableEfi, i++, 1);
+        if (m_pCheckBoxEnableSecureBoot && !m_pCheckBoxEnableSecureBoot->isHidden())
+            m_pLayout->addWidget(m_pCheckBoxEnableSecureBoot, i++, 1);
+        if (m_pPushButtonResetSecureBoot && !m_pPushButtonResetSecureBoot->isHidden())
+            m_pLayout->addWidget(m_pPushButtonResetSecureBoot, i++, 1);
+    }
+}
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIMotherboardFeaturesEditor.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIMotherboardFeaturesEditor.h	(revision 107121)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/editors/UIMotherboardFeaturesEditor.h	(revision 107130)
@@ -90,4 +90,9 @@
     void setMinimumLayoutIndent(int iIndent);
 
+protected:
+
+    /** Handles filter change. */
+    virtual void handleFilterChange() RT_OVERRIDE;
+
 private slots:
 
@@ -107,4 +112,6 @@
     /** Prepares all. */
     void prepare();
+    /** Rebuilds layout. */
+    void rebuildLayout();
 
     /** @name Values
