|
|
Subscribe / Log in / New account

3.15 Merge window, part 2

By Jonathan Corbet
April 16, 2014
By the time Linus released 3.15-rc1 and closed the 3.15 merge window on April 13, he had pulled 12,034 non-merge changesets into the mainline repository for this development cycle. So 3.15 does have the honor of being the busiest merge window ever, edging out 3.10, which had a mere 11,963 non-merge commits. All but the last 700 commits for 3.15 were covered in last week's merge window summary, so the list of new features added at the end of the merge window will be relatively small. Still, there are a few things worthy of note.

Faster resume

Arguably the most interesting change is a significant speedup in resume-from-suspend time on systems with SATA disk controllers. Over the years, various efforts have been made to parallelize the bootstrap and resume processes in order to reduce the wall-clock time needed to get to a working system. These attempts have often run into difficulties as the problem space proved to be more complex than originally understood. So full parallelism remains an elusive goal.

Recently, though, some developers realized that there was a piece of especially low-hanging fruit waiting to be picked: much of the time spent waiting for a system to resume goes into waiting for the ATA controllers to power up and get into a working state. Dan Williams put together a pair of patches (one to the ATA controller driver, one to the SCSI "sd" driver) to change their behavior a bit: rather than waiting for the controller to return to a working state, the drivers start the process and return immediately. That allows the rest of the kernel to continue working toward resuming the system while the controller powers up.

Of course, some of that work is likely to involve disk I/O. Any I/O requests that are submitted while the controllers are still waking up simply wait until they can be serviced. In the worst case, the system will block on I/O and fail to resume any faster than before, but, in practice, it is generally possible to get back to the window system without the need to wait for disk I/O. The results, as documented in this page describing the patches, are impressive. Resume time on a drive-heavy system dropped from 11.6 seconds to 1.1 seconds. On a couple of different single-drive systems, resume time went from over five seconds to less than one second. It is clearly a worthwhile improvement, especially since it requires little in the way of added complexity overall.

Elsewhere in the kernel

A set of patches to enable building the kernel with the LLVM compiler suite has been merged. This goal has not yet been achieved; there is another set of patches required that, possibly, will show up in 3.16. But this goal is getting closer to being achieved after some years of sporadic effort.

In a change that has a small possibility of breaking user-space code, the x86 architecture will no longer allow the creation of 16-bit segments when running in the 64-bit mode. Use of 16-bits can lead to a kernel information leak on 64-bit systems that could lead to potential security issues. Since running 16-bit code on these systems does not work all that well anyway and it's not clear that there are any users of it, this is probably a safe change to make. If users do exist, they might want to make their presence known during this development cycle so that their concerns can be addressed.

A handful of new drivers has been merged; these add support for Qualcomm SDHCI controllers, Armada 380 and 385 Marvell SoC-based SDHCI controllers, Energymicro efm32 i2c controllers, Qualcomm QUP-based I2C controllers, Cadence I2C controllers, Freescale enhanced direct memory access (eDMA) controllers, Renesas R-Car audio DMAC peripheral controllers, QCOM bus access manager (BAM) DMA controllers, Alienware AlienFX WMI-based platform features, and CPU frequency controllers on IBM POWERNV hardware,

In the 3.15-rc1 announcement, Linus let it be known that he is even less inclined than usual to add any more feature work outside of the merge window. Enough code has already found its way in to keep developers busy for the rest of the cycle, it seems. That work can be expected to be completed sometime right around the end of May if the usual pattern holds.

Index entries for this article
KernelReleases/3.15
KernelSoftware suspend


to post comments

3.15 Merge window, part 2

