diff mbox

[OpenWrt-Devel] Make virtualization guests built for pentium4 with SMP

Message ID 1436585832-18681-1-git-send-email-daniel@gimpelevich.san-francisco.ca.us
State Accepted
Delegated to: Hauke Mehrtens
Headers show

Commit Message

Daniel Gimpelevich July 11, 2015, 3:37 a.m. UTC
Signed-off-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
---
 include/target.mk                         |  1 +
 target/linux/x86/kvm_guest/config-default | 15 ++++++++++++++-
 target/linux/x86/kvm_guest/target.mk      |  1 +
 target/linux/x86/xen_domu/target.mk       |  1 +
 4 files changed, 17 insertions(+), 1 deletion(-)

Comments

Hauke Mehrtens July 12, 2015, noon UTC | #1
On 07/11/2015 05:37 AM, Daniel Gimpelevich wrote:
> Signed-off-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
> ---
>  include/target.mk                         |  1 +
>  target/linux/x86/kvm_guest/config-default | 15 ++++++++++++++-
>  target/linux/x86/kvm_guest/target.mk      |  1 +
>  target/linux/x86/xen_domu/target.mk       |  1 +
>  4 files changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/include/target.mk b/include/target.mk
> index bfead52..3e7f17d 100644
> --- a/include/target.mk
> +++ b/include/target.mk
> @@ -222,6 +222,7 @@ ifeq ($(DUMP),1)
>    ifeq ($(ARCH),i386)
>      CPU_TYPE ?= i486
>      CPU_CFLAGS_i486 = -march=i486
> +    CPU_CFLAGS_pentium4 = -march=pentium4

Will this work on most CPUs also the Atoms and so on?
I would rather prefer -march=i686 and -mtune=generic for the x86 virtual
machine images, but I am not an x86 expert. Do I need hardware support
for visualization in my host CPU for all these images? Are all the AMD
CPUs with hardware visualization support when IO build with
-march=pentium4 ?

