/proc/cpuinfo flag list in error

I am trying to use Android Studio. I admit that my machine is a little light for this development system, but I am not in a big rush.

So, everything was working fine until time to start the emulator. Just a black window. After much tinkering and research, I found an error message while starting qemu. Basically, the message stated that the emulator requires a cpu feature that is not available - SSE3. Indeed, /proc/cpuinfo does not list that feature as one of the flags.

The processor is an AMD Athlon 64 X2, Winsor build. AMD literature states the Athlon 64 X2 series supports SSE3. The tool x86info shows it in the flag list. I rebooted the box and switched to my old Vista OS, and ran CPUID, and it also lists SSE3 as a feature flag.

This is Leap 42.3 with the latest updates. (kernel 4.4.140-62.2)

Is there a way to convince Leap and/or Android Studio that the cpu requirements have been met?

Based on a quick Google search…

  • You may need to enable AMD virtualization extensions in your BIOS
  • Support for AMD processors is at the moment a “work in progress” with each of latest Android Studio releases. The version in the OSS(3.1.2) was current only up to the beginning of this month, a new, relatively significant version (3.2) was released a couple of weeks ago, so you should probably update to this one (Have you run the Android Studio updater?).

See the section “Installing the Emulator”
https://developer.android.com/studio/run/emulator#install

Assuming you haven’t updated at all, you really should update <everything> available including the Android SDK itself.

TSU

Thanks for the response, TSU.

Virtualization was already enabled, because I’m using KVM. Android Studio v3.2 is still in the beta channel, so the regular update channel would not yet install it. However, since I had no projects to worry about yet, I dumped my installation and spent a good part of the afternoon installing 3.2. And there was no change in the functioning of the emulator.

The exact error message from I’m getting is from qemu-system-i386 :

Emulator: qemu-system-i386: warning: host doesn’t support requested feature: CPUID.01H:ECX.ssse3 [bit 9]

I did more research. It appears that Athlon 64 X2 supports SSE3, but not SSSE3. The SSSE3 microcode was added about 4 years after the Athlon 64 series was designed. I guess I won’t be running my code on an emulator on this box!

I also discovered that SSE3 is also known as pni, which /proc/cpuinfo does report. SSSE3 is also known as tni or mni. So, technically /proc/cpuinfo is correct.

Sorry to have bothered you with this. I haven’t crawled this far into the CPU instruction set since the Z80 days.

You might ask a question on the Android Studio IRC or other support…
Android Studio has been around for a lot longer than 4 years (although it hasn’t always worked smoothly).
Someone may know whether ssse3 is really necessary if you might be able to go in there somewhere and disable/downgrade the install requirement to sse3 for things to work…
Or, maybe someone can suggest an alternate solution. I find it a little hard to believe that a FOSS project would have a restriction that requires hardware only up to 4 years old.

In any case, I wonder if QEMU is even necessary since your error says that an i386 image is being deployed…
You might try deploying an ARM image to a generic virtual machine and see if it works. You won’t have a deployment target that’s completely integrated with Android Studio, but it might work (You’d probably have to set up your own way to deploy your ADB packages). Here is a page of x86 images… These are admittedly a different architecture, but may or may not make a difference since I’m surprised you didn’t try to deploy to an ARM target.

http://www.android-x86.org/download

TSU

Doing a bit of research,
It looks like ssse3 is required only for the x86 and x64 images.

https://developer.android.com/ndk/guides/abis

So,
I guess it comes down to this…
Is the x64 platform your target by choice or by accident?
Are you <really> building a solution to be deployed to an x86 machine shich is more typical of a laptop or workstation (and a very select few tablets)?

If you actually intend to target phones and 99% of tablets, then you should instead select one of the ARM targets and then you won’t see your error.

This may also explain the ssse3 requirement, it may be a feature commonly found in CPUs for x86 tablets.

TSU