Re: Device tree on x86, part v4

From: Grant Likely
Date: Tue Feb 22 2011 - 16:16:57 EST


On Tue, Feb 22, 2011 at 1:07 PM, Sebastian Andrzej Siewior
<bigeasy@xxxxxxxxxxxxx> wrote:
> This patchset introduces device tree support on x86. The device tree is
> passed by the bootloader via setup_data. It is used as an additional
> source of information and does not replace the "traditional" x86 boot
> page.
> Right now we get the the following information from it:
> - hpet location
> - apic & ioapic location
> - ioapic's interrupt routing
> - legacy devices which are not initialized by bios
> - devices which are behind a bus which does not support enumeration like
>  i2c

Looks good; ship it!

g.

>
> History:
> - v1 initial post
> - v2: Benh took my device tree apart so once this got fixed I refactor a
>      lot of code. Here are the changes:
>      - device tree is unflattenend before kmalloc() is working,
>        alloc_bootmem() is used for that.
>      - irq_host got renamed to irq_domain. This custom implementation
>        will leave once the powerpc implementation is in generic shape
>      - of_irq_map_pci() is moved from ppc & microblaze into drivers/of
>        and used also by x86 instead of a tiny subset of it. Bridges are
>        not handled at all on x86 (I don't have any so for so I worry
>        later)
>      - the device tree is relocated from its initial location. That
>        means that the boot loader does not need to know anything about
>        kernel's memory layout.
> - v3: - rebase on top of current tip. The OLPC merged some OF defines
>        which are mostly nops so I replaced them with the code I have.
>        irq_create_of_mapping() requires now an irq chip to work. Those
>        things are moved into prom.c which is enabled by CONFIG_X86_OF.
>        This probably breaks OLPC but I don't know what they need in the
>        end.
>      - Fixed up Grant's review comments. The most noticeable is the i2c
>        controller node which has now three child nodes, representing the
>        three controllers indentified by the bar number. Each pci bar
>        matches via address translation the correct device tree node.
> - v4: - rebased on top of tip's x86/platform branch.
>      - added some documentation about the new compatible properties.
>      - merged the two rtc commits.
>      - renamed prom.c to devicetree.c
>      - renamed CONFIG_X86_OF to CONFIG_USE_OF
>      - intel,ce4100-immr become intel,ce4100-cp
>      - "standard" hardware like hpet has "ce4100" in its property. If
>        further HW is compatible with it, can reuse the property string.
>      - converted interrupt map to device nodes with an interrupt property.
>
> The series is based on the tip tree and is also available at
>  git://git.linutronix.de/users/bigeasy/soda.git ce_of_v4
>
> Sebastian Andrzej Siewior (11):
>      x86/e820: remove conditional early mapping in parse_e820_ext
>      x86: Add device tree support
>      x86/dtb: Add a device tree for CE4100
>      x86/dtb: add irq domain abstraction
>      x86/dtb: add early parsing of IO APIC
>      x86/dtb: add support hpet
>      x86/dtb: add support for PCI devices backed by dtb nodes
>      x86/dtb: Add generic bus probe
>      x86/ioapic: Add OF bindings for IO-APIC
>      x86/ce4100: use OF for ioapic
>      rtc/cmos: add OF bindings
>
> .../devicetree/bindings/i2c/ce4100-i2c.txt         |   93 +++++
> Documentation/devicetree/bindings/rtc/rtc-cmos.txt |   28 ++
> Documentation/devicetree/bindings/x86/ce4100.txt   |   38 ++
> .../devicetree/bindings/x86/interrupt.txt          |   29 ++
> Documentation/devicetree/bindings/x86/timer.txt    |    6 +
> Documentation/devicetree/booting-without-of.txt    |   20 +
> arch/x86/Kconfig                                   |    7 +
> arch/x86/include/asm/bootparam.h                   |    1 +
> arch/x86/include/asm/e820.h                        |    2 +-
> arch/x86/include/asm/io_apic.h                     |    7 +
> arch/x86/include/asm/irq.h                         |    3 -
> arch/x86/include/asm/irq_controller.h              |   12 +
> arch/x86/include/asm/prom.h                        |   72 ++++-
> arch/x86/kernel/Makefile                           |    1 +
> arch/x86/kernel/apic/io_apic.c                     |   99 +++++
> arch/x86/kernel/devicetree.c                       |  337 +++++++++++++++
> arch/x86/kernel/e820.c                             |    8 +-
> arch/x86/kernel/irq.c                              |    9 -
> arch/x86/kernel/irqinit.c                          |    9 +-
> arch/x86/kernel/rtc.c                              |    3 +
> arch/x86/kernel/setup.c                            |   22 +-
> arch/x86/platform/ce4100/ce4100.c                  |   24 +-
> arch/x86/platform/ce4100/falconfalls.dts           |  430 ++++++++++++++++++++
> drivers/of/Kconfig                                 |    2 +-
> drivers/of/of_pci.c                                |    1 +
> drivers/rtc/rtc-cmos.c                             |   45 ++
> include/linux/of.h                                 |   12 +
> 27 files changed, 1287 insertions(+), 33 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/i2c/ce4100-i2c.txt
> create mode 100644 Documentation/devicetree/bindings/rtc/rtc-cmos.txt
> create mode 100644 Documentation/devicetree/bindings/x86/ce4100.txt
> create mode 100644 Documentation/devicetree/bindings/x86/interrupt.txt
> create mode 100644 Documentation/devicetree/bindings/x86/timer.txt
> create mode 100644 arch/x86/include/asm/irq_controller.h
> create mode 100644 arch/x86/kernel/devicetree.c
> create mode 100644 arch/x86/platform/ce4100/falconfalls.dts
>
> Sebastian
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>



--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/