|
|
Subscribe / Log in / New account

3.9 Merge window, second episode

By Jonathan Corbet
February 27, 2013
As of this writing, just over 8,000 non-merge changesets have been pulled into the mainline for the 3.9 development cycle — 7,600 since last week's summary. Quite a few new features of interest have been merged for the 3.9 kernel; the most significant of those are listed below.

But first, a warning for development kernel testers: there are reports of ext4 filesystem corruption with current mainline kernels. The problem appears to have been identified and fixed, but it will remain as a permanent hazard for anybody running bisections over the 3.9 merge window. Development kernels have not often lived up to their fearsome reputation recently, but they can still bite at times.

  • The ARM architecture has gained support for the KVM virtualization mechanism on Cortex-A15 processors. Support for the ARM "power state coordination interface" has been added so that virtual CPU's can be "powered up" and down.

  • The socket filtering mechanism has a new SO_LOCK_FILTER option that prevents further changes to the filter. It is intended for privileged programs that install a filter before running untrusted code.

  • TCP and UDP sockets have a new option, SO_REUSEPORT, that allows multiple sockets listening for new connections or packets (respectively) at the same time. See this commit message for more information.

  • The netfilter connection-tracking code now supports "connection labels," which are bitmasks that can be attached to tracking entries and tested by netfilter rules.

  • The wireless networking subsystem has gained core support for the detection of radar systems operating on the networking frequencies; this is a necessary component for dynamic frequency selection in the 5GHz range.

  • VMware's "VM Sockets" subsystem, a mechanism for communication between virtual machines and a hypervisor, has been merged. Also merged is the "Virtual Machine Communication Interface" subsystem for high-speed communication between the host and guests.

  • The networking layer has support for the "Multiple VLAN Registration Protocol" (MVRP), which facilitates communication about registered virtual networks to switches.

  • The block layer's handling of pages under writeback has been changed to address the performance penalty imposed by the previous "stable pages" work.

  • The PowerPC architecture supports a new set of transactional memory instructions; at this time, only user-space support is provided (the kernel does not use these instructions). See Documentation/powerpc/transactional_memory.txt for more information.

  • The Xen virtualization subsystem gained support for ACPI-based CPU and memory hotplugging, though, in both cases, only the "add" operation is supported currently.

  • The ext4 filesystem now supports hole punching in block-mapped files.

  • A long list of old network drivers has been deleted; these include the venerable 3c501, 3c505, and 3c507 drivers, various Intel i825xx drivers, parallel port-based drivers(!), and many more. It is expected that these drivers will not be missed, as many of them did not work all that well in the first place. As Paul Gortmaker put it: "You know things are not good when the Kconfig help text suggests you make a cron job doing a ping every minute." The long-unused "WAN router" subsystem has also been removed.

  • New hardware support includes:

    • Systems and processors: NVIDIA Tegra114 SoCs, the ARM "dummy virtual machine" (a minimal stub platform for virtualization uses), Prodrive PPA8548 AMC modules, and Tensilica Diamond 233L Standard core Rev.C processors.

    • Audio: NVIDIA Tegra20 AC97 interfaces.

    • Block: Renesas R-Car SATA controllers and Broadcom BCM2835 SD/MMC controllers.

    • Graphics: Marvell MMP display controllers, Samsung LMS501KF03 LCD panels, Himax HX-8357 LCD panels, Austrian Microsystems AS3711 backlight controllers, TI LCDC display controllers, and NXP Semiconductors TDA998X HDMI encoders.

    • Input: Steelseries SRW-S1 steering wheel devices.

    • Miscellaneous: STMicroelectronics ST33 I2C TPM devices, STMicroelectronics accelerometers, magnetometers, and gyroscopes, InvenSense ITG3200 digital 3-axis gyroscopes, Invensense MPU6050 gyroscope/accelerometer devices, NVIDIA Tegra20/30 SoC serial controllers, Comtrol RocketPort EXPRESS/INFINITY serial adapters, PCI-Express non-transparent bridges, Maxim MAX77686 and MAX8997 realtime clocks (RTCs), TI LP8788 RTCs, TI TPS80031/TPS80032 RTCs, Epson RX-4581 RTCs, ST-Ericsson Ux500 watchdogs, Intel Lynxpoint GPIO controllers, Atmel Timer Counter pulse-width modulators, TI/National LP5521 and LP5523/55231 LED controllers, Intel iSMT SMBus host controllers, and Broadcom BCM2835 I2C controllers.

    • Networking: 8devices USB2CAN interfaces and Inside Secure microread NFC interfaces.

    • USB: SMSC USB3503 USB 2.0 hub controllers.

    • Video4Linux: SuperH VEU mem2mem video processors, TI DM365 VPFE media controllers, Montage Technology TS2020-based tuners, Masterkit MA901 USB FM radios, OmniVision OV9650/OV9652 sensors, and Samsung S5C73M3 sensors.

    • Staging graduations: the Analog Devices ADXRS450/3 Digital Output Gyroscope SPI driver, Analog Devices ADIS16400 inertial sensor driver, Analog Devices ADIS16080/100 yaw rate gyroscope driver, Kionix KXSD9 accelerometer driver, TAOS TSL2560, TSL2561, TSL2562 and TSL2563 ambient light sensor driver, and OMAP direct rendering driver have been moved out of the staging tree and into the mainline kernel.