>      CPU_CFLAGS_geode = -march=geode -mmmx -m3dnow
>    endif
>    ifneq ($(findstring arm,$(ARCH)),)
> diff --git a/target/linux/x86/kvm_guest/config-default b/target/linux/x86/kvm_guest/config-default
> index f26e268..b54b1df 100644
> --- a/target/linux/x86/kvm_guest/config-default
> +++ b/target/linux/x86/kvm_guest/config-default
> @@ -19,12 +19,14 @@ CONFIG_ACPI_PROCESSOR=y
>  # CONFIG_ACPI_THERMAL is not set
>  # CONFIG_ACPI_WMI is not set
>  CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
> +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
>  # CONFIG_ASUS_LAPTOP is not set
>  CONFIG_CPU_IDLE_GOV_MENU=y
>  # CONFIG_EEEPC_LAPTOP is not set
>  # CONFIG_EFI is not set
>  CONFIG_HAVE_ACPI_APEI=y
>  CONFIG_HAVE_ACPI_APEI_NMI=y
> +# CONFIG_HIGHMEM64G is not set
>  CONFIG_HOTPLUG_PCI=y
>  CONFIG_HOTPLUG_PCI_ACPI=y
>  # CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
> @@ -45,17 +47,21 @@ CONFIG_HYPERVISOR_GUEST=y
>  CONFIG_KVM_GUEST=y
>  # CONFIG_LGUEST is not set
>  # CONFIG_LGUEST_GUEST is not set
> -CONFIG_NLS=y
>  CONFIG_NO_HZ=y
> +# CONFIG_M486 is not set
> +CONFIG_MPENTIUM4=y
> +CONFIG_NR_CPUS=4
>  CONFIG_PARAVIRT=y
>  CONFIG_PARAVIRT_CLOCK=y
>  # CONFIG_PARAVIRT_DEBUG is not set
> +CONFIG_PARAVIRT_SPINLOCKS=y
>  CONFIG_PARAVIRT_TIME_ACCOUNTING=y
>  CONFIG_PCIEAER=y
>  CONFIG_PCIEPORTBUS=y
>  CONFIG_PCI_IOAPIC=y
>  CONFIG_PCI_LABEL=y
>  CONFIG_PCI_MMCONFIG=y
> +CONFIG_PHYS_ADDR_T_64BIT=y
>  CONFIG_PNP=y
>  CONFIG_PNPACPI=y
>  CONFIG_PNP_DEBUG_MESSAGES=y
> @@ -64,6 +70,8 @@ CONFIG_RAS=y
>  # CONFIG_SAMSUNG_Q10 is not set
>  # CONFIG_SCSI_VIRTIO is not set
>  CONFIG_SERIAL_8250_PNP=y
> +CONFIG_SLUB_CPU_PARTIAL=y
> +CONFIG_SMP=y
>  # CONFIG_THINKPAD_ACPI is not set
>  # CONFIG_TOPSTAR_LAPTOP is not set
>  # CONFIG_TOSHIBA_BT_RFKILL is not set
> @@ -76,14 +84,19 @@ CONFIG_VIRTIO_PCI=y
>  CONFIG_VIRTUALIZATION=y
>  # CONFIG_VMWARE_BALLOON is not set
>  # CONFIG_VT_HW_CONSOLE_BINDING is not set
> +CONFIG_X86_32_SMP=y
>  # CONFIG_X86_ACPI_CPUFREQ is not set
> +# CONFIG_X86_BIGSMP is not set
>  # CONFIG_X86_E_POWERSAVER is not set
>  # CONFIG_X86_GENERIC is not set
> +CONFIG_X86_HT=y
>  # CONFIG_X86_INTEL_LPSS is not set
>  CONFIG_X86_INTERNODE_CACHE_SHIFT=4
>  CONFIG_X86_L1_CACHE_SHIFT=4
>  # CONFIG_X86_LONGHAUL is not set
> +CONFIG_X86_PAE=y
>  # CONFIG_X86_PAT is not set
>  # CONFIG_X86_PCC_CPUFREQ is not set
>  CONFIG_X86_PM_TIMER=y
>  # CONFIG_X86_PPRO_FENCE is not set
> +# CONFIG_XEN is not set
> diff --git a/target/linux/x86/kvm_guest/target.mk b/target/linux/x86/kvm_guest/target.mk
> index d3f950f..4bdfbc6 100644
> --- a/target/linux/x86/kvm_guest/target.mk
> +++ b/target/linux/x86/kvm_guest/target.mk
> @@ -1,3 +1,4 @@
>  BOARDNAME:=KVM Guest
>  FEATURES:=ext4 pci usb
>  DEFAULT_PACKAGES += kmod-virtio-balloon kmod-virtio-net kmod-virtio-random
> +CPU_TYPE := pentium4
> diff --git a/target/linux/x86/xen_domu/target.mk b/target/linux/x86/xen_domu/target.mk
> index f7a69bf..31d110c 100644
> --- a/target/linux/x86/xen_domu/target.mk
> +++ b/target/linux/x86/xen_domu/target.mk
> @@ -1,3 +1,4 @@
>  BOARDNAME:=Xen Paravirt Guest
>  DEFAULT_PACKAGES += kmod-xen-fs kmod-xen-evtchn kmod-xen-netdev kmod-xen-kbddev
>  FEATURES:=display ext4 targz
> +CPU_TYPE := pentium4
>
Daniel Gimpelevich July 12, 2015, 4:25 p.m. UTC | #2
On Sun, 2015-07-12 at 14:00 +0200, Hauke Mehrtens wrote:
> Will this work on most CPUs also the Atoms and so on?
> I would rather prefer -march=i686 and -mtune=generic for the x86
> virtual
> machine images, but I am not an x86 expert. Do I need hardware support
> for visualization in my host CPU for all these images? Are all the AMD
> CPUs with hardware visualization support when IO build with
> -march=pentium4 ?

It's already used for the Xen guest kernel, just not GCC. The gcc
manpage says that all -march=pentium4 means is enable MMX, SSE, and
SSE2, which I believe the old Atoms support, but even if they don't,
running any VM on such low-spec processors isn't likely to work anyway.
Using -march=i686 is an alias for Pentium Pro, that is, before the
Pentium II.
diff mbox

Patch

diff --git a/include/target.mk b/include/target.mk
index bfead52..3e7f17d 100644
--- a/include/target.mk
+++ b/include/target.mk
@@ -222,6 +222,7 @@  ifeq ($(DUMP),1)
   ifeq ($(ARCH),i386)
     CPU_TYPE ?= i486
     CPU_CFLAGS_i486 = -march=i486
+    CPU_CFLAGS_pentium4 = -march=pentium4
     CPU_CFLAGS_geode = -march=geode -mmmx -m3dnow
   endif
   ifneq ($(findstring arm,$(ARCH)),)
diff --git a/target/linux/x86/kvm_guest/config-default b/target/linux/x86/kvm_guest/config-default
index f26e268..b54b1df 100644
--- a/target/linux/x86/kvm_guest/config-default
+++ b/target/linux/x86/kvm_guest/config-default
@@ -19,12 +19,14 @@  CONFIG_ACPI_PROCESSOR=y
 # CONFIG_ACPI_THERMAL is not set
 # CONFIG_ACPI_WMI is not set
 CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
 # CONFIG_ASUS_LAPTOP is not set
 CONFIG_CPU_IDLE_GOV_MENU=y
 # CONFIG_EEEPC_LAPTOP is not set
 # CONFIG_EFI is not set
 CONFIG_HAVE_ACPI_APEI=y
 CONFIG_HAVE_ACPI_APEI_NMI=y
+# CONFIG_HIGHMEM64G is not set
 CONFIG_HOTPLUG_PCI=y
 CONFIG_HOTPLUG_PCI_ACPI=y
 # CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
@@ -45,17 +47,21 @@  CONFIG_HYPERVISOR_GUEST=y
 CONFIG_KVM_GUEST=y
 # CONFIG_LGUEST is not set
 # CONFIG_LGUEST_GUEST is not set
-CONFIG_NLS=y
 CONFIG_NO_HZ=y
+# CONFIG_M486 is not set
+CONFIG_MPENTIUM4=y
+CONFIG_NR_CPUS=4
 CONFIG_PARAVIRT=y
 CONFIG_PARAVIRT_CLOCK=y
 # CONFIG_PARAVIRT_DEBUG is not set
+CONFIG_PARAVIRT_SPINLOCKS=y
 CONFIG_PARAVIRT_TIME_ACCOUNTING=y
 CONFIG_PCIEAER=y
 CONFIG_PCIEPORTBUS=y
 CONFIG_PCI_IOAPIC=y
 CONFIG_PCI_LABEL=y
 CONFIG_PCI_MMCONFIG=y
+CONFIG_PHYS_ADDR_T_64BIT=y
 CONFIG_PNP=y
 CONFIG_PNPACPI=y
 CONFIG_PNP_DEBUG_MESSAGES=y
@@ -64,6 +70,8 @@  CONFIG_RAS=y
 # CONFIG_SAMSUNG_Q10 is not set
 # CONFIG_SCSI_VIRTIO is not set
 CONFIG_SERIAL_8250_PNP=y
+CONFIG_SLUB_CPU_PARTIAL=y
+CONFIG_SMP=y
 # CONFIG_THINKPAD_ACPI is not set
 # CONFIG_TOPSTAR_LAPTOP is not set
 # CONFIG_TOSHIBA_BT_RFKILL is not set
@@ -76,14 +84,19 @@  CONFIG_VIRTIO_PCI=y
 CONFIG_VIRTUALIZATION=y
 # CONFIG_VMWARE_BALLOON is not set
 # CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_X86_32_SMP=y
 # CONFIG_X86_ACPI_CPUFREQ is not set
+# CONFIG_X86_BIGSMP is not set
 # CONFIG_X86_E_POWERSAVER is not set
 # CONFIG_X86_GENERIC is not set
+CONFIG_X86_HT=y
 # CONFIG_X86_INTEL_LPSS is not set
 CONFIG_X86_INTERNODE_CACHE_SHIFT=4
 CONFIG_X86_L1_CACHE_SHIFT=4
 # CONFIG_X86_LONGHAUL is not set
+CONFIG_X86_PAE=y
 # CONFIG_X86_PAT is not set
 # CONFIG_X86_PCC_CPUFREQ is not set
 CONFIG_X86_PM_TIMER=y
 # CONFIG_X86_PPRO_FENCE is not set
+# CONFIG_XEN is not set
diff --git a/target/linux/x86/kvm_guest/target.mk b/target/linux/x86/kvm_guest/target.mk
index d3f950f..4bdfbc6 100644
--- a/target/linux/x86/kvm_guest/target.mk
+++ b/target/linux/x86/kvm_guest/target.mk
@@ -1,3 +1,4 @@ 
 BOARDNAME:=KVM Guest
 FEATURES:=ext4 pci usb
 DEFAULT_PACKAGES += kmod-virtio-balloon kmod-virtio-net kmod-virtio-random
+CPU_TYPE := pentium4
diff --git a/target/linux/x86/xen_domu/target.mk b/target/linux/x86/xen_domu/target.mk
index f7a69bf..31d110c 100644
--- a/target/linux/x86/xen_domu/target.mk
+++ b/target/linux/x86/xen_domu/target.mk
@@ -1,3 +1,4 @@ 
 BOARDNAME:=Xen Paravirt Guest
 DEFAULT_PACKAGES += kmod-xen-fs kmod-xen-evtchn kmod-xen-netdev kmod-xen-kbddev
 FEATURES:=display ext4 targz
+CPU_TYPE := pentium4