Commit 53ae158f authored by Russell King (Oracle)'s avatar Russell King (Oracle)
Browse files

Merge tag 'arm-vfp-refactor-for-rmk' of...

Merge tag 'arm-vfp-refactor-for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux into devel-stable

Refactor VFP support code and reimplement in C

The VFP related changes to permit kernel mode NEON in softirq context
resulted in some issues regarding en/disabling of sofirqs from asm code,
and this made it clear that it would be better to handle more of it from
C code.

Given that we already have infrastructure that associates undefined
instruction exceptions with handler code based on value/mask pairs, we
can easily move the dispatch of VFP and NEON instructions to C code once
we reimplement the actual VFP support routine (which reasons about how
to deal with the exception and whether any emulation is needed) in C
code first.

With those out of the way, we can drop the partial decoding logic in asm
that reasons about which ISA is being used by user space, as the
remaining cases are all 32-bit ARM only. This leaves a FPE specific
routine with some iWMMXT logic that is easily duplicated in C as well,
allowing us to move the FPE asm code into the FPE asm source file, and
out of the shared entry code.
parents ac9a7868 47ba5f39
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ Block
   kyber-iosched
   null_blk
   pr
   request
   stat
   switching-sched
   writeback_cache_control

Documentation/block/request.rst

deleted100644 → 0
+0 −99
Original line number Diff line number Diff line
============================
struct request documentation
============================

Jens Axboe <jens.axboe@oracle.com> 27/05/02


.. FIXME:
   No idea about what does mean - seems just some noise, so comment it

   1.0
   Index

   2.0 Struct request members classification

       2.1 struct request members explanation

   3.0


   2.0



Short explanation of request members
====================================

Classification flags:

	=	====================
	D	driver member
	B	block layer member
	I	I/O scheduler member
	=	====================

Unless an entry contains a D classification, a device driver must not access
this member. Some members may contain D classifications, but should only be
access through certain macros or functions (eg ->flags).

<linux/blkdev.h>

=============================== ======= =======================================
Member				Flag	Comment
=============================== ======= =======================================
struct list_head queuelist	BI	Organization on various internal
					queues

``void *elevator_private``	I	I/O scheduler private data

unsigned char cmd[16]		D	Driver can use this for setting up
					a cdb before execution, see
					blk_queue_prep_rq

unsigned long flags		DBI	Contains info about data direction,
					request type, etc.

int rq_status			D	Request status bits

kdev_t rq_dev			DBI	Target device

int errors			DB	Error counts

sector_t sector			DBI	Target location

unsigned long hard_nr_sectors	B	Used to keep sector sane

unsigned long nr_sectors	DBI	Total number of sectors in request

unsigned long hard_nr_sectors	B	Used to keep nr_sectors sane

unsigned short nr_phys_segments	DB	Number of physical scatter gather
					segments in a request

unsigned short nr_hw_segments	DB	Number of hardware scatter gather
					segments in a request

unsigned int current_nr_sectors	DB	Number of sectors in first segment
					of request

unsigned int hard_cur_sectors	B	Used to keep current_nr_sectors sane

int tag				DB	TCQ tag, if assigned

``void *special``		D	Free to be used by driver

``char *buffer``		D	Map of first segment, also see
					section on bouncing SECTION

``struct completion *waiting``	D	Can be used by driver to get signalled
					on request completion

``struct bio *bio``		DBI	First bio in request

``struct bio *biotail``		DBI	Last bio in request

``struct request_queue *q``	DB	Request queue this request belongs to

``struct request_list *rl``	B	Request list this request came from
=============================== ======= =======================================
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ properties:

        properties:
          data-lanes:
            minItems: 1
            maxItems: 2

        required:
+2 −11
Original line number Diff line number Diff line
@@ -17,20 +17,11 @@ description:
properties:
  clocks:
    minItems: 3
    items:
      - description: PCIe bridge clock.
      - description: PCIe bus clock.
      - description: PCIe PHY clock.
      - description: Additional required clock entry for imx6sx-pcie,
           imx6sx-pcie-ep, imx8mq-pcie, imx8mq-pcie-ep.
    maxItems: 4

  clock-names:
    minItems: 3
    items:
      - const: pcie
      - const: pcie_bus
      - enum: [ pcie_phy, pcie_aux ]
      - enum: [ pcie_inbound_axi, pcie_aux ]
    maxItems: 4

  num-lanes:
    const: 1
+38 −0
Original line number Diff line number Diff line
@@ -31,6 +31,19 @@ properties:
      - const: dbi
      - const: addr_space

  clocks:
    minItems: 3
    items:
      - description: PCIe bridge clock.
      - description: PCIe bus clock.
      - description: PCIe PHY clock.
      - description: Additional required clock entry for imx6sx-pcie,
           imx6sx-pcie-ep, imx8mq-pcie, imx8mq-pcie-ep.

  clock-names:
    minItems: 3
    maxItems: 4

  interrupts:
    items:
      - description: builtin eDMA interrupter.
@@ -49,6 +62,31 @@ required:
allOf:
  - $ref: /schemas/pci/snps,dw-pcie-ep.yaml#
  - $ref: /schemas/pci/fsl,imx6q-pcie-common.yaml#
  - if:
      properties:
        compatible:
          enum:
            - fsl,imx8mq-pcie-ep
    then:
      properties:
        clocks:
          minItems: 4
        clock-names:
          items:
            - const: pcie
            - const: pcie_bus
            - const: pcie_phy
            - const: pcie_aux
    else:
      properties:
        clocks:
          maxItems: 3
        clock-names:
          items:
            - const: pcie
            - const: pcie_bus
            - const: pcie_aux


unevaluatedProperties: false

Loading