cpuidle: three quarter term report

Blog post by yongcong on Sun, 2012-08-05 11:34

I began to implement the acpi cpuidle driver so that the power saving feature can benefit all x86 platforms(In theory although). The acpi is more complicated than I thought. The main time is spent on implementing "_CST" evaluation and decoding.

First of all, to evaluate any acpi object/method needs acpi handle. Since haiku doesn't export AcpiWalkSpace method of acpica, so after system booting, I can get the acpi processor handle. the only solution is using the device manager so that the acpi cpuidle driver can be loaded during boot. This requires cpuidle modification so that generic cpuidle module is loaded by low level idle driver. The modification is not done because it's simple and I want to get "_CST" evaluation done firstly.

To evaluate "_CST", we need to evaluate "_PDC" or "_OSC" firstly. While "_OSC" is preferred than "_PDC" from ACPI 3.0. So my implementation evaluate "_OSC", fallback to "_PDC" if failed.

The "_CST" decoding is simpler than "_CST" evaluation. Some code is ready during gsoc bonding period. I just make it finished.

Then I came across one big problem which block me for one week--under haiku, the acpi processor is enumerated in "cpu8=>cpu7...=>cpu1" rather than "cpu1=>cpu2=>...>cpu8". The later order is taken by Linux, FreeBSD, NetBSD, etc. To evaluate "_CST" of cpu8 needs "_CST" of CPU1, so haiku's enumeration make the acpica reports AE_NOT_FOUND. But I dunno such requirement before, I even dig into acpica code but found nothing. After frustrated for about one week, I realized that the problem may exists in the evaluation order so I dumped the according processor id every acpi processor and found the reason. In no more than ten minutes, I implemented one workaround and it works!! Here is the CSTATES information dumped from my laptop

KERN: evaluate _CST @0x821e7698
KERN: cpuidle found 2 cstates
KERN: c1
KERN: Latency: 1
KERN: power: 1000
KERN: bufer length 17
KERN: cpu_reg size: 15
KERN: FFH method
KERN: c3
KERN: Latency: 104
KERN: power: 350
KERN: bufer length 17
KERN: cpu_reg size: 15
KERN: IO method

NOTE: Here, Cx is acpi reported Cx rather than OS's cx. For example, acpi's C2 is missing if AC is plugged. But Linux take ACPI C3 as the OS C2. I would like the take similar solution to make the generic cpuidle module happy

x86_64 port: three quarter term report

Blog post by xyzzy on Sat, 2012-08-04 10:50

I have continued to make good progress since my midterm report. All the kernel functionality except for user debugging is implemented, and I have ported a basic set of drivers, including PCI, disk drivers, BFS and PS/2 input. For most drivers, porting is just a matter of fixing compiler warnings. For some, there are 64-bit issues which make porting more difficult. For example, the USB stack will require a bit more work as it currently assumes that addr_t is 32-bit everywhere.

I have also made some progress in porting userland to x86_64. I currently have libroot, libbe, bash, and most of the command line utilities ported. I have got an interactive bash shell running on top of consoled (which is usually used to run gdb on if app_server crashes).

Midterm Results: All students passed!

Blog post by mmadia on Tue, 2012-07-17 22:14

Over the weekend, Google processed the results for the midterm evaluations for Google Summer of Code 2012. I'm pleased to announce that all five students passed their midterm evaluations! As you may have seen, the students have been posting details on their progress and future plans on their blogs. Last month, two students even gained commit access. Alex Smith received it for Haiku's repository and Hamish Morrison received access to OpenJDK. Congratulations everyone and keep up the great work!

OpenJDK port: midterm report

Blog post by hamish on Sat, 2012-07-14 23:47

After my quarter term report I worked on various bugs in the AWT port reported by testers, such as keyboard input problems. I also began reading up on the media kit in preparation for the next part of my project: the jsound port. This will bring audio and MIDI functionality to the OpenJDK port. Over the last week I made a start on the implementation for PCM input/output.

BFS Partition Resizer: Midterm Report

Blog post by ahenriksson on Fri, 2012-07-13 16:23

A lot of things have happened since the last status update! As far as I can tell, the kernel part of the file system resizer is mostly complete. Some details remain, along with a healthy dose of bugs to be fixed. In addition, I've written a 'resizefs' command for bfs_shell. Let's look at a typical session with the mighty resizefs!

fssh:/> resizefs 100
File system information:
        Bitmap:     1 blocks (was 1)
        Log start:  block 2 (was 2)
        Log length: 512 blocks (was 512)
        Block size: 2048 bytes

Error:  Not enough space left.
Status: Invalid argument

NFSv4 client: midterm report

Blog post by Paweł Dziepak on Wed, 2012-07-11 16:58

Having implemented mandatory hooks by quarter term I had good base for implementing other operations like write, rename, create, etc. Moreover, improvements in file system migration and user ID mapping. Apart from that, file locks required most work, since they are both more complicated than other NFS operations and Haiku VFS originally did not allow the file system to handle them its own way.

cpuidle: midterm report

Blog post by yongcong on Wed, 2012-07-11 13:04

With the good preparation in quarter term/bonding period, I have completed the generic cpuidle kernel module, native intel cpuidle module and cpuidle driver(for states/info reporting). By original plan, these tasks will be all completed by the end of 3/4 term...

Syndicate content