Posted Apr 17, 2014 10:57 UTC (Thu) by intgr (subscriber, #39733) [Link] (12 responses)

> the x86 architecture will no longer allow the creation of 16-bit segments when running in the 64-bit mode

Would this affect DOS emulators like DOSBox?

3.15 Merge window, part 2

Posted Apr 17, 2014 11:55 UTC (Thu) by DSMan195276 (guest, #88396) [Link] (1 responses)

While you should check if you can to be sure, chances are no. DOSBox in particular does a full emulation of the CPU so it's more accurate at the cost of speed, and thus the 16-bit code never touches the CPU directly. I don't know of any emulators that actually attempt to run the 16-bit code directly on the hardware (it's unlikely that it would ever actually work if you tried that, all things considered).

At the same time, I'm no expert. If there is a program you're concerned about you could always ask and link them back to this article or the patch.

3.15 Merge window, part 2

Posted Apr 17, 2014 13:58 UTC (Thu) by smorovic (guest, #52892) [Link]

DOSEMU comes to mind. I think they used virtual 8086 mode (Windows 9X was also running DOS executables in this way, if I remember correctly). The virtual mode was available from 386 on, however it was anyway dropped from x86_64.

3.15 Merge window, part 2

Posted Apr 17, 2014 15:37 UTC (Thu) by mstefani (guest, #31644) [Link] (9 responses)

It isn't affecting DOSBox but it breaks Wine for 16-bit Windows apps:
https://lkml.org/lkml/2014/4/11/514
And it not only breaks those but it breaks some Win 32-bit apps too because prior to Win64 showing up a lot of installers where still 16-bit...

DOS apps on the other hand will continue to work just fine in Wine as it integrates with DOSBox to run those.

3.15 Merge window, part 2

Posted Apr 17, 2014 18:04 UTC (Thu) by cesarb (subscriber, #6266) [Link]

Clearly, what Wine needs is a "WinBox" to run 16-bit Windows code. Most of the emulation code can probably come from DOSBox.

3.15 Merge window, part 2

Posted Apr 17, 2014 19:22 UTC (Thu) by viiru (subscriber, #53129) [Link]

> And it not only breaks those but it breaks some Win 32-bit apps too
> because prior to Win64 showing up a lot of installers where still
> 16-bit...

Indeed. I saw a Windows XP machine once where the Win16 emulator wasn't working correctly. It was nearly unusable until reinstallation since almost nothing would install. The install wizards for 32-bit software were 16-bit for a surprisingly long time, making this a big problem for Wine users.

3.15 Merge window, part 2

Posted Apr 18, 2014 6:58 UTC (Fri) by lkundrak (subscriber, #43452) [Link] (5 responses)

Work is in progress that adds integration with QEMU to Wine. It's used to run x86 binaries on ARM, but maybe it could be used to run 16-bit x86 applications in x86 long mode too?

http://forum.winehq.org/viewtopic.php?f=2&t=17701
http://forum.xda-developers.com/showthread.php?t=1258506

3.15 Merge window, part 2

Posted Apr 19, 2014 4:33 UTC (Sat) by dlang (guest, #313) [Link] (4 responses)

is this going to be the typical "let's fork the project and put a full version in the wine source, and then let them diverge" approach? or are they doing something more sensible this time?

3.15 Merge window, part 2

Posted Apr 22, 2014 9:36 UTC (Tue) by mstefani (guest, #31644) [Link] (3 responses)

Hell no! Wine has so many external dependencies that importing them would be madness. And Wine needs only the qemu user space emulation for the application processes, the rest will run native. See page 8 on the slides from the FOSDEM presentation http://wiki.winehq.org/FOSDEM2014?action=AttachFile&d...

3.15 Merge window, part 2

Posted Apr 23, 2014 20:22 UTC (Wed) by dlang (guest, #313) [Link] (2 responses)

well, from prior posts they imported a complete ldap server, a complete DNS server and some others, so it would not be impossible for them to pull in a complete emulator.

3.15 Merge window, part 2

Posted Apr 23, 2014 21:08 UTC (Wed) by mstefani (guest, #31644) [Link] (1 responses)

Uh? Not sure where you got that info from but Wine has no DNS nor LDAP server, never had. And it always just linked to OpenLDAP, never imported its sources. The last "big" code import into Wine was libmpg and that was removed in 2009.

3.15 Merge window, part 2

Posted Apr 23, 2014 21:25 UTC (Wed) by dlang (guest, #313) [Link]

I thought there had been posts here talking about this very problem and how they were now working to undo some of this.

It's very possible that this happened before 2009.

3.15 Merge window, part 2

Posted Apr 24, 2014 14:13 UTC (Thu) by ssokolow (guest, #94568) [Link]

I NEED my Bricklayer. (I've tried cloning it using LTris and an MP3 of T-Maxx, but it's just not the same.)

I guess I'll stay on kernel 3.14 or lower until Wine comes up with a solution and undoes whatever regression broke it under post 1.2.x Wine versions then.

3.15 Merge window, part 2

Posted Apr 17, 2014 16:25 UTC (Thu) by djbw (subscriber, #78104) [Link]

Correction, the async resume patches were championed by Todd Brandt. I (Dan Williams) just did some reworks to get the code accepted upstream. Anyone interested in the details should take a look at the data from Todd's AnalyzeSuspend tool:

https://01.org/suspendresume/blogs/tebrandt/2013/hard-dis...

Resume time and ATA controllers powering up

Posted Apr 19, 2014 17:53 UTC (Sat) by giraffedata (guest, #1954) [Link] (1 responses)

It takes 10 seconds for the ATA controllers to power up and get into a working state? What are they doing? And there are multiple ATA controllers?

Resume time and ATA controllers powering up

Posted Apr 19, 2014 18:26 UTC (Sat) by magila (guest, #49627) [Link]

It looks like the driver was waiting for the power management command to complete which for hard drives means waiting for them to spin-up. The wait times of ~10 seconds and ~5 seconds are what I would expect it to take for a large 3/4 platter drive and a single platter drive to spin-up respectively.


Copyright © 2014, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds