rowboat kernel <--> nook 1.2.1 kernel diffs

Last Updated: February 11, 2014
  1. PCI Bus

    /kernel/Documentation/ABI/testing/sysfs-bus-pci

    a man page was modified to add ref's to the following:

    /sys/bus/pci/drivers/.../bind
    Date:        December 2003

    /sys/bus/pci/drivers/.../unbind
    Date:        December 2003

    /sys/bus/pci/drivers/.../new_id
    Date:        December 2003

    vpd from 2008 appears to be unchanged.

  2. Power Management -- sysfs-class-regulator

    /kernel/Documentation/ABI/testing/sysfs-class-regulator

    edits (if any) to the following sections suggest clarification of how the components behave on the Nook:

    state, type microvolts, microamps, opmode, consumer.h, min_microvolts, max_microvolts, min_microamps, max_microampts, name, num_users, requested_microamps, , parent, suspend_disk_microvolts, suspend_standby_microvolts, suspend_mem_mode, suspend_disk_mode, suspend_standby_mode, suspend_mem_state, suspend_disk_state, suspend_standby_state,

    a ref was added for a new item not in the rowboat kernel:

    What:        /sys/class/regulator/.../status
    Description:
            Some regulator directories will contain a field called
            "status". This reports the current regulator status, for
            regulators which can report that output value.

            This will be one of the following strings:

                off
                on
                error
                fast
                normal
                idle
                standby

            "off" means the regulator is not supplying power to the
            system.

            "on" means the regulator is supplying power to the system,
            and the regulator can't report a detailed operation mode.

            "error" indicates an out-of-regulation status such as being
            disabled due to thermal shutdown, or voltage being unstable
            because of problems with the input power supply.

            "fast", "normal", "idle", and "standby" are all detailed
            regulator operation modes (described elsewhere).  They
            imply "on", but provide more detail.

            Note that regulator status is a function of many inputs,
            not limited to control inputs from Linux.  For example,
            the actual load presented may trigger "error" status; or
            a regulator may be enabled by another user, even though
            Linux did not enable it.

  3. device-drivers.xml added to the kernel DOCBOOK list

    /kernel/Documentation/DocBook/Makefile
    /kernel/Documentation/DocBook/device-drivers.tmpl

  4. Linux Kernel API documentation -- sections deleted

    /kernel/Documentation/DocBook/kernel-api.tmpl

    the Nook kernel deleted the following:

    •       <chapter id="Basics">

           <title>Driver Basics</title>
           <sect1><title>Driver Entry and Exit points</title>
      !Iinclude/linux/init.h
           </sect1>

           <sect1><title>Atomic and pointer manipulation</title>
      !Iarch/x86/include/asm/atomic_32.h
      !Iarch/x86/include/asm/unaligned.h
           </sect1>

           <sect1><title>Delaying, scheduling, and timer routines</title>
      !Iinclude/linux/sched.h
      !Ekernel/sched.c
      !Ekernel/timer.c
           </sect1>
           <sect1><title>High-resolution timers</title>
      !Iinclude/linux/ktime.h
      !Iinclude/linux/hrtimer.h
      !Ekernel/hrtimer.c
           </sect1>
           <sect1><title>Workqueues and Kevents</title>
      !Ekernel/workqueue.c
           </sect1>
           <sect1><title>Internal Functions</title>
      !Ikernel/exit.c
      !Ikernel/signal.c
      !Iinclude/linux/kthread.h
      !Ekernel/kthread.c
           </sect1>

           <sect1><title>Kernel objects manipulation</title>
      <!--
      X!Iinclude/linux/kobject.h
      -->
      !Elib/kobject.c
           </sect1>

           <sect1><title>Kernel utility functions</title>
      !Iinclude/linux/kernel.h
      !Ekernel/printk.c
      !Ekernel/panic.c
      !Ekernel/sys.c
      !Ekernel/rcupdate.c
           </sect1>

           <sect1><title>Device Resource Management</title>
      !Edrivers/base/devres.c
           </sect1>

        </chapter>
    •   <chapter id="devdrivers">
           <title>Device drivers infrastructure</title>
           <sect1><title>Device Drivers Base</title>
      <!--
      X!Iinclude/linux/device.h
      -->
      !Edrivers/base/driver.c
      !Edrivers/base/core.c
      !Edrivers/base/class.c
      !Edrivers/base/firmware_class.c
      !Edrivers/base/transport_class.c
      <!-- Cannot be included, because
           attribute_container_add_class_device_adapter
       and attribute_container_classdev_to_container
           exceed allowed 44 characters maximum
      X!Edrivers/base/attribute_container.c
      -->
      !Edrivers/base/sys.c
      <!--
      X!Edrivers/base/interface.c
      -->
      !Edrivers/base/platform.c
      !Edrivers/base/bus.c
           </sect1>
           <sect1><title>Device Drivers Power Management</title>
      !Edrivers/base/power/main.c
           </sect1>
           <sect1><title>Device Drivers ACPI Support</title>
      <!-- Internal functions only
      X!Edrivers/acpi/sleep/main.c
      X!Edrivers/acpi/sleep/wakeup.c
      X!Edrivers/acpi/motherboard.c
      X!Edrivers/acpi/bus.c
      -->
      !Edrivers/acpi/scan.c
      !Idrivers/acpi/scan.c
      <!-- No correct structured comments
      X!Edrivers/acpi/pci_bind.c
      -->
           </sect1>
           <sect1><title>Device drivers PnP support</title>
      !Idrivers/pnp/core.c
      <!-- No correct structured comments
      X!Edrivers/pnp/system.c
       -->
      !Edrivers/pnp/card.c
      !Idrivers/pnp/driver.c
      !Edrivers/pnp/manager.c
      !Edrivers/pnp/support.c
           </sect1>
           <sect1><title>Userspace IO devices</title>
      !Edrivers/uio/uio.c
      !Iinclude/linux/uio_driver.h
           </sect1>
        </chapter>
    •   <chapter id="parportdev">
           <title>Parallel Port Devices</title>
      !Iinclude/linux/parport.h
      !Edrivers/parport/ieee1284.c
      !Edrivers/parport/share.c
      !Idrivers/parport/daisy.c
        </chapter>

        <chapter id="message_devices">
          <title>Message-based devices</title>
           <sect1><title>Fusion message devices</title>
      !Edrivers/message/fusion/mptbase.c
      !Idrivers/message/fusion/mptbase.c
      !Edrivers/message/fusion/mptscsih.c
      !Idrivers/message/fusion/mptscsih.c
      !Idrivers/message/fusion/mptctl.c
      !Idrivers/message/fusion/mptspi.c
      !Idrivers/message/fusion/mptfc.c
      !Idrivers/message/fusion/mptlan.c
           </sect1>
           <sect1><title>I2O message devices</title>
      !Iinclude/linux/i2o.h
      !Idrivers/message/i2o/core.h
      !Edrivers/message/i2o/iop.c
      !Idrivers/message/i2o/iop.c
      !Idrivers/message/i2o/config-osm.c
      !Edrivers/message/i2o/exec-osm.c
      !Idrivers/message/i2o/exec-osm.c
      !Idrivers/message/i2o/bus-osm.c
      !Edrivers/message/i2o/device.c
      !Idrivers/message/i2o/device.c
      !Idrivers/message/i2o/driver.c
      !Idrivers/message/i2o/pci.c
      !Idrivers/message/i2o/i2o_block.c
      !Idrivers/message/i2o/i2o_scsi.c
      !Idrivers/message/i2o/i2o_proc.c
           </sect1>
        </chapter>

  5. Linux kernel's Userspace I/O system

    /kernel/Documentation/DocBook/uio-howto.tmpl

    The latest revision number in the documentation on the Nook is 0.7, while the rowboat kernel only goes up to 0.6.

  6. PCI Express Port Bus Driver

    /kernel/Documentation/PCI/PCIEBUS-HOWTO.txt

    • 5.2.1 pcie_port_service_register

      int pcie_port_service_register(struct pcie_port_service_driver *new)

      on the Nook this replaces Linux Driver Model's pci_register_driver API, while in the rowboat kernel it replaces the Linux Driver Model's pci_module_init API

  7. Generic Block Layer

    /kernel/Documentation/block/biodoc.txt

    Changes in this man page suggest that the Generic Block Layer may have been updated or tweaked.

    For discussion on PCI high mem DMA aspects and mapping of scatter gather lists, and support for 64 bit PCI,

    • rowboat refers you to DMA-mapping.txt
    • Nook refers you to Documentation/PCI/PCI-DMA-mapping.txt

    In section "4.1. I/O scheduler API", the followwing funtions do NOT have a '*' at the end in the rowboat kernel, but do in the Nook kernel:

    • elevator_dispatch_fn*
    • elevator_dispatch_fn*
    • elevator_add_req_fn*
    • elevator_init_fn*

  8. Linux Block I/O

    /kernel/Documentation/block/queue-sysfs.txt

    This file is omitted from the rowboat kernel but is included in the Nook kernel.  It is authored by Jens Axboe, and suggests that B&N made some update or change to the Block I/O.

    It details the queue files located in the sysfs tree for each block device.

  9. cpusets

    /kernel/Documentation/cgroups/cgroups.txt
    /kernel/Documentation/cgroups/cpusets.txt
    /kernel/Documentation/cgroups/memcg_test.txt

    Cpusets provide a Linux kernel mechanism to constrain which CPUs and Memory Nodes are used by a process or set of processes.  Looking at these files and a little Googling suggests that B&N updated this component from kernel version 2.6.28-rc8-mm in the rowboat kernel to the 2.6.29-rc2 version.

  10. Kernel Connector

    /kernel/Documentation/connector/cn_test.c

    It appears that B&N also modified or updated the kernel connector.  My gut tells me it was an update, but I cannot yet find from what to what.

  11. Basic Device Structure

    /kernel/Documentation/driver-model/device.txt

    This man page is identical in the rowboat kernel and the Nook kernel, except for one change.

    In the rowboat kernel source:

    struct device_attribute {
            struct attribute        attr;
            ssize_t (*show)(struct device * dev, char * buf, size_t count, loff_t off);
            ssize_t (*store)(struct device * dev, const char * buf, size_t count, loff_t off);
    };

    In the Nook kernel source:

    struct device_attribute {
        struct attribute    attr;
        ssize_t (*show)(struct device *dev, struct device_attribute *attr,
                char *buf);
        ssize_t (*store)(struct device *dev, struct device_attribute *attr,
                 const char *buf, size_t count);
    };

    A little Googling, leads me to believe that the Nook source was updated with  this patch .  My C is not up to snuff enough to just look at that and know what the diff means.

  12. DVB API

    /kernel/Documentation/dvb/README.flexcop
    /kernel/Documentation/dvb/technisat.txt

    Linux DVB API is a kernel interface for Digital Video Broadcasting device drivers. An update appears to have been applied to the Nook source that was not applied to the rowboat source. It appears that the Nook's version is newer as the man pages date it at February 2009, while the rowboat kernel's is from December 2008.

No comments:

Post a Comment