How does Linux Kernel know where to look for driver firmware?

How does Linux Kernel know where to look for driver firmware?
If you read the source, you’ll find that Ubuntu wrote a firmware_helper which is hard-coded to first look for /lib/modules/$(uname -r)/$FIRMWARE, then /lib/modules/$FIRMWARE, and no other locations. Translating it to sh, it does approximately this: echo -n 1 > /sys/$DEVPATH/loading cat /lib/firmware/$(uname -r)/$FIRMWARE > /sys/$DEVPATH/data || cat /lib/firmware/$FIRMWARE > /sys/$DEVPATH/data if [ $? = 0 ]; then echo -n 1 > /sys/$DEVPATH/loading echo -n -1 > /sys/$DEVPATH/loading fi which is exactly the format the kernel expects.

Kernel/Firmware

Kernel/Firmware
Where Do You Get Firmware? The firmware is usually maintained by the company that develops the hardware device. In Windows land, firmware is usually a part of the driver you install. It’s often not seen by the user. In Linux, firmware may be distributed from a number of sources. Some firmware comes from the Linux kernel sources. Others that have redistribution licenses come from upstream. Some firmware unfortunately do not have licenses allowing free redistribution. In Ubuntu, firmware comes from one of the following sources: The linux-image package (which contains the Linux kernel and licensed firmware) The linux-firmware package (which contains other licensed firmware) The linux-firmware-nonfree package in multiverse (which contains firmware that are missing redistribution licenses) A separate driver package Elsewhere (driver CD, email attachment, website) Note that the linux-firmware-nonfree package is not installed by default. The firmware files are placed into /lib/firmware….

New Sharing Options, and How to Add Delicious

New Sharing Options, and How to Add Delicious
Make Sharing Easy, But Avoid Clutter I like the idea of giving my readers an easy way to do anything they might want to do, but I don’t like the cluttery look of a half-dozen or more buttons at the bottom of every post. (That was my complaint against the Like feature, too.) With this in mind, I hid most of the options behind a Share button — the menu appears if you move your mouse over it. Do you like to have the post count on the buttons? I don’t! I think it is more clutter, especially for a small blog like this. (I might feel differently if my blog was so popular that the share counts were 100+, right? !) Anyway, if you WANT to show the number, click the “smart” button. Add a Delicious Button One popular sharing service that WordPress missed is Delicious. To add a button, you will need to click Add a new service and fill in the following information: Service name = Delicious Sharing URL = http://www.delicious.com/save?v=5&noui&jump=close&url=’%post_url%+’&title=’%post_title%’ Icon URL = http://www.delicious.com/static/img/delicious.small.gif Make sure you copy all of each link, with no space or line break. I don’t know what each part of the link does (why a plus sign after the URL?), but I tested this, and it works. If you know more than I do, and if you’d like to share a simpler URL in the comments, I’d be glad to hear it.

Sunlight Foundation

Sunlight Foundation
The Sunlight Foundation is a nonprofit, nonpartisan organization that uses the power of the Internet to catalyze greater government openness and transparency, and provides new tools and resources for media and citizens, alike. We are committed to improving access to government information by making it available online, indeed redefining “public” information as meaning “online,” and by creating new tools and websites to enable individuals and communities to better access that information and put it to use. We want to catalyze greater government transparency by engaging individual citizens and communities — technologists, policy wonks, open government advocates and ordinary citizens –- demanding policies that will enable all of us to hold government accountable. Sunlight develops and encourages new government policies to make it more open and transparent, facilitates searchable, sortable and machine readable databases, builds tools and websites to enable easy access to information, fosters distributed research projects as a community building tool, engages in advocacy for 21st century laws to require that government make data available in real time and trains thousands of journalists and citizens in using data and the web to watchdog Washington.

Vince Weaver

Vince Weaver
My areas of interest include: Hardware Performance Counters Computer Architecture High Performance Computing Architectural Simulation Dynamic Binary Instrumentation Linux Kernel Embedded Systems Operating Systems Assembly Language Programming See my Projects page for a list of past and current research projects. Various other Open-Source programs by me can be found here Prospective Students Students interested in working with me should send an e-mail with a copy of your resume/CV plus a short note explaining what you’d like to accomplish. I’m particularly interested in students who have done open source software development (Linux and otherwise) as well as low-level C and assembly programming experience.

perf.wiki.kernel.org – Main Page

perf.wiki.kernel.org – Main Page
This is the wiki page for the perf performance counters subsystem in Linux. Performance counters are CPU hardware registers that count hardware events such as instructions executed, cache-misses suffered, or branches mispredicted. They form a basis for profiling applications to trace dynamic control flow and identify hotspots. perf provides rich generalized abstractions over hardware specific capabilities. Among others, it provides per task, per CPU and per-workload counters, sampling on top of these and source code event annotation. The userspace perf tools present a simple to use interface with commands like perf stat: obtain event counts perf record: record events for later reporting perf report: break down events by process, function, etc. perf annotate: annotate assembly or source code with event counts perf top: see live event count To learn more, see the examples in the Tutorial.