Changes visible to kernel developers include:

  • The netpoll mechanism now supports IPv6, allowing network consoles to be run over IPv6 networks.

  • Most drivers no longer depend on the EXPERIMENTAL configuration option. So much code needed that option that it is turned on almost universally, with the result that it does not actually mean anything. So now it defaults to "yes," and it will soon be removed entirely.

  • The sound layer has a generic parser for Intel high definition audio (HDA) codecs. Many drivers have been converted to use this parser, resulting in the removal of a great deal of duplicated code.

  • The __get_user_8() function is now available on 32-bit x86 systems; it will fetch a 64-bit quantity from user space.

  • The module signing code has a few usability enhancements. The sign-file utility has new options to specify which hash algorithm to use or to simply provide the entire signature (which will have been computed elsewhere). There is also a new MODULE_SIG_ALL configuration option that controls whether modules are automatically signed at modules_install time.

  • The descriptor-based GPIO patch set has been merged, with significant changes to how GPIO lines are handled within the kernel.

  • The new file_inode() helper should be used instead of the traditional file->f_dentry->d_inode pointer chain.

The merge window should stay open through approximately March 5, though, one assumes, the rate of change will drop off somewhat toward the end. Next week's edition will summarize the changes that go in for the final part of the 3.9 merge window.

Index entries for this article
KernelReleases/3.9


to post comments

3.9 Merge window, second episode

