2. On Wed, Mar 30, 2011 at 6:31 PM, Nicolas Pitre wrote:
>
> But x86 is peanuts. Really.
3. Is x86 really peanuts?
● Many in-kernel features
– ACPI
– User-Mode Linux, KVM, Xen
– vDSO
– Suspend, resume, hibernate, cpufreq, cpuidle
– perf, kprobes, uprobes
– i386 to i7 to Medfield
● 25+ years of hardware
4. The x86 Platform
● Architecturally, x86 is pretty standardized:
– Boot interface
– PCI (including bus discoverability)
– BIOS
– VESA
– Northbridge & Southbridge
– Little-Endian
● Even x86 SoCs are quite similar to each other
5. The ARM Platform
●
We do have some standards.
However..
● ARM doesn't specify complete
systems
Instead, chip makers do
● ARM's ecosystem has inherent
variation
– One one side lies madness
– On the other trivialization
6. LOC per architecture in Linux 3.4
arm
powerpc
mips
x86
m68k
sparc
sh
blackfin
ia64
cris
s390
alpha
0 100000 200000 300000 400000 500000 600000
● 486,429 LOC in arch/arm this month
● But how did we get here?
7. Is It All Nokia's Doing?
● 2005: Nokia releases the 770 on kernel 2.6.12
● Support for the TI OMAP became a big deal
● OEM interest in Linux spurred upstreaming
8. Why upstreaming benefits OEMs
● Looking at it from their perspective:
1. A simpler software enablement story
2. The long-term ability to upgrade
3. Long-tail innovation
●
A standard kernel can make up for
the absence of a complete platform
– However, it's like eating healthy food..
9. They asked for it!
● SoC vendors and software integrators got the
message
● Major effort from 2008 onwards to upstream
●
Mixed functional results
– Many platforms have some support upstream
– For most of them, support is partial at best
● However, led to a very important change
12. Victims of our own success!
● So Linus doesn't like big diffstats? Not really..
● 3.4: 11086 files changed, 576155 insertions(+), 358368
deletions(-)
●
Linus is concerned with poor design
– Both on software and hardware platform level
● Certainly, the kernel wasn't designed to
accommodate SoC variation
– We know excessive variation is waste
● However, the answer isn't to reject variability
– We should understand and plan for it!
14. Innovation vs. Maintenence
● Our ecosystem has a rich inherent diversity
● This diversity is our strength
– Each company developing new approaches to
power, performance and price
● Learn from upstream's design concerns
● Unchecked, this innovation is unsustainable
– We need to keep the platform healthy
– We need to do it together
●
We need good abstractions; let's
build them!
16. What Maintainers Care About
diff --git a/arch/arm/common/clkdev.c b/arch/arm/common/clkdev.c
index dba4c1d..e2b2bb6 100644
--- a/arch/arm/common/clkdev.c
+++ b/arch/arm/common/clkdev.c
@@ -53,12 +53,13 @@ static struct clk *clk_find(const char *dev_id, const char *con_id)
continue;
match += 1;
}
- if (match == 0)
- continue;
if (match > best) {
clk = p->clk;
- best = match;
+ if (match != 3)
+ best = match;
+ else
+ break;
}
}
return clk;
17. What Maintainers Care About
Maintainability beats everything else!
●
Fact #1: Maintainers don't test your
code
– They couldn't, even if they wanted to!
●
Fact #2: What gets you in trouble is
breaking x86!
●
Fact #3: The code needs to look good
19. It's time we took wider ownership
of the Linux
software platform
20. Tools for Ownership
● Figure out what needs to change to
accomodate YOUR new design
– Nobody else will do it for you
● Relevant areas:
1. Enablement
2. Optimization
3. Ecosystem
● This week's Connect is a great place to start
21. 1. Enablement
●
Think about upstreaming early
● Get platform enablement right the first time
– Device Tree
– Pincontrol, regulators, common clock, dma-buf
– Power management frameworks
● cpuidle, cpufreq, runtime PM, device PM
● Don't miss Monday's training sessions in
Fountain
– Follow Deepak there
22. 2. Optimization
● Optimize, but remember the upstream context!
● Power management
– big.LITTLE Switcher and MP
● v8 and the future of the architecture
● System-wide performance
– Zero-copy for GPU, CPU
● Code-level optimization
– The Linaro toolchain
– NEON in-kernel – and where else?
23. 3. Ecosystem
● The boot architecture
– UEFI, ACPI and other evils
● Upgrades, enablement and the LTS Kernel
● Platforms
– Android
– Ubuntu
– And beyond
● Validation and Continuous Integration
24. Welcome
● Thank you for making the time to come
● Connect is not for innocent bystanders
– We expect YOU to help define the future
● I love this event, and I hope you will too