Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c67dda14 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'master' of /home/davem/src/GIT/linux-2.6/

parents 43bc2db4 7e27d6e7
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ modules.builtin
*.gz
*.gz
*.bz2
*.bz2
*.lzma
*.lzma
*.lzo
*.patch
*.patch
*.gcno
*.gcno


+7 −0
Original line number Original line Diff line number Diff line
filesystems/dnotify_test
laptops/dslm
timers/hpet_example
vm/hugepage-mmap
vm/hugepage-shm
vm/map_hugetlb
+0 −40
Original line number Original line Diff line number Diff line
@@ -133,46 +133,6 @@ Description:
		The symbolic link points to the PCI device sysfs entry of the
		The symbolic link points to the PCI device sysfs entry of the
		Physical Function this device associates with.
		Physical Function this device associates with.



What:		/sys/bus/pci/slots/...
Date:		April 2005 (possibly older)
KernelVersion:	2.6.12 (possibly older)
Contact:	linux-pci@vger.kernel.org
Description:
		When the appropriate driver is loaded, it will create a
		directory per claimed physical PCI slot in
		/sys/bus/pci/slots/.  The names of these directories are
		specific to the driver, which in turn, are specific to the
		platform, but in general, should match the label on the
		machine's physical chassis.

		The drivers that can create slot directories include the
		PCI hotplug drivers, and as of 2.6.27, the pci_slot driver.

		The slot directories contain, at a minimum, a file named
		'address' which contains the PCI bus:device:function tuple.
		Other files may appear as well, but are specific to the
		driver.

What:		/sys/bus/pci/slots/.../function[0-7]
Date:		March 2010
KernelVersion:	2.6.35
Contact:	linux-pci@vger.kernel.org
Description:
		If PCI slot directories (as described above) are created,
		and the physical slot is actually populated with a device,
		symbolic links in the slot directory pointing to the
		device's PCI functions are created as well.

What:		/sys/bus/pci/devices/.../slot
Date:		March 2010
KernelVersion:	2.6.35
Contact:	linux-pci@vger.kernel.org
Description:
		If PCI slot directories (as described above) are created,
		a symbolic link pointing to the slot directory will be
		created as well.

What:		/sys/bus/pci/slots/.../module
What:		/sys/bus/pci/slots/.../module
Date:		June 2009
Date:		June 2009
Contact:	linux-pci@vger.kernel.org
Contact:	linux-pci@vger.kernel.org
+15 −0
Original line number Original line Diff line number Diff line
What:		/sys/firmware/sfi/tables/
Date:		May 2010
Contact:	Len Brown <lenb@kernel.org>
Description:
		SFI defines a number of small static memory tables
		so the kernel can get platform information from firmware.

		The tables are defined in the latest SFI specification:
		http://simplefirmware.org/documentation

		While the tables are used by the kernel, user-space
		can observe them this way:

		# cd /sys/firmware/sfi/tables
		# cat $TABLENAME > $TABLENAME.bin
+49 −36
Original line number Original line Diff line number Diff line
@@ -639,6 +639,36 @@ is planned to completely remove virt_to_bus() and bus_to_virt() as
they are entirely deprecated.  Some ports already do not provide these
they are entirely deprecated.  Some ports already do not provide these
as it is impossible to correctly support them.
as it is impossible to correctly support them.


			Handling Errors

DMA address space is limited on some architectures and an allocation
failure can be determined by:

- checking if dma_alloc_coherent returns NULL or dma_map_sg returns 0

- checking the returned dma_addr_t of dma_map_single and dma_map_page
  by using dma_mapping_error():

	dma_addr_t dma_handle;

	dma_handle = dma_map_single(dev, addr, size, direction);
	if (dma_mapping_error(dev, dma_handle)) {
		/*
		 * reduce current DMA mapping usage,
		 * delay and try again later or
		 * reset driver.
		 */
	}

Networking drivers must call dev_kfree_skb to free the socket buffer
and return NETDEV_TX_OK if the DMA mapping fails on the transmit hook
(ndo_start_xmit). This means that the socket buffer is just dropped in
the failure case.

SCSI drivers must return SCSI_MLQUEUE_HOST_BUSY if the DMA mapping
fails in the queuecommand hook. This means that the SCSI subsystem
passes the command to the driver again later.

		Optimizing Unmap State Space Consumption
		Optimizing Unmap State Space Consumption


On many platforms, dma_unmap_{single,page}() is simply a nop.
On many platforms, dma_unmap_{single,page}() is simply a nop.
@@ -703,42 +733,25 @@ to "Closing".


1) Struct scatterlist requirements.
1) Struct scatterlist requirements.


   Struct scatterlist must contain, at a minimum, the following
   Don't invent the architecture specific struct scatterlist; just use
   members:
   <asm-generic/scatterlist.h>. You need to enable

   CONFIG_NEED_SG_DMA_LENGTH if the architecture supports IOMMUs
	struct page *page;
   (including software IOMMU).
	unsigned int offset;

	unsigned int length;
2) ARCH_KMALLOC_MINALIGN


   The base address is specified by a "page+offset" pair.
   Architectures must ensure that kmalloc'ed buffer is

   DMA-safe. Drivers and subsystems depend on it. If an architecture
   Previous versions of struct scatterlist contained a "void *address"
   isn't fully DMA-coherent (i.e. hardware doesn't ensure that data in
   field that was sometimes used instead of page+offset.  As of Linux
   the CPU cache is identical to data in main memory),
   2.5., page+offset is always used, and the "address" field has been
   ARCH_KMALLOC_MINALIGN must be set so that the memory allocator
   deleted.
   makes sure that kmalloc'ed buffer doesn't share a cache line with

   the others. See arch/arm/include/asm/cache.h as an example.
2) More to come...


   Note that ARCH_KMALLOC_MINALIGN is about DMA memory alignment
			Handling Errors
   constraints. You don't need to worry about the architecture data

   alignment constraints (e.g. the alignment constraints about 64-bit
DMA address space is limited on some architectures and an allocation
   objects).
failure can be determined by:

- checking if dma_alloc_coherent returns NULL or dma_map_sg returns 0

- checking the returned dma_addr_t of dma_map_single and dma_map_page
  by using dma_mapping_error():

	dma_addr_t dma_handle;

	dma_handle = dma_map_single(dev, addr, size, direction);
	if (dma_mapping_error(dev, dma_handle)) {
		/*
		 * reduce current DMA mapping usage,
		 * delay and try again later or
		 * reset driver.
		 */
	}


			   Closing
			   Closing


Loading