Posted Feb 28, 2013 15:22 UTC (Thu) by tytso (subscriber, #9993) [Link] (1 responses)

The ext4 bug only affects file systems > 512GB. If you are using smaller file systems on your test/development box, or you make sure you unmount your larger file systems while you are doing your bisection search, you should be fine.

That being said, I'm very embarrassed this bug slipped through our code review and testing processes. We have been discussing how to improve the testing that we do on ext4 file systems to avoid this sort of problem from slipping through our development cycle in the future.

3.9 Merge window, second episode

Posted Feb 28, 2013 16:27 UTC (Thu) by jimparis (guest, #38647) [Link]

Maybe kernel.org could start providing a machine-readable list of known-dangerous commits, the commits that fix them, and a description. A git bisect wrapper could read this list and warn the user (or skip over it) when it lands on something known to be bad.

3.9 Merge window, second episode

Posted Feb 28, 2013 19:37 UTC (Thu) by nix (subscriber, #2304) [Link] (3 responses)

In addition to a number of DEC copyrights and a bunch of Don Becker's drivers, a number of fabulous comments have disappeared from the kernel this day. A selection:
*!@$ protocol=eth_type_trans -- now packets flow
The EtherWORKS 3 driver in this distribution is designed to work with all kernels > 1.1.33 (approx) and includes tools in the 'ewrk3tools' subdirectory to allow set up of the card, similar to the MSDOS 'NICSETUP.EXE' tools provided on the DOS drivers disk (type 'make' in that subdirectory to make the tools).
2) if you wish, edit the source code near line 1530 to reflect the I/O address and IRQ you're using
Fix the last fix...sorry, must be galloping senility
case DEPCA_SAY_BOO:     /* Say "Boo!" to the kernel log file */
        if(!capable(CAP_NET_ADMIN))
                return -EPERM;
        printk("%s: Boo!\n", dev->name);
        break;
/* This should be probed for (or set via an ioctl()) at run-time. Right now we use a sleazy hack to pass in the interface number at boot-time via the low bits of the mem_end field. That value is unused, and the low bits would be discarded even if it was used. */
[This is currently quite safe.... but if one day the 3c503 explodes you know where to come looking ;)]
The E2100 series ethercard is a fairly generic shared memory 8390 implementation. The only unusual aspect is the way the shared memory registers are set: first you do an inb() in what is normally the station address region, and the low three bits of next outb() *address* is used as the write value for that register. Either someone wasn't too used to dem bit en bites, or they were trying to obfuscate the programming interface.

[...]

One bug on the chip is that even a hard reset won't disable the memory window, usually resulting in a hung machine if mem_off() isn't called. If this happens, you must power down the machine for about 30 seconds.

The MB86965 has a design flaw that makes all probes unreliable. Not only is it difficult to detect, it also moves around in I/O space in response to inb()s from other device probes!
results from ftp performance tests with Linux 1.2.5

send and receive about 350-400 KByte/s (peak up to 460 kbytes/s)

sending in NOP-mode: peak performance up to 530K/s (but better don't run this mode)

The card has 256k of on-board RAM, which is used to buffer received packets. It might seem at first that more buffers are better, but in fact this isn't true. From my tests, it seems that more than about 10 buffers are unnecessary, and there is a noticeable performance hit in having more active on the card. So the majority of the card's memory isn't, in fact, used.
And, of course, the immortal 3c501:
Do not purchase this card, even as a joke. It's performance is horrible, and it breaks in many ways.
Some documentation is available from 3Com. Due to the boards age standard responses when you ask for this will range from 'be serious' to 'give it to a museum'. The documentation is incomplete and mostly of historical interest anyway.
The driver is less efficient than it could be. It switches through receive mode even if more transmits are queued. If this worries you buy a real Ethernet card.
Attempt to send a packet to a 3c501 card. There are some interesting catches here because the 3c501 is an extremely old and therefore stupid piece of technology.
We have a good packet. Well, not really "good", just mostly not broken.

3.9 Merge window, second episode

Posted Mar 1, 2013 0:21 UTC (Fri) by dashesy (guest, #74652) [Link] (1 responses)

Thanks for digging this up, museum quality kernel archeology :)

3.9 Merge window, second episode

Posted Mar 1, 2013 18:06 UTC (Fri) by nix (subscriber, #2304) [Link]

I couldn't allow those 3c501 comments to perish uncelebrated, and then looked through the rest and saw so many more... :)

3.9 Merge window, second episode

Posted Mar 16, 2013 12:38 UTC (Sat) by makomk (guest, #51493) [Link]

The most interesting comment is this one:

"For the avoidance of doubt the "preferred form" of this code is one which is in an open non patent encumbered format. Where cryptographic key signing forms part of the process of creating an executable the information including keys needed to generate an equivalently functional executable are deemed to be part of the source code."

Apparently stuff like tivoization and Secure Boot were foreseen some time ago...

3.9 Merge window, second episode

Posted Mar 1, 2013 0:36 UTC (Fri) by dashesy (guest, #74652) [Link]

Addition of SO_REUSEPORT is very interesting! I can think of many use-cases, for one it can be used as a clean/easy IPC.


Copyright © 2013, 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