diff --git a/.gitignore b/.gitignore index 77d7de57cd1e..3971673c4d97 100644 --- a/.gitignore +++ b/.gitignore @@ -58,6 +58,7 @@ modules.order /tags /TAGS /linux +/modules-only.symvers /vmlinux /vmlinux.32 /vmlinux.symvers diff --git a/Documentation/ABI/testing/OWNERS b/Documentation/ABI/testing/OWNERS new file mode 100644 index 000000000000..75edfd5b3a32 --- /dev/null +++ b/Documentation/ABI/testing/OWNERS @@ -0,0 +1,2 @@ +# include OWNERS from the authoritative android-mainline branch +include kernel/common:android-mainline:/Documentation/ABI/testing/OWNERS diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs index ddd4bd6116fc..5088281e312e 100644 --- a/Documentation/ABI/testing/sysfs-fs-f2fs +++ b/Documentation/ABI/testing/sysfs-fs-f2fs @@ -276,7 +276,7 @@ Date April 2019 Contact: "Daniel Rosenberg" Description: If checkpoint=disable, it displays the number of blocks that are unusable. - If checkpoint=enable it displays the enumber of blocks that + If checkpoint=enable it displays the number of blocks that would be unusable if checkpoint=disable were to be set. What: /sys/fs/f2fs//encoding @@ -410,6 +410,11 @@ Description: Give a way to change checkpoint merge daemon's io priority. and set the I/O priority within valid range of it. "," delimiter is necessary in between I/O class and priority number. +What: /sys/fs/f2fs//ovp_segments +Date: March 2021 +Contact: "Jaegeuk Kim" +Description: Shows the number of overprovision segments. + What: /sys/fs/f2fs//compr_written_block Date: March 2021 Contact: "Daeho Jeong" @@ -433,3 +438,31 @@ Description: Show the count of inode newly enabled for compression since mount. Note that when the compression is disabled for the files, this count doesn't decrease. If you write "0" here, you can initialize compr_new_inode to "0". + +What: /sys/fs/f2fs//atgc_candidate_ratio +Date: May 2021 +Contact: "Chao Yu" +Description: When ATGC is on, it controls candidate ratio in order to limit total + number of potential victim in all candidates, the value should be in + range of [0, 100], by default it was initialized as 20(%). + +What: /sys/fs/f2fs//atgc_candidate_count +Date: May 2021 +Contact: "Chao Yu" +Description: When ATGC is on, it controls candidate count in order to limit total + number of potential victim in all candidates, by default it was + initialized as 10 (sections). + +What: /sys/fs/f2fs//atgc_age_weight +Date: May 2021 +Contact: "Chao Yu" +Description: When ATGC is on, it controls age weight to balance weight proportion + in between aging and valid blocks, the value should be in range of + [0, 100], by default it was initialized as 60(%). + +What: /sys/fs/f2fs//atgc_age_threshold +Date: May 2021 +Contact: "Chao Yu" +Description: When ATGC is on, it controls age threshold to bypass GCing young + candidates whose age is not beyond the threshold, by default it was + initialized as 604800 seconds (equals to 7 days). diff --git a/Documentation/admin-guide/bootconfig.rst b/Documentation/admin-guide/bootconfig.rst index 9b90efcc3a35..2400b1ed886c 100644 --- a/Documentation/admin-guide/bootconfig.rst +++ b/Documentation/admin-guide/bootconfig.rst @@ -89,13 +89,35 @@ you can use ``+=`` operator. For example:: In this case, the key ``foo`` has ``bar``, ``baz`` and ``qux``. -However, a sub-key and a value can not co-exist under a parent key. -For example, following config is NOT allowed.:: +Moreover, sub-keys and a value can coexist under a parent key. +For example, following config is allowed.:: foo = value1 - foo.bar = value2 # !ERROR! subkey "bar" and value "value1" can NOT co-exist - foo.bar := value2 # !ERROR! even with the override operator, this is NOT allowed. + foo.bar = value2 + foo := value3 # This will update foo's value. +Note, since there is no syntax to put a raw value directly under a +structured key, you have to define it outside of the brace. For example:: + + foo { + bar = value1 + bar { + baz = value2 + qux = value3 + } + } + +Also, the order of the value node under a key is fixed. If there +are a value and subkeys, the value is always the first child node +of the key. Thus if user specifies subkeys first, e.g.:: + + foo.bar = value1 + foo = value2 + +In the program (and /proc/bootconfig), it will be shown as below:: + + foo = value2 + foo.bar = value1 Comments -------- diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index d9c35eb3066a..ed42c3bad107 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -4683,10 +4683,6 @@ (that will set all pages holding image data during restoration read-only). - reap_mem_when_killed_by= - The name of a process, the kill signal from which to a process - make its memory reaped with oom reaper. - retain_initrd [RAM] Keep initrd memory after extraction rfkill.default_state= diff --git a/Documentation/admin-guide/mm/userfaultfd.rst b/Documentation/admin-guide/mm/userfaultfd.rst index 3aa38e8b8361..6528036093e1 100644 --- a/Documentation/admin-guide/mm/userfaultfd.rst +++ b/Documentation/admin-guide/mm/userfaultfd.rst @@ -77,7 +77,8 @@ events, except page fault notifications, may be generated: - ``UFFD_FEATURE_MINOR_HUGETLBFS`` indicates that the kernel supports ``UFFDIO_REGISTER_MODE_MINOR`` registration for hugetlbfs virtual memory - areas. + areas. ``UFFD_FEATURE_MINOR_SHMEM`` is the analogous feature indicating + support for shmem virtual memory areas. The userland application should set the feature flags it intends to use when invoking the ``UFFDIO_API`` ioctl, to request that those features be diff --git a/Documentation/arm/memory.rst b/Documentation/arm/memory.rst index 0521b4ce5c96..34bb23c44a71 100644 --- a/Documentation/arm/memory.rst +++ b/Documentation/arm/memory.rst @@ -45,9 +45,14 @@ fffe8000 fffeffff DTCM mapping area for platforms with fffe0000 fffe7fff ITCM mapping area for platforms with ITCM mounted inside the CPU. -ffc00000 ffefffff Fixmap mapping region. Addresses provided +ffc80000 ffefffff Fixmap mapping region. Addresses provided by fix_to_virt() will be located here. +ffc00000 ffc7ffff Guard region + +ff800000 ffbfffff Permanent, fixed read-only mapping of the + firmware provided DT blob + fee00000 feffffff Mapping of PCI I/O space. This is a static mapping within the vmalloc space. diff --git a/Documentation/crypto/api-skcipher.rst b/Documentation/crypto/api-skcipher.rst index 1aaf8985894b..04d6cc5357c8 100644 --- a/Documentation/crypto/api-skcipher.rst +++ b/Documentation/crypto/api-skcipher.rst @@ -28,8 +28,8 @@ Symmetric Key Cipher Request Handle Single Block Cipher API ----------------------- -.. kernel-doc:: include/linux/crypto.h +.. kernel-doc:: include/crypto/internal/cipher.h :doc: Single Block Cipher API -.. kernel-doc:: include/linux/crypto.h +.. kernel-doc:: include/crypto/internal/cipher.h :functions: crypto_alloc_cipher crypto_free_cipher crypto_has_cipher crypto_cipher_blocksize crypto_cipher_setkey crypto_cipher_encrypt_one crypto_cipher_decrypt_one diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml index f29bd11653db..e4cf07ab5744 100644 --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml @@ -131,6 +131,17 @@ properties: maxItems: 6 $ref: /schemas/types.yaml#/definitions/uint32-array + sink-vdos-v1: + description: An array of u32 with each entry, a Vendor Defined Message Object (VDO), + providing additional information corresponding to the product, the detailed bit + definitions and the order of each VDO can be found in + "USB Power Delivery Specification Revision 2.0, Version 1.3" chapter 6.4.4.3.1 Discover + Identity. User can specify the VDO array via VDO_IDH/_CERT/_PRODUCT/_CABLE/_AMA defined in + dt-bindings/usb/pd.h. + minItems: 3 + maxItems: 6 + $ref: /schemas/types.yaml#/definitions/uint32-array + op-sink-microwatt: description: Sink required operating power in microwatt, if source can't offer the power, Capability Mismatch is set. Required for power sink and @@ -188,6 +199,10 @@ properties: SNK_READY for non-pd link. type: boolean +dependencies: + sink-vdos-v1: [ 'sink-vdos' ] + sink-vdos: [ 'sink-vdos-v1' ] + required: - compatible diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt b/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt index 121220745d46..62a5e13c46ae 100644 --- a/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt @@ -63,7 +63,7 @@ Required properties (DMA function blocks): - larb: Should contain a phandle pointing to the local arbiter device as defined in Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt - iommus: Should point to the respective IOMMU block with master port as - argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details. Examples: diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt index 044b11913c49..169cf3b30f5e 100644 --- a/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt @@ -19,7 +19,7 @@ Required properties: Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt for details. - iommus: should point to the respective IOMMU block with master port as - argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details. Example: diff --git a/Documentation/devicetree/bindings/media/mediatek-jpeg-encoder.txt b/Documentation/devicetree/bindings/media/mediatek-jpeg-encoder.txt index 736be7cad385..5e116814adf6 100644 --- a/Documentation/devicetree/bindings/media/mediatek-jpeg-encoder.txt +++ b/Documentation/devicetree/bindings/media/mediatek-jpeg-encoder.txt @@ -17,7 +17,7 @@ Required properties: Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt for details. - iommus: should point to the respective IOMMU block with master port as - argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details. Example: diff --git a/Documentation/devicetree/bindings/media/mediatek-mdp.txt b/Documentation/devicetree/bindings/media/mediatek-mdp.txt index 0d03e3ae2be2..55797836accf 100644 --- a/Documentation/devicetree/bindings/media/mediatek-mdp.txt +++ b/Documentation/devicetree/bindings/media/mediatek-mdp.txt @@ -25,7 +25,7 @@ Required properties (DMA function blocks, child node): "mediatek,mt8173-mdp-wdma" "mediatek,mt8173-mdp-wrot" - iommus: should point to the respective IOMMU block with master port as - argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details. - mediatek,larb: must contain the local arbiters in the current Socs, see Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt diff --git a/Documentation/devicetree/bindings/media/mediatek-vcodec.txt b/Documentation/devicetree/bindings/media/mediatek-vcodec.txt index 8217424fd4bd..a83ebc1a1c7f 100644 --- a/Documentation/devicetree/bindings/media/mediatek-vcodec.txt +++ b/Documentation/devicetree/bindings/media/mediatek-vcodec.txt @@ -18,7 +18,7 @@ Required properties: "univpll_d2", "clk_cci400_sel", "vdec_sel", "vdecpll", "vencpll", "venc_lt_sel", "vdec_bus_clk_src". - iommus : should point to the respective IOMMU block with master port as - argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.txt + argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details. One of the two following nodes: - mediatek,vpu : the node of the video processor unit, if using VPU. diff --git a/Documentation/devicetree/bindings/media/renesas,vin.yaml b/Documentation/devicetree/bindings/media/renesas,vin.yaml index ad2fe660364b..c69cf8d0cb15 100644 --- a/Documentation/devicetree/bindings/media/renesas,vin.yaml +++ b/Documentation/devicetree/bindings/media/renesas,vin.yaml @@ -278,23 +278,35 @@ required: - interrupts - clocks - power-domains - - resets -if: - properties: - compatible: - contains: - enum: - - renesas,vin-r8a7778 - - renesas,vin-r8a7779 - - renesas,rcar-gen2-vin -then: - required: - - port -else: - required: - - renesas,id - - ports +allOf: + - if: + not: + properties: + compatible: + contains: + enum: + - renesas,vin-r8a7778 + - renesas,vin-r8a7779 + then: + required: + - resets + + - if: + properties: + compatible: + contains: + enum: + - renesas,vin-r8a7778 + - renesas,vin-r8a7779 + - renesas,rcar-gen2-vin + then: + required: + - port + else: + required: + - renesas,id + - ports additionalProperties: false diff --git a/Documentation/devicetree/bindings/serial/8250.yaml b/Documentation/devicetree/bindings/serial/8250.yaml index c1d4c196f005..460cb546c54a 100644 --- a/Documentation/devicetree/bindings/serial/8250.yaml +++ b/Documentation/devicetree/bindings/serial/8250.yaml @@ -93,11 +93,6 @@ properties: - mediatek,mt7622-btif - mediatek,mt7623-btif - const: mediatek,mtk-btif - - items: - - enum: - - mediatek,mt7622-btif - - mediatek,mt7623-btif - - const: mediatek,mtk-btif - items: - const: mrvl,mmp-uart - const: intel,xscale-uart diff --git a/Documentation/devicetree/bindings/serial/st,stm32-uart.yaml b/Documentation/devicetree/bindings/serial/st,stm32-uart.yaml index 06d5f251ec88..51f390e5c276 100644 --- a/Documentation/devicetree/bindings/serial/st,stm32-uart.yaml +++ b/Documentation/devicetree/bindings/serial/st,stm32-uart.yaml @@ -77,7 +77,8 @@ required: - interrupts - clocks -additionalProperties: false +additionalProperties: + type: object examples: - | diff --git a/Documentation/dontdiff b/Documentation/dontdiff index e361fc95ca29..82e3eee7363b 100644 --- a/Documentation/dontdiff +++ b/Documentation/dontdiff @@ -178,6 +178,7 @@ mktables mktree mkutf8data modpost +modules-only.symvers modules.builtin modules.builtin.modinfo modules.nsdeps diff --git a/Documentation/driver-api/xilinx/eemi.rst b/Documentation/driver-api/xilinx/eemi.rst index 9dcbc6f18d75..c1bc47b9000d 100644 --- a/Documentation/driver-api/xilinx/eemi.rst +++ b/Documentation/driver-api/xilinx/eemi.rst @@ -16,35 +16,8 @@ components running across different processing clusters on a chip or device to communicate with a power management controller (PMC) on a device to issue or respond to power management requests. -EEMI ops is a structure containing all eemi APIs supported by Zynq MPSoC. -The zynqmp-firmware driver maintain all EEMI APIs in zynqmp_eemi_ops -structure. Any driver who want to communicate with PMC using EEMI APIs -can call zynqmp_pm_get_eemi_ops(). - -Example of EEMI ops:: - - /* zynqmp-firmware driver maintain all EEMI APIs */ - struct zynqmp_eemi_ops { - int (*get_api_version)(u32 *version); - int (*query_data)(struct zynqmp_pm_query_data qdata, u32 *out); - }; - - static const struct zynqmp_eemi_ops eemi_ops = { - .get_api_version = zynqmp_pm_get_api_version, - .query_data = zynqmp_pm_query_data, - }; - -Example of EEMI ops usage:: - - static const struct zynqmp_eemi_ops *eemi_ops; - u32 ret_payload[PAYLOAD_ARG_CNT]; - int ret; - - eemi_ops = zynqmp_pm_get_eemi_ops(); - if (IS_ERR(eemi_ops)) - return PTR_ERR(eemi_ops); - - ret = eemi_ops->query_data(qdata, ret_payload); +Any driver who wants to communicate with PMC using EEMI APIs use the +functions provided for each function. IOCTL ------ diff --git a/Documentation/filesystems/f2fs.rst b/Documentation/filesystems/f2fs.rst index 35ed01a5fbc9..992bf91eeec8 100644 --- a/Documentation/filesystems/f2fs.rst +++ b/Documentation/filesystems/f2fs.rst @@ -110,6 +110,12 @@ background_gc=%s Turn on/off cleaning operations, namely garbage on synchronous garbage collection running in background. Default value for this option is on. So garbage collection is on by default. +gc_merge When background_gc is on, this option can be enabled to + let background GC thread to handle foreground GC requests, + it can eliminate the sluggish issue caused by slow foreground + GC operation when GC is triggered from a process with limited + I/O and CPU resources. +nogc_merge Disable GC merge feature. disable_roll_forward Disable the roll-forward recovery routine norecovery Disable the roll-forward recovery routine, mounted read- only (i.e., -o ro,disable_roll_forward) @@ -813,6 +819,14 @@ Compression implementation * chattr +c file * chattr +c dir; touch dir/file * mount w/ -o compress_extension=ext; touch file.ext + * mount w/ -o compress_extension=*; touch any_file + +- At this point, compression feature doesn't expose compressed space to user + directly in order to guarantee potential data updates later to the space. + Instead, the main goal is to reduce data writes to flash disk as much as + possible, resulting in extending disk life time as well as relaxing IO + congestion. Alternatively, we've added ioctl interface to reclaim compressed + space and show it to user after putting the immutable bit. Compress metadata layout:: diff --git a/Documentation/powerpc/syscall64-abi.rst b/Documentation/powerpc/syscall64-abi.rst index cf9b2857c72a..d8242049bdcb 100644 --- a/Documentation/powerpc/syscall64-abi.rst +++ b/Documentation/powerpc/syscall64-abi.rst @@ -96,6 +96,16 @@ auxiliary vector. scv 0 syscalls will always behave as PPC_FEATURE2_HTM_NOSC. +ptrace +------ +When ptracing system calls (PTRACE_SYSCALL), the pt_regs.trap value contains +the system call type that can be used to distinguish between sc and scv 0 +system calls, and the different register conventions can be accounted for. + +If the value of (pt_regs.trap & 0xfff0) is 0xc00 then the system call was +performed with the sc instruction, if it is 0x3000 then the system call was +performed with the scv 0 instruction. + vsyscall ======== diff --git a/Documentation/sphinx/parse-headers.pl b/Documentation/sphinx/parse-headers.pl index 1910079f984f..b063f2f1cfb2 100755 --- a/Documentation/sphinx/parse-headers.pl +++ b/Documentation/sphinx/parse-headers.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl use strict; use Text::Tabs; use Getopt::Long; diff --git a/Documentation/target/tcm_mod_builder.py b/Documentation/target/tcm_mod_builder.py index 1548d8420499..54492aa813b9 100755 --- a/Documentation/target/tcm_mod_builder.py +++ b/Documentation/target/tcm_mod_builder.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # The TCM v4 multi-protocol fabric module generation script for drivers/target/$NEW_MOD # # Copyright (c) 2010 Rising Tide Systems diff --git a/Documentation/trace/postprocess/decode_msr.py b/Documentation/trace/postprocess/decode_msr.py index 0ab40e0db580..aa9cc7abd5c2 100644 --- a/Documentation/trace/postprocess/decode_msr.py +++ b/Documentation/trace/postprocess/decode_msr.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # add symbolic names to read_msr / write_msr in trace # decode_msr msr-index.h < trace import sys diff --git a/Documentation/trace/postprocess/trace-pagealloc-postprocess.pl b/Documentation/trace/postprocess/trace-pagealloc-postprocess.pl index 0a120aae33ce..b9b7d80c2f9d 100644 --- a/Documentation/trace/postprocess/trace-pagealloc-postprocess.pl +++ b/Documentation/trace/postprocess/trace-pagealloc-postprocess.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # This is a POC (proof of concept or piece of crap, take your pick) for reading the # text representation of trace output related to page allocation. It makes an attempt # to extract some high-level information on what is going on. The accuracy of the parser diff --git a/Documentation/trace/postprocess/trace-vmscan-postprocess.pl b/Documentation/trace/postprocess/trace-vmscan-postprocess.pl index 995da15b16ca..2f4e39875fb3 100644 --- a/Documentation/trace/postprocess/trace-vmscan-postprocess.pl +++ b/Documentation/trace/postprocess/trace-vmscan-postprocess.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # This is a POC for reading the text representation of trace output related to # page reclaim. It makes an attempt to extract some high-level information on # what is going on. The accuracy of the parser may vary diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-colorimetry.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-colorimetry.rst index 862f78b41b32..1e7265155715 100644 --- a/Documentation/userspace-api/media/v4l/ext-ctrls-colorimetry.rst +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-colorimetry.rst @@ -20,3 +20,74 @@ Colorimetry Control IDs The Colorimetry class descriptor. Calling :ref:`VIDIOC_QUERYCTRL` for this control will return a description of this control class. + +``V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (struct)`` + The Content Light Level defines upper bounds for the nominal target + brightness light level of the pictures. + +.. c:type:: v4l2_ctrl_hdr10_cll_info + +.. cssclass:: longtable + +.. flat-table:: struct v4l2_ctrl_hdr10_cll_info + :header-rows: 0 + :stub-columns: 0 + :widths: 1 1 2 + + * - __u16 + - ``max_content_light_level`` + - The upper bound for the maximum light level among all individual + samples for the pictures of a video sequence, cd/m\ :sup:`2`. + When equal to 0 no such upper bound is present. + * - __u16 + - ``max_pic_average_light_level`` + - The upper bound for the maximum average light level among the + samples for any individual picture of a video sequence, + cd/m\ :sup:`2`. When equal to 0 no such upper bound is present. + +``V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY (struct)`` + The mastering display defines the color volume (the color primaries, + white point and luminance range) of a display considered to be the + mastering display for the current video content. + +.. c:type:: v4l2_ctrl_hdr10_mastering_display + +.. cssclass:: longtable + +.. flat-table:: struct v4l2_ctrl_hdr10_mastering_display + :header-rows: 0 + :stub-columns: 0 + :widths: 1 1 2 + + * - __u16 + - ``display_primaries_x[3]`` + - Specifies the normalized x chromaticity coordinate of the color + primary component c of the mastering display in increments of 0.00002. + For describing the mastering display that uses Red, Green and Blue + color primaries, index value c equal to 0 corresponds to the Green + primary, c equal to 1 corresponds to Blue primary and c equal to 2 + corresponds to the Red color primary. + * - __u16 + - ``display_primaries_y[3]`` + - Specifies the normalized y chromaticity coordinate of the color + primary component c of the mastering display in increments of 0.00002. + For describing the mastering display that uses Red, Green and Blue + color primaries, index value c equal to 0 corresponds to the Green + primary, c equal to 1 corresponds to Blue primary and c equal to 2 + corresponds to Red color primary. + * - __u16 + - ``white_point_x`` + - Specifies the normalized x chromaticity coordinate of the white + point of the mastering display in increments of 0.00002. + * - __u16 + - ``white_point_y`` + - Specifies the normalized y chromaticity coordinate of the white + point of the mastering display in increments of 0.00002. + * - __u32 + - ``max_luminance`` + - Specifies the nominal maximum display luminance of the mastering + display in units of 0.0001 cd/m\ :sup:`2`. + * - __u32 + - ``min_luminance`` + - specifies the nominal minimum display luminance of the mastering + display in units of 0.0001 cd/m\ :sup:`2`. diff --git a/Documentation/userspace-api/media/v4l/subdev-formats.rst b/Documentation/userspace-api/media/v4l/subdev-formats.rst index c9b7bb3ca089..eff6727c69d3 100644 --- a/Documentation/userspace-api/media/v4l/subdev-formats.rst +++ b/Documentation/userspace-api/media/v4l/subdev-formats.rst @@ -1567,8 +1567,8 @@ The following tables list existing packed RGB formats. - MEDIA_BUS_FMT_RGB101010_1X30 - 0x1018 - - - 0 - - 0 + - + - - r\ :sub:`9` - r\ :sub:`8` - r\ :sub:`7` diff --git a/Documentation/userspace-api/media/v4l/vidioc-g-ext-ctrls.rst b/Documentation/userspace-api/media/v4l/vidioc-g-ext-ctrls.rst index 672f82de2b64..b1851102c703 100644 --- a/Documentation/userspace-api/media/v4l/vidioc-g-ext-ctrls.rst +++ b/Documentation/userspace-api/media/v4l/vidioc-g-ext-ctrls.rst @@ -184,6 +184,14 @@ still cause this situation. - ``p_area`` - A pointer to a struct :c:type:`v4l2_area`. Valid if this control is of type ``V4L2_CTRL_TYPE_AREA``. + * - struct :c:type:`v4l2_ctrl_hdr10_cll_info` * + - ``p_hdr10_cll`` + - A pointer to a struct :c:type:`v4l2_ctrl_hdr10_cll_info`. Valid if this control is + of type ``V4L2_CTRL_TYPE_HDR10_CLL_INFO``. + * - struct :c:type:`v4l2_ctrl_hdr10_mastering_display` * + - ``p_hdr10_mastering`` + - A pointer to a struct :c:type:`v4l2_ctrl_hdr10_mastering_display`. Valid if this control is + of type ``V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY``. * - void * - ``ptr`` - A pointer to a compound type which can be an N-dimensional array diff --git a/Documentation/userspace-api/media/videodev2.h.rst.exceptions b/Documentation/userspace-api/media/videodev2.h.rst.exceptions index 121e396a2779..58880328d8c5 100644 --- a/Documentation/userspace-api/media/videodev2.h.rst.exceptions +++ b/Documentation/userspace-api/media/videodev2.h.rst.exceptions @@ -145,6 +145,8 @@ replace symbol V4L2_CTRL_TYPE_HEVC_SPS :c:type:`v4l2_ctrl_type` replace symbol V4L2_CTRL_TYPE_HEVC_PPS :c:type:`v4l2_ctrl_type` replace symbol V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS :c:type:`v4l2_ctrl_type` replace symbol V4L2_CTRL_TYPE_AREA :c:type:`v4l2_ctrl_type` +replace symbol V4L2_CTRL_TYPE_HDR10_CLL_INFO :c:type:`v4l2_ctrl_type` +replace symbol V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY :c:type:`v4l2_ctrl_type` # V4L2 capability defines replace define V4L2_CAP_VIDEO_CAPTURE device-capabilities diff --git a/Documentation/userspace-api/seccomp_filter.rst b/Documentation/userspace-api/seccomp_filter.rst index bd9165241b6c..6efb41cc8072 100644 --- a/Documentation/userspace-api/seccomp_filter.rst +++ b/Documentation/userspace-api/seccomp_filter.rst @@ -250,14 +250,14 @@ Users can read via ``ioctl(SECCOMP_IOCTL_NOTIF_RECV)`` (or ``poll()``) on a seccomp notification fd to receive a ``struct seccomp_notif``, which contains five members: the input length of the structure, a unique-per-filter ``id``, the ``pid`` of the task which triggered this request (which may be 0 if the -task is in a pid ns not visible from the listener's pid namespace), a ``flags`` -member which for now only has ``SECCOMP_NOTIF_FLAG_SIGNALED``, representing -whether or not the notification is a result of a non-fatal signal, and the -``data`` passed to seccomp. Userspace can then make a decision based on this -information about what to do, and ``ioctl(SECCOMP_IOCTL_NOTIF_SEND)`` a -response, indicating what should be returned to userspace. The ``id`` member of -``struct seccomp_notif_resp`` should be the same ``id`` as in ``struct -seccomp_notif``. +task is in a pid ns not visible from the listener's pid namespace). The +notification also contains the ``data`` passed to seccomp, and a filters flag. +The structure should be zeroed out prior to calling the ioctl. + +Userspace can then make a decision based on this information about what to do, +and ``ioctl(SECCOMP_IOCTL_NOTIF_SEND)`` a response, indicating what should be +returned to userspace. The ``id`` member of ``struct seccomp_notif_resp`` should +be the same ``id`` as in ``struct seccomp_notif``. It is worth noting that ``struct seccomp_data`` contains the values of register arguments to the syscall, but does not contain pointers to memory. The task's diff --git a/MAINTAINERS b/MAINTAINERS index db2a3dfb063d..354831907474 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6694,6 +6694,7 @@ F: Documentation/filesystems/f2fs.rst F: fs/f2fs/ F: include/linux/f2fs_fs.h F: include/trace/events/f2fs.h +F: include/uapi/linux/f2fs.h F71805F HARDWARE MONITORING DRIVER M: Jean Delvare diff --git a/Makefile b/Makefile index 49c23c3d4603..24225ec0b5b0 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 32 +SUBLEVEL = 43 EXTRAVERSION = NAME = Dare mighty things @@ -449,7 +449,6 @@ OBJCOPY = llvm-objcopy OBJDUMP = llvm-objdump READELF = llvm-readelf STRIP = llvm-strip -KBUILD_HOSTLDFLAGS += -fuse-ld=lld --rtlib=compiler-rt else CC = $(CROSS_COMPILE)gcc LD = $(CROSS_COMPILE)ld @@ -800,16 +799,16 @@ KBUILD_CFLAGS += -Wno-gnu KBUILD_CFLAGS += -mno-global-merge else -# These warnings generated too much noise in a regular build. -# Use make W=1 to enable them (see scripts/Makefile.extrawarn) -KBUILD_CFLAGS += -Wno-unused-but-set-variable - # Warn about unmarked fall-throughs in switch statement. # Disabled for clang while comment to attribute conversion happens and # https://github.com/ClangBuiltLinux/linux/issues/636 is discussed. KBUILD_CFLAGS += $(call cc-option,-Wimplicit-fallthrough,) endif +# These warnings generated too much noise in a regular build. +# Use make W=1 to enable them (see scripts/Makefile.extrawarn) +KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable) + KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable) ifdef CONFIG_FRAME_POINTER KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls @@ -926,10 +925,10 @@ endif ifdef CONFIG_LTO_CLANG ifdef CONFIG_LTO_CLANG_THIN -CC_FLAGS_LTO += -flto=thin -fsplit-lto-unit +CC_FLAGS_LTO := -flto=thin -fsplit-lto-unit KBUILD_LDFLAGS += --thinlto-cache-dir=$(extmod-prefix).thinlto-cache else -CC_FLAGS_LTO += -flto +CC_FLAGS_LTO := -flto endif ifeq ($(SRCARCH),x86) @@ -1575,9 +1574,9 @@ endif # CONFIG_MODULES # make distclean Remove editor backup files, patch leftover files and the like # Directories & files removed with 'make clean' -CLEAN_FILES += include/ksym vmlinux.symvers \ +CLEAN_FILES += include/ksym vmlinux.symvers modules-only.symvers \ modules.builtin modules.builtin.modinfo modules.nsdeps \ - compile_commands.json + compile_commands.json .thinlto-cache # Directories & files removed with 'make mrproper' MRPROPER_FILES += include/config include/generated \ @@ -1591,7 +1590,7 @@ MRPROPER_FILES += include/config include/generated \ *.spec # Directories & files removed with 'make distclean' -DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS .thinlto-cache +DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS # clean - Delete most, but leave enough to build external modules # diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 4eb365e4cf10..cf87ad21f7e6 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -1,16 +1,16 @@ - - - - + + + + - - + + - + @@ -20,65 +20,70 @@ + - - - - - - - + + + + + + + - - - - + + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + @@ -86,22 +91,23 @@ - + - + - + - + - - - - - - - + + + + + + + + @@ -109,208 +115,244 @@ - - + + + - + - + - - + + - - - - - + + + + + - - - + + + - - - - - + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - + + - + + - - + + + - + - - - + + + + - - - + + + + + - - + + + - + + - + + - - + + - - - - - - + + + + + + - + - + + + - - + + - + - - - - + + + + + + + + + - - + + - - + + + + + + - + + + + - - - + + + - + + + - + + + + - + + + + + + @@ -319,13 +361,14 @@ - + + - + - - + + @@ -335,34 +378,35 @@ - - - - - - - + + + + + + + - + - - - + + + - - + + - + - - + + - - + + + @@ -370,21 +414,22 @@ - + - - - - - - - - - + + + + + + + + + + @@ -407,45 +452,51 @@ - - - - - + + + + + + - + + + + + + - + - + - - - - + + + + - + - - - - + + + + - + - - + + @@ -456,42 +507,48 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + @@ -499,683 +556,768 @@ - - - - + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - + + + + - + - + - - - - + + + + - - + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - + + + + - - - - + + + + + + - - - - - - + + + + + + + - - - + + + - + + - - + + - - + + - - - + + + + + + - + + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1190,554 +1332,574 @@ + - - - - - - - - - + + + + + + + + + - + - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - + - - - - - + + + + + - - + + - + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - - - + + + + + - + - - - - + + + + - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - + + + + + - - + + + - + - + + + - + - + - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + + + @@ -1754,114 +1916,118 @@ - - - + + + - - - - - - - - + + + + + + + + + - - - - - + + + + + + - - + + - + - - - - - - + + + + + + - - - + + + - + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - - - - + + + + + - + - - - - - + + + + + @@ -1870,78 +2036,78 @@ - - - - - + + + + + - - + + - - + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + @@ -1955,11 +2121,11 @@ - - + + - - + + @@ -1970,277 +2136,297 @@ - - - + + + - - - - + + + + - - - - + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - - + + - - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - + + + + + + + + + + - + + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - + + + - + - + - - + + + - - - - - + + + + + + + - - + - + - - - + + + + - + - - - - + + + + - - - - - - + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + - + + - + @@ -2260,30 +2446,31 @@ - - - - - - + + + + + + - - - - - + + + + + - - + + - - - - + + + + + @@ -2296,42 +2483,54 @@ - - - - - - - + + + + + + + + + + + + + + + + - + + - + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -2359,155 +2558,166 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + + + @@ -2517,377 +2727,406 @@ - - - - + + + + - + - - - - + + + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + - - + + - + @@ -2898,50 +3137,50 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + - + @@ -2977,617 +3216,687 @@ + + - + - - - + + + + + - + - + - - - - - - + + + + + + - + - + - + - - + + - - + + - + - - + + - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + + - + - - - - + + + + - + + - - + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - - - + + + - + + - + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + @@ -3605,7 +3914,7 @@ - + @@ -3627,13 +3936,14 @@ - - - - + + + + + - - + + @@ -3641,43 +3951,46 @@ - - - + + + - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - + - - - + + + - + @@ -3688,22 +4001,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -3711,218 +4024,239 @@ - - - + + + - - - - - - + + + + + + - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - + + + + + + - + + - - - - + + + + + - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - + + - - + + - - + + - - - - - - - - - - - - + + + + + + + + + + + + - + - - - - - + + + + + - - - + + + - + + - - - + + + - - + + - + @@ -3934,286 +4268,306 @@ - - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + + - + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - + - + - - - + + + - - + + - - + + - - - + + + + @@ -4224,78 +4578,90 @@ + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + + + - + - - - - - - + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - + + + + + + + + + - - - - + + + + + + + + + @@ -4309,6 +4675,7 @@ + @@ -4317,20 +4684,26 @@ + + + + + + @@ -4351,6 +4724,8 @@ + + @@ -4363,46 +4738,71 @@ + + + + + + + + + + + + + + - + + + + + + + + + + + + @@ -4411,6 +4811,7 @@ + @@ -4448,17 +4849,21 @@ - + - + + - - - + + + + + + - + @@ -4466,96 +4871,113 @@ - + - - - + + + + + + + + + + - + + + + - + - + + - - - - - + + + + + - - - + + + - + + + - + - - - + + + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - + + + - - + + - - + + + + @@ -4568,24 +4990,70 @@ - - - + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -4600,7 +5068,10 @@ - + + + + @@ -4702,46 +5173,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4753,127 +5224,127 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4892,7 +5363,7 @@ - + @@ -4902,6 +5373,18 @@ + + + + + + + + + + + + @@ -4954,18 +5437,21 @@ - + - + - + - + - + + + + @@ -4994,7 +5480,6 @@ - @@ -5156,26 +5641,26 @@ - + - + - + - + - + - + - + - + @@ -5184,6 +5669,7 @@ + @@ -5197,7 +5683,9 @@ - + + + @@ -5257,15 +5745,15 @@ - + - + - + - + @@ -5273,7 +5761,7 @@ - + @@ -5283,43 +5771,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5375,6 +5863,7 @@ + @@ -5392,8 +5881,6 @@ - - @@ -5567,12 +6054,12 @@ - + - + - + @@ -5645,10 +6132,9 @@ + - - @@ -5677,6 +6163,17 @@ + + + + + + + + + + + @@ -5890,7 +6387,6 @@ - @@ -6047,49 +6543,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6115,6 +6611,7 @@ + @@ -6207,7 +6704,6 @@ - @@ -6358,7 +6854,7 @@ - + @@ -6484,135 +6980,135 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - - - - - - - + + - + - + - + + + + - - - - + - + - + - + - + - + + + + - - - - + - - - - + - + - + - - + + - + - + + + + + + + - - - - + - + - + - + + + + + + + - + - + - + - + - + @@ -6754,18 +7250,18 @@ - + - + - + - + - + @@ -6866,61 +7362,64 @@ - + - + - - + + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6952,7 +7451,7 @@ - + @@ -7442,109 +7941,106 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + @@ -7802,7 +8298,7 @@ - + @@ -7848,124 +8344,124 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8090,42 +8586,45 @@ - + - + - + - + - + - - - - - - - + - + + + + - + - - - - - + + - + + + + + + + + + + @@ -8133,20 +8632,20 @@ - + - + - + - + - + @@ -8167,32 +8666,35 @@ - + - + - + - + - + - + - + + + + - + @@ -8396,7 +8898,7 @@ - + @@ -8409,32 +8911,32 @@ - + - + - + - + - + - + - + - + - + @@ -8492,7 +8994,7 @@ - + @@ -8812,48 +9314,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8879,7 +9381,7 @@ - + @@ -8920,7 +9422,6 @@ - @@ -8947,12 +9448,12 @@ + + + - - - @@ -9090,11 +9591,11 @@ - + - + @@ -9152,45 +9653,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9258,21 +9759,21 @@ - + - + - + - + - + - + @@ -9354,7 +9855,7 @@ - + @@ -9364,16 +9865,16 @@ - + - + - + - + @@ -9594,7 +10095,7 @@ - + @@ -9607,46 +10108,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9675,7 +10176,6 @@ - @@ -9690,11 +10190,11 @@ - + - + @@ -9754,59 +10254,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9857,7 +10357,7 @@ - + @@ -9987,70 +10487,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10206,7 +10706,7 @@ - + @@ -10384,19 +10884,19 @@ - + - + - + - + - + @@ -10441,66 +10941,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10518,10 +11018,10 @@ - + - + @@ -10545,30 +11045,33 @@ - + - + - + - + - + - + - + - + - + + + + @@ -10671,15 +11174,15 @@ - + - + - + - + @@ -10754,6 +11257,9 @@ + + + @@ -11038,35 +11544,35 @@ - + - + - + - + - + - + - + - + - + @@ -11085,79 +11591,79 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -11201,12 +11707,12 @@ - + - + - + @@ -11339,17 +11845,17 @@ - + - + - + @@ -11448,7 +11954,7 @@ - + @@ -11512,7 +12018,7 @@ - + @@ -11551,84 +12057,84 @@ - + - + - + - - - - + - + - + - + - + - + - - - - - - - - - - + - + - + - + - + - + + + + - + + + + - + - + - + - + - + - + - + + + + + + + @@ -11806,7 +12312,7 @@ - + @@ -11825,86 +12331,89 @@ + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -11917,28 +12426,28 @@ - + - + - + - + - + - + - + @@ -12066,7 +12575,7 @@ - + @@ -12124,115 +12633,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -12326,9 +12835,6 @@ - - - @@ -12528,7 +13034,7 @@ - + @@ -12550,22 +13056,22 @@ - + - + - + - + - + - + @@ -12601,7 +13107,7 @@ - + @@ -12650,7 +13156,7 @@ - + @@ -12841,7 +13347,7 @@ - + @@ -12861,7 +13367,7 @@ - + @@ -12955,25 +13461,25 @@ - + - + - + - + - + - + - + @@ -13146,7 +13652,7 @@ - + @@ -13162,7 +13668,7 @@ - + @@ -13186,7 +13692,7 @@ - + @@ -13217,40 +13723,40 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -13576,7 +14082,7 @@ - + @@ -13673,61 +14179,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13756,12 +14262,12 @@ - + - + - + @@ -14186,7 +14692,7 @@ - + @@ -14214,119 +14720,119 @@ - + - + - + - + - + - + - + - + - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + - - - - + - + - - + + - - + + - + + + + + + + + + + + + + + + + + + + @@ -14484,21 +14990,21 @@ - + - + - + - + - + - + @@ -14614,9 +15120,6 @@ - - - @@ -14652,12 +15155,12 @@ - + - + @@ -15832,82 +16335,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16025,292 +16528,292 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16561,7 +17064,7 @@ - + @@ -16612,11 +17115,11 @@ - + - + @@ -16628,11 +17131,11 @@ - + - + @@ -16790,210 +17293,210 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + - - - - - - - + - + + + + + + + - + - - + + - - - - - - - - + + - + - + - + + + + - + - + - - + + - - + + - - + + - + - + - + - - - - - - - + - + + + + - + - + - - - - + - + - + - + - + - + - + - + + + + + + + + + + + + + @@ -17126,65 +17629,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -17201,222 +17704,225 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + - + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - + + - + + + + + + + + + + - + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -17478,7 +17984,7 @@ - + @@ -17510,34 +18016,37 @@ - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + @@ -17620,11 +18129,6 @@ - - - - - @@ -17706,6 +18210,11 @@ + + + + + @@ -18121,7 +18630,7 @@ - + @@ -18143,51 +18652,51 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -18294,7 +18803,7 @@ - + @@ -18307,22 +18816,22 @@ - + - + - + - + - + - + @@ -18410,36 +18919,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -18550,7 +19059,7 @@ - + @@ -18575,59 +19084,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -18646,31 +19155,31 @@ - + - + - + - + - + - + - + - + - + @@ -18723,7 +19232,7 @@ - + @@ -18799,79 +19308,79 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19531,45 +20040,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19870,7 +20379,7 @@ - + @@ -19916,154 +20425,154 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20092,72 +20601,72 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20168,41 +20677,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -20211,46 +20720,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20294,39 +20803,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -20569,7 +21078,6 @@ - @@ -20753,6 +21261,9 @@ + + + @@ -20766,7 +21277,7 @@ - + @@ -20903,94 +21414,94 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -21021,6 +21532,9 @@ + + + @@ -21380,7 +21894,7 @@ - + @@ -22247,21 +22761,21 @@ - + - + - + - + - + - + @@ -22548,61 +23062,61 @@ - + - - - - - - - - - - + - + - + - - + + - - + + + + + - + + + + - - - - - - - + - + + + + - + + + + + + + - + - + - + - + @@ -22647,103 +23161,103 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22794,101 +23308,101 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22949,12 +23463,12 @@ - + - + - + @@ -23106,27 +23620,27 @@ - + - + - + - + - + - + - + - + @@ -23458,7 +23972,7 @@ - + @@ -23468,135 +23982,135 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23606,60 +24120,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23676,135 +24190,135 @@ - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - - - - - - - - - - - - - + + - + + + + + + + - - - - + - + - - + + - - + + + + + + + + - - - - + - + - - + + - - + + - - - - - - - - - - - - - - + + - + + + + + + + - - - - + - + + + + - + + + + + + + - + - + + + + - + - - + + - - + + + + + @@ -23882,12 +24396,12 @@ - + - + - + @@ -23927,12 +24441,12 @@ - + - + - + @@ -23975,7 +24489,6 @@ - @@ -24023,8 +24536,8 @@ - - + + @@ -24345,7 +24858,7 @@ - + @@ -24361,49 +24874,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -24517,7 +25030,7 @@ - + @@ -24530,19 +25043,19 @@ - + - + - + - + - + @@ -24580,15 +25093,15 @@ - + - + - + - + @@ -25180,24 +25693,24 @@ - + - + - + - + - + - + - + @@ -25205,41 +25718,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -25501,7 +26014,14 @@ - + + + + + + + + @@ -25550,89 +26070,89 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25845,21 +26365,21 @@ - + - + - + - + - + - + @@ -25881,10 +26401,10 @@ - + - + @@ -26652,10 +27172,10 @@ - + @@ -26693,8 +27213,8 @@ - - + + @@ -26818,7 +27338,7 @@ - + @@ -27153,15 +27673,15 @@ - + - + - + - + @@ -28030,15 +28550,15 @@ - + - + - + - + @@ -28267,21 +28787,21 @@ - + - + - + - + - + - + @@ -28401,24 +28921,24 @@ - + - + - + - + - + - + - + @@ -28529,101 +29049,101 @@ - + - - - - + - - - - - - - + - + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -28651,12 +29171,12 @@ - + - + - + @@ -28670,250 +29190,257 @@ - - + - + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + - + - + - + + + + - - - - + - + - + - - - - + - - - - - - - + - + - + - + + + + - + - + - - + + - - + + + + + - + - - + + - - + + + + + + + + + + + - + @@ -29162,7 +29689,7 @@ - + @@ -29276,11 +29803,10 @@ - - - - - + + + + @@ -29374,6 +29900,7 @@ + @@ -29527,6 +30054,7 @@ + @@ -29561,10 +30089,10 @@ - - + + - + @@ -29579,69 +30107,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -29735,158 +30263,158 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30130,7 +30658,7 @@ - + @@ -30158,43 +30686,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30704,9 +31232,9 @@ - + - + @@ -30719,23 +31247,23 @@ - + - + - + - + - + - + - + @@ -30755,7 +31283,6 @@ - @@ -30791,7 +31318,7 @@ - + @@ -30999,7 +31526,7 @@ - + @@ -31071,100 +31598,100 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -31269,9 +31796,9 @@ - + - + @@ -31536,69 +32063,69 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - - + + - - - - - - - + - - - - - - - + - + + + + - + + + + + + + - + + + + + + + @@ -31880,7 +32407,6 @@ - @@ -32061,7 +32587,7 @@ - + @@ -32090,25 +32616,25 @@ - - + + - + - + - + - + - + @@ -32116,74 +32642,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -32252,12 +32778,12 @@ - + - + - + @@ -32410,160 +32936,160 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -32757,12 +33283,12 @@ - + - + - + @@ -32771,48 +33297,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -32852,176 +33378,176 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -33218,39 +33744,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -33296,7 +33822,7 @@ - + @@ -33640,34 +34166,34 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -33764,12 +34290,12 @@ - + - + - + @@ -33813,21 +34339,21 @@ - + - + - + - + - + - + @@ -34221,6 +34747,15 @@ + + + + + + + + + @@ -34345,58 +34880,61 @@ - + - + - + - + - + - - - - - - - + - + + + + - + - - - - - + + - + + + + + + + + + + - + - + - + - + - + @@ -34417,7 +34955,7 @@ - + @@ -34427,16 +34965,16 @@ - + - + - + - + @@ -34581,7 +35119,7 @@ - + @@ -34594,28 +35132,28 @@ - + - + - + - + - + - + - + - + @@ -34864,7 +35402,7 @@ - + @@ -34877,28 +35415,28 @@ - + - + - + - + - + - + - + @@ -35142,7 +35680,7 @@ - + @@ -35236,13 +35774,13 @@ - + - + - + @@ -35298,135 +35836,135 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - - - - - - - + + - + - + - + + + + - - - - + - + - + - + - + - + + + + - - - - + - - - - + - + - + - - + + - + - + + + + + + + - - - - + - + - + - + + + + + + + - + - + - + - + - + @@ -35764,7 +36302,7 @@ - + @@ -35783,52 +36321,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36046,56 +36584,56 @@ - + - - - - - - - - - - + - + - + - - + + - - + + + + + - + + + + - - - - - - - + - + + + + - + + + + + + + - + - + - + @@ -36139,7 +36677,7 @@ - + @@ -36233,25 +36771,25 @@ - + - + - + - + - + - + - + @@ -36266,7 +36804,7 @@ - + @@ -36279,22 +36817,22 @@ - + - + - + - + - + - + @@ -36331,65 +36869,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36622,35 +37160,35 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -37125,69 +37663,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37298,20 +37836,20 @@ - + - + - + - + - + - + @@ -37371,21 +37909,21 @@ - + - + - + - + - + - + @@ -37490,61 +38028,64 @@ - + - + - - + + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37638,24 +38179,24 @@ - + - + - + - + - + - + - + @@ -37683,7 +38224,7 @@ - + @@ -37741,7 +38282,7 @@ - + @@ -38252,8 +38793,11 @@ + + + - + @@ -39316,7 +39860,7 @@ - + @@ -39341,16 +39885,16 @@ - + - + - + - + @@ -39463,15 +40007,15 @@ - - + + - - + + @@ -39667,7 +40211,7 @@ - + @@ -39698,6 +40242,9 @@ + + + @@ -39885,6 +40432,10 @@ + + + + @@ -40083,9 +40634,9 @@ - - - + + + @@ -40180,7 +40731,7 @@ - + @@ -40194,7 +40745,7 @@ - + @@ -40277,6 +40828,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -40377,7 +40957,7 @@ - + @@ -40421,45 +41001,51 @@ + + + + + + - + - + - + - + - + - + - + - + - + - + - + @@ -40507,40 +41093,40 @@ - + - + - + - + - + - + - + - + - + - + @@ -40651,65 +41237,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -40779,25 +41365,25 @@ - + - + - + - + - + - + @@ -40944,6 +41530,7 @@ + @@ -41090,6 +41677,9 @@ + + + @@ -41131,18 +41721,18 @@ - - + + - - + + - - - - + + + + @@ -41174,7 +41764,7 @@ - + @@ -41193,22 +41783,22 @@ - + - + - + - + - + - + @@ -41398,128 +41988,135 @@ - - + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + + - - - + + + + + + + + + + + - - + + - - + + + - - - + + + - - - - - - - + + - - + + - - - - - + + + + + - - - - + + + + @@ -41621,6 +42218,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -41728,6 +42413,15 @@ + + + + + + + + + @@ -41925,13 +42619,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -41941,6 +42667,14 @@ + + + + + + + + @@ -41962,6 +42696,15 @@ + + + + + + + + + @@ -42029,6 +42772,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -42046,6 +42826,8 @@ + + @@ -42065,10 +42847,31 @@ + + + + + + + + + + + + + + + + + + + + + @@ -42082,6 +42885,22 @@ + + + + + + + + + + + + + + + + @@ -42110,6 +42929,8 @@ + + @@ -42156,6 +42977,20 @@ + + + + + + + + + + + + + + @@ -42255,9 +43090,15 @@ + + + + + + @@ -42271,6 +43112,14 @@ + + + + + + + + @@ -42283,6 +43132,10 @@ + + + + @@ -42326,27 +43179,7 @@ - - - - - - - - - - - - - - - - - - - - @@ -42360,48 +43193,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + - + + + + + + + + + + + + - - + - + - - - - - - - - - - - + + @@ -42489,6 +43382,23 @@ + + + + + + + + + + + + + + + + + @@ -42592,9 +43502,28 @@ + + + + + + + + + + + + + + + + + + + @@ -42610,15 +43539,29 @@ + + + + + + + + + + + + + + @@ -42679,6 +43622,11 @@ + + + + + @@ -42700,29 +43648,29 @@ - + - + - - - - + + + + - - - - + + + + - + - + @@ -42751,12 +43699,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -42785,16 +43783,22 @@ - - - + + + - - - + + + + + + + + + @@ -42887,7 +43891,30 @@ - + + + + + + + + + + + + + + + + + + + + + + + + @@ -42896,6 +43923,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -42904,46 +43977,270 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -42981,6 +44278,14 @@ + + + + + + + + @@ -43001,51 +44306,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + - - + + - - + + - - - - + + + + + + + + + + + + - - - - + + + + @@ -43053,9 +44434,9 @@ - - - + + + @@ -43066,6 +44447,10 @@ + + + + @@ -43088,32 +44473,32 @@ - + - + - + - + - + - + - + - + - + @@ -43494,66 +44879,69 @@ + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43561,389 +44949,399 @@ - + - - - - - + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - - - - - - + - + - + + + + - - - - + - + - + - + - - - - + - + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + @@ -43971,25 +45369,55 @@ - + + + + + + + + + - + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -43998,9 +45426,12 @@ + + + @@ -44012,6 +45443,12 @@ + + + + + + @@ -44048,36 +45485,51 @@ + + + + + + + + + + + + + - + - + - - - - - - - + + + + + + + + + @@ -44091,6 +45543,7 @@ + @@ -44099,16 +45552,29 @@ + + + + + - - + + + + + + + + + + @@ -44127,6 +45593,12 @@ + + + + + + @@ -44151,6 +45623,11 @@ + + + + + @@ -44189,6 +45666,13 @@ + + + + + + + @@ -44216,11 +45700,31 @@ + + + + + + + + + + + + + + + + + + + + @@ -44251,6 +45755,12 @@ + + + + + + @@ -44279,6 +45789,17 @@ + + + + + + + + + + + @@ -44336,6 +45857,14 @@ + + + + + + + + @@ -44344,6 +45873,13 @@ + + + + + + + @@ -44437,11 +45973,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -44475,6 +46039,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -44510,53 +46094,53 @@ - - - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - + + + + + + + + - - - + + + - - - - - - - - + + + + + + + + @@ -44571,7 +46155,50 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -44593,6 +46220,11 @@ + + + + + @@ -44620,13 +46252,6 @@ - - - - - - - @@ -44635,6 +46260,13 @@ + + + + + + + @@ -44654,6 +46286,12 @@ + + + + + + @@ -44700,6 +46338,18 @@ + + + + + + + + + + + + @@ -44707,9 +46357,9 @@ - - - + + + @@ -44737,6 +46387,18 @@ + + + + + + + + + + + + @@ -44785,6 +46447,7 @@ + @@ -44795,10 +46458,12 @@ + + @@ -44806,7 +46471,7 @@ - + @@ -44864,76 +46529,76 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44981,160 +46646,160 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -45169,611 +46834,715 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - + + - - - - - - - - - - - - - - - - - - - - + + - + - - + + - - + + - - + + + + + + + + - - - - - - - - - - + - - - - + - + + + + - + + + + - + + + + + + + - + + + + + + + + + + + + + + + + + + + - + - + - + - + - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -45864,7 +47633,11 @@ + + + + @@ -45909,53 +47682,53 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -46011,75 +47784,78 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + @@ -46131,191 +47907,203 @@ - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -46538,6 +48326,23 @@ + + + + + + + + + + + + + + + + + @@ -46633,7 +48438,11 @@ + + + + @@ -46653,7 +48462,7 @@ - + @@ -46675,7 +48484,7 @@ - + @@ -46694,88 +48503,88 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -46811,55 +48620,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -46946,74 +48755,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47063,102 +48872,102 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47183,279 +48992,279 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47548,7 +49357,7 @@ - + @@ -47627,43 +49436,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47807,77 +49616,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + @@ -47887,116 +49704,215 @@ - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -48010,12 +49926,12 @@ - + - + - + @@ -48032,32 +49948,32 @@ - + - + - + - + - + - + - + - + - + @@ -48171,7 +50087,7 @@ - + @@ -48224,6 +50140,7 @@ + @@ -48272,9 +50189,6 @@ - - - @@ -48472,37 +50386,37 @@ - + - + - + - + - + - + - + - + - + @@ -48520,86 +50434,89 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + @@ -48626,16 +50543,19 @@ - + + + + - + - + - + @@ -48736,6 +50656,16 @@ + + + + + + + + + + @@ -48751,7 +50681,7 @@ - + @@ -48766,7 +50696,7 @@ - + @@ -48796,6 +50726,7 @@ + @@ -49130,7 +51061,7 @@ - + @@ -49143,13 +51074,13 @@ - + - + - + @@ -49167,28 +51098,28 @@ - + - + - + - + - + - + - + - + @@ -49249,106 +51180,28 @@ - + - + - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + @@ -49369,11 +51222,11 @@ - + - + @@ -49555,6 +51408,7 @@ + @@ -49773,23 +51627,6 @@ - - - - - - - - - - - - - - - - - @@ -49814,10 +51651,6 @@ - - - - @@ -49898,113 +51731,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -50089,7 +51815,7 @@ - + @@ -50117,43 +51843,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -50162,7 +51888,7 @@ - + @@ -50180,16 +51906,6 @@ - - - - - - - - - - @@ -50199,8 +51915,6 @@ - - @@ -50224,29 +51938,12 @@ - + - + - - - - - - - - - - - - - - - - - - - + + @@ -50840,9 +52537,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -51158,48 +52885,51 @@ - + - + - + - + - + - - - - - - - - - - - - - + - + + + + + + + + + + - - - - + - + + + + + + + + + + - + @@ -51213,230 +52943,245 @@ - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + - - - - - - + + + + + + + - - - - - - - - - - - - - - - - + + + - - - - + + + + + + + + + + + + + - - - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - + + + - - - - - - - + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + + + + + + + + + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -51459,6 +53204,9 @@ + + + @@ -51816,7 +53564,7 @@ - + @@ -51829,28 +53577,28 @@ - + - + - + - + - + - + - + - + @@ -52028,6 +53776,11 @@ + + + + + @@ -52236,223 +53989,223 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -52517,7 +54270,7 @@ - + @@ -52570,6 +54323,10 @@ + + + + @@ -52585,6 +54342,11 @@ + + + + + @@ -52599,6 +54361,11 @@ + + + + + @@ -52820,12 +54587,12 @@ - - + + - - + + @@ -53037,6 +54804,10 @@ + + + + @@ -53076,7 +54847,7 @@ - + @@ -53092,13 +54863,13 @@ - + - + - + @@ -53112,63 +54883,63 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - - - - - - - - - - + + - + + + + + + + + + + @@ -53442,59 +55213,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -53730,259 +55501,259 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -54297,14 +56068,14 @@ - + - + @@ -54316,7 +56087,7 @@ - + @@ -54374,103 +56145,103 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -54563,7 +56334,7 @@ - + @@ -55218,14 +56989,14 @@ - + - + - + @@ -55279,6 +57050,12 @@ + + + + + + @@ -55410,6 +57187,19 @@ + + + + + + + + + + + + + @@ -55423,11 +57213,23 @@ + + + + + + + + + + + + @@ -55473,6 +57275,22 @@ + + + + + + + + + + + + + + + + @@ -55541,6 +57359,7 @@ + @@ -55579,9 +57398,18 @@ - - - + + + + + + + + + + + + @@ -55599,6 +57427,10 @@ + + + + @@ -55637,6 +57469,7 @@ + @@ -55668,6 +57501,7 @@ + @@ -56578,6 +58412,10 @@ + + + + @@ -56613,6 +58451,10 @@ + + + + @@ -56624,6 +58466,12 @@ + + + + + + @@ -56669,7 +58517,7 @@ - + @@ -56679,7 +58527,7 @@ - + @@ -56728,6 +58576,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -56786,36 +58683,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -56831,37 +58698,42 @@ - - + + - - + + - - - - - + + + + + - - - - - + + + + + + + + + + - - - - - + + + + + @@ -56869,28 +58741,28 @@ - - - + + + - - + + - - + + - - - + + + - - - - + + + + @@ -56909,8 +58781,18 @@ - - + + + + + + + + + + + + @@ -57064,7 +58946,7 @@ - + @@ -57080,52 +58962,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -57186,17 +59068,17 @@ - + - + - + - + @@ -57501,6 +59383,11 @@ + + + + + @@ -57726,7 +59613,7 @@ - + @@ -57736,13 +59623,13 @@ - + - + - + @@ -57854,7 +59741,7 @@ - + @@ -57912,103 +59799,103 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -58058,7 +59945,7 @@ - + @@ -58095,6 +59982,15 @@ + + + + + + + + + @@ -58333,14 +60229,14 @@ - + - + @@ -58646,6 +60542,11 @@ + + + + + @@ -58657,8 +60558,8 @@ - - + + @@ -58700,14 +60601,14 @@ - + - + - + @@ -59021,7 +60922,7 @@ - + @@ -59034,37 +60935,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -59275,7 +61176,7 @@ - + @@ -59288,7 +61189,7 @@ - + @@ -60187,47 +62088,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -60396,6 +62297,11 @@ + + + + + @@ -60536,107 +62442,107 @@ - - - - - - + + + + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -60644,32 +62550,32 @@ - - + + - - - + + + - - - + + + - - - - + + + + - - - - - - + + + + + + @@ -60723,10 +62629,10 @@ - - - - + + + + @@ -60746,82 +62652,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -60852,7 +62758,7 @@ - + @@ -60874,174 +62780,174 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -61111,7 +63017,7 @@ - + @@ -61160,82 +63066,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -61353,11 +63259,11 @@ - + - + @@ -61620,320 +63526,320 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -62148,7 +64054,7 @@ - + @@ -62164,82 +64070,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -62404,53 +64310,53 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -62492,7 +64398,7 @@ - + @@ -62732,7 +64638,7 @@ - + @@ -62751,7 +64657,7 @@ - + @@ -63363,7 +65269,7 @@ - + @@ -63376,75 +65282,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -63460,70 +65366,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -63801,7 +65707,7 @@ - + @@ -63865,25 +65771,25 @@ - + - + - + - + - + - + - + @@ -63938,32 +65844,32 @@ - + - + - + - + - + - + - + - + - + @@ -64305,7 +66211,7 @@ - + @@ -64339,7 +66245,7 @@ - + @@ -64443,14 +66349,14 @@ - + - + - + @@ -65013,6 +66919,10 @@ + + + + @@ -65025,6 +66935,15 @@ + + + + + + + + + @@ -65159,6 +67078,15 @@ + + + + + + + + + @@ -65173,6 +67101,16 @@ + + + + + + + + + + @@ -65186,15 +67124,19 @@ + + + + + + + + + - - - - - @@ -65224,11 +67166,6 @@ - - - - - @@ -65301,53 +67238,53 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -66282,7 +68219,7 @@ - + @@ -66298,52 +68235,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -66409,7 +68346,7 @@ - + @@ -66443,7 +68380,7 @@ - + @@ -66509,32 +68446,32 @@ - + - + - + - + - + - + - + - + - + @@ -66582,7 +68519,7 @@ - + @@ -66631,82 +68568,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -66893,7 +68830,7 @@ - + @@ -66957,30 +68894,30 @@ - + - + - + - + - + - + - + - + @@ -67003,14 +68940,14 @@ - + - + - + @@ -67240,328 +69177,328 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -67870,7 +69807,7 @@ - + @@ -67883,74 +69820,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -67966,82 +69903,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -68142,7 +70079,7 @@ - + @@ -68164,160 +70101,160 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -69038,63 +70975,63 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - - - - - - - - - - + + - + + + + + + + + + + @@ -69568,17 +71505,17 @@ - + - + - + @@ -69607,57 +71544,57 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -69676,7 +71613,7 @@ - + @@ -70739,7 +72676,7 @@ - + @@ -70749,112 +72686,112 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -70876,41 +72813,41 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -70931,17 +72868,17 @@ - + - + - + - + @@ -71342,26 +73279,26 @@ - + - + - + - + - + - + - + @@ -71446,7 +73383,7 @@ - + @@ -71468,209 +73405,209 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -71884,7 +73821,7 @@ - + @@ -71999,34 +73936,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -72077,7 +74014,7 @@ - + @@ -72105,13 +74042,13 @@ - + - + - + @@ -72510,38 +74447,38 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -72550,73 +74487,73 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -72628,7 +74565,7 @@ - + @@ -72674,25 +74611,25 @@ - + - + - + - + - + - + - + @@ -72828,109 +74765,109 @@ - - - - - - - + + + + + + + - - + + - - + + - - + + - - - - + + + + - - - + + + - - + + - - - + + + - - - - + + + + - - + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - + + + - - + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + @@ -73262,17 +75199,17 @@ - + - + - + - + @@ -73518,6 +75455,12 @@ + + + + + + @@ -73716,17 +75659,17 @@ - + - + - + - + @@ -73970,23 +75913,23 @@ - + - + - + - + - + - + @@ -73995,19 +75938,19 @@ - + - + - + - + - + @@ -74124,32 +76067,32 @@ - + - + - + - + - + - + - + - + @@ -74413,6 +76356,12 @@ + + + + + + @@ -75109,31 +77058,31 @@ - - + + - - + + - - + + - + - - + + @@ -75241,6 +77190,12 @@ + + + + + + @@ -75358,6 +77313,11 @@ + + + + + @@ -75689,56 +77649,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -76198,56 +78158,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -76560,416 +78520,416 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + - + - - + + - - - - - - - - - - - - - - + + - - - - + - + - + + + + - + - + - + + + + - + + + + - + + + + - + - + - - + + - - + + - - + + - - + + - - - - - + + - + - + - + - + - + - + - + + + + - + - + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -76989,58 +78949,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -77619,12 +79579,18 @@ - - + + + + + + + + - - + + @@ -77695,13 +79661,75 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -77717,79 +79745,527 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -78159,6 +80635,8 @@ + + @@ -78195,6 +80673,10 @@ + + + + @@ -78204,13 +80686,17 @@ + + + + + - @@ -78375,7 +80861,6 @@ - @@ -78391,16 +80876,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -78498,7 +81040,7 @@ - + @@ -78613,34 +81155,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -78675,7 +81217,7 @@ - + @@ -78703,13 +81245,13 @@ - + - + - + @@ -79240,26 +81782,26 @@ - + - + - + - + - + - + @@ -79315,7 +81857,7 @@ - + @@ -79370,13 +81912,13 @@ - + - + - + @@ -79440,7 +81982,7 @@ - + @@ -79495,13 +82037,13 @@ - + - + - + @@ -79891,32 +82433,32 @@ - - + + - - - + + + - - + + - - - - + + + + - - - + + + - - + + @@ -80243,7 +82785,7 @@ - + @@ -80746,9 +83288,9 @@ - - - + + + @@ -80766,19 +83308,19 @@ - - - + + + - - - + + + - - - + + + @@ -81183,22 +83725,25 @@ + + + - + - + - + - + - + @@ -81243,6 +83788,25 @@ + + + + + + + + + + + + + + + + + + + @@ -81253,7 +83817,7 @@ - + @@ -81326,22 +83890,22 @@ - + - + - + - + - + - + @@ -81392,33 +83956,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -81446,6 +83983,11 @@ + + + + + @@ -81454,6 +83996,25 @@ + + + + + + + + + + + + + + + + + + + @@ -81470,6 +84031,10 @@ + + + + @@ -81742,211 +84307,211 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -82102,7 +84667,7 @@ - + @@ -82124,22 +84689,22 @@ - + - + - + - + - + - + @@ -82534,7 +85099,7 @@ - + @@ -82616,34 +85181,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -82673,13 +85238,13 @@ - + - + - + @@ -82954,7 +85519,7 @@ - + @@ -83006,25 +85571,25 @@ - + - + - + - + - + - + - + @@ -83061,15 +85626,15 @@ - + - + - + - + @@ -83081,7 +85646,7 @@ - + @@ -83091,28 +85656,28 @@ - + - + - + - + - + - + - + - + @@ -83133,12 +85698,12 @@ - + - + - + @@ -83149,54 +85714,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -83225,19 +85790,19 @@ - + - + - + - + - + @@ -83245,57 +85810,57 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -83306,6 +85871,9 @@ + + + @@ -83318,21 +85886,21 @@ - + - + - + - + - + - + @@ -83524,24 +86092,24 @@ - + - + - + - + - + - + - + @@ -83599,12 +86167,12 @@ - + - + - + @@ -83652,42 +86220,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -83728,42 +86296,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -83783,55 +86351,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -83903,12 +86471,12 @@ - + - + - + @@ -83923,15 +86491,15 @@ - + - + - + - + @@ -83951,7 +86519,7 @@ - + @@ -84003,29 +86571,29 @@ - + - + - + - + - + - + - + - + @@ -84035,19 +86603,19 @@ - + - + - + - + - + @@ -84077,213 +86645,216 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -84372,21 +86943,21 @@ - - + + - - + + - - + + - - - + + + @@ -84445,1618 +87016,78 @@ - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + - + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -86089,86 +87120,414 @@ - + - + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + @@ -86560,13 +87919,454 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -86618,6 +88418,1426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -86681,51 +89901,51 @@ - + - + - - - - - + + - + - - - - + - + - + - - - - + - + - + + + + + + + - + - + + + + - + @@ -86750,23 +89970,23 @@ - + - + - + - + - + - + @@ -86848,34 +90068,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -86905,13 +90125,13 @@ - + - + - + @@ -86924,7 +90144,7 @@ - + @@ -86943,79 +90163,79 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -87228,7 +90448,7 @@ - + @@ -87247,19 +90467,19 @@ - + - + - + - + - + @@ -87271,18 +90491,18 @@ - + - + - + - + - + @@ -87320,105 +90540,105 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -87634,75 +90854,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -88153,14 +91373,14 @@ - + - + - + @@ -88689,38 +91909,38 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -88769,61 +91989,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -88857,23 +92077,23 @@ - + - + - + - + - + - + - + @@ -89035,24 +92255,24 @@ - + - + - + - + - + - + - + @@ -89168,74 +92388,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -89319,60 +92539,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -89415,115 +92635,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -89566,30 +92786,30 @@ - + - + - + - + - + - + - + - + - + @@ -89943,9 +93163,6 @@ - - - @@ -90546,18 +93763,6 @@ - - - - - - - - - - - - @@ -90580,6 +93785,9 @@ + + + @@ -90615,6 +93823,9 @@ + + + @@ -90627,171 +93838,171 @@ - + - + - + - + - + - + - + + + + - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -90930,330 +94141,336 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -91674,6 +94891,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -91690,29 +94935,37 @@ + + + + + + + + - + - + - + - + - + - + - + - + - + @@ -91774,6 +95027,8 @@ + + @@ -91855,107 +95110,107 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -92037,9 +95292,9 @@ - - - + + + @@ -92049,6 +95304,11 @@ + + + + + @@ -92097,6 +95357,10 @@ + + + + @@ -92111,10 +95375,10 @@ - - - - + + + + @@ -92457,20 +95721,20 @@ - + - + - + - + - + @@ -92517,6 +95781,10 @@ + + + + @@ -92529,6 +95797,10 @@ + + + + @@ -92590,12 +95862,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -92629,6 +95925,11 @@ + + + + + @@ -92774,6 +96075,10 @@ + + + + @@ -92814,137 +96119,137 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -93357,95 +96662,92 @@ - + - + - - - - - - - + - + - - - - + - - - - + - + - + - + + + + - + - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -93481,125 +96783,128 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + + + + @@ -93619,56 +96924,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -93686,63 +96991,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + @@ -93812,7 +97120,7 @@ - + @@ -93846,102 +97154,105 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -94031,6 +97342,7 @@ + @@ -94054,56 +97366,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -94127,95 +97439,92 @@ - + - + - - - - - - - + - + - - - - + - - - - + - + - + - + + + + - + - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -94251,193 +97560,196 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -94554,172 +97866,172 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -95169,23 +98481,26 @@ - + - + - + - + - + - + + + + - + @@ -95219,42 +98534,45 @@ - - - - - - - + + - + - + - + + + + + + + + + - + - + - + - + - + - + - + @@ -95286,6 +98604,7 @@ + @@ -95440,6 +98759,10 @@ + + + + @@ -95542,42 +98865,42 @@ - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + @@ -95606,8 +98929,8 @@ - - + + @@ -95618,12 +98941,12 @@ - - + + - - + + @@ -95723,6 +99046,12 @@ + + + + + + @@ -95735,6 +99064,20 @@ + + + + + + + + + + + + + + @@ -95751,6 +99094,12 @@ + + + + + + @@ -95788,41 +99137,50 @@ + + + + + + + + + - - + + - - - - - + + + + + - - - - - - + + + + + + - - + + - - + + - - + + @@ -95899,190 +99257,190 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -96293,190 +99651,190 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -96598,62 +99956,62 @@ - - + + - - + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + - - + + @@ -97363,45 +100721,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -97429,43 +100787,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -98246,7 +101604,6 @@ - @@ -99737,7 +103094,7 @@ - + @@ -99783,10 +103140,10 @@ - + - + @@ -99999,7 +103356,7 @@ - + @@ -100021,101 +103378,101 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -100158,37 +103515,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -100230,34 +103587,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -100269,28 +103626,28 @@ - + - + - + - + - + - + - + - + @@ -100319,7 +103676,7 @@ - + @@ -100359,25 +103716,25 @@ - + - + - + - + - + - + - + @@ -101194,7 +104551,7 @@ - + @@ -101207,22 +104564,22 @@ - + - + - + - + - + - + @@ -101262,7 +104619,7 @@ - + @@ -101275,28 +104632,28 @@ - + - + - + - + - + - + - + - + @@ -101518,83 +104875,83 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -101620,7 +104977,7 @@ - + @@ -101639,7 +104996,7 @@ - + @@ -101751,71 +105108,169 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -101875,6 +105330,18 @@ + + + + + + + + + + + + @@ -101892,110 +105359,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -102135,6 +105498,11 @@ + + + + + @@ -102290,6 +105658,12 @@ + + + + + + @@ -102627,6 +106001,11 @@ + + + + + @@ -102723,6 +106102,11 @@ + + + + + @@ -102785,6 +106169,11 @@ + + + + + @@ -102828,6 +106217,13 @@ + + + + + + + @@ -102903,9 +106299,6 @@ - - - @@ -103016,40 +106409,40 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -103082,7 +106475,7 @@ - + @@ -103473,18 +106866,18 @@ - - + + - - - + + + - - - + + + @@ -103497,28 +106890,28 @@ - - + + - - + + - - + + - - - - - + + + + + - - - + + + @@ -103530,17 +106923,17 @@ - - + + - - + + - - - + + + @@ -103551,25 +106944,25 @@ - - - - + + + + - - - + + + - - - - + + + + - - + + @@ -103587,9 +106980,9 @@ - - - + + + @@ -103598,38 +106991,55 @@ - - - - + + + + - - + + - - + + - - - + + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + @@ -103681,40 +107091,40 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -103747,7 +107157,7 @@ - + @@ -103769,12 +107179,12 @@ - - + + - - + + @@ -103931,29 +107341,29 @@ - + - + - + - + - + - + - + - + @@ -104177,6 +107587,11 @@ + + + + + @@ -104197,6 +107612,11 @@ + + + + + @@ -104226,6 +107646,12 @@ + + + + + + @@ -104298,7 +107724,7 @@ - + @@ -104344,7 +107770,7 @@ - + @@ -104693,47 +108119,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -104926,6 +108352,14 @@ + + + + + + + + @@ -104938,8 +108372,8 @@ - - + + @@ -104956,17 +108390,17 @@ - - - - - + + + + + - - - - + + + + @@ -105128,6 +108562,13 @@ + + + + + + + @@ -105144,12 +108585,31 @@ + + + + + + + + + + + + + + + + + + + @@ -105438,6 +108898,11 @@ + + + + + @@ -105728,6 +109193,12 @@ + + + + + + @@ -105777,228 +109248,228 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -106026,43 +109497,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -106071,7 +109542,7 @@ - + @@ -106403,7 +109874,6 @@ - @@ -106673,6 +110143,22 @@ + + + + + + + + + + + + + + + + @@ -106706,6 +110192,11 @@ + + + + + @@ -106778,6 +110269,10 @@ + + + + @@ -106884,6 +110379,11 @@ + + + + + @@ -106911,6 +110411,12 @@ + + + + + + @@ -106922,6 +110428,12 @@ + + + + + + @@ -106970,164 +110482,164 @@ - + - + - + - + - + - + - + - - - - - - - - - - + - + - - + + - - + + - - + + - + - - + + + + + - + - - + + - - + + - + - - + + - + + + + - - - - - - - - - - - - - + - + + + + - - - - - - - + - + + + + - - - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -107144,33 +110656,33 @@ - + - + - + - + - + - + - + - + @@ -107190,60 +110702,73 @@ - - - - - - - + + + + + + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + + + + + + + + + + + + + + @@ -107299,38 +110824,39 @@ - + + - + - + - + - + - + - + - + - - + + @@ -107476,6 +111002,10 @@ + + + + @@ -107537,33 +111067,33 @@ - + - + - + - + - + - + - + - + - + @@ -107576,16 +111106,16 @@ - + - + - + - + @@ -107708,6 +111238,17 @@ + + + + + + + + + + + @@ -107804,92 +111345,92 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -108020,11 +111561,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -108098,7 +111820,7 @@ - + @@ -108177,43 +111899,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -108357,77 +112079,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -108446,88 +112168,88 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -108563,55 +112285,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -108946,7 +112668,7 @@ - + @@ -108959,13 +112681,13 @@ - + - + - + @@ -108983,28 +112705,28 @@ - + - + - + - + - + - + - + - + @@ -109091,6 +112813,13 @@ + + + + + + + @@ -109230,37 +112959,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -109288,9 +112986,6 @@ - - - @@ -109301,18 +112996,11 @@ - - - - - - - - - - - - + + + + + @@ -109389,6 +113077,12 @@ + + + + + + @@ -109426,6 +113120,20 @@ + + + + + + + + + + + + + + @@ -109476,39 +113184,39 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + @@ -109561,273 +113269,276 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + - + - - + + - - + + - - + + - - + + - - - - - - - - + + - + + + + + + + + + + - + + + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + @@ -110109,100 +113820,103 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + @@ -110313,18 +114027,35 @@ - + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -110363,48 +114094,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -110440,59 +114171,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -110503,133 +114234,139 @@ - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -110647,50 +114384,59 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + + + + + + + + + + - + - + - + @@ -110853,6 +114599,7 @@ + @@ -110866,26 +114613,27 @@ + - - - - - - + + + + + + - - - - - + + + + + - - + + @@ -110895,107 +114643,144 @@ - - + + - - + + - - - + + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - - - - - + + - - - - - - - - + + + + + + + - - + + - - + + + + + + + + - - + + + + + + + + + + - - + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - + + + + + + + + + + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + @@ -111064,6 +114849,12 @@ + + + + + + @@ -111303,64 +115094,65 @@ - - + + + - - - + + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + @@ -111368,16 +115160,16 @@ - - - - + + + + - - - - + + + + @@ -111416,31 +115208,31 @@ - + - + - + - + - + - + - + - + @@ -111619,65 +115411,65 @@ - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - - - - + + + + + - - - - + + + + - - - - - - + + + + + + @@ -111854,50 +115646,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -112008,37 +115800,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -112192,6 +115984,689 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -112415,23 +116890,23 @@ - + - + - + - + - + - + @@ -112615,18 +117090,18 @@ - - - - - - - + + + + + + + - - - + + + @@ -112639,50 +117114,55 @@ - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - - - - + + + + + + - - - - - - + + + + + + + + + + + @@ -112691,19 +117171,18 @@ - - - - - + + + + + - - - + + + - @@ -112797,47 +117276,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -112895,17 +117333,6 @@ - - - - - - - - - - - @@ -112957,6 +117384,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -113011,35 +117462,35 @@ - + - + - + - + - + - + - + - + - + @@ -113278,16 +117729,16 @@ - - - - + + + + @@ -113507,7 +117958,7 @@ - + @@ -113520,41 +117971,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -113591,19 +118042,19 @@ - + - + - + - + - + @@ -113657,19 +118108,19 @@ - + - + - + - + - + @@ -113677,47 +118128,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -113756,49 +118207,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -114287,6 +118738,13 @@ + + + + + + + @@ -114626,7 +119084,7 @@ - + @@ -114636,13 +119094,13 @@ - + - + - + @@ -114877,14 +119335,14 @@ - - - - + + + + @@ -114946,7 +119404,7 @@ - + @@ -114956,122 +119414,122 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -115081,13 +119539,13 @@ - + - + - + @@ -115097,72 +119555,78 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + @@ -115323,421 +119787,442 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - + + - + - + - + - + - + - + - - - - + - + - + - + + + + + + + - + - + - + + + + - + - - - - + - - - - - - - - - - - - - - - - + - - - - + - - - - + - - - - + - - - - + - + - + - - - - + - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + - + + + + - + + + + - + - + - + - + - + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + @@ -115748,30 +120233,33 @@ - + - + - + - + - + - + - + - + - + + + + @@ -115908,7 +120396,7 @@ - + @@ -115933,61 +120421,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -116165,7 +120653,7 @@ - + @@ -116238,22 +120726,22 @@ - + - + - + - + - + - + @@ -116277,21 +120765,21 @@ - + - + - + @@ -116309,44 +120797,53 @@ - + - + - + - + - + - + - + - + - + - + + + + + + + + + + - + - + - + - + @@ -116424,10 +120921,10 @@ - - - - + + + + @@ -116440,10 +120937,32 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -116531,6 +121050,11 @@ + + + + + @@ -117043,7 +121567,7 @@ - + @@ -117519,8 +122043,8 @@ - - + + @@ -117759,65 +122283,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -117992,11 +122516,23 @@ + + + + + + + + + + + + @@ -118070,6 +122606,16 @@ + + + + + + + + + + @@ -118256,7 +122802,7 @@ - + @@ -118377,52 +122923,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -118431,52 +122977,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -119133,9 +123679,9 @@ - - - + + + @@ -119143,16 +123689,16 @@ - - - - - - + + + + + + - - + + @@ -119211,7 +123757,7 @@ - + @@ -119332,52 +123878,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -119386,52 +123932,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -120213,6 +124759,11 @@ + + + + + @@ -120224,6 +124775,17 @@ + + + + + + + + + + + @@ -120387,9 +124949,9 @@ - - - + + + @@ -120405,16 +124967,16 @@ - - + + - - + + @@ -120446,50 +125008,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -120522,20 +125084,20 @@ - + - + - + - + @@ -120551,26 +125113,26 @@ - + - + - + - + - + - + @@ -120664,29 +125226,29 @@ - + - + - + - + - + - + - + @@ -120777,6 +125339,11 @@ + + + + + @@ -120787,6 +125354,11 @@ + + + + + @@ -120807,6 +125379,10 @@ + + + + @@ -120894,6 +125470,22 @@ + + + + + + + + + + + + + + + + @@ -120909,26 +125501,39 @@ + + + + + + + + + + + + + - + - + - + - + - + - + - - + + @@ -120971,21 +125576,21 @@ - - - + + + - - + + - - + + - - + + @@ -121043,413 +125648,422 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + + + + - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + @@ -121627,53 +126241,53 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -121726,6 +126340,7 @@ + @@ -121740,45 +126355,45 @@ - - + + - - - - - + + + + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + @@ -121802,6 +126417,12 @@ + + + + + + @@ -121869,171 +126490,168 @@ - - - - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - - - - - - + + - + - - + + - - + + - - + + - - - - - + + - + - - + + - - + + - - + + + + + + + + - + - - + + + + + - + - + - + - + - + - + - + - + @@ -122044,35 +126662,35 @@ - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + @@ -122105,32 +126723,32 @@ - + - + - + - + - + - + - + - + @@ -122184,7 +126802,7 @@ - + @@ -122200,70 +126818,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -122876,6 +127494,10 @@ + + + + @@ -123891,10 +128513,10 @@ - - - - + + + + @@ -123902,15 +128524,15 @@ - - - + + + - - - - + + + + @@ -123922,6 +128544,10 @@ + + + + @@ -124085,7 +128711,7 @@ - + @@ -124486,6 +129112,13 @@ + + + + + + + @@ -124650,10 +129283,10 @@ - - - - + + + + @@ -124674,6 +129307,7 @@ + @@ -124683,6 +129317,13 @@ + + + + + + + @@ -124700,6 +129341,12 @@ + + + + + + @@ -124717,6 +129364,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -124765,6 +129446,13 @@ + + + + + + + @@ -124779,6 +129467,9 @@ + + + @@ -124880,56 +129571,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -125012,27 +129703,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -125053,9 +129723,6 @@ - - - @@ -125084,13 +129751,26 @@ - - - - - - + + + + + + + + + + + + + + + + + + + @@ -125098,31 +129778,31 @@ - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + @@ -125217,6 +129897,11 @@ + + + + + @@ -125291,13 +129976,6 @@ - - - - - - - @@ -125322,6 +130000,13 @@ + + + + + + + @@ -125404,6 +130089,18 @@ + + + + + + + + + + + + @@ -125421,12 +130118,6 @@ - - - - - - @@ -125483,11 +130174,11 @@ - - - - - + + + + + @@ -125577,10 +130268,24 @@ + + + + + + + + + + + + + + @@ -125770,6 +130475,14 @@ + + + + + + + + @@ -125828,28 +130541,28 @@ - + - + - + - + - + - + @@ -125865,49 +130578,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -126330,56 +131043,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -126919,27 +131632,27 @@ - + - + - + - + - + - + - + - + @@ -127372,82 +132085,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -127475,7 +132188,14 @@ - + + + + + + + + @@ -128203,7 +132923,7 @@ - + @@ -128231,119 +132951,119 @@ - + - + - + - + - + - + - + - + - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + - - - - + - + - - + + - - + + - + + + + + + + + + + + + + + + + + + + @@ -128394,49 +133114,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128573,12 +133293,12 @@ - - - + + + @@ -128639,7 +133359,7 @@ - + @@ -128697,115 +133417,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128832,105 +133552,105 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128940,18 +133660,18 @@ - + - + - + - + - + @@ -128980,12 +133700,12 @@ - + - + @@ -129020,7 +133740,7 @@ - + @@ -129042,35 +133762,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -129146,79 +133866,79 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -129451,7 +134171,7 @@ - + @@ -129497,159 +134217,157 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - @@ -129745,46 +134463,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -129796,127 +134514,127 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -130138,7 +134856,7 @@ - + @@ -130169,40 +134887,40 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -130711,7 +135429,7 @@ - + @@ -130736,16 +135454,16 @@ - + - + - + - + @@ -130817,7 +135535,7 @@ - + @@ -130836,6 +135554,9 @@ + + + @@ -131409,7 +136130,7 @@ - + @@ -131425,19 +136146,19 @@ - + - + - + - + - + @@ -131446,7 +136167,7 @@ - + @@ -131599,7 +136320,7 @@ - + @@ -131609,6 +136330,18 @@ + + + + + + + + + + + + @@ -131621,18 +136354,33 @@ - + - + - + - + + + + + + + + + + + + + + + + @@ -131684,10 +136432,8 @@ - - - + @@ -131697,43 +136443,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -132028,7 +136774,7 @@ - + @@ -132044,25 +136790,25 @@ - + - + - + - + - + - + - + @@ -132128,21 +136874,24 @@ - + - + - + - + - + - + + + + @@ -132349,20 +137098,20 @@ - + - + - + - + @@ -132494,27 +137243,27 @@ - + - + - + - + - + - + - + - + @@ -132793,12 +137542,11 @@ - + - + - @@ -133051,7 +137799,7 @@ - + @@ -133233,11 +137981,11 @@ - + - + @@ -133249,7 +137997,7 @@ - + @@ -133266,11 +138014,11 @@ - + - + @@ -133302,292 +138050,292 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -134239,7 +138987,7 @@ - + @@ -134261,10 +139009,10 @@ - + - + @@ -135029,11 +139777,11 @@ - + - + @@ -135206,6 +139954,8 @@ + + @@ -136900,78 +141650,78 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -137267,7 +142017,7 @@ - + @@ -137280,61 +142030,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + - + - + @@ -137431,61 +142180,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -137494,7 +142243,7 @@ - + @@ -137503,290 +142252,290 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + - - - - - - - + - + + + + + + + - + - - + + - - - - - - - - + + - + - + - + + + + - + - + - - + + - - + + - - + + - + - + - + - - - - - - - + - + + + + - + - + - - - - + - + - + - + - + - + - + - + + + + + + + + + + + + + - + - + - + - - - - + - + - + - + - + - + - - - - - - - - - - + - + - + - + - + - + + + + - + + + + - + - + - + - + - + - + - + + + + + + + @@ -137827,59 +142576,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -137900,7 +142649,7 @@ - + @@ -138030,70 +142779,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -138118,81 +142867,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -138210,7 +142959,7 @@ - + @@ -138388,19 +143137,19 @@ - + - + - + - + - + @@ -138445,84 +143194,84 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -138545,7 +143294,7 @@ - + @@ -138577,34 +143326,37 @@ - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + @@ -138681,30 +143433,33 @@ - + - + - + - + - + - + - + - + - + + + + @@ -138730,12 +143485,15 @@ + + + + + + - - - @@ -138851,7 +143609,7 @@ - + @@ -139341,109 +144099,106 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + @@ -139940,14 +144695,6 @@ - - - - - - - - @@ -139982,6 +144729,14 @@ + + + + + + + + @@ -140021,10 +144776,10 @@ - + - + @@ -140571,18 +145326,21 @@ - + - + - + - + - + + + + @@ -140610,100 +145368,100 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -140721,21 +145479,21 @@ - + - + - + - + - + - + @@ -140818,7 +145576,6 @@ - @@ -140996,26 +145753,26 @@ - - - + + + - - - + + + - - - + + + - - - - - + + + + + @@ -141147,130 +145904,143 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - + + + + + + - - - - - - - + + + + + + + - + - - + + - - + + - - + + - - + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - - - - + + + + + + + - - - + + + @@ -141292,6 +146062,7 @@ + @@ -141645,7 +146416,7 @@ - + @@ -141766,77 +146537,77 @@ - - - - + + + + - - + + - - - - - - + + + + + + - - + + - - + + - - + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -141975,7 +146746,7 @@ - + @@ -141997,22 +146768,22 @@ - + - + - + - + - + - + @@ -142249,7 +147020,7 @@ - + @@ -142298,7 +147069,7 @@ - + @@ -142332,7 +147103,7 @@ - + @@ -142345,19 +147116,19 @@ - + - + - + - + - + @@ -142413,9 +147184,6 @@ - - - @@ -142566,7 +147334,7 @@ - + @@ -142585,31 +147353,31 @@ - + - + - + - + - + - + - + - + - + @@ -142644,17 +147412,17 @@ - + - + - + @@ -142728,7 +147496,7 @@ - + @@ -142753,55 +147521,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -143216,7 +147984,7 @@ - + @@ -143232,7 +148000,7 @@ - + @@ -143297,7 +148065,7 @@ - + @@ -144049,8 +148817,8 @@ - + @@ -144070,8 +148838,8 @@ - - + + @@ -144082,12 +148850,12 @@ - - + + - - + + @@ -144229,16 +148997,16 @@ - - - - - - + + + + + + @@ -144349,16 +149117,16 @@ - - - + + + - + - - + + @@ -144745,96 +149513,102 @@ - - - - - - - - - - - - - - - + + + + - - - + + + - - - - - - - + + + + + + + + + + - - + + + - - - + + + + + + + + + + + + + + + + - - + + - - - - - - + + + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + @@ -145149,12 +149923,12 @@ - - + + - - + + @@ -145183,16 +149957,16 @@ - - + + - - + + @@ -145205,12 +149979,12 @@ - - + + - - + + @@ -145234,12 +150008,12 @@ - + - + - - + + @@ -145259,7 +150033,7 @@ - + @@ -145268,38 +150042,42 @@ - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + + + + + @@ -145348,16 +150126,16 @@ - - + + - - + + - - + + @@ -145527,6 +150305,10 @@ + + + + @@ -145551,12 +150333,12 @@ - + - + - + @@ -145571,44 +150353,44 @@ - - + + - - + + - - + + - - + + - - - - - - + + + + + + - - + + - + - + - + @@ -145742,6 +150524,11 @@ + + + + + @@ -145757,11 +150544,21 @@ + + + + + + + + + + @@ -145782,6 +150579,16 @@ + + + + + + + + + + @@ -145831,8 +150638,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -145872,6 +150713,12 @@ + + + + + + @@ -145892,7 +150739,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -145950,13 +150844,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -146000,6 +150934,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -146030,12 +150984,22 @@ + + + + + + + + + + @@ -146103,12 +151067,12 @@ - - - + + + - + @@ -146117,21 +151081,21 @@ - + - - - + + + - + - + @@ -146143,8 +151107,14 @@ - - + + + + + + + + @@ -146160,11 +151130,11 @@ - + - - + + @@ -146429,460 +151399,466 @@ + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + - + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - + + - + + + + + + + + + + - + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -146926,15 +151902,15 @@ - + - + - + - + @@ -147065,50 +152041,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -147303,15 +152279,15 @@ - + - + - + - + @@ -147326,36 +152302,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -147392,39 +152368,39 @@ - - - + + + - - - - - - - - - + + + + + + + + + - + - + - - - + + + - - - + + + - + @@ -147434,13 +152410,13 @@ - - - + + + - - + + @@ -147489,94 +152465,94 @@ - - + + - - + + - - - + + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - - - + + + + + - - + + - - - - + + + + - - - - + + + + - - + + - - - - + + + + - - - + + + @@ -147619,7 +152595,7 @@ - + @@ -147629,32 +152605,32 @@ - + - + - + - + - + - + - + - + - + @@ -147712,76 +152688,76 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -147905,6 +152881,21 @@ + + + + + + + + + + + + + + + @@ -147922,18 +152913,18 @@ - + - + - + - + - + @@ -147948,10 +152939,10 @@ - - - - + + + + @@ -148014,52 +153005,52 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - + + - - + + @@ -148270,72 +153261,72 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -148367,41 +153358,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -148410,32 +153401,32 @@ - + - + - + - + - + - + - + - + - + @@ -148445,22 +153436,22 @@ - + - + - + - + - + - + @@ -148525,108 +153516,108 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -148798,19 +153789,25 @@ - - - - + + + + - - - + + + + + + + + + - - + + @@ -149042,6 +154039,12 @@ + + + + + + @@ -149075,7 +154078,13 @@ + + + + + + @@ -149112,11 +154121,6 @@ - - - - - @@ -149195,92 +154199,92 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -149432,6 +154436,11 @@ + + + + + @@ -150109,6 +155118,10 @@ + + + + @@ -150216,6 +155229,11 @@ + + + + + @@ -150304,15 +155322,15 @@ - + - + - + - + @@ -150592,17 +155610,17 @@ - + - + - + - + @@ -150647,103 +155665,103 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -150786,135 +155804,135 @@ - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - - - - - - - - - - - - - + + - + + + + + + + - - - - + - + - - + + - - + + + + + + + + - - - - + - + - - + + - - + + - - - - - - - - - - - - - - + + - + + + + + + + - - - - + - + + + + - + + + + + + + - + - + + + + - + - - + + - - + + + + + @@ -151138,7 +156156,7 @@ - + @@ -151184,124 +156202,124 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -151347,35 +156365,35 @@ - + - + - + - + - + - + - + - + - + @@ -151577,7 +156595,7 @@ - + @@ -152209,9 +157227,9 @@ - + - + @@ -154420,94 +159438,94 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -154527,362 +159545,362 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - + - - - - + - + + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -155057,21 +160075,21 @@ - + - + - + - + - + - + @@ -155116,18 +160134,18 @@ - + - + - + - + - + @@ -155135,12 +160153,12 @@ - + - + - + @@ -155484,8 +160502,6 @@ - - @@ -157264,12 +162280,12 @@ - - + + - - + + @@ -157279,22 +162295,28 @@ - - + + - - + + + + + + + + @@ -157457,6 +162479,12 @@ + + + + + + @@ -157570,6 +162598,7 @@ + @@ -157589,12 +162618,22 @@ + + + + + + + + + + @@ -157797,7 +162836,7 @@ - + @@ -157806,6 +162845,7 @@ + @@ -157827,6 +162867,7 @@ + @@ -157846,6 +162887,12 @@ + + + + + + @@ -157901,6 +162948,10 @@ + + + + @@ -157937,12 +162988,23 @@ + + + + + + + + + + + @@ -157975,6 +163037,10 @@ + + + + @@ -158000,6 +163066,12 @@ + + + + + + @@ -158100,6 +163172,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -158142,7 +163280,7 @@ - + @@ -158246,6 +163384,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -158398,6 +163560,10 @@ + + + + @@ -158666,6 +163832,13 @@ + + + + + + + @@ -158725,6 +163898,11 @@ + + + + + @@ -158761,21 +163939,21 @@ - - - + + + - - - - + + + + - - - + + + @@ -158933,6 +164111,13 @@ + + + + + + + @@ -159091,11 +164276,6 @@ - - - - - @@ -159278,14 +164458,14 @@ + + + - - - @@ -159610,6 +164790,14 @@ + + + + + + + + @@ -159843,9 +165031,9 @@ - - - + + + @@ -159862,6 +165050,12 @@ + + + + + + @@ -159937,6 +165131,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -159987,12 +165274,12 @@ - + - + - + @@ -160107,10 +165394,18 @@ + + + + + + + + @@ -160121,23 +165416,28 @@ + + + + + - + - + - + - + - + - + @@ -160167,58 +165467,63 @@ - - + + + - - - - - - - - - + + + - - - - - - - - + + + - - - - - - - - - - - - - - - + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -160240,7 +165545,7 @@ - + @@ -160396,21 +165701,27 @@ - - - - - - + + + + + + + + + + + + - - - - + + + + @@ -160522,26 +165833,31 @@ - - - - - - + + + + + + - - - + + + + + + + + - - + + - - - + + + @@ -160666,8 +165982,8 @@ - - + + @@ -160681,22 +165997,21 @@ - - + + - + - - + + - - - - - + + + + @@ -160717,39 +166032,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -160819,95 +166134,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -161005,24 +166320,28 @@ - - + + - - + + - - + + - - + + + + + + @@ -161073,104 +166392,104 @@ - - - - - - - + + + + + + + - - + + - - - + + + - + - - - - - + + + + + - - - - - - + + + + + + - - - + + + - - + + - - + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - + - + - + - + @@ -161180,6 +166499,18 @@ + + + + + + + + + + + + @@ -161260,20 +166591,30 @@ - - - - + + + + + + + + + + + + + + - - + + @@ -161321,29 +166662,29 @@ - + - + - + - + - + - + - + - + @@ -161394,58 +166735,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + @@ -161484,12 +166828,12 @@ - - - - - - + + + + + + @@ -161501,15 +166845,22 @@ - - + + - - - + + + + + + + + + + @@ -161652,10 +167003,9 @@ - - - - + + + @@ -161668,9 +167018,10 @@ - - - + + + + @@ -161727,76 +167078,76 @@ - - + + - - + + + + + - - - - - + + + - - + + - - - - - - - + + - - + + - - + + - - + + - + - - - - - - - - - + + - - + + + + + + + + + + + + + - - - - + + + + - - + + - - + + @@ -161811,12 +167162,12 @@ - - + + - + - + @@ -161937,7 +167288,7 @@ - + @@ -161977,717 +167328,717 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -163039,7 +168390,7 @@ - + @@ -163128,7 +168479,7 @@ - + @@ -163148,7 +168499,7 @@ - + @@ -163156,12 +168507,12 @@ - + - + @@ -163169,7 +168520,7 @@ - + @@ -163180,17 +168531,17 @@ - + - + - + @@ -163198,7 +168549,7 @@ - + @@ -163279,7 +168630,7 @@ - + @@ -163321,6 +168672,7 @@ + @@ -163331,33 +168683,33 @@ - - + + - - - - - + + + + + - - - + + + - - + + - - - + + + - + @@ -163367,23 +168719,23 @@ - - - + + + - - - - - - - + + + + + + + - - + + @@ -163392,30 +168744,30 @@ - - + + - - + + - - - + + + - - - + + + - + + + + + - - - - @@ -163423,27 +168775,27 @@ - - + + - - - + + + - - + + - - - + + + @@ -163455,12 +168807,12 @@ - - + + - - + + @@ -163471,20 +168823,25 @@ - - - + + + - - + + + + + + + - + - - + + @@ -163493,88 +168850,88 @@ - - + + - - - + + + - - + + - - + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -163613,6 +168970,11 @@ + + + + + @@ -163782,23 +169144,23 @@ - - + + - - - - + + + + - - - - + + + + - + @@ -164463,21 +169825,21 @@ - - - + + + - - - - - - - - - - + + + + + + + + + + @@ -164527,6 +169889,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -164891,6 +170277,11 @@ + + + + + @@ -164941,6 +170332,10 @@ + + + + @@ -165003,7 +170398,14 @@ - + + + + + + + + @@ -166157,6 +171559,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -166285,6 +171713,9 @@ + + + @@ -166337,6 +171768,15 @@ + + + + + + + + + @@ -166346,6 +171786,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -166358,6 +171908,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -166382,6 +172041,9 @@ + + + @@ -166748,7 +172410,7 @@ - + @@ -166960,7 +172622,7 @@ - + @@ -167140,7 +172802,7 @@ - + @@ -167340,7 +173002,7 @@ - + @@ -167794,7 +173456,7 @@ - + @@ -168127,7 +173789,7 @@ - + @@ -168238,7 +173900,7 @@ - + @@ -168258,7 +173920,7 @@ - + @@ -168266,12 +173928,12 @@ - + - + @@ -168402,7 +174064,7 @@ - + @@ -168626,8 +174288,8 @@ - - + + @@ -168638,154 +174300,154 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -169281,15 +174943,15 @@ - + - + - + - + @@ -169303,121 +174965,121 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -169431,141 +175093,141 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -169616,44 +175278,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -169665,18 +175327,18 @@ - + - + - + - + - + @@ -169714,100 +175376,100 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -169837,34 +175499,34 @@ - - - + + + - - - - - + + + + + - - - + + + - - + + - - - + + + - - + + @@ -169906,16 +175568,16 @@ - - - - - + + + + + - - - + + + @@ -169936,22 +175598,22 @@ - - - - - + + + + + - - - - + + + + - - - + + + @@ -170376,7 +176038,7 @@ - + @@ -170653,11 +176315,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -171038,16 +176784,16 @@ - - + + - - + + - - + + @@ -172403,9 +178149,9 @@ - - - + + + @@ -172447,8 +178193,8 @@ - - + + @@ -172515,8 +178261,8 @@ - - + + @@ -172674,353 +178420,353 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + - + - + - + + + + - - - - + - + - + - - - - + - - - - - - - + - + - + - + + + + - + - + - - + + - - + + + + + - + - - + + - - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -173034,100 +178780,100 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -173152,98 +178898,98 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -173254,34 +179000,34 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -173391,57 +179137,57 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -173497,21 +179243,21 @@ - + - + - + - + - + - + @@ -173587,18 +179333,18 @@ - + - + - + - + - + @@ -173939,44 +179685,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -173987,408 +179733,408 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -174408,149 +180154,149 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -174559,57 +180305,57 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -174641,15 +180387,15 @@ - + - + - + - + @@ -174748,127 +180494,127 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -174880,12 +180626,12 @@ - + - + - + @@ -174894,192 +180640,192 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -175090,302 +180836,302 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -175396,185 +181142,185 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -175585,139 +181331,139 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -175726,12 +181472,12 @@ - + - + - + @@ -175743,68 +181489,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -175839,96 +181585,96 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -175939,15 +181685,15 @@ - + - + - + - + @@ -175958,26 +181704,26 @@ - + - + - + - + - + - + - + - + @@ -175985,145 +181731,145 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -176134,46 +181880,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -176181,117 +181927,117 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -176302,18 +182048,18 @@ - + - + - + - + - + @@ -177283,6 +183029,17 @@ + + + + + + + + + + + @@ -177292,6 +183049,12 @@ + + + + + + @@ -177301,23 +183064,30 @@ + + + + + + + - + - + - + - + - + - + @@ -177929,30 +183699,30 @@ - + - + - + - + - + - + - + - + - + @@ -178402,7 +184172,7 @@ - + @@ -178422,14 +184192,14 @@ - - - + + + - - - + + + @@ -178447,25 +184217,25 @@ - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + @@ -178524,82 +184294,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -178657,7 +184427,7 @@ - + @@ -178680,13 +184450,18 @@ - - - + + + - - + + + + + + + @@ -179195,29 +184970,29 @@ - + - + - + - + - + - + - + @@ -179327,7 +185102,7 @@ - + @@ -179367,76 +185142,76 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -179454,7 +185229,7 @@ - + @@ -179488,10 +185263,10 @@ - + - + @@ -180044,7 +185819,7 @@ - + @@ -180078,13 +185853,13 @@ - + - + - + @@ -180279,7 +186054,7 @@ - + @@ -180319,80 +186094,80 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -180426,10 +186201,10 @@ - + - + @@ -180522,21 +186297,21 @@ - - + + - - - + + + - - + + @@ -180744,13 +186519,13 @@ - + - + @@ -180778,29 +186553,29 @@ - + - + - + - + - + - + - + - + @@ -180823,7 +186598,7 @@ - + @@ -180878,22 +186653,22 @@ - + - + - + - + - + - + @@ -181492,17 +187267,17 @@ - + - + - + @@ -181825,6 +187600,14 @@ + + + + + + + + @@ -181855,17 +187638,17 @@ - - - + + - - + + + @@ -181947,7 +187730,7 @@ - + @@ -181975,148 +187758,148 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -182134,30 +187917,30 @@ - + - + - + - + - + - + - + - + @@ -182386,7 +188169,7 @@ - + @@ -182435,28 +188218,28 @@ - + - + - + - + - + - + - + - + @@ -183179,6 +188962,11 @@ + + + + + @@ -183188,6 +188976,11 @@ + + + + + @@ -183610,7 +189403,7 @@ - + @@ -183638,148 +189431,148 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -183797,7 +189590,7 @@ - + @@ -183848,7 +189641,7 @@ - + @@ -183897,28 +189690,28 @@ - + - + - + - + - + - + - + - + @@ -185347,26 +191140,26 @@ - + - + - + - + - + - + - + @@ -185608,6 +191401,14 @@ + + + + + + + + @@ -186285,6 +192086,8 @@ + + @@ -186414,6 +192217,12 @@ + + + + + + @@ -186426,6 +192235,16 @@ + + + + + + + + + + @@ -186693,36 +192512,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -186804,7 +192623,7 @@ - + @@ -186826,19 +192645,19 @@ - + - + - + - + - + @@ -186853,58 +192672,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -187378,6 +193197,6 @@ diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos index e0051f2b57ef..2240832a275f 100644 --- a/android/abi_gki_aarch64_exynos +++ b/android/abi_gki_aarch64_exynos @@ -1373,7 +1373,7 @@ __traceiter_android_rvh_select_task_rq_rt __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit - __traceiter_android_vh_gic_v3_set_affinity + __traceiter_android_rvh_gic_v3_set_affinity __traceiter_android_vh_ipi_stop __traceiter_android_vh_scheduler_tick __traceiter_cpu_idle @@ -1412,7 +1412,7 @@ __tracepoint_android_rvh_select_task_rq_rt __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit - __tracepoint_android_vh_gic_v3_set_affinity + __tracepoint_android_rvh_gic_v3_set_affinity __tracepoint_android_vh_ipi_stop __tracepoint_android_vh_scheduler_tick __tracepoint_cpu_idle diff --git a/android/abi_gki_aarch64_fips140 b/android/abi_gki_aarch64_fips140 new file mode 100644 index 000000000000..05df3848ff15 --- /dev/null +++ b/android/abi_gki_aarch64_fips140 @@ -0,0 +1,149 @@ +[abi_symbol_list] + +# required by fips140.ko + add_random_ready_callback + aead_register_instance + bcmp + cancel_work_sync + __cfi_slowpath + cpu_have_feature + crypto_aead_decrypt + crypto_aead_encrypt + crypto_aead_setauthsize + crypto_aead_setkey + crypto_ahash_finup + crypto_ahash_setkey + crypto_alg_list + crypto_alg_mod_lookup + crypto_alg_sem + crypto_alloc_base + crypto_alloc_rng + crypto_alloc_shash + crypto_attr_alg_name + crypto_check_attr_type + crypto_cipher_encrypt_one + crypto_cipher_setkey + crypto_destroy_tfm + crypto_drop_spawn + crypto_get_default_null_skcipher + crypto_grab_aead + crypto_grab_ahash + crypto_grab_shash + crypto_grab_skcipher + crypto_inst_setname + crypto_put_default_null_skcipher + crypto_register_aead + crypto_register_alg + crypto_register_rngs + crypto_register_shash + crypto_register_shashes + crypto_register_skciphers + crypto_register_template + crypto_register_templates + crypto_remove_final + crypto_remove_spawns + crypto_req_done + crypto_shash_alg_has_setkey + crypto_shash_digest + crypto_shash_final + crypto_shash_finup + crypto_shash_setkey + crypto_shash_tfm_digest + crypto_shash_update + crypto_skcipher_decrypt + crypto_skcipher_encrypt + crypto_skcipher_setkey + crypto_spawn_tfm2 + crypto_unregister_aead + crypto_unregister_alg + crypto_unregister_rngs + crypto_unregister_shash + crypto_unregister_shashes + crypto_unregister_skciphers + crypto_unregister_template + crypto_unregister_templates + del_random_ready_callback + down_write + fpsimd_context_busy + get_random_bytes + __init_swait_queue_head + irq_stat + kasan_flag_enabled + kernel_neon_begin + kernel_neon_end + kfree + kfree_sensitive + __kmalloc + kmalloc_caches + kmalloc_order_trace + kmem_cache_alloc_trace + __list_add_valid + __list_del_entry_valid + memcpy + memset + __mutex_init + mutex_lock + mutex_unlock + panic + preempt_schedule + preempt_schedule_notrace + printk + queue_work_on + scatterwalk_ffwd + scatterwalk_map_and_copy + sg_init_one + sg_init_table + sg_next + shash_free_singlespawn_instance + shash_register_instance + skcipher_alloc_instance_simple + skcipher_register_instance + skcipher_walk_aead_decrypt + skcipher_walk_aead_encrypt + skcipher_walk_done + skcipher_walk_virt + snprintf + __stack_chk_fail + __stack_chk_guard + strcmp + strlcat + strlcpy + strlen + strncmp + synchronize_rcu_tasks + system_wq + __traceiter_android_vh_aes_decrypt + __traceiter_android_vh_aes_encrypt + __traceiter_android_vh_aes_expandkey + __traceiter_android_vh_sha256 + __tracepoint_android_vh_aes_decrypt + __tracepoint_android_vh_aes_encrypt + __tracepoint_android_vh_aes_expandkey + __tracepoint_android_vh_sha256 + tracepoint_probe_register + up_write + wait_for_completion + +# needed by fips140.ko but not identified by the tooling +# TODO(b/189327973): [GKI: ABI] Build of fips140.ko module fails to identify some symbols + __crypto_memneq + __crypto_xor + aes_decrypt + aes_encrypt + aes_expandkey + ce_aes_expandkey + crypto_aes_inv_sbox + crypto_aes_sbox + crypto_aes_set_key + crypto_ft_tab + crypto_inc + crypto_it_tab + crypto_sha1_finup + crypto_sha1_update + gf128mul_lle + sha1_transform + sha224_final + sha256 + sha256_block_data_order + sha256_final + sha256_update diff --git a/android/abi_gki_aarch64_generic b/android/abi_gki_aarch64_generic index 310e7aa29cbc..b040326ef571 100644 --- a/android/abi_gki_aarch64_generic +++ b/android/abi_gki_aarch64_generic @@ -50,8 +50,11 @@ bio_endio bio_init bio_put + __bitmap_andnot __bitmap_clear + __bitmap_equal bitmap_from_arr32 + __bitmap_or bitmap_parse bitmap_parselist bitmap_print_to_pagebuf @@ -90,6 +93,7 @@ bpf_trace_run5 bpf_trace_run6 bpf_trace_run7 + bpf_trace_run8 bpf_trace_run9 build_skb bus_find_device @@ -159,6 +163,8 @@ clk_hw_get_name clk_hw_get_parent __clk_is_enabled + clk_notifier_register + clk_notifier_unregister clk_prepare clk_put clk_register @@ -209,11 +215,13 @@ cpufreq_driver_fast_switch cpufreq_driver_resolve_freq __cpufreq_driver_target + cpufreq_driver_target cpufreq_enable_fast_switch cpufreq_freq_transition_begin cpufreq_freq_transition_end cpufreq_frequency_table_verify cpufreq_generic_attr + cpufreq_get cpufreq_policy_transition_delay_us cpufreq_quick_get cpufreq_register_driver @@ -248,14 +256,24 @@ cpu_subsys crc8 crc8_populate_msb + crypto_aead_decrypt + crypto_aead_encrypt + crypto_aead_setauthsize + crypto_aead_setkey + crypto_alloc_aead crypto_alloc_base crypto_alloc_shash + crypto_alloc_sync_skcipher crypto_comp_compress crypto_comp_decompress crypto_destroy_tfm crypto_register_alg crypto_register_scomp crypto_shash_digest + crypto_shash_finup + crypto_shash_setkey + crypto_skcipher_encrypt + crypto_skcipher_setkey crypto_unregister_alg crypto_unregister_scomp csum_ipv6_magic @@ -291,16 +309,22 @@ _dev_err devfreq_add_device devfreq_add_governor + devfreq_monitor_resume + devfreq_monitor_start + devfreq_monitor_stop + devfreq_monitor_suspend devfreq_recommended_opp devfreq_register_opp_notifier devfreq_remove_device devfreq_unregister_opp_notifier + devfreq_update_interval dev_fwnode dev_get_by_name device_add_disk device_add_groups device_create device_create_file + device_create_with_groups device_destroy device_find_child device_for_each_child @@ -377,6 +401,7 @@ devm_platform_ioremap_resource_byname devm_power_supply_register devm_pwm_get + devm_regmap_add_irq_chip __devm_regmap_init __devm_regmap_init_i2c __devm_regmap_init_spi @@ -489,6 +514,7 @@ downgrade_write down_interruptible down_read + down_read_trylock down_timeout down_trylock down_write @@ -501,8 +527,10 @@ drm_atomic_add_affected_connectors drm_atomic_add_affected_planes drm_atomic_commit + drm_atomic_get_connector_state drm_atomic_get_crtc_state drm_atomic_get_new_connector_for_encoder + drm_atomic_get_old_connector_for_encoder drm_atomic_get_plane_state drm_atomic_get_private_obj_state drm_atomic_helper_bridge_destroy_state @@ -534,11 +562,13 @@ __drm_atomic_helper_private_obj_duplicate_state drm_atomic_helper_set_config drm_atomic_helper_setup_commit + drm_atomic_helper_shutdown drm_atomic_helper_swap_state drm_atomic_helper_update_plane drm_atomic_helper_wait_for_dependencies drm_atomic_helper_wait_for_fences drm_atomic_helper_wait_for_flip_done + drm_atomic_nonblocking_commit drm_atomic_normalize_zpos drm_atomic_private_obj_fini drm_atomic_private_obj_init @@ -562,6 +592,7 @@ drm_connector_unregister drm_crtc_arm_vblank_event drm_crtc_cleanup + __drm_crtc_commit_free drm_crtc_enable_color_mgmt drm_crtc_handle_vblank drm_crtc_init_with_planes @@ -660,7 +691,9 @@ drm_rect_intersect drm_release drm_rotation_simplify + drm_self_refresh_helper_alter_state drm_send_event + drm_send_event_locked drm_universal_plane_init drm_vblank_init drm_writeback_connector_init @@ -693,6 +726,8 @@ extcon_set_property extcon_set_property_capability extcon_set_state_sync + extcon_unregister_notifier + failure_tracking fasync_helper __fdget fd_install @@ -700,6 +735,7 @@ file_path filp_close filp_open_block + find_extend_vma find_get_pid find_next_bit find_next_zero_bit @@ -801,6 +837,7 @@ handle_simple_irq handle_sysrq have_governor_per_policy + hex2bin hex_dump_to_buffer hex_to_bin hid_add_device @@ -950,7 +987,6 @@ kasprintf kernel_cpustat kernel_kobj - kernel_read kernel_restart kern_mount kern_unmount @@ -960,6 +996,7 @@ __kfifo_init __kfifo_out kfree + kfree_sensitive kfree_skb kill_anon_super kill_fasync @@ -981,6 +1018,7 @@ kobject_init_and_add kobject_put kobject_uevent + kobject_uevent_env kobj_sysfs_ops krealloc kstat @@ -1213,6 +1251,7 @@ of_usb_host_tpl_support page_endio page_mapping + __page_pinner_migration_failed panic panic_notifier_list param_array_ops @@ -1259,6 +1298,7 @@ perf_event_create_kernel_counter perf_event_enable perf_event_pause + perf_event_read_local perf_event_read_value perf_event_release_kernel perf_event_update_userpage @@ -1348,6 +1388,7 @@ printk_deferred proc_create proc_create_data + proc_create_single_data proc_dointvec proc_dostring proc_douintvec_minmax @@ -1430,6 +1471,7 @@ regmap_bulk_read regmap_bulk_write regmap_get_device + regmap_irq_get_virq regmap_multi_reg_write regmap_multi_reg_write_bypassed regmap_raw_read @@ -1554,6 +1596,7 @@ __sg_page_iter_next __sg_page_iter_start sg_scsi_ioctl + shmem_file_setup simple_attr_open simple_attr_read simple_attr_release @@ -1605,7 +1648,9 @@ snd_soc_card_get_kcontrol snd_soc_card_jack_new snd_soc_component_disable_pin + snd_soc_component_enable_pin snd_soc_component_force_enable_pin + snd_soc_component_get_pin_status snd_soc_component_read snd_soc_component_set_jack snd_soc_component_set_pll @@ -1616,6 +1661,7 @@ snd_soc_dai_set_sysclk snd_soc_dai_set_tdm_slot snd_soc_dapm_add_routes + snd_soc_dapm_del_routes snd_soc_dapm_disable_pin snd_soc_dapm_disable_pin_unlocked snd_soc_dapm_force_enable_pin_unlocked @@ -1633,10 +1679,13 @@ snd_soc_get_enum_double snd_soc_get_volsw snd_soc_get_volsw_range + snd_soc_get_volsw_sx snd_soc_info_enum_double snd_soc_info_volsw snd_soc_info_volsw_range + snd_soc_info_volsw_sx snd_soc_jack_report + snd_soc_lookup_component snd_soc_new_compress snd_soc_of_get_dai_link_codecs snd_soc_of_get_dai_name @@ -1647,6 +1696,7 @@ snd_soc_put_enum_double snd_soc_put_volsw snd_soc_put_volsw_range + snd_soc_put_volsw_sx snd_soc_register_card snd_soc_register_component snd_soc_runtime_set_dai_fmt @@ -1719,6 +1769,7 @@ synchronize_net synchronize_rcu syscon_regmap_lookup_by_phandle + sysctl_sched_latency sysfs_add_file_to_group sysfs_create_file_ns sysfs_create_files @@ -1737,6 +1788,7 @@ sysrq_mask system_freezing_cnt system_highpri_wq + system_long_wq system_power_efficient_wq system_state system_unbound_wq @@ -1747,6 +1799,7 @@ __tasklet_schedule task_may_not_preempt __task_pid_nr_ns + task_rq_lock tcpci_get_tcpm_port tcpci_irq tcpci_register_port @@ -1782,9 +1835,17 @@ trace_event_raw_init trace_event_reg trace_handle_return + __traceiter_android_rvh_cgroup_force_kthread_migration + __traceiter_android_rvh_check_preempt_wakeup + __traceiter_android_rvh_cpu_cgroup_online __traceiter_android_rvh_cpu_overutilized __traceiter_android_rvh_dequeue_task __traceiter_android_rvh_find_energy_efficient_cpu + __traceiter_android_rvh_irqs_disable + __traceiter_android_rvh_irqs_enable + __traceiter_android_rvh_post_init_entity_util_avg + __traceiter_android_rvh_preempt_disable + __traceiter_android_rvh_preempt_enable __traceiter_android_rvh_select_task_rq_rt __traceiter_android_rvh_set_iowait __traceiter_android_rvh_typec_tcpci_chk_contaminant @@ -1798,14 +1859,19 @@ __traceiter_android_vh_cpu_idle_exit __traceiter_android_vh_enable_thermal_genl_check __traceiter_android_vh_ep_create_wakeup_source + __traceiter_android_vh_finish_update_load_avg_se __traceiter_android_vh_ipi_stop + __traceiter_android_vh_meminfo_proc_show + __traceiter_android_vh_of_i2c_get_board_info __traceiter_android_vh_pagecache_get_page __traceiter_android_vh_rmqueue + __traceiter_android_vh_thermal_pm_notify_suspend __traceiter_android_vh_timerfd_create __traceiter_android_vh_typec_store_partner_src_caps __traceiter_android_vh_typec_tcpci_override_toggling __traceiter_android_vh_typec_tcpm_adj_current_limit __traceiter_android_vh_typec_tcpm_get_timer + __traceiter_android_vh_typec_tcpm_log __traceiter_android_vh_ufs_check_int_errors __traceiter_android_vh_ufs_compl_command __traceiter_android_vh_ufs_fill_prdt @@ -1831,15 +1897,20 @@ __traceiter_rwmmio_write __traceiter_sched_cpu_capacity_tp __traceiter_sched_overutilized_tp + __traceiter_sched_switch __traceiter_sched_util_est_cfs_tp __traceiter_sched_util_est_se_tp __traceiter_suspend_resume trace_output_call + __tracepoint_android_rvh_cgroup_force_kthread_migration + __tracepoint_android_rvh_check_preempt_wakeup + __tracepoint_android_rvh_cpu_cgroup_online __tracepoint_android_rvh_cpu_overutilized __tracepoint_android_rvh_dequeue_task __tracepoint_android_rvh_find_energy_efficient_cpu __tracepoint_android_rvh_irqs_disable __tracepoint_android_rvh_irqs_enable + __tracepoint_android_rvh_post_init_entity_util_avg __tracepoint_android_rvh_preempt_disable __tracepoint_android_rvh_preempt_enable __tracepoint_android_rvh_select_task_rq_rt @@ -1855,14 +1926,19 @@ __tracepoint_android_vh_cpu_idle_exit __tracepoint_android_vh_enable_thermal_genl_check __tracepoint_android_vh_ep_create_wakeup_source + __tracepoint_android_vh_finish_update_load_avg_se __tracepoint_android_vh_ipi_stop + __tracepoint_android_vh_meminfo_proc_show + __tracepoint_android_vh_of_i2c_get_board_info __tracepoint_android_vh_pagecache_get_page __tracepoint_android_vh_rmqueue + __tracepoint_android_vh_thermal_pm_notify_suspend __tracepoint_android_vh_timerfd_create __tracepoint_android_vh_typec_store_partner_src_caps __tracepoint_android_vh_typec_tcpci_override_toggling __tracepoint_android_vh_typec_tcpm_adj_current_limit __tracepoint_android_vh_typec_tcpm_get_timer + __tracepoint_android_vh_typec_tcpm_log __tracepoint_android_vh_ufs_check_int_errors __tracepoint_android_vh_ufs_compl_command __tracepoint_android_vh_ufs_fill_prdt @@ -1895,7 +1971,9 @@ __tracepoint_sched_util_est_se_tp __tracepoint_suspend_resume trace_print_array_seq + trace_print_bitmask_seq trace_print_flags_seq + trace_print_hex_seq trace_print_symbols_seq trace_raw_output_prep trace_seq_printf @@ -1966,6 +2044,7 @@ usb_copy_descriptors __usb_create_hcd usb_disabled + usb_enable_autosuspend usb_ep_autoconfig usb_ep_disable usb_ep_enable @@ -1974,6 +2053,7 @@ usb_gadget_set_state usb_hcd_is_primary_hcd usb_hcd_platform_shutdown + usb_hub_find_child usb_interface_id usb_otg_state_string usb_put_function_instance @@ -1983,6 +2063,7 @@ usb_role_switch_get_drvdata usb_role_switch_register usb_role_switch_unregister + usb_speed_string usb_string_id usb_unregister_notify __usecs_to_jiffies @@ -2074,6 +2155,7 @@ vm_map_pages vm_map_ram vm_unmap_ram + vprintk vring_del_virtqueue vring_interrupt vring_new_virtqueue @@ -2111,6 +2193,9 @@ __xfrm_state_destroy xfrm_state_lookup_byspi xfrm_stateonly_find + xhci_address_device + xhci_bus_resume + xhci_bus_suspend xhci_gen_setup xhci_get_ep_ctx xhci_get_slot_ctx diff --git a/android/abi_gki_aarch64_hikey960 b/android/abi_gki_aarch64_hikey960 index 123991ec5a34..2515273bd123 100644 --- a/android/abi_gki_aarch64_hikey960 +++ b/android/abi_gki_aarch64_hikey960 @@ -1033,7 +1033,6 @@ config_group_init config_group_init_type_name _ctype - filp_open fs_bio_set hex_to_bin iov_iter_bvec diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk new file mode 100644 index 000000000000..1150db28bc95 --- /dev/null +++ b/android/abi_gki_aarch64_mtk @@ -0,0 +1,1987 @@ +[abi_symbol_list] + access_process_vm + activate_task + add_timer + add_uevent_var + add_wait_queue + adjust_managed_page_count + alarm_cancel + alarm_init + alarm_start + alarm_start_relative + alarm_try_to_cancel + alloc_anon_inode + alloc_chrdev_region + __alloc_disk_node + alloc_etherdev_mqs + alloc_io_pgtable_ops + alloc_netdev_mqs + alloc_pages_exact + __alloc_pages_nodemask + __alloc_percpu + __alloc_skb + alloc_workqueue + android_debug_symbol + android_rvh_probe_register + anon_inode_getfd + anon_inode_getfile + __arch_clear_user + __arch_copy_from_user + __arch_copy_to_user + arch_timer_read_counter + arm64_const_caps_ready + arm64_use_ng_mappings + __arm_smccc_smc + arp_tbl + atomic_notifier_call_chain + atomic_notifier_chain_register + atomic_notifier_chain_unregister + autoremove_wake_function + bcmp + bdget_disk + bdput + bio_endio + __bitmap_andnot + __bitmap_clear + __bitmap_equal + bitmap_find_free_region + bitmap_find_next_zero_area_off + bitmap_free + bitmap_from_arr32 + __bitmap_or + bitmap_print_to_pagebuf + bitmap_release_region + __bitmap_set + bitmap_to_arr32 + __bitmap_weight + bitmap_zalloc + blk_alloc_queue + blk_cleanup_queue + blk_queue_flag_clear + blk_queue_flag_set + blk_queue_io_min + blk_queue_io_opt + blk_queue_logical_block_size + blk_queue_max_discard_sectors + blk_queue_max_write_zeroes_sectors + blk_queue_physical_block_size + blocking_notifier_call_chain + blocking_notifier_chain_register + blocking_notifier_chain_unregister + bpf_trace_run1 + bpf_trace_run2 + bpf_trace_run3 + bpf_trace_run4 + bpf_trace_run5 + bpf_trace_run6 + bpf_trace_run7 + bpf_trace_run8 + bpf_trace_run9 + bus_register + bus_set_iommu + bus_unregister + cache_line_size + cancel_delayed_work + cancel_delayed_work_sync + cancel_work_sync + cdev_add + cdev_alloc + cdev_del + cdev_device_add + cdev_device_del + cdev_init + __cfg80211_alloc_event_skb + __cfg80211_alloc_reply_skb + cfg80211_cac_event + cfg80211_chandef_create + cfg80211_ch_switch_notify + cfg80211_classify8021d + cfg80211_connect_done + cfg80211_del_sta_sinfo + cfg80211_disconnected + cfg80211_external_auth_request + cfg80211_find_elem_match + cfg80211_ft_event + cfg80211_get_bss + cfg80211_inform_bss_data + cfg80211_inform_bss_frame_data + cfg80211_mgmt_tx_status + cfg80211_michael_mic_failure + cfg80211_new_sta + cfg80211_pmksa_candidate_notify + cfg80211_put_bss + cfg80211_radar_event + cfg80211_ready_on_channel + cfg80211_remain_on_channel_expired + cfg80211_roamed + cfg80211_rx_mgmt_khz + cfg80211_scan_done + cfg80211_sched_scan_results + cfg80211_sched_scan_stopped + __cfg80211_send_event_skb + cfg80211_tdls_oper_request + cfg80211_unlink_bss + cfg80211_vendor_cmd_reply + __cfi_slowpath + __check_object_size + check_preempt_curr + __class_create + class_destroy + class_find_device + class_for_each_device + __class_register + class_unregister + clear_page + __ClearPageMovable + clk_bulk_disable + clk_bulk_enable + clk_bulk_prepare + clk_bulk_put_all + clk_bulk_unprepare + clk_disable + clk_divider_ops + clk_enable + clk_gate_ops + clk_get + __clk_get_hw + __clk_get_name + clk_get_parent + clk_get_rate + clk_hw_get_name + clk_hw_get_num_parents + clk_hw_get_parent + clk_hw_get_parent_by_index + clk_hw_get_rate + clk_hw_is_enabled + clk_hw_is_prepared + __clk_is_enabled + clk_mux_ops + clk_notifier_register + clk_prepare + clk_put + clk_register + clk_register_composite + clk_register_divider_table + clk_register_fixed_factor + clk_register_fixed_rate + clk_set_parent + clk_set_rate + clk_unprepare + clocks_calc_mult_shift + __close_fd + compat_alloc_user_space + compat_ptr_ioctl + complete + complete_all + completion_done + component_add + component_bind_all + component_del + component_master_add_with_match + component_master_del + component_match_add_release + component_unbind_all + console_drivers + console_suspend_enabled + console_unlock + __const_udelay + consume_skb + contig_page_data + _copy_from_iter + copy_from_kernel_nofault + _copy_to_iter + __cpu_active_mask + cpu_all_bits + cpu_bit_bitmap + cpufreq_add_update_util_hook + cpufreq_cpu_get + cpufreq_disable_fast_switch + cpufreq_driver_fast_switch + cpufreq_driver_resolve_freq + __cpufreq_driver_target + cpufreq_enable_fast_switch + cpufreq_generic_attr + cpufreq_generic_frequency_table_verify + cpufreq_get_policy + cpufreq_policy_transition_delay_us + cpufreq_quick_get + cpufreq_register_driver + cpufreq_register_governor + cpufreq_remove_update_util_hook + cpufreq_table_index_unsorted + cpufreq_this_cpu_can_update + cpufreq_unregister_driver + cpufreq_unregister_governor + cpu_hotplug_disable + cpu_hotplug_enable + __cpuhp_remove_state + __cpuhp_setup_state + __cpuhp_state_add_instance + __cpuhp_state_remove_instance + cpu_hwcap_keys + cpu_hwcaps + cpuidle_driver_state_disabled + cpuidle_get_driver + cpuidle_pause_and_lock + cpuidle_resume_and_unlock + cpu_latency_qos_add_request + cpu_latency_qos_remove_request + cpu_latency_qos_update_request + cpumask_any_but + cpumask_next + cpumask_next_and + cpu_number + __cpu_online_mask + __cpu_possible_mask + __cpu_present_mask + cpu_scale + cpu_subsys + cpu_topology + crc32_le + crc8 + crc8_populate_msb + crypto_alloc_base + crypto_alloc_shash + crypto_comp_compress + crypto_comp_decompress + crypto_destroy_tfm + crypto_has_alg + crypto_register_alg + crypto_register_scomp + crypto_shash_final + crypto_shash_update + crypto_unregister_alg + crypto_unregister_scomp + _ctype + dapm_clock_event + dapm_kcontrol_get_value + dapm_regulator_event + deactivate_task + debugfs_attr_read + debugfs_attr_write + debugfs_create_blob + debugfs_create_bool + debugfs_create_devm_seqfile + debugfs_create_dir + debugfs_create_file + debugfs_create_regset32 + debugfs_create_symlink + debugfs_create_u32 + debugfs_create_u64 + debugfs_create_u8 + debugfs_create_x32 + debugfs_lookup + debugfs_remove + debug_locks_off + dec_zone_page_state + default_llseek + deferred_free + delayed_work_timer_fn + del_gendisk + del_timer + del_timer_sync + destroy_workqueue + dev_base_lock + dev_driver_string + _dev_emerg + _dev_err + dev_err_probe + devfreq_add_device + devfreq_add_governor + devfreq_cooling_unregister + devfreq_get_devfreq_by_phandle + devfreq_monitor_resume + devfreq_monitor_start + devfreq_monitor_stop + devfreq_monitor_suspend + devfreq_recommended_opp + devfreq_register_opp_notifier + devfreq_remove_device + devfreq_remove_governor + devfreq_resume_device + devfreq_suspend_device + devfreq_unregister_opp_notifier + devfreq_update_interval + dev_fwnode + dev_get_by_name + dev_get_regmap + dev_get_stats + device_add_disk + device_create + device_create_bin_file + device_create_file + device_destroy + device_for_each_child + device_get_child_node_count + device_get_match_data + device_get_next_child_node + device_initialize + device_init_wakeup + device_link_add + device_link_remove + device_property_present + device_property_read_u32_array + device_register + device_remove_bin_file + device_remove_file + device_rename + device_set_of_node_from_dev + device_unregister + _dev_info + __dev_kfree_skb_any + __devm_alloc_percpu + devm_blk_ksm_init + devm_clk_bulk_get + devm_clk_get + devm_clk_get_optional + devm_clk_register + devm_devfreq_add_device + devm_devfreq_register_notifier + devm_devfreq_remove_device + devm_devfreq_unregister_notifier + devm_extcon_dev_allocate + devm_extcon_dev_register + devm_extcon_register_notifier + devm_free_irq + devm_fwnode_pwm_get + devm_gpiod_get + devm_gpiod_get_index + devm_gpiod_put + devm_gpio_free + devm_gpio_request + devm_gpio_request_one + devm_i2c_new_dummy_device + devm_iio_channel_get + devm_iio_device_alloc + __devm_iio_device_register + devm_input_allocate_device + devm_ioremap + devm_ioremap_resource + devm_kasprintf + devm_kfree + devm_kmalloc + devm_led_classdev_register_ext + devm_led_classdev_unregister + devm_mbox_controller_register + devm_memremap + devm_mfd_add_devices + devm_nvmem_cell_get + devm_nvmem_device_get + devm_nvmem_register + devm_of_phy_get_by_index + __devm_of_phy_provider_register + devm_of_platform_populate + devm_phy_create + devm_phy_get + devm_pinctrl_get + devm_pinctrl_put + devm_pinctrl_register_and_init + devm_platform_ioremap_resource + devm_platform_ioremap_resource_byname + devm_power_supply_get_by_phandle + devm_power_supply_register + devm_regmap_add_irq_chip + devm_regmap_field_alloc + __devm_regmap_init + __devm_regmap_init_i2c + __devm_regmap_init_mmio_clk + devm_regulator_get + devm_regulator_get_optional + devm_regulator_register + devm_regulator_register_notifier + devm_regulator_unregister_notifier + devm_request_threaded_irq + __devm_reset_control_get + devm_reset_controller_register + devm_rtc_allocate_device + devm_snd_soc_register_card + devm_snd_soc_register_component + devm_spi_register_controller + devm_thermal_zone_of_sensor_register + devm_watchdog_register_device + _dev_notice + dev_pm_genpd_add_notifier + dev_pm_genpd_set_performance_state + dev_pm_opp_add + dev_pm_opp_find_freq_ceil + dev_pm_opp_find_freq_ceil_by_volt + dev_pm_opp_find_freq_exact + dev_pm_opp_find_freq_floor + dev_pm_opp_get_freq + dev_pm_opp_get_level + dev_pm_opp_get_opp_count + dev_pm_opp_get_opp_table + dev_pm_opp_get_voltage + dev_pm_opp_of_add_table + dev_pm_opp_of_add_table_indexed + dev_pm_opp_of_remove_table + dev_pm_opp_put + dev_pm_opp_put_opp_table + dev_pm_opp_put_regulators + dev_pm_opp_remove_all_dynamic + dev_pm_opp_set_regulators + dev_pm_qos_update_request + dev_printk + dev_queue_xmit + devres_add + devres_alloc_node + devres_free + devres_release + dev_set_name + _dev_warn + disable_irq + disable_irq_nosync + disable_percpu_irq + disk_end_io_acct + disk_start_io_acct + dma_alloc_attrs + dma_async_device_register + dma_async_device_unregister + dma_async_tx_descriptor_init + dma_buf_attach + dma_buf_begin_cpu_access + dma_buf_detach + dma_buf_end_cpu_access + dma_buf_export + dma_buf_fd + dma_buf_get + dma_buf_map_attachment + dma_buf_mmap + dmabuf_page_pool_alloc + dmabuf_page_pool_create + dmabuf_page_pool_destroy + dmabuf_page_pool_free + dma_buf_put + dma_buf_unmap_attachment + dma_buf_vmap + dma_buf_vunmap + dma_fence_add_callback + dma_fence_context_alloc + dma_fence_default_wait + dma_fence_free + dma_fence_get_status + dma_fence_init + dma_fence_release + dma_fence_remove_callback + dma_fence_signal + dma_fence_signal_locked + dma_fence_signal_timestamp_locked + dma_fence_wait_timeout + dma_free_attrs + dma_get_sgtable_attrs + dma_heap_add + dma_heap_get_dev + dma_heap_get_name + dmam_alloc_attrs + dma_map_page_attrs + dma_map_sg_attrs + dmam_free_coherent + dma_mmap_attrs + dma_pool_alloc + dma_pool_create + dma_pool_destroy + dma_pool_free + dma_resv_wait_timeout_rcu + dma_set_coherent_mask + dma_set_mask + dma_sync_sg_for_cpu + dma_sync_sg_for_device + dma_sync_single_for_cpu + dma_sync_single_for_device + dma_unmap_page_attrs + dma_unmap_sg_attrs + do_exit + do_wait_intr_irq + down + downgrade_write + down_interruptible + down_read + down_read_trylock + down_timeout + down_trylock + down_write + d_path + dput + driver_create_file + driver_remove_file + driver_unregister + drm_add_modes_noedid + drm_atomic_add_affected_connectors + drm_atomic_get_crtc_state + drm_atomic_helper_check + drm_atomic_helper_check_plane_state + drm_atomic_helper_cleanup_planes + drm_atomic_helper_commit_modeset_disables + drm_atomic_helper_commit_modeset_enables + drm_atomic_helper_commit_planes + drm_atomic_helper_connector_destroy_state + drm_atomic_helper_connector_duplicate_state + drm_atomic_helper_connector_reset + __drm_atomic_helper_crtc_destroy_state + __drm_atomic_helper_crtc_duplicate_state + drm_atomic_helper_disable_plane + drm_atomic_helper_legacy_gamma_set + drm_atomic_helper_page_flip + __drm_atomic_helper_plane_destroy_state + __drm_atomic_helper_plane_duplicate_state + drm_atomic_helper_prepare_planes + drm_atomic_helper_resume + drm_atomic_helper_set_config + drm_atomic_helper_shutdown + drm_atomic_helper_suspend + drm_atomic_helper_swap_state + drm_atomic_helper_update_plane + drm_atomic_helper_wait_for_vblanks + drm_atomic_state_clear + drm_atomic_state_default_release + __drm_atomic_state_free + drm_atomic_state_init + drm_bridge_attach + drm_calc_timestamping_constants + drm_compat_ioctl + drm_connector_attach_encoder + drm_connector_cleanup + drm_connector_init + drm_crtc_cleanup + drm_crtc_handle_vblank + drm_crtc_init_with_planes + drm_crtc_send_vblank_event + drm_crtc_vblank_get + drm_crtc_vblank_off + drm_crtc_vblank_on + drm_crtc_vblank_put + __drm_dbg + drm_dev_alloc + drm_dev_put + drm_dev_register + drm_dev_unregister + drm_encoder_cleanup + drm_encoder_init + __drm_err + drm_format_info + drm_framebuffer_cleanup + drm_framebuffer_init + drm_framebuffer_lookup + drm_framebuffer_remove + drm_gem_cma_vm_ops + drm_gem_create_mmap_offset + drm_gem_dumb_destroy + drm_gem_handle_create + drm_gem_mmap + drm_gem_mmap_obj + drm_gem_object_free + drm_gem_object_init + drm_gem_object_lookup + drm_gem_object_release + drm_gem_prime_export + drm_gem_prime_fd_to_handle + drm_gem_prime_handle_to_fd + drm_gem_prime_import + drm_gem_private_object_init + drm_gem_vm_close + drm_helper_hpd_irq_event + drm_helper_mode_fill_fb_struct + drm_helper_probe_single_connector_modes + drm_ioctl + drm_is_current_master + drm_kms_helper_poll_disable + drm_kms_helper_poll_enable + drm_kms_helper_poll_fini + drm_kms_helper_poll_init + drmm_mode_config_init + drm_mode_config_cleanup + drm_mode_config_reset + drm_mode_copy + drm_mode_crtc_set_gamma_size + drm_mode_duplicate + drm_mode_object_find + drm_mode_object_put + drm_mode_probed_add + drm_mode_set_crtcinfo + drm_mode_set_name + drm_mode_vrefresh + drm_object_attach_property + drm_open + drm_panel_add + drm_panel_disable + drm_panel_enable + drm_panel_get_modes + drm_panel_init + drm_panel_prepare + drm_panel_remove + drm_panel_unprepare + drm_plane_cleanup + drm_poll + drm_prime_gem_destroy + drm_property_blob_put + drm_property_create_blob + drm_property_create_range + drm_property_lookup_blob + drm_read + drm_release + drm_universal_plane_init + drm_vblank_init + drm_writeback_connector_init + drm_writeback_queue_job + drm_writeback_signal_completion + dump_stack + em_cpu_get + em_dev_register_perf_domain + enable_irq + enable_percpu_irq + ether_setup + eth_header + eth_header_cache + eth_header_cache_update + eth_header_parse + eth_type_trans + event_triggers_call + extcon_get_edev_by_phandle + extcon_get_state + extcon_set_state_sync + failure_tracking + fd_install + fget + find_last_bit + find_next_bit + find_next_zero_bit + find_pid_ns + find_task_by_vpid + find_vma + find_vpid + finish_wait + flush_dcache_page + flush_delayed_work + flush_work + flush_workqueue + follow_pfn + font_vga_8x16 + for_each_kernel_tracepoint + fput + free_irq + free_netdev + __free_pages + free_pages + free_pages_exact + free_percpu + free_percpu_irq + freezing_slow_path + freq_qos_add_notifier + freq_qos_add_request + freq_qos_remove_request + freq_qos_update_request + fsync_bdev + fwnode_handle_get + fwnode_handle_put + fwnode_property_present + fwnode_property_read_string + fwnode_property_read_u32_array + gcd + generic_file_llseek + generic_handle_irq + generic_iommu_put_resv_regions + genlmsg_put + genl_register_family + genl_unregister_family + gen_pool_add_owner + gen_pool_alloc_algo_owner + gen_pool_avail + gen_pool_best_fit + gen_pool_create + gen_pool_destroy + gen_pool_free_owner + gen_pool_has_addr + gen_pool_set_algo + gen_pool_size + gen_pool_virt_to_phys + get_cpu_device + get_cpu_idle_time + get_cpu_idle_time_us + get_cpu_iowait_time_us + get_device + get_each_dmabuf + __get_free_pages + get_governor_parent_kobj + get_kernel_pages + get_random_bytes + get_random_u32 + __get_task_comm + get_task_exe_file + get_task_mm + get_unused_fd_flags + get_user_pages + get_user_pages_fast + get_user_pages_remote + get_zeroed_page + gic_nonsecure_priorities + gov_attr_set_get + gov_attr_set_init + gov_attr_set_put + governor_sysfs_ops + gpiochip_add_data_with_key + gpiochip_generic_free + gpiochip_generic_request + gpiochip_get_data + gpiochip_lock_as_irq + gpiochip_unlock_as_irq + gpiod_direction_input + gpiod_direction_output_raw + gpiod_get_raw_value + gpiod_set_debounce + gpiod_set_raw_value + gpiod_set_value + gpiod_to_irq + gpio_free + gpio_request + gpio_request_one + gpio_to_desc + handle_level_irq + handle_nested_irq + hashlen_string + have_governor_per_policy + hci_alloc_dev + hci_free_dev + hci_recv_frame + hci_register_dev + hci_unregister_dev + hex_asc + hex_dump_to_buffer + hrtimer_active + hrtimer_cancel + hrtimer_forward + hrtimer_init + hrtimer_start_range_ns + hrtimer_try_to_cancel + i2c_add_adapter + i2c_del_adapter + i2c_del_driver + i2c_get_dma_safe_msg_buf + i2c_put_dma_safe_msg_buf + i2c_register_driver + i2c_smbus_read_byte_data + i2c_smbus_read_i2c_block_data + i2c_smbus_write_byte_data + i2c_smbus_write_i2c_block_data + i2c_transfer + i2c_transfer_buffer_flags + icc_link_create + icc_node_add + icc_node_create + icc_node_del + icc_node_destroy + icc_provider_add + icc_provider_del + icc_put + icc_set_bw + icc_sync_state + idr_alloc + idr_destroy + idr_find + idr_for_each + idr_get_next + idr_remove + ieee80211_channel_to_freq_khz + ieee80211_freq_khz_to_channel + ieee80211_get_channel_khz + iio_buffer_init + iio_buffer_put + iio_channel_get + iio_channel_release + iio_device_attach_buffer + __iio_device_register + iio_device_unregister + iio_get_channel_type + iio_get_time_ns + iio_push_to_buffers + iio_read_channel_attribute + iio_read_channel_processed + iio_read_channel_raw + inc_zone_page_state + in_egroup_p + init_net + init_pseudo + __init_rwsem + __init_swait_queue_head + init_task + init_timer_key + init_uts_ns + init_wait_entry + __init_waitqueue_head + input_allocate_device + input_event + input_free_device + input_mt_init_slots + input_mt_report_slot_state + input_register_device + input_set_abs_params + input_set_capability + input_unregister_device + iomem_resource + iommu_alloc_resv_region + iommu_device_register + iommu_device_sysfs_add + iommu_device_sysfs_remove + iommu_device_unregister + iommu_fwspec_add_ids + iommu_fwspec_free + iommu_get_dma_cookie + iommu_get_domain_for_dev + iommu_group_alloc + iommu_group_ref_get + iommu_iova_to_phys + iommu_map_sg + iommu_present + iommu_put_dma_cookie + iommu_unmap + __ioremap + iounmap + iput + ipv6_skip_exthdr + irq_create_mapping_affinity + irq_create_of_mapping + __irq_domain_add + irq_domain_remove + irq_domain_simple_ops + irq_domain_xlate_twocell + irq_find_mapping + irq_get_irqchip_state + irq_get_irq_data + irq_modify_status + irq_of_parse_and_map + irq_set_affinity_hint + irq_set_chained_handler_and_data + irq_set_chip_and_handler_name + irq_set_chip_data + irq_set_irq_type + irq_set_irq_wake + irq_to_desc + irq_work_queue + irq_work_sync + is_vmalloc_addr + jiffies + jiffies_to_msecs + jiffies_to_usecs + kasan_flag_enabled + kasprintf + kernel_cpustat + kernel_kobj + kernel_power_off + kernel_restart + kernel_sigaction + kernfs_path_from_node + kern_mount + kern_unmount + __kfifo_alloc + __kfifo_free + __kfifo_in + __kfifo_init + __kfifo_out + __kfifo_to_user + kfree + kfree_const + kfree_sensitive + kfree_skb + kill_anon_super + kimage_vaddr + kimage_voffset + __kmalloc + kmalloc_caches + kmalloc_order_trace + kmem_cache_alloc + kmem_cache_alloc_trace + kmem_cache_create + kmem_cache_destroy + kmem_cache_free + kobject_create_and_add + kobject_del + kobject_init_and_add + kobject_put + kobject_uevent + kobject_uevent_env + krealloc + kset_find_obj + kstrdup + kstrdup_const + kstrndup + kstrtobool + kstrtobool_from_user + kstrtoint + kstrtoint_from_user + kstrtol_from_user + kstrtoll + kstrtou16 + kstrtou8 + kstrtouint + kstrtouint_from_user + kstrtoul_from_user + kstrtoull + kstrtoull_from_user + ksys_sync_helper + kthread_bind + kthread_bind_mask + kthread_cancel_delayed_work_sync + kthread_cancel_work_sync + kthread_create_on_node + kthread_create_worker + kthread_delayed_work_timer_fn + kthread_destroy_worker + kthread_flush_work + kthread_flush_worker + __kthread_init_worker + kthread_queue_delayed_work + kthread_queue_work + kthread_should_stop + kthread_stop + kthread_worker_fn + ktime_get + ktime_get_mono_fast_ns + ktime_get_raw + ktime_get_raw_ts64 + ktime_get_real_ts64 + ktime_get_ts64 + ktime_get_with_offset + kvfree + kvfree_call_rcu + kvmalloc_node + led_classdev_flash_register_ext + led_classdev_flash_unregister + led_get_flash_fault + led_set_brightness_sync + led_set_flash_brightness + led_set_flash_timeout + led_sysfs_disable + led_sysfs_enable + led_trigger_remove + led_update_brightness + led_update_flash_brightness + __list_add_valid + __list_del_entry_valid + list_sort + __local_bh_enable_ip + __lock_page + log_buf_addr_get + log_buf_len_get + __log_post_read_mmio + __log_read_mmio + log_threaded_irq_wakeup_reason + __log_write_mmio + lzo1x_1_compress + lzo1x_decompress_safe + lzorle1x_1_compress + mbox_chan_received_data + mbox_client_txdone + mbox_controller_register + mbox_controller_unregister + mbox_free_channel + mbox_request_channel + mbox_send_message + media_device_init + __media_device_register + media_device_unregister + media_entity_pads_init + memblock_end_of_DRAM + memcmp + memcpy + __memcpy_fromio + __memcpy_toio + memmove + memparse + memremap + memset64 + memset + __memset_io + memstart_addr + memunmap + migrate_swap + mipi_dsi_attach + mipi_dsi_dcs_read + mipi_dsi_dcs_write_buffer + mipi_dsi_detach + mipi_dsi_driver_register_full + mipi_dsi_driver_unregister + mipi_dsi_generic_write + mipi_dsi_host_register + mipi_dsi_host_unregister + misc_deregister + misc_register + mktime64 + mmc_add_host + mmc_alloc_host + mmc_can_gpio_cd + mmc_cqe_request_done + mmc_detect_change + mmc_free_host + mmc_gpio_get_cd + mmc_gpio_get_ro + mmc_of_parse + mmc_regulator_get_supply + mmc_regulator_set_ocr + mmc_regulator_set_vqmmc + mmc_remove_host + mmc_request_done + mmc_send_tuning + __mmdrop + mmput + mod_delayed_work_on + mod_timer + mod_timer_pending + module_layout + module_put + __msecs_to_jiffies + msleep + msleep_interruptible + __mutex_init + mutex_is_locked + mutex_lock + mutex_lock_interruptible + mutex_lock_killable + mutex_trylock + mutex_unlock + napi_disable + napi_gro_flush + napi_gro_receive + __napi_schedule + napi_schedule_prep + nd_tbl + netdev_alloc_frag + __netdev_alloc_skb + netif_carrier_off + netif_carrier_on + netif_napi_add + netif_receive_skb + netif_rx + netif_rx_ni + netif_tx_stop_all_queues + netif_tx_wake_queue + __netlink_kernel_create + netlink_kernel_release + netlink_unicast + net_namespace_list + nf_register_net_hooks + nf_unregister_net_hooks + __nla_parse + nla_put + nla_put_nohdr + __nlmsg_put + no_llseek + nonseekable_open + nr_cpu_ids + nsecs_to_jiffies + ns_to_timespec64 + n_tty_ioctl_helper + __num_online_cpus + nvmem_cell_get + nvmem_cell_put + nvmem_cell_read + nvmem_cell_read_u32 + nvmem_cell_write + nvmem_device_get + nvmem_device_put + nvmem_device_read + of_address_to_resource + of_alias_get_id + of_clk_add_provider + of_clk_del_provider + of_clk_get + of_clk_get_by_name + of_clk_get_from_provider + of_clk_src_onecell_get + of_clk_src_simple_get + of_count_phandle_with_args + of_cpu_node_to_id + of_devfreq_cooling_register_power + of_device_get_match_data + of_device_is_available + of_device_is_compatible + of_dma_configure_id + of_dma_controller_free + of_dma_controller_register + of_dma_xlate_by_chan_id + of_drm_find_bridge + of_drm_find_panel + of_find_backlight_by_node + of_find_compatible_node + of_find_device_by_node + of_find_matching_node_and_match + of_find_node_by_name + of_find_node_opts_by_path + of_find_node_with_property + of_find_property + of_fwnode_ops + of_genpd_add_device + of_genpd_add_provider_onecell + of_get_address + of_get_child_by_name + of_get_cpu_node + of_get_named_gpio_flags + of_get_next_available_child + of_get_next_child + of_get_next_parent + of_get_parent + of_get_property + of_graph_get_next_endpoint + of_graph_get_remote_node + of_graph_get_remote_port_parent + of_icc_get + of_icc_xlate_onecell + of_iomap + of_irq_find_parent + of_irq_get + of_irq_parse_one + of_irq_to_resource_table + of_machine_is_compatible + of_match_device + of_match_node + of_parse_phandle + of_parse_phandle_with_args + of_parse_phandle_with_fixed_args + of_phandle_iterator_init + of_phandle_iterator_next + of_phy_simple_xlate + of_platform_depopulate + of_platform_device_create + of_platform_populate + of_property_count_elems_of_size + of_property_match_string + of_property_read_string + of_property_read_string_helper + of_property_read_u32_index + of_property_read_u64 + of_property_read_variable_u16_array + of_property_read_variable_u32_array + of_property_read_variable_u64_array + of_property_read_variable_u8_array + of_prop_next_string + of_prop_next_u32 + of_remove_property + of_reserved_mem_device_init_by_idx + of_reserved_mem_lookup + of_thermal_get_trip_points + of_translate_address + on_each_cpu + oops_in_progress + page_endio + page_mapping + __page_pinner_migration_failed + panic + panic_notifier_list + param_array_ops + param_get_bool + param_get_charp + param_get_int + param_get_uint + param_get_ulong + param_ops_bool + param_ops_byte + param_ops_charp + param_ops_int + param_ops_string + param_ops_uint + param_set_bool + param_set_charp + param_set_uint + param_set_ulong + pause_cpus + PDE_DATA + __per_cpu_offset + perf_event_update_userpage + perf_pmu_migrate_context + perf_pmu_register + perf_pmu_unregister + perf_trace_buf_alloc + perf_trace_run_bpf_submit + pfn_valid + phy_exit + phy_get + phy_init + phy_power_off + phy_power_on + phy_put + phy_set_mode_ext + pid_task + pinconf_generic_parse_dt_config + pinctrl_dev_get_drvdata + pinctrl_enable + pinctrl_gpio_direction_input + pinctrl_gpio_direction_output + pinctrl_lookup_state + pinctrl_pm_select_default_state + pinctrl_pm_select_sleep_state + pinctrl_put + pinctrl_select_state + pinctrl_utils_add_map_configs + pinctrl_utils_free_map + pinctrl_utils_reserve_map + pin_user_pages_fast + platform_bus_type + platform_device_add + platform_device_alloc + platform_device_put + platform_device_register + platform_device_register_full + platform_device_unregister + __platform_driver_register + platform_driver_unregister + platform_get_irq + platform_get_irq_byname + platform_get_irq_optional + platform_get_resource + platform_get_resource_byname + __platform_register_drivers + platform_unregister_drivers + pm_genpd_add_device + pm_genpd_add_subdomain + pm_genpd_init + pm_genpd_remove_device + __pm_relax + pm_relax + __pm_runtime_disable + pm_runtime_enable + pm_runtime_force_resume + pm_runtime_force_suspend + pm_runtime_get_if_active + __pm_runtime_idle + __pm_runtime_resume + pm_runtime_set_autosuspend_delay + __pm_runtime_set_status + __pm_runtime_suspend + __pm_runtime_use_autosuspend + __pm_stay_awake + pm_stay_awake + pm_suspend_default_s2idle + pm_system_wakeup + pm_wakeup_dev_event + pm_wakeup_ws_event + pm_wq + power_supply_changed + power_supply_get_by_name + power_supply_get_drvdata + power_supply_get_property + power_supply_register + power_supply_reg_notifier + power_supply_set_property + preempt_schedule + preempt_schedule_notrace + prepare_to_wait_event + print_hex_dump + printk + proc_create + proc_create_data + proc_mkdir + proc_remove + proc_set_user + put_device + put_disk + __put_page + __put_task_struct + put_unused_fd + pwm_apply_state + pwmchip_add + pwmchip_remove + queue_delayed_work_on + queue_work_on + ___ratelimit + raw_notifier_call_chain + raw_notifier_chain_register + raw_notifier_chain_unregister + _raw_read_lock + _raw_read_lock_bh + _raw_read_trylock + _raw_read_unlock + _raw_read_unlock_bh + _raw_spin_lock + _raw_spin_lock_bh + _raw_spin_lock_irq + _raw_spin_lock_irqsave + _raw_spin_trylock + _raw_spin_unlock + _raw_spin_unlock_bh + _raw_spin_unlock_irq + _raw_spin_unlock_irqrestore + _raw_write_lock + _raw_write_lock_bh + _raw_write_lock_irqsave + _raw_write_unlock + _raw_write_unlock_bh + _raw_write_unlock_irqrestore + rb_erase + rb_first + rb_insert_color + rb_next + rb_prev + rb_replace_node + rcu_idle_enter + rcu_idle_exit + __rcu_read_lock + __rcu_read_unlock + rdev_get_dev + rdev_get_drvdata + rdev_get_id + refcount_warn_saturate + __refrigerator + regcache_cache_only + regcache_mark_dirty + regcache_sync + register_blkdev + __register_chrdev + register_chrdev_region + register_die_notifier + register_inetaddr_notifier + register_kprobe + register_module_notifier + register_netdev + register_netdevice + register_netdevice_notifier + register_pernet_subsys + register_pm_notifier + register_reboot_notifier + __register_rpmsg_driver + register_shrinker + register_syscore_ops + register_virtio_device + register_virtio_driver + regmap_bulk_read + regmap_bulk_write + regmap_field_read + regmap_field_update_bits_base + __regmap_init + regmap_irq_get_domain + regmap_read + regmap_update_bits_base + regmap_write + regulator_count_voltages + regulator_disable + regulator_disable_regmap + regulator_enable + regulator_enable_regmap + regulator_get + regulator_get_optional + regulator_get_voltage + regulator_get_voltage_sel_regmap + regulator_is_enabled + regulator_is_enabled_regmap + regulator_list_voltage + regulator_list_voltage_linear + regulator_list_voltage_linear_range + regulator_list_voltage_table + regulator_map_voltage_iterate + regulator_map_voltage_linear_range + regulator_notifier_call_chain + regulator_put + regulator_set_current_limit + regulator_set_mode + regulator_set_voltage + regulator_set_voltage_sel_regmap + regulator_set_voltage_time + regulator_set_voltage_time_sel + regulator_sync_voltage + regulatory_hint + release_firmware + release_pages + __release_region + remap_pfn_range + remap_vmalloc_range + remove_proc_entry + remove_proc_subtree + remove_wait_queue + request_firmware + request_firmware_nowait + __request_percpu_irq + __request_region + request_threaded_irq + reset_control_assert + reset_control_deassert + reset_controller_register + reset_control_reset + resume_cpus + revalidate_disk_size + rpmsg_create_ept + rpmsg_destroy_ept + rpmsg_register_device + rpmsg_send + rpmsg_trysend + rpmsg_unregister_device + rproc_add + rproc_add_subdev + rproc_alloc + rproc_del + rproc_free + rproc_remove_subdev + rps_needed + rtc_ktime_to_tm + rtc_nvmem_register + __rtc_register_device + rtc_time64_to_tm + rtc_tm_to_ktime + rtc_tm_to_time64 + rtc_update_irq + rtc_valid_tm + rtnl_is_locked + rtnl_lock + rtnl_unlock + runqueues + sched_clock + sched_feat_keys + sched_setattr_nocheck + sched_set_normal + sched_setscheduler + sched_uclamp_used + schedule + schedule_timeout + schedutil_cpu_util + scmi_driver_register + scmi_driver_unregister + scnprintf + sdio_claim_host + sdio_claim_irq + sdio_disable_func + sdio_enable_func + sdio_f0_readb + sdio_f0_writeb + sdio_get_host_pm_caps + sdio_readb + sdio_readl + sdio_readsb + sdio_register_driver + sdio_release_host + sdio_release_irq + sdio_set_block_size + sdio_set_host_pm_flags + sdio_signal_irq + sdio_unregister_driver + sdio_writeb + sdio_writel + sdio_writesb + send_sig + seq_hex_dump + seq_lseek + seq_open + seq_open_private + seq_printf + seq_putc + seq_puts + seq_read + seq_release + seq_release_private + seq_write + serial8250_do_set_termios + serial8250_do_shutdown + serial8250_do_startup + serial8250_get_port + serial8250_register_8250_port + serial8250_resume_port + serial8250_rpm_get + serial8250_rpm_put + serial8250_suspend_port + serial8250_unregister_port + set_cpus_allowed_ptr + set_normalized_timespec64 + set_page_dirty_lock + __SetPageMovable + set_task_cpu + set_user_nice + sg_alloc_table + sg_alloc_table_from_pages + sg_free_table + sg_init_one + sg_init_table + sg_miter_next + sg_miter_start + sg_miter_stop + sg_next + __sg_page_iter_next + __sg_page_iter_start + shmem_file_setup + si_mem_available + simple_attr_open + simple_attr_read + simple_attr_release + simple_attr_write + simple_open + simple_read_from_buffer + simple_write_to_buffer + single_open + single_release + skb_add_rx_frag + skb_copy + skb_dequeue + skb_pull + skb_pull_rcsum + skb_push + skb_put + skb_queue_head + skb_queue_purge + skb_queue_tail + skb_realloc_headroom + skb_trim + snd_ctl_boolean_mono_info + snd_jack_set_key + snd_pcm_format_physical_width + snd_pcm_format_width + snd_pcm_hw_constraint_integer + snd_pcm_hw_constraint_minmax + snd_pcm_hw_constraint_step + snd_pcm_lib_free_pages + snd_pcm_lib_malloc_pages + snd_pcm_lib_preallocate_free_for_all + snd_pcm_lib_preallocate_pages_for_all + snd_pcm_period_elapsed + snd_pcm_set_ops + snd_soc_add_component_controls + snd_soc_bytes_info_ext + snd_soc_bytes_tlv_callback + snd_soc_card_jack_new + snd_soc_component_exit_regmap + snd_soc_component_init_regmap + snd_soc_dai_set_sysclk + snd_soc_dapm_add_routes + snd_soc_dapm_disable_pin + snd_soc_dapm_get_enum_double + snd_soc_dapm_get_pin_switch + snd_soc_dapm_get_volsw + snd_soc_dapm_info_pin_switch + snd_soc_dapm_new_controls + snd_soc_dapm_new_widgets + snd_soc_dapm_put_enum_double + snd_soc_dapm_put_pin_switch + snd_soc_dapm_put_volsw + snd_soc_get_volsw + snd_soc_info_enum_double + snd_soc_info_volsw + snd_soc_jack_report + snd_soc_new_compress + snd_soc_of_get_dai_link_codecs + snd_soc_poweroff + snd_soc_put_volsw + snd_soc_register_component + snd_soc_resume + snd_soc_rtdcom_lookup + snd_soc_set_runtime_hwparams + snd_soc_unregister_component + snprintf + soc_device_register + soc_device_unregister + sort + __spi_alloc_controller + spi_bus_type + spi_finalize_current_transfer + __spi_register_driver + spi_setup + spi_sync + spmi_controller_add + spmi_controller_alloc + spmi_controller_remove + __spmi_driver_register + spmi_ext_register_read + spmi_ext_register_readl + spmi_ext_register_write + spmi_ext_register_writel + spmi_register_read + spmi_register_write + spmi_register_zero_write + sprintf + srcu_init_notifier_head + srcu_notifier_call_chain + srcu_notifier_chain_register + srcu_notifier_chain_unregister + sscanf + __stack_chk_fail + __stack_chk_guard + stack_trace_save + static_key_slow_dec + static_key_slow_inc + strcasecmp + strchr + strcmp + strcpy + strcspn + strlcat + strlcpy + strlen + strncasecmp + strncat + strncmp + strncpy + strncpy_from_user + strnlen + strnstr + strpbrk + strrchr + strreplace + strscpy + strsep + strspn + strstr + suspend_set_ops + __sw_hweight32 + __sw_hweight64 + sync_file_create + sync_file_get_fence + synchronize_irq + synchronize_net + synchronize_rcu + syscon_node_to_regmap + syscon_regmap_lookup_by_compatible + syscon_regmap_lookup_by_phandle + syscore_resume + syscore_suspend + sysfs_create_bin_file + sysfs_create_file_ns + sysfs_create_group + sysfs_create_link + __sysfs_match_string + sysfs_remove_bin_file + sysfs_remove_file_ns + sysfs_remove_group + sysfs_remove_link + sysfs_streq + system_freezable_power_efficient_wq + system_freezing_cnt + system_highpri_wq + system_long_wq + system_power_efficient_wq + system_state + system_unbound_wq + system_wq + sys_tz + task_active_pid_ns + __tasklet_hi_schedule + tasklet_init + tasklet_kill + __tasklet_schedule + __task_pid_nr_ns + thermal_cooling_device_unregister + thermal_of_cooling_device_register + thermal_zone_get_temp + thermal_zone_get_zone_by_name + tick_nohz_get_idle_calls_cpu + timecounter_init + timecounter_read + timer_unstable_counter_workaround + topology_set_thermal_pressure + _totalram_pages + __trace_bprintk + __trace_bputs + trace_event_buffer_commit + trace_event_buffer_reserve + trace_event_ignore_this_pid + trace_event_raw_init + trace_event_reg + trace_handle_return + __traceiter_android_rvh_dequeue_task + __traceiter_android_rvh_enqueue_task + __traceiter_android_rvh_find_busiest_group + __traceiter_android_rvh_find_energy_efficient_cpu + __traceiter_android_rvh_finish_prio_fork + __traceiter_android_rvh_prepare_prio_fork + __traceiter_android_rvh_rtmutex_prepare_setprio + __traceiter_android_rvh_sched_newidle_balance + __traceiter_android_rvh_select_task_rq_fair + __traceiter_android_rvh_setscheduler + __traceiter_android_rvh_set_user_nice + __traceiter_android_rvh_tick_entry + __traceiter_android_vh_alter_futex_plist_add + __traceiter_android_vh_alter_rwsem_list_add + __traceiter_android_vh_arch_set_freq_scale + __traceiter_android_vh_binder_restore_priority + __traceiter_android_vh_binder_set_priority + __traceiter_android_vh_binder_transaction_init + __traceiter_android_vh_cgroup_set_task + __traceiter_android_vh_em_cpu_energy + __traceiter_android_vh_rwsem_init + __traceiter_android_vh_rwsem_wake + __traceiter_android_vh_rwsem_write_finished + __traceiter_android_vh_scheduler_tick + __traceiter_android_vh_set_wake_flags + __traceiter_android_vh_syscall_prctl_finished + __traceiter_cpu_frequency + __traceiter_gpu_mem_total + __traceiter_pelt_se_tp + __traceiter_rwmmio_post_read + __traceiter_rwmmio_read + __traceiter_rwmmio_write + trace_output_call + __tracepoint_android_rvh_dequeue_task + __tracepoint_android_rvh_enqueue_task + __tracepoint_android_rvh_find_busiest_group + __tracepoint_android_rvh_find_energy_efficient_cpu + __tracepoint_android_rvh_finish_prio_fork + __tracepoint_android_rvh_prepare_prio_fork + __tracepoint_android_rvh_rtmutex_prepare_setprio + __tracepoint_android_rvh_sched_newidle_balance + __tracepoint_android_rvh_select_task_rq_fair + __tracepoint_android_rvh_setscheduler + __tracepoint_android_rvh_set_user_nice + __tracepoint_android_rvh_tick_entry + __tracepoint_android_vh_alter_futex_plist_add + __tracepoint_android_vh_alter_rwsem_list_add + __tracepoint_android_vh_arch_set_freq_scale + __tracepoint_android_vh_binder_restore_priority + __tracepoint_android_vh_binder_set_priority + __tracepoint_android_vh_binder_transaction_init + __tracepoint_android_vh_cgroup_set_task + __tracepoint_android_vh_em_cpu_energy + __tracepoint_android_vh_rwsem_init + __tracepoint_android_vh_rwsem_wake + __tracepoint_android_vh_rwsem_write_finished + __tracepoint_android_vh_scheduler_tick + __tracepoint_android_vh_set_wake_flags + __tracepoint_android_vh_syscall_prctl_finished + __tracepoint_cpu_frequency + __tracepoint_gpu_mem_total + __tracepoint_pelt_se_tp + tracepoint_probe_register + tracepoint_probe_unregister + __tracepoint_rwmmio_post_read + __tracepoint_rwmmio_read + __tracepoint_rwmmio_write + trace_print_array_seq + trace_print_flags_seq + trace_print_symbols_seq + __trace_puts + trace_raw_output_prep + trace_seq_printf + trace_seq_putc + tracing_off + try_module_get + try_wait_for_completion + tty_driver_flush_buffer + tty_flip_buffer_push + tty_insert_flip_string_fixed_flag + tty_register_ldisc + tty_termios_baud_rate + tty_termios_encode_baud_rate + tty_unregister_ldisc + typec_get_drvdata + typec_mux_get_drvdata + typec_mux_register + typec_mux_unregister + typec_partner_set_identity + typec_register_partner + typec_register_port + typec_set_data_role + typec_set_orientation + typec_set_pwr_opmode + typec_set_pwr_role + typec_set_vconn_role + typec_switch_get_drvdata + typec_switch_register + typec_switch_unregister + typec_unregister_partner + uart_get_baud_rate + uart_get_divisor + uart_update_timeout + uclamp_eff_value + __udelay + ufshcd_auto_hibern8_update + ufshcd_delay_us + ufshcd_dme_get_attr + ufshcd_dme_set_attr + ufshcd_dump_regs + ufshcd_fixup_dev_quirks + ufshcd_get_pwr_dev_param + ufshcd_hba_enable + ufshcd_link_recovery + ufshcd_make_hba_operational + ufshcd_pltfrm_init + ufshcd_pltfrm_resume + ufshcd_pltfrm_runtime_idle + ufshcd_pltfrm_runtime_resume + ufshcd_pltfrm_runtime_suspend + ufshcd_pltfrm_shutdown + ufshcd_pltfrm_suspend + ufshcd_remove + ufshcd_uic_hibern8_exit + unlock_page + unmap_mapping_range + unpin_user_pages + unregister_blkdev + __unregister_chrdev + unregister_chrdev_region + unregister_die_notifier + unregister_inetaddr_notifier + unregister_kprobe + unregister_module_notifier + unregister_netdev + unregister_netdevice_notifier + unregister_netdevice_queue + unregister_pernet_subsys + unregister_pm_notifier + unregister_reboot_notifier + unregister_rpmsg_driver + unregister_shrinker + unregister_virtio_device + unregister_virtio_driver + up + update_devfreq + update_rq_clock + up_read + up_write + usb_add_gadget_udc + usb_add_hcd + usb_create_hcd + usb_create_shared_hcd + usb_debug_root + usb_del_gadget_udc + usb_disabled + usb_ep_set_halt + usb_ep_set_maxpacket_limit + usb_gadget_giveback_request + usb_gadget_map_request + usb_gadget_set_state + usb_gadget_unmap_request + usb_get_dr_mode + usb_get_maximum_speed + usb_hcd_is_primary_hcd + usb_hcd_poll_rh_status + usb_put_hcd + usb_remove_hcd + usb_role_switch_get + usb_role_switch_get_drvdata + usb_role_switch_register + usb_role_switch_set_role + usb_role_switch_unregister + usb_speed_string + __usecs_to_jiffies + usleep_range + uuid_null + v4l2_async_notifier_add_fwnode_subdev + v4l2_async_notifier_init + v4l2_async_notifier_register + v4l2_async_notifier_unregister + v4l2_async_register_subdev + v4l2_async_unregister_subdev + v4l2_ctrl_handler_free + v4l2_ctrl_handler_init_class + v4l2_ctrl_handler_setup + v4l2_ctrl_new_custom + v4l2_ctrl_new_std + v4l2_ctrl_new_std_menu + __v4l2_ctrl_s_ctrl + v4l2_ctrl_subscribe_event + v4l2_device_register + __v4l2_device_register_subdev_nodes + v4l2_device_unregister + v4l2_event_queue_fh + v4l2_event_subscribe + v4l2_event_unsubscribe + v4l2_fh_add + v4l2_fh_del + v4l2_fh_exit + v4l2_fh_init + v4l2_fh_is_singular + v4l2_m2m_buf_queue + v4l2_m2m_buf_remove + v4l2_m2m_buf_remove_by_buf + v4l2_m2m_ctx_init + v4l2_m2m_ctx_release + v4l2_m2m_dqbuf + v4l2_m2m_fop_mmap + v4l2_m2m_fop_poll + v4l2_m2m_get_curr_priv + v4l2_m2m_get_vq + v4l2_m2m_init + v4l2_m2m_ioctl_create_bufs + v4l2_m2m_ioctl_dqbuf + v4l2_m2m_ioctl_expbuf + v4l2_m2m_ioctl_prepare_buf + v4l2_m2m_ioctl_qbuf + v4l2_m2m_ioctl_querybuf + v4l2_m2m_ioctl_reqbufs + v4l2_m2m_ioctl_streamoff + v4l2_m2m_ioctl_streamon + v4l2_m2m_job_finish + v4l2_m2m_next_buf + v4l2_m2m_qbuf + v4l2_m2m_release + v4l2_m2m_resume + v4l2_m2m_streamoff + v4l2_m2m_suspend + v4l2_m2m_try_schedule + v4l2_src_change_event_subscribe + v4l2_subdev_init + v4l_bound_align_image + vabits_actual + vb2_buffer_done + vb2_dma_contig_memops + vb2_ops_wait_finish + vb2_ops_wait_prepare + vb2_plane_cookie + vb2_plane_vaddr + vb2_queue_init + vb2_queue_release + vchan_dma_desc_free_list + vchan_init + vchan_tx_desc_free + vchan_tx_submit + vfree + video_devdata + video_device_alloc + video_device_release + video_device_release_empty + video_ioctl2 + __video_register_device + video_unregister_device + virtqueue_add_inbuf + virtqueue_add_outbuf + virtqueue_detach_unused_buf + virtqueue_get_buf + virtqueue_get_vring_size + virtqueue_kick + virtqueue_kick_prepare + virtqueue_notify + vmalloc + vmalloc_to_page + vmalloc_to_pfn + vmalloc_user + vmap + vm_event_states + vmf_insert_pfn_prot + vm_node_stat + vm_zone_stat + vring_del_virtqueue + vring_interrupt + vring_new_virtqueue + vscnprintf + vsnprintf + vsprintf + vunmap + vzalloc + wait_for_completion + wait_for_completion_interruptible + wait_for_completion_interruptible_timeout + wait_for_completion_killable + wait_for_completion_timeout + wait_woken + __wake_up + __wake_up_locked + wake_up_process + wakeup_source_add + wakeup_source_create + wakeup_source_register + wakeup_source_unregister + __warn_printk + watchdog_init_timeout + watchdog_set_restart_priority + wiphy_apply_custom_regulatory + wiphy_free + wiphy_new_nm + wiphy_register + wiphy_unregister + wireless_send_event + woken_wake_function + work_busy + work_on_cpu + xhci_add_endpoint + xhci_check_bandwidth + xhci_drop_endpoint + xhci_gen_setup + xhci_get_endpoint_index + xhci_get_ep_ctx + xhci_init_driver + xhci_reset_bandwidth + zlib_deflate + zlib_deflateEnd + zlib_deflateInit2 + zlib_deflateReset + zlib_deflate_workspacesize diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 748fa06761fe..39ef2d1c143c 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -11,6 +11,8 @@ add_uevent_var add_wait_queue adjust_managed_page_count + aes_encrypt + aes_expandkey alarm_cancel alarm_init alarm_start_relative @@ -42,6 +44,7 @@ arm64_const_caps_ready arm64_use_ng_mappings __arm_smccc_smc + arp_tbl atomic_notifier_call_chain atomic_notifier_chain_register atomic_notifier_chain_unregister @@ -56,6 +59,7 @@ bdput bio_endio bitmap_allocate_region + __bitmap_andnot __bitmap_clear bitmap_find_next_zero_area_off __bitmap_or @@ -85,10 +89,10 @@ blocking_notifier_call_chain blocking_notifier_chain_register blocking_notifier_chain_unregister + bpf_trace_run1 bpf_trace_run10 bpf_trace_run11 bpf_trace_run12 - bpf_trace_run1 bpf_trace_run2 bpf_trace_run3 bpf_trace_run4 @@ -272,6 +276,9 @@ cpu_latency_qos_remove_request cpu_latency_qos_request_active cpu_latency_qos_update_request + cpu_maps_update_begin + cpu_maps_update_done + cpumask_any_but cpumask_next cpumask_next_and cpu_number @@ -370,6 +377,7 @@ dev_alloc_name dev_coredumpv _dev_crit + __dev_direct_xmit dev_driver_string _dev_emerg _dev_err @@ -377,6 +385,7 @@ devfreq_add_device devfreq_add_governor devfreq_cooling_unregister + devfreq_get_devfreq_by_node devfreq_remove_device devfreq_remove_governor devfreq_resume_device @@ -385,6 +394,7 @@ __dev_get_by_index dev_get_by_index dev_get_by_name + dev_get_by_name_rcu dev_get_regmap device_add device_add_disk @@ -492,6 +502,8 @@ devm_reset_control_array_get __devm_reset_control_get devm_reset_controller_register + devm_rproc_add + devm_rproc_alloc devm_rtc_allocate_device devm_snd_soc_register_card devm_thermal_of_cooling_device_register @@ -582,6 +594,7 @@ dma_fence_remove_callback dma_fence_signal dma_fence_signal_locked + dma_fence_signal_timestamp_locked dma_fence_wait_timeout dma_free_attrs dma_get_sgtable_attrs @@ -851,6 +864,7 @@ drm_universal_plane_init drm_vblank_init drm_wait_one_vblank + dst_release dump_stack __dynamic_dev_dbg __dynamic_pr_debug @@ -971,6 +985,7 @@ get_zeroed_page gfp_zone gic_nonsecure_priorities + gic_resume gov_attr_set_init gov_attr_set_put governor_sysfs_ops @@ -1039,6 +1054,7 @@ i2c_del_adapter i2c_del_driver i2c_get_dma_safe_msg_buf + i2c_new_client_device i2c_put_dma_safe_msg_buf i2c_register_driver i2c_transfer @@ -1158,11 +1174,13 @@ __iowrite32_copy ip_compute_csum ipi_desc_get + ip_route_output_flow iput __ipv6_addr_type ipv6_ext_hdr ipv6_find_hdr ipv6_skip_exthdr + ipv6_stub irq_chip_ack_parent irq_chip_disable_parent irq_chip_enable_parent @@ -1191,6 +1209,7 @@ irq_domain_update_bus_token irq_domain_xlate_onecell irq_domain_xlate_twocell + irq_do_set_affinity irq_find_mapping irq_find_matching_fwspec irq_get_irqchip_state @@ -1214,6 +1233,7 @@ isolate_and_split_free_page isolate_anon_lru_page is_vmalloc_addr + iterate_fd jiffies jiffies_to_msecs jiffies_to_usecs @@ -1233,6 +1253,7 @@ kern_mount kern_unmount __kfifo_alloc + __kfifo_free __kfifo_in __kfifo_out kfree @@ -1379,8 +1400,8 @@ mempool_free mempool_free_slab memremap - memset64 memset + memset64 __memset_io memstart_addr memunmap @@ -1422,6 +1443,10 @@ napi_gro_receive __napi_schedule napi_schedule_prep + neigh_destroy + __neigh_event_send + neigh_lookup + neigh_xmit __netdev_alloc_skb netdev_rx_handler_register netdev_rx_handler_unregister @@ -1448,10 +1473,10 @@ nla_find nla_memcpy __nla_parse - nla_put_64bit nla_put - nla_reserve_64bit + nla_put_64bit nla_reserve + nla_reserve_64bit __nla_validate __nlmsg_put no_llseek @@ -1530,6 +1555,7 @@ of_graph_is_present of_graph_parse_endpoint of_hwspin_lock_get_id + of_i2c_get_board_info of_icc_get of_icc_xlate_onecell of_iomap @@ -1582,6 +1608,7 @@ overflowuid page_endio page_mapping + __page_pinner_migration_failed panic panic_notifier_list panic_timeout @@ -1602,20 +1629,26 @@ param_set_copystring param_set_int pause_cpus + pci_aer_clear_nonfatal_status pci_alloc_irq_vectors_affinity pci_assign_resource pci_bus_type pci_clear_master pci_d3cold_disable pci_device_group + pci_device_is_present pci_dev_present pci_disable_device pci_disable_msi + pci_disable_pcie_error_reporting + pcie_capability_clear_and_set_word pcie_capability_read_word pci_enable_device + pci_enable_pcie_error_reporting pci_find_ext_capability pci_free_irq_vectors pci_get_device + pci_get_domain_bus_and_slot pci_host_probe pci_iomap pci_irq_vector @@ -2096,6 +2129,7 @@ sg_pcopy_from_buffer sg_pcopy_to_buffer sg_scsi_ioctl + shmem_mark_page_lazyfree shmem_truncate_range show_rcu_gp_kthreads show_regs @@ -2347,6 +2381,7 @@ task_may_not_preempt __task_pid_nr_ns __task_rq_lock + thermal_cooling_device_register thermal_cooling_device_unregister thermal_of_cooling_device_register thermal_pressure @@ -2363,6 +2398,7 @@ time64_to_tm timer_unstable_counter_workaround topology_set_thermal_pressure + topology_update_done _totalram_pages total_swapcache_pages trace_array_get_by_name @@ -2381,6 +2417,7 @@ __traceiter_android_rvh_account_irq __traceiter_android_rvh_build_perf_domains __traceiter_android_rvh_can_migrate_task + __traceiter_android_rvh_cgroup_force_kthread_migration __traceiter_android_rvh_check_preempt_wakeup __traceiter_android_rvh_cpu_cgroup_attach __traceiter_android_rvh_cpu_cgroup_online @@ -2390,6 +2427,7 @@ __traceiter_android_rvh_find_busiest_queue __traceiter_android_rvh_find_lowest_rq __traceiter_android_rvh_flush_task + __traceiter_android_rvh_gic_v3_set_affinity __traceiter_android_rvh_irqs_disable __traceiter_android_rvh_irqs_enable __traceiter_android_rvh_migrate_queued_task @@ -2432,13 +2470,18 @@ __traceiter_android_vh_binder_wakeup_ilocked __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit + __traceiter_android_vh_cpuidle_psci_enter + __traceiter_android_vh_cpuidle_psci_exit __traceiter_android_vh_dump_throttled_rt_tasks + __traceiter_android_vh_force_compatible_post + __traceiter_android_vh_force_compatible_pre __traceiter_android_vh_freq_table_limits __traceiter_android_vh_ftrace_dump_buffer __traceiter_android_vh_ftrace_format_check __traceiter_android_vh_ftrace_oops_enter __traceiter_android_vh_ftrace_oops_exit __traceiter_android_vh_ftrace_size_check + __traceiter_android_vh_gic_resume __traceiter_android_vh_gpio_block_read __traceiter_android_vh_iommu_setup_dma_ops __traceiter_android_vh_ipi_stop @@ -2450,6 +2493,7 @@ __traceiter_android_vh_show_resume_epoch_val __traceiter_android_vh_show_suspend_epoch_val __traceiter_android_vh_timer_calc_index + __traceiter_android_vh_update_topology_flags_workfn __traceiter_binder_transaction_received __traceiter_cpu_frequency __traceiter_cpu_frequency_limits @@ -2466,6 +2510,7 @@ __tracepoint_android_rvh_account_irq __tracepoint_android_rvh_build_perf_domains __tracepoint_android_rvh_can_migrate_task + __tracepoint_android_rvh_cgroup_force_kthread_migration __tracepoint_android_rvh_check_preempt_wakeup __tracepoint_android_rvh_cpu_cgroup_attach __tracepoint_android_rvh_cpu_cgroup_online @@ -2475,6 +2520,7 @@ __tracepoint_android_rvh_find_busiest_queue __tracepoint_android_rvh_find_lowest_rq __tracepoint_android_rvh_flush_task + __tracepoint_android_rvh_gic_v3_set_affinity __tracepoint_android_rvh_irqs_disable __tracepoint_android_rvh_irqs_enable __tracepoint_android_rvh_migrate_queued_task @@ -2515,21 +2561,29 @@ __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_binder_transaction_init __tracepoint_android_vh_binder_wakeup_ilocked + __tracepoint_android_vh_check_uninterruptible_tasks + __tracepoint_android_vh_check_uninterruptible_tasks_dn __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit + __tracepoint_android_vh_cpuidle_psci_enter + __tracepoint_android_vh_cpuidle_psci_exit __tracepoint_android_vh_dump_throttled_rt_tasks + __tracepoint_android_vh_force_compatible_post + __tracepoint_android_vh_force_compatible_pre __tracepoint_android_vh_freq_table_limits __tracepoint_android_vh_ftrace_dump_buffer __tracepoint_android_vh_ftrace_format_check __tracepoint_android_vh_ftrace_oops_enter __tracepoint_android_vh_ftrace_oops_exit __tracepoint_android_vh_ftrace_size_check + __tracepoint_android_vh_gic_resume __tracepoint_android_vh_gpio_block_read __tracepoint_android_vh_iommu_setup_dma_ops __tracepoint_android_vh_ipi_stop __tracepoint_android_vh_jiffies_update __tracepoint_android_vh_logbuf __tracepoint_android_vh_printk_hotplug + __tracepoint_android_vh_process_killed __tracepoint_android_vh_psi_event __tracepoint_android_vh_psi_group __tracepoint_android_vh_scheduler_tick @@ -2537,6 +2591,7 @@ __tracepoint_android_vh_show_resume_epoch_val __tracepoint_android_vh_show_suspend_epoch_val __tracepoint_android_vh_timer_calc_index + __tracepoint_android_vh_update_topology_flags_workfn __tracepoint_binder_transaction_received __tracepoint_cpu_frequency __tracepoint_cpu_frequency_limits @@ -2804,6 +2859,7 @@ vmalloc_to_page vmalloc_to_pfn vmap + vmemdup_user vmf_insert_mixed vmf_insert_pfn vm_get_page_prot diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index 15c562660e3c..c1c6e5e983bc 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -2564,7 +2564,7 @@ blk_status_to_errno blkdev_get filp_close - filp_open + filp_open_block file_path I_BDEV set_blocksize diff --git a/android/abi_gki_aarch64_virtual_device b/android/abi_gki_aarch64_virtual_device index 51bff7c88d41..db3c296e0791 100644 --- a/android/abi_gki_aarch64_virtual_device +++ b/android/abi_gki_aarch64_virtual_device @@ -109,6 +109,7 @@ ethtool_op_get_link eth_validate_addr event_triggers_call + failure_tracking fd_install finish_wait flush_work @@ -230,6 +231,7 @@ of_find_property of_get_property of_property_read_variable_u32_array + __page_pinner_migration_failed param_ops_bint param_ops_bool param_ops_charp @@ -1200,6 +1202,7 @@ netif_set_real_num_tx_queues __netif_set_xps_queue net_ratelimit + __pskb_pull_tail _raw_spin_trylock sched_clock skb_coalesce_rx_frag diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi new file mode 100644 index 000000000000..867cd0739539 --- /dev/null +++ b/android/abi_gki_aarch64_xiaomi @@ -0,0 +1,114 @@ +[abi_symbol_list] +# commonly used symbols + +# required by xxx.ko + +# required by touch module + proc_mkdir_data + +# required by aw8697-haptic.ko + devm_gpio_free + i2c_smbus_read_byte_data + i2c_smbus_write_byte_data + +#required by memory module + blk_execute_rq + blk_rq_map_kern + scsi_device_lookup + scsi_host_lookup + scsi_host_put + ufshcd_read_desc_param + utf16s_to_utf8s + async_schedule_node + blk_ksm_register + blk_ksm_reprogram_all_keys + blk_mq_alloc_tag_set + blk_mq_init_queue + blk_mq_tagset_busy_iter + bsg_job_done + bsg_remove_queue + bsg_setup_queue + dev_pm_opp_remove + scsi_add_host_with_dma + scsi_block_requests + scsi_dma_unmap + scsi_is_host_device + scsi_remove_host + scsi_report_bus_reset + scsi_scan_host + scsi_unblock_requests + sg_copy_from_buffer + sg_copy_to_buffer + ufshcd_alloc_host + ufshcd_config_pwr_mode + ufshcd_dealloc_host + ufshcd_hba_enable + ufshcd_make_hba_operational + ufshcd_map_desc_id_to_length + ufshcd_query_attr_retry + ufshcd_query_flag_retry + wait_for_completion_io_timeout + __scsi_add_device + __scsi_execute + blk_mq_free_tag_set + +#required by cs35l41 module + regmap_raw_write_async + snd_soc_bytes_tlv_callback + regmap_async_complete + snd_compr_stop_error + snd_soc_component_disable_pin + snd_soc_component_force_enable_pin + snd_pcm_format_physical_width + snd_pcm_hw_constraint_list + regmap_multi_reg_write_bypassed + snd_ctl_boolean_mono_info + snd_soc_put_volsw_range + snd_soc_get_volsw_range + snd_soc_info_volsw_range + regmap_raw_write + regcache_drop_region + regmap_raw_read + regmap_multi_reg_write + regulator_bulk_enable + +#required by mtd module + __blk_mq_end_request + balance_dirty_pages_ratelimited + bdi_alloc + bdi_put + bdi_register + blk_mq_freeze_queue + blk_mq_init_sq_queue + blk_mq_quiesce_queue + blk_mq_start_request + blk_mq_unfreeze_queue + blk_mq_unquiesce_queue + blk_queue_write_cache + blk_update_request + blkdev_get_by_dev + blkdev_get_by_path + blkdev_put + deactivate_locked_super + fixed_size_llseek + generic_shutdown_super + kmsg_dump_get_buffer + kmsg_dump_register + kmsg_dump_rewind + kmsg_dump_unregister + ktime_get_coarse_real_ts64 + lockref_get + logfc + lookup_bdev + name_to_dev_t + nvmem_register + nvmem_unregister + proc_create_single_data + read_cache_page + rq_flush_dcache_pages + set_disk_ro + set_page_dirty + sget_fc + simple_strtoul + sync_blockdev + wait_for_device_probe diff --git a/android/gki_aarch64_fips140_modules b/android/gki_aarch64_fips140_modules new file mode 100644 index 000000000000..01d4fcc5c4ac --- /dev/null +++ b/android/gki_aarch64_fips140_modules @@ -0,0 +1 @@ +crypto/fips140.ko diff --git a/arch/alpha/include/asm/page.h b/arch/alpha/include/asm/page.h index e241bd88880f..fe80d19deba9 100644 --- a/arch/alpha/include/asm/page.h +++ b/arch/alpha/include/asm/page.h @@ -17,9 +17,9 @@ extern void clear_page(void *page); #define clear_user_page(page, vaddr, pg) clear_page(page) -#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \ - alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vmaddr) -#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE +#define alloc_zeroed_user_highpage_movable(vma, vaddr) \ + alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, vma, vmaddr) +#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE_MOVABLE extern void copy_page(void * _to, void * _from); #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h index d9c264dc25fc..9926cd5a17b0 100644 --- a/arch/arc/include/asm/page.h +++ b/arch/arc/include/asm/page.h @@ -7,6 +7,18 @@ #include +#ifdef CONFIG_ARC_HAS_PAE40 + +#define MAX_POSSIBLE_PHYSMEM_BITS 40 +#define PAGE_MASK_PHYS (0xff00000000ull | PAGE_MASK) + +#else /* CONFIG_ARC_HAS_PAE40 */ + +#define MAX_POSSIBLE_PHYSMEM_BITS 32 +#define PAGE_MASK_PHYS PAGE_MASK + +#endif /* CONFIG_ARC_HAS_PAE40 */ + #ifndef __ASSEMBLY__ #define clear_page(paddr) memset((paddr), 0, PAGE_SIZE) diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h index 163641726a2b..5878846f00cf 100644 --- a/arch/arc/include/asm/pgtable.h +++ b/arch/arc/include/asm/pgtable.h @@ -107,8 +107,8 @@ #define ___DEF (_PAGE_PRESENT | _PAGE_CACHEABLE) /* Set of bits not changed in pte_modify */ -#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_SPECIAL) - +#define _PAGE_CHG_MASK (PAGE_MASK_PHYS | _PAGE_ACCESSED | _PAGE_DIRTY | \ + _PAGE_SPECIAL) /* More Abbrevaited helpers */ #define PAGE_U_NONE __pgprot(___DEF) #define PAGE_U_R __pgprot(___DEF | _PAGE_READ) @@ -132,13 +132,7 @@ #define PTE_BITS_IN_PD0 (_PAGE_GLOBAL | _PAGE_PRESENT | _PAGE_HW_SZ) #define PTE_BITS_RWX (_PAGE_EXECUTE | _PAGE_WRITE | _PAGE_READ) -#ifdef CONFIG_ARC_HAS_PAE40 -#define PTE_BITS_NON_RWX_IN_PD1 (0xff00000000 | PAGE_MASK | _PAGE_CACHEABLE) -#define MAX_POSSIBLE_PHYSMEM_BITS 40 -#else -#define PTE_BITS_NON_RWX_IN_PD1 (PAGE_MASK | _PAGE_CACHEABLE) -#define MAX_POSSIBLE_PHYSMEM_BITS 32 -#endif +#define PTE_BITS_NON_RWX_IN_PD1 (PAGE_MASK_PHYS | _PAGE_CACHEABLE) /************************************************************************** * Mapping of vm_flags (Generic VM) to PTE flags (arch specific) diff --git a/arch/arc/include/uapi/asm/page.h b/arch/arc/include/uapi/asm/page.h index 2a97e2718a21..2a4ad619abfb 100644 --- a/arch/arc/include/uapi/asm/page.h +++ b/arch/arc/include/uapi/asm/page.h @@ -33,5 +33,4 @@ #define PAGE_MASK (~(PAGE_SIZE-1)) - #endif /* _UAPI__ASM_ARC_PAGE_H */ diff --git a/arch/arc/kernel/entry.S b/arch/arc/kernel/entry.S index ea00c8a17f07..ae656bfc31c3 100644 --- a/arch/arc/kernel/entry.S +++ b/arch/arc/kernel/entry.S @@ -177,7 +177,7 @@ tracesys: ; Do the Sys Call as we normally would. ; Validate the Sys Call number - cmp r8, NR_syscalls + cmp r8, NR_syscalls - 1 mov.hi r0, -ENOSYS bhi tracesys_exit @@ -255,7 +255,7 @@ ENTRY(EV_Trap) ;============ Normal syscall case ; syscall num shd not exceed the total system calls avail - cmp r8, NR_syscalls + cmp r8, NR_syscalls - 1 mov.hi r0, -ENOSYS bhi .Lret_from_system_call diff --git a/arch/arc/mm/init.c b/arch/arc/mm/init.c index 3a35b82a718e..da543fd422fe 100644 --- a/arch/arc/mm/init.c +++ b/arch/arc/mm/init.c @@ -158,7 +158,16 @@ void __init setup_arch_memory(void) min_high_pfn = PFN_DOWN(high_mem_start); max_high_pfn = PFN_DOWN(high_mem_start + high_mem_sz); - max_zone_pfn[ZONE_HIGHMEM] = min_low_pfn; + /* + * max_high_pfn should be ok here for both HIGHMEM and HIGHMEM+PAE. + * For HIGHMEM without PAE max_high_pfn should be less than + * min_low_pfn to guarantee that these two regions don't overlap. + * For PAE case highmem is greater than lowmem, so it is natural + * to use max_high_pfn. + * + * In both cases, holes should be handled by pfn_valid(). + */ + max_zone_pfn[ZONE_HIGHMEM] = max_high_pfn; high_memory = (void *)(min_high_pfn << PAGE_SHIFT); kmap_init(); diff --git a/arch/arc/mm/ioremap.c b/arch/arc/mm/ioremap.c index fac4adc90204..95c649fbc95a 100644 --- a/arch/arc/mm/ioremap.c +++ b/arch/arc/mm/ioremap.c @@ -53,9 +53,10 @@ EXPORT_SYMBOL(ioremap); void __iomem *ioremap_prot(phys_addr_t paddr, unsigned long size, unsigned long flags) { + unsigned int off; unsigned long vaddr; struct vm_struct *area; - phys_addr_t off, end; + phys_addr_t end; pgprot_t prot = __pgprot(flags); /* Don't allow wraparound, zero size */ @@ -72,7 +73,7 @@ void __iomem *ioremap_prot(phys_addr_t paddr, unsigned long size, /* Mappings have to be page-aligned */ off = paddr & ~PAGE_MASK; - paddr &= PAGE_MASK; + paddr &= PAGE_MASK_PHYS; size = PAGE_ALIGN(end + 1) - paddr; /* diff --git a/arch/arc/mm/tlb.c b/arch/arc/mm/tlb.c index 9bb3c24f3677..9c7c68247289 100644 --- a/arch/arc/mm/tlb.c +++ b/arch/arc/mm/tlb.c @@ -576,7 +576,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr_unaligned, pte_t *ptep) { unsigned long vaddr = vaddr_unaligned & PAGE_MASK; - phys_addr_t paddr = pte_val(*ptep) & PAGE_MASK; + phys_addr_t paddr = pte_val(*ptep) & PAGE_MASK_PHYS; struct page *page = pfn_to_page(pte_pfn(*ptep)); create_tlb(vma, vaddr, ptep); diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index e1567418a2b1..0d6ee56f5831 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile @@ -114,8 +114,8 @@ asflags-y := -DZIMAGE # Supply kernel BSS size to the decompressor via a linker symbol. KBSS_SZ = $(shell echo $$(($$($(NM) $(obj)/../../../../vmlinux | \ - sed -n -e 's/^\([^ ]*\) [AB] __bss_start$$/-0x\1/p' \ - -e 's/^\([^ ]*\) [AB] __bss_stop$$/+0x\1/p') )) ) + sed -n -e 's/^\([^ ]*\) [ABD] __bss_start$$/-0x\1/p' \ + -e 's/^\([^ ]*\) [ABD] __bss_stop$$/+0x\1/p') )) ) LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ) # Supply ZRELADDR to the decompressor via a linker symbol. ifneq ($(CONFIG_AUTO_ZRELADDR),y) diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 247ce9055990..df7e4f8c8287 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -165,6 +165,13 @@ orr \res, \res, \tmp1, lsl #24 .endm + .macro be32tocpu, val, tmp +#ifndef __ARMEB__ + /* convert to little endian */ + rev_l \val, \tmp +#endif + .endm + .section ".start", "ax" /* * sort out different calling conventions @@ -345,13 +352,7 @@ restart: adr r0, LC1 /* Get the initial DTB size */ ldr r5, [r6, #4] -#ifndef __ARMEB__ - /* convert to little endian */ - eor r1, r5, r5, ror #16 - bic r1, r1, #0x00ff0000 - mov r5, r5, ror #8 - eor r5, r5, r1, lsr #8 -#endif + be32tocpu r5, r1 dbgadtb r6, r5 /* 50% DTB growth should be good enough */ add r5, r5, r5, lsr #1 @@ -403,13 +404,7 @@ restart: adr r0, LC1 /* Get the current DTB size */ ldr r5, [r6, #4] -#ifndef __ARMEB__ - /* convert r5 (dtb size) to little endian */ - eor r1, r5, r5, ror #16 - bic r1, r1, #0x00ff0000 - mov r5, r5, ror #8 - eor r5, r5, r1, lsr #8 -#endif + be32tocpu r5, r1 /* preserve 64-bit alignment */ add r5, r5, #7 diff --git a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts index 21ae880c7530..c76b0046b402 100644 --- a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts +++ b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts @@ -707,9 +707,9 @@ multi-master; status = "okay"; - si7021-a20@20 { + si7021-a20@40 { compatible = "silabs,si7020"; - reg = <0x20>; + reg = <0x40>; }; tmp275@48 { diff --git a/arch/arm/boot/dts/at91-sam9x60ek.dts b/arch/arm/boot/dts/at91-sam9x60ek.dts index 775ceb3acb6c..edca66c232c1 100644 --- a/arch/arm/boot/dts/at91-sam9x60ek.dts +++ b/arch/arm/boot/dts/at91-sam9x60ek.dts @@ -8,6 +8,7 @@ */ /dts-v1/; #include "sam9x60.dtsi" +#include / { model = "Microchip SAM9X60-EK"; @@ -84,7 +85,7 @@ sw1 { label = "SW1"; gpios = <&pioD 18 GPIO_ACTIVE_LOW>; - linux,code=<0x104>; + linux,code=; wakeup-source; }; }; diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts index 0e159f879c15..d3cd2443ba25 100644 --- a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts +++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts @@ -11,6 +11,7 @@ #include "at91-sama5d27_som1.dtsi" #include #include +#include / { model = "Atmel SAMA5D27 SOM1 EK"; @@ -467,7 +468,7 @@ pb4 { label = "USER"; gpios = <&pioA PIN_PA29 GPIO_ACTIVE_LOW>; - linux,code = <0x104>; + linux,code = ; wakeup-source; }; }; diff --git a/arch/arm/boot/dts/at91-sama5d27_wlsom1_ek.dts b/arch/arm/boot/dts/at91-sama5d27_wlsom1_ek.dts index 6b38fa3f5568..4883b84b4ede 100644 --- a/arch/arm/boot/dts/at91-sama5d27_wlsom1_ek.dts +++ b/arch/arm/boot/dts/at91-sama5d27_wlsom1_ek.dts @@ -8,6 +8,7 @@ */ /dts-v1/; #include "at91-sama5d27_wlsom1.dtsi" +#include / { model = "Microchip SAMA5D27 WLSOM1 EK"; @@ -35,7 +36,7 @@ sw4 { label = "USER BUTTON"; gpios = <&pioA PIN_PB2 GPIO_ACTIVE_LOW>; - linux,code = <0x104>; + linux,code = ; wakeup-source; }; }; diff --git a/arch/arm/boot/dts/at91-sama5d2_icp.dts b/arch/arm/boot/dts/at91-sama5d2_icp.dts index 6783cf16ff81..19bb50f50c1f 100644 --- a/arch/arm/boot/dts/at91-sama5d2_icp.dts +++ b/arch/arm/boot/dts/at91-sama5d2_icp.dts @@ -12,6 +12,7 @@ #include "sama5d2.dtsi" #include "sama5d2-pinfunc.h" #include +#include #include / { @@ -51,7 +52,7 @@ sw4 { label = "USER_PB1"; gpios = <&pioA PIN_PD0 GPIO_ACTIVE_LOW>; - linux,code = <0x104>; + linux,code = ; wakeup-source; }; }; diff --git a/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts index c894c7c788a9..1c6361ba1aca 100644 --- a/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts +++ b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts @@ -11,6 +11,7 @@ #include "sama5d2-pinfunc.h" #include #include +#include #include / { @@ -403,7 +404,7 @@ bp1 { label = "PB_USER"; gpios = <&pioA PIN_PA10 GPIO_ACTIVE_LOW>; - linux,code = <0x104>; + linux,code = ; wakeup-source; }; }; diff --git a/arch/arm/boot/dts/at91-sama5d2_xplained.dts b/arch/arm/boot/dts/at91-sama5d2_xplained.dts index 058fae1b4a76..d767968ae217 100644 --- a/arch/arm/boot/dts/at91-sama5d2_xplained.dts +++ b/arch/arm/boot/dts/at91-sama5d2_xplained.dts @@ -10,6 +10,7 @@ #include "sama5d2-pinfunc.h" #include #include +#include #include / { @@ -713,7 +714,7 @@ bp1 { label = "PB_USER"; gpios = <&pioA PIN_PB9 GPIO_ACTIVE_LOW>; - linux,code = <0x104>; + linux,code = ; wakeup-source; }; }; diff --git a/arch/arm/boot/dts/at91-sama5d3_xplained.dts b/arch/arm/boot/dts/at91-sama5d3_xplained.dts index 5179258f9247..9c55a921263b 100644 --- a/arch/arm/boot/dts/at91-sama5d3_xplained.dts +++ b/arch/arm/boot/dts/at91-sama5d3_xplained.dts @@ -7,6 +7,7 @@ */ /dts-v1/; #include "sama5d36.dtsi" +#include / { model = "SAMA5D3 Xplained"; @@ -354,7 +355,7 @@ bp3 { label = "PB_USER"; gpios = <&pioE 29 GPIO_ACTIVE_LOW>; - linux,code = <0x104>; + linux,code = ; wakeup-source; }; }; diff --git a/arch/arm/boot/dts/at91sam9260ek.dts b/arch/arm/boot/dts/at91sam9260ek.dts index d3446e42b598..ce96345d28a3 100644 --- a/arch/arm/boot/dts/at91sam9260ek.dts +++ b/arch/arm/boot/dts/at91sam9260ek.dts @@ -7,6 +7,7 @@ */ /dts-v1/; #include "at91sam9260.dtsi" +#include / { model = "Atmel at91sam9260ek"; @@ -156,7 +157,7 @@ btn4 { label = "Button 4"; gpios = <&pioA 31 GPIO_ACTIVE_LOW>; - linux,code = <0x104>; + linux,code = ; wakeup-source; }; }; diff --git a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi index 6e6e672c0b86..87bb39060e8b 100644 --- a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi +++ b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi @@ -5,6 +5,7 @@ * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD */ #include "at91sam9g20.dtsi" +#include / { @@ -234,7 +235,7 @@ btn4 { label = "Button 4"; gpios = <&pioA 31 GPIO_ACTIVE_LOW>; - linux,code = <0x104>; + linux,code = ; wakeup-source; }; }; diff --git a/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts b/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts index 6a96655d8626..8ed403767540 100644 --- a/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts +++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts @@ -21,8 +21,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts b/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts index 3b0029e61b4c..667b118ba4ee 100644 --- a/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts +++ b/arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts @@ -21,8 +21,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts b/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts index 90f57bad6b24..ff31ce45831a 100644 --- a/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts +++ b/arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts @@ -21,8 +21,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x18000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x18000000>; }; spi { diff --git a/arch/arm/boot/dts/bcm4708-netgear-r6250.dts b/arch/arm/boot/dts/bcm4708-netgear-r6250.dts index fed75e6ab58c..61c7b137607e 100644 --- a/arch/arm/boot/dts/bcm4708-netgear-r6250.dts +++ b/arch/arm/boot/dts/bcm4708-netgear-r6250.dts @@ -22,8 +22,8 @@ memory { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts b/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts index 79542e18915c..4c60eda296d9 100644 --- a/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts +++ b/arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts @@ -21,8 +21,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts b/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts index abd35a518046..7d46561fca3c 100644 --- a/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts +++ b/arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts @@ -21,8 +21,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts b/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts index c29950b43a95..0e273c598732 100644 --- a/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts +++ b/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts @@ -21,8 +21,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts b/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts index 4dcec6865469..083ec4036bd7 100644 --- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts +++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts @@ -21,8 +21,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; spi { diff --git a/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts b/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts index 0e349e39f608..8b1a05a0f1a1 100644 --- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts +++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts @@ -21,8 +21,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; spi { diff --git a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts index 8f1e565c3db4..6c6bb7b17d27 100644 --- a/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts +++ b/arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts @@ -21,8 +21,8 @@ memory { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts b/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts index ce888b1835d1..d29e7f80ea6a 100644 --- a/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts +++ b/arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts @@ -21,8 +21,8 @@ memory { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x18000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x18000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts index ed8619b54d69..38fbefdf2e4e 100644 --- a/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts +++ b/arch/arm/boot/dts/bcm4709-linksys-ea9200.dts @@ -18,8 +18,8 @@ memory { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; gpio-keys { diff --git a/arch/arm/boot/dts/bcm4709-netgear-r7000.dts b/arch/arm/boot/dts/bcm4709-netgear-r7000.dts index 1f87993eae1d..7989a53597d4 100644 --- a/arch/arm/boot/dts/bcm4709-netgear-r7000.dts +++ b/arch/arm/boot/dts/bcm4709-netgear-r7000.dts @@ -21,8 +21,8 @@ memory { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts index 6c6199a53d09..87b655be674c 100644 --- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts +++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts @@ -32,8 +32,8 @@ memory { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts index 911c65fbf251..e635a15041dd 100644 --- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts +++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts @@ -21,8 +21,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; nand: nand@18028000 { diff --git a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts index 0faae8950375..36d63beba8cd 100644 --- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts +++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts @@ -18,8 +18,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; gpio-keys { diff --git a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts index 50f7cd08cfbb..a6dc99955e19 100644 --- a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts +++ b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts @@ -18,8 +18,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x18000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x18000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts index bcc420f85b56..ff98837bc0db 100644 --- a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts +++ b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts @@ -18,8 +18,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x18000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x18000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts b/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts index 9ae815ddbb4b..2666195b6ffe 100644 --- a/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts +++ b/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts @@ -18,8 +18,8 @@ memory { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x18000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x18000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts index a21b2d185596..9f798025748b 100644 --- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts +++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts @@ -18,8 +18,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x08000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x08000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts b/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts index 4d5c5aa7dc42..c8dfa4c58d2f 100644 --- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts +++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts @@ -18,8 +18,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x18000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x18000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm47094-netgear-r8500.dts b/arch/arm/boot/dts/bcm47094-netgear-r8500.dts index f42a1703f4ab..42097a4c2659 100644 --- a/arch/arm/boot/dts/bcm47094-netgear-r8500.dts +++ b/arch/arm/boot/dts/bcm47094-netgear-r8500.dts @@ -18,8 +18,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x18000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x18000000>; }; leds { diff --git a/arch/arm/boot/dts/bcm47094-phicomm-k3.dts b/arch/arm/boot/dts/bcm47094-phicomm-k3.dts index ac3a4483dcb3..a2566ad4619c 100644 --- a/arch/arm/boot/dts/bcm47094-phicomm-k3.dts +++ b/arch/arm/boot/dts/bcm47094-phicomm-k3.dts @@ -15,8 +15,8 @@ memory@0 { device_type = "memory"; - reg = <0x00000000 0x08000000 - 0x88000000 0x18000000>; + reg = <0x00000000 0x08000000>, + <0x88000000 0x18000000>; }; gpio-keys { diff --git a/arch/arm/boot/dts/dra7-l4.dtsi b/arch/arm/boot/dts/dra7-l4.dtsi index 3bf90d9e3335..a294a02f2d23 100644 --- a/arch/arm/boot/dts/dra7-l4.dtsi +++ b/arch/arm/boot/dts/dra7-l4.dtsi @@ -1168,7 +1168,7 @@ }; }; - target-module@34000 { /* 0x48034000, ap 7 46.0 */ + timer3_target: target-module@34000 { /* 0x48034000, ap 7 46.0 */ compatible = "ti,sysc-omap4-timer", "ti,sysc"; reg = <0x34000 0x4>, <0x34010 0x4>; @@ -1195,7 +1195,7 @@ }; }; - target-module@36000 { /* 0x48036000, ap 9 4e.0 */ + timer4_target: target-module@36000 { /* 0x48036000, ap 9 4e.0 */ compatible = "ti,sysc-omap4-timer", "ti,sysc"; reg = <0x36000 0x4>, <0x36010 0x4>; diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi index 4e1bbc0198eb..7ecf8f86ac74 100644 --- a/arch/arm/boot/dts/dra7.dtsi +++ b/arch/arm/boot/dts/dra7.dtsi @@ -46,6 +46,7 @@ timer { compatible = "arm,armv7-timer"; + status = "disabled"; /* See ARM architected timer wrap erratum i940 */ interrupts = , , , @@ -1090,3 +1091,22 @@ assigned-clock-parents = <&sys_32k_ck>; }; }; + +/* Local timers, see ARM architected timer wrap erratum i940 */ +&timer3_target { + ti,no-reset-on-init; + ti,no-idle; + timer@0 { + assigned-clocks = <&l4per_clkctrl DRA7_L4PER_TIMER3_CLKCTRL 24>; + assigned-clock-parents = <&timer_sys_clk_div>; + }; +}; + +&timer4_target { + ti,no-reset-on-init; + ti,no-idle; + timer@0 { + assigned-clocks = <&l4per_clkctrl DRA7_L4PER_TIMER4_CLKCTRL 24>; + assigned-clock-parents = <&timer_sys_clk_div>; + }; +}; diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts index 5370ee477186..7777bf51a6e6 100644 --- a/arch/arm/boot/dts/exynos4210-i9100.dts +++ b/arch/arm/boot/dts/exynos4210-i9100.dts @@ -136,7 +136,7 @@ compatible = "maxim,max17042"; interrupt-parent = <&gpx2>; - interrupts = <3 IRQ_TYPE_EDGE_FALLING>; + interrupts = <3 IRQ_TYPE_LEVEL_LOW>; pinctrl-0 = <&max17042_fuel_irq>; pinctrl-names = "default"; diff --git a/arch/arm/boot/dts/exynos4412-midas.dtsi b/arch/arm/boot/dts/exynos4412-midas.dtsi index 7e7c243ff196..06450066b178 100644 --- a/arch/arm/boot/dts/exynos4412-midas.dtsi +++ b/arch/arm/boot/dts/exynos4412-midas.dtsi @@ -174,7 +174,7 @@ max77693@66 { compatible = "maxim,max77693"; interrupt-parent = <&gpx1>; - interrupts = <5 IRQ_TYPE_EDGE_FALLING>; + interrupts = <5 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77693_irq>; reg = <0x66>; @@ -223,7 +223,7 @@ max77693-fuel-gauge@36 { compatible = "maxim,max17047"; interrupt-parent = <&gpx2>; - interrupts = <3 IRQ_TYPE_EDGE_FALLING>; + interrupts = <3 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77693_fuel_irq>; reg = <0x36>; @@ -668,7 +668,7 @@ max77686: max77686_pmic@9 { compatible = "maxim,max77686"; interrupt-parent = <&gpx0>; - interrupts = <7 IRQ_TYPE_NONE>; + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; pinctrl-0 = <&max77686_irq>; pinctrl-names = "default"; reg = <0x09>; diff --git a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi index 2983e91bc7dd..869d80be1b36 100644 --- a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi +++ b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi @@ -279,7 +279,7 @@ max77686: pmic@9 { compatible = "maxim,max77686"; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77686_irq>; reg = <0x09>; diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts index 186790f39e4d..d0e48c10aec2 100644 --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts @@ -134,7 +134,7 @@ compatible = "maxim,max77686"; reg = <0x09>; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77686_irq>; #clock-cells = <1>; diff --git a/arch/arm/boot/dts/exynos5250-snow-common.dtsi b/arch/arm/boot/dts/exynos5250-snow-common.dtsi index c952a615148e..737f0e20a452 100644 --- a/arch/arm/boot/dts/exynos5250-snow-common.dtsi +++ b/arch/arm/boot/dts/exynos5250-snow-common.dtsi @@ -292,7 +292,7 @@ max77686: max77686@9 { compatible = "maxim,max77686"; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&max77686_irq>; wakeup-source; diff --git a/arch/arm/boot/dts/imx6dl-yapp4-common.dtsi b/arch/arm/boot/dts/imx6dl-yapp4-common.dtsi index 7d2c72562c73..9148a01ed6d9 100644 --- a/arch/arm/boot/dts/imx6dl-yapp4-common.dtsi +++ b/arch/arm/boot/dts/imx6dl-yapp4-common.dtsi @@ -105,9 +105,13 @@ phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>; phy-reset-duration = <20>; phy-supply = <&sw2_reg>; - phy-handle = <ðphy0>; status = "okay"; + fixed-link { + speed = <1000>; + full-duplex; + }; + mdio { #address-cells = <1>; #size-cells = <0>; diff --git a/arch/arm/boot/dts/imx6q-dhcom-som.dtsi b/arch/arm/boot/dts/imx6q-dhcom-som.dtsi index 236fc205c389..d0768ae429fa 100644 --- a/arch/arm/boot/dts/imx6q-dhcom-som.dtsi +++ b/arch/arm/boot/dts/imx6q-dhcom-som.dtsi @@ -406,6 +406,18 @@ vin-supply = <&sw1_reg>; }; +®_pu { + vin-supply = <&sw1_reg>; +}; + +®_vdd1p1 { + vin-supply = <&sw2_reg>; +}; + +®_vdd2p5 { + vin-supply = <&sw2_reg>; +}; + &uart1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1>; diff --git a/arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi b/arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi index 828cf3e39784..c4e146f3341b 100644 --- a/arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi +++ b/arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi @@ -126,7 +126,7 @@ compatible = "nxp,pca8574"; reg = <0x3a>; gpio-controller; - #gpio-cells = <1>; + #gpio-cells = <2>; }; }; diff --git a/arch/arm/boot/dts/imx7d-meerkat96.dts b/arch/arm/boot/dts/imx7d-meerkat96.dts index 5339210b63d0..dd8003bd1fc0 100644 --- a/arch/arm/boot/dts/imx7d-meerkat96.dts +++ b/arch/arm/boot/dts/imx7d-meerkat96.dts @@ -193,7 +193,7 @@ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc1>; keep-power-in-suspend; - tuning-step = <2>; + fsl,tuning-step = <2>; vmmc-supply = <®_3p3v>; no-1-8-v; broken-cd; diff --git a/arch/arm/boot/dts/imx7d-pico.dtsi b/arch/arm/boot/dts/imx7d-pico.dtsi index e57da0d32b98..e519897fae08 100644 --- a/arch/arm/boot/dts/imx7d-pico.dtsi +++ b/arch/arm/boot/dts/imx7d-pico.dtsi @@ -351,7 +351,7 @@ pinctrl-2 = <&pinctrl_usdhc1_200mhz>; cd-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>; bus-width = <4>; - tuning-step = <2>; + fsl,tuning-step = <2>; vmmc-supply = <®_3p3v>; wakeup-source; no-1-8-v; diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi index 9dcae1f2bc99..c5b9da0d7e6c 100644 --- a/arch/arm/boot/dts/omap3.dtsi +++ b/arch/arm/boot/dts/omap3.dtsi @@ -24,6 +24,9 @@ i2c0 = &i2c1; i2c1 = &i2c2; i2c2 = &i2c3; + mmc0 = &mmc1; + mmc1 = &mmc2; + mmc2 = &mmc3; serial0 = &uart1; serial1 = &uart2; serial2 = &uart3; diff --git a/arch/arm/boot/dts/r8a7790-lager.dts b/arch/arm/boot/dts/r8a7790-lager.dts index 09a152b91557..1d6f0c5d02e9 100644 --- a/arch/arm/boot/dts/r8a7790-lager.dts +++ b/arch/arm/boot/dts/r8a7790-lager.dts @@ -53,6 +53,9 @@ i2c11 = &i2cexio1; i2c12 = &i2chdmi; i2c13 = &i2cpwr; + mmc0 = &mmcif1; + mmc1 = &sdhi0; + mmc2 = &sdhi2; }; chosen { diff --git a/arch/arm/boot/dts/r8a7791-koelsch.dts b/arch/arm/boot/dts/r8a7791-koelsch.dts index f603cba5441f..6af1727b8269 100644 --- a/arch/arm/boot/dts/r8a7791-koelsch.dts +++ b/arch/arm/boot/dts/r8a7791-koelsch.dts @@ -53,6 +53,9 @@ i2c12 = &i2cexio1; i2c13 = &i2chdmi; i2c14 = &i2cexio4; + mmc0 = &sdhi0; + mmc1 = &sdhi1; + mmc2 = &sdhi2; }; chosen { diff --git a/arch/arm/boot/dts/r8a7791-porter.dts b/arch/arm/boot/dts/r8a7791-porter.dts index c6d563fb7ec7..bf51e29c793a 100644 --- a/arch/arm/boot/dts/r8a7791-porter.dts +++ b/arch/arm/boot/dts/r8a7791-porter.dts @@ -28,6 +28,8 @@ serial0 = &scif0; i2c9 = &gpioi2c2; i2c10 = &i2chdmi; + mmc0 = &sdhi0; + mmc1 = &sdhi2; }; chosen { diff --git a/arch/arm/boot/dts/r8a7793-gose.dts b/arch/arm/boot/dts/r8a7793-gose.dts index abf487e8fe0f..2b59a0491350 100644 --- a/arch/arm/boot/dts/r8a7793-gose.dts +++ b/arch/arm/boot/dts/r8a7793-gose.dts @@ -49,6 +49,9 @@ i2c10 = &gpioi2c4; i2c11 = &i2chdmi; i2c12 = &i2cexio4; + mmc0 = &sdhi0; + mmc1 = &sdhi1; + mmc2 = &sdhi2; }; chosen { diff --git a/arch/arm/boot/dts/r8a7794-alt.dts b/arch/arm/boot/dts/r8a7794-alt.dts index 3f1cc5bbf329..32025986b3b9 100644 --- a/arch/arm/boot/dts/r8a7794-alt.dts +++ b/arch/arm/boot/dts/r8a7794-alt.dts @@ -19,6 +19,9 @@ i2c10 = &gpioi2c4; i2c11 = &i2chdmi; i2c12 = &i2cexio4; + mmc0 = &mmcif0; + mmc1 = &sdhi0; + mmc2 = &sdhi1; }; chosen { diff --git a/arch/arm/boot/dts/r8a7794-silk.dts b/arch/arm/boot/dts/r8a7794-silk.dts index 677596f6c9c9..af066ee5e275 100644 --- a/arch/arm/boot/dts/r8a7794-silk.dts +++ b/arch/arm/boot/dts/r8a7794-silk.dts @@ -31,6 +31,8 @@ serial0 = &scif2; i2c9 = &gpioi2c1; i2c10 = &i2chdmi; + mmc0 = &mmcif0; + mmc1 = &sdhi1; }; chosen { diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts index ca064359dd30..b47d8300e536 100644 --- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts +++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts @@ -115,7 +115,7 @@ compatible = "maxim,max77836-battery"; interrupt-parent = <&gph3>; - interrupts = <3 IRQ_TYPE_EDGE_FALLING>; + interrupts = <3 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&fg_irq>; diff --git a/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi b/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi index 9f285c7cf914..c0de1337bdaa 100644 --- a/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi +++ b/arch/arm/boot/dts/ste-href-tvk1281618-r3.dtsi @@ -8,37 +8,43 @@ / { soc { i2c@80128000 { - /* Marked: - * 129 - * M35 - * L3GD20 - */ - l3gd20@6a { - /* Gyroscope */ - compatible = "st,l3gd20"; - status = "disabled"; + accelerometer@19 { + compatible = "st,lsm303dlhc-accel"; st,drdy-int-pin = <1>; - drive-open-drain; - reg = <0x6a>; // 0x6a or 0x6b + reg = <0x19>; + vdd-supply = <&ab8500_ldo_aux1_reg>; + vddio-supply = <&db8500_vsmps2_reg>; + interrupt-parent = <&gpio2>; + interrupts = <18 IRQ_TYPE_EDGE_RISING>, + <19 IRQ_TYPE_EDGE_RISING>; + pinctrl-names = "default"; + pinctrl-0 = <&accel_tvk_mode>; + }; + magnetometer@1e { + compatible = "st,lsm303dlm-magn"; + st,drdy-int-pin = <1>; + reg = <0x1e>; + vdd-supply = <&ab8500_ldo_aux1_reg>; + vddio-supply = <&db8500_vsmps2_reg>; + // This interrupt is not properly working with the driver + // interrupt-parent = <&gpio1>; + // interrupts = <0 IRQ_TYPE_EDGE_RISING>; + pinctrl-names = "default"; + pinctrl-0 = <&magn_tvk_mode>; + }; + gyroscope@68 { + /* Gyroscope */ + compatible = "st,l3g4200d-gyro"; + reg = <0x68>; vdd-supply = <&ab8500_ldo_aux1_reg>; vddio-supply = <&db8500_vsmps2_reg>; }; - /* - * Marked: - * 2122 - * C3H - * DQEEE - * LIS3DH? - */ - lis3dh@18 { - /* Accelerometer */ - compatible = "st,lis3dh-accel"; - st,drdy-int-pin = <1>; - reg = <0x18>; + pressure@5c { + /* Barometer/pressure sensor */ + compatible = "st,lps001wp-press"; + reg = <0x5c>; vdd-supply = <&ab8500_ldo_aux1_reg>; vddio-supply = <&db8500_vsmps2_reg>; - pinctrl-names = "default"; - pinctrl-0 = <&accel_tvk_mode>; }; }; @@ -54,5 +60,26 @@ }; }; }; + + pinctrl { + accelerometer { + accel_tvk_mode: accel_tvk { + /* Accelerometer interrupt lines 1 & 2 */ + tvk_cfg { + pins = "GPIO82_C1", "GPIO83_D3"; + ste,config = <&gpio_in_pd>; + }; + }; + }; + magnetometer { + magn_tvk_mode: magn_tvk { + /* GPIO 32 used for DRDY, pull this down */ + tvk_cfg { + pins = "GPIO32_V2"; + ste,config = <&gpio_in_pd>; + }; + }; + }; + }; }; }; diff --git a/arch/arm/boot/dts/stm32mp15-pinctrl.dtsi b/arch/arm/boot/dts/stm32mp15-pinctrl.dtsi index d84686e00370..dee4d32ab32c 100644 --- a/arch/arm/boot/dts/stm32mp15-pinctrl.dtsi +++ b/arch/arm/boot/dts/stm32mp15-pinctrl.dtsi @@ -1806,10 +1806,15 @@ usart2_idle_pins_c: usart2-idle-2 { pins1 { pinmux = , /* USART2_TX */ - , /* USART2_RTS */ ; /* USART2_CTS_NSS */ }; pins2 { + pinmux = ; /* USART2_RTS */ + bias-disable; + drive-push-pull; + slew-rate = <3>; + }; + pins3 { pinmux = ; /* USART2_RX */ bias-disable; }; @@ -1855,10 +1860,15 @@ usart3_idle_pins_b: usart3-idle-1 { pins1 { pinmux = , /* USART3_TX */ - , /* USART3_RTS */ ; /* USART3_CTS_NSS */ }; pins2 { + pinmux = ; /* USART3_RTS */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins3 { pinmux = ; /* USART3_RX */ bias-disable; }; @@ -1891,10 +1901,15 @@ usart3_idle_pins_c: usart3-idle-2 { pins1 { pinmux = , /* USART3_TX */ - , /* USART3_RTS */ ; /* USART3_CTS_NSS */ }; pins2 { + pinmux = ; /* USART3_RTS */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins3 { pinmux = ; /* USART3_RX */ bias-disable; }; diff --git a/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts b/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts index a0b829738e8f..068aabcffb13 100644 --- a/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts +++ b/arch/arm/boot/dts/tegra20-acer-a500-picasso.dts @@ -448,7 +448,7 @@ reset-gpios = <&gpio TEGRA_GPIO(Q, 7) GPIO_ACTIVE_HIGH>; - avdd-supply = <&vdd_3v3_sys>; + vdda-supply = <&vdd_3v3_sys>; vdd-supply = <&vdd_3v3_sys>; }; diff --git a/arch/arm/boot/dts/uniphier-pxs2.dtsi b/arch/arm/boot/dts/uniphier-pxs2.dtsi index b0b15c97306b..e81e5937a60a 100644 --- a/arch/arm/boot/dts/uniphier-pxs2.dtsi +++ b/arch/arm/boot/dts/uniphier-pxs2.dtsi @@ -583,7 +583,7 @@ clocks = <&sys_clk 6>; reset-names = "ether"; resets = <&sys_rst 6>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; local-mac-address = [00 00 00 00 00 00]; socionext,syscon-phy-mode = <&soc_glue 0>; diff --git a/arch/arm/crypto/aes-neonbs-glue.c b/arch/arm/crypto/aes-neonbs-glue.c index f70af1d0514b..5c6cd3c63cbc 100644 --- a/arch/arm/crypto/aes-neonbs-glue.c +++ b/arch/arm/crypto/aes-neonbs-glue.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -23,6 +24,8 @@ MODULE_ALIAS_CRYPTO("cbc(aes)-all"); MODULE_ALIAS_CRYPTO("ctr(aes)"); MODULE_ALIAS_CRYPTO("xts(aes)"); +MODULE_IMPORT_NS(CRYPTO_INTERNAL); + asmlinkage void aesbs_convert_key(u8 out[], u32 const rk[], int rounds); asmlinkage void aesbs_ecb_encrypt(u8 out[], u8 const in[], u8 const rk[], diff --git a/arch/arm/crypto/curve25519-core.S b/arch/arm/crypto/curve25519-core.S index be18af52e7dc..b697fa5d059a 100644 --- a/arch/arm/crypto/curve25519-core.S +++ b/arch/arm/crypto/curve25519-core.S @@ -10,8 +10,8 @@ #include .text -.fpu neon .arch armv7-a +.fpu neon .align 4 ENTRY(curve25519_neon) diff --git a/arch/arm/crypto/poly1305-glue.c b/arch/arm/crypto/poly1305-glue.c index 3023c1acfa19..c31bd8f7c092 100644 --- a/arch/arm/crypto/poly1305-glue.c +++ b/arch/arm/crypto/poly1305-glue.c @@ -29,7 +29,7 @@ void __weak poly1305_blocks_neon(void *state, const u8 *src, u32 len, u32 hibit) static __ro_after_init DEFINE_STATIC_KEY_FALSE(have_neon); -void poly1305_init_arch(struct poly1305_desc_ctx *dctx, const u8 *key) +void poly1305_init_arch(struct poly1305_desc_ctx *dctx, const u8 key[POLY1305_KEY_SIZE]) { poly1305_init_arm(&dctx->h, key); dctx->s[0] = get_unaligned_le32(key + 16); diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 72627c5fb3b2..761e88c73955 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h @@ -578,4 +578,21 @@ THUMB( orr \reg , \reg , #PSR_T_BIT ) __adldst_l str, \src, \sym, \tmp, \cond .endm + /* + * rev_l - byte-swap a 32-bit value + * + * @val: source/destination register + * @tmp: scratch register + */ + .macro rev_l, val:req, tmp:req + .if __LINUX_ARM_ARCH__ < 6 + eor \tmp, \val, \val, ror #16 + bic \tmp, \tmp, #0x00ff0000 + mov \val, \val, ror #8 + eor \val, \val, \tmp, lsr #8 + .else + rev \val, \val + .endif + .endm + #endif /* __ASM_ASSEMBLER_H__ */ diff --git a/arch/arm/include/asm/fixmap.h b/arch/arm/include/asm/fixmap.h index fc56fc3e1931..9575b404019c 100644 --- a/arch/arm/include/asm/fixmap.h +++ b/arch/arm/include/asm/fixmap.h @@ -2,7 +2,7 @@ #ifndef _ASM_FIXMAP_H #define _ASM_FIXMAP_H -#define FIXADDR_START 0xffc00000UL +#define FIXADDR_START 0xffc80000UL #define FIXADDR_END 0xfff00000UL #define FIXADDR_TOP (FIXADDR_END - PAGE_SIZE) diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h index 99035b5891ef..f717d7122d9d 100644 --- a/arch/arm/include/asm/memory.h +++ b/arch/arm/include/asm/memory.h @@ -67,6 +67,10 @@ */ #define XIP_VIRT_ADDR(physaddr) (MODULES_VADDR + ((physaddr) & 0x000fffff)) +#define FDT_FIXED_BASE UL(0xff800000) +#define FDT_FIXED_SIZE (2 * SECTION_SIZE) +#define FDT_VIRT_BASE(physbase) ((void *)(FDT_FIXED_BASE | (physbase) % SECTION_SIZE)) + #if !defined(CONFIG_SMP) && !defined(CONFIG_ARM_LPAE) /* * Allow 16MB-aligned ioremap pages @@ -107,6 +111,7 @@ extern unsigned long vectors_base; #define MODULES_VADDR PAGE_OFFSET #define XIP_VIRT_ADDR(physaddr) (physaddr) +#define FDT_VIRT_BASE(physbase) ((void *)(physbase)) #endif /* !CONFIG_MMU */ diff --git a/arch/arm/include/asm/prom.h b/arch/arm/include/asm/prom.h index 1e36c40533c1..402e3f34c7ed 100644 --- a/arch/arm/include/asm/prom.h +++ b/arch/arm/include/asm/prom.h @@ -9,12 +9,12 @@ #ifdef CONFIG_OF -extern const struct machine_desc *setup_machine_fdt(unsigned int dt_phys); +extern const struct machine_desc *setup_machine_fdt(void *dt_virt); extern void __init arm_dt_init_cpu_maps(void); #else /* CONFIG_OF */ -static inline const struct machine_desc *setup_machine_fdt(unsigned int dt_phys) +static inline const struct machine_desc *setup_machine_fdt(void *dt_virt) { return NULL; } diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c index be8050b0c3df..70993af22d80 100644 --- a/arch/arm/kernel/asm-offsets.c +++ b/arch/arm/kernel/asm-offsets.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "signal.h" /* @@ -148,6 +149,8 @@ int main(void) DEFINE(SLEEP_SAVE_SP_PHYS, offsetof(struct sleep_save_sp, save_ptr_stash_phys)); DEFINE(SLEEP_SAVE_SP_VIRT, offsetof(struct sleep_save_sp, save_ptr_stash)); #endif + DEFINE(ARM_SMCCC_QUIRK_ID_OFFS, offsetof(struct arm_smccc_quirk, id)); + DEFINE(ARM_SMCCC_QUIRK_STATE_OFFS, offsetof(struct arm_smccc_quirk, state)); BLANK(); DEFINE(DMA_BIDIRECTIONAL, DMA_BIDIRECTIONAL); DEFINE(DMA_TO_DEVICE, DMA_TO_DEVICE); diff --git a/arch/arm/kernel/atags.h b/arch/arm/kernel/atags.h index 067e12edc341..f2819c25b602 100644 --- a/arch/arm/kernel/atags.h +++ b/arch/arm/kernel/atags.h @@ -2,11 +2,11 @@ void convert_to_tag_list(struct tag *tags); #ifdef CONFIG_ATAGS -const struct machine_desc *setup_machine_tags(phys_addr_t __atags_pointer, +const struct machine_desc *setup_machine_tags(void *__atags_vaddr, unsigned int machine_nr); #else static inline const struct machine_desc * __init __noreturn -setup_machine_tags(phys_addr_t __atags_pointer, unsigned int machine_nr) +setup_machine_tags(void *__atags_vaddr, unsigned int machine_nr) { early_print("no ATAGS support: can't continue\n"); while (true); diff --git a/arch/arm/kernel/atags_parse.c b/arch/arm/kernel/atags_parse.c index 6c12d9fe694e..373b61f9a4f0 100644 --- a/arch/arm/kernel/atags_parse.c +++ b/arch/arm/kernel/atags_parse.c @@ -174,7 +174,7 @@ static void __init squash_mem_tags(struct tag *tag) } const struct machine_desc * __init -setup_machine_tags(phys_addr_t __atags_pointer, unsigned int machine_nr) +setup_machine_tags(void *atags_vaddr, unsigned int machine_nr) { struct tag *tags = (struct tag *)&default_tags; const struct machine_desc *mdesc = NULL, *p; @@ -195,8 +195,8 @@ setup_machine_tags(phys_addr_t __atags_pointer, unsigned int machine_nr) if (!mdesc) return NULL; - if (__atags_pointer) - tags = phys_to_virt(__atags_pointer); + if (atags_vaddr) + tags = atags_vaddr; else if (mdesc->atag_offset) tags = (void *)(PAGE_OFFSET + mdesc->atag_offset); diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c index 7f0745a97e20..28311dd0fee6 100644 --- a/arch/arm/kernel/devtree.c +++ b/arch/arm/kernel/devtree.c @@ -203,12 +203,12 @@ static const void * __init arch_get_next_mach(const char *const **match) /** * setup_machine_fdt - Machine setup when an dtb was passed to the kernel - * @dt_phys: physical address of dt blob + * @dt_virt: virtual address of dt blob * * If a dtb was passed to the kernel in r2, then use it to choose the * correct machine_desc and to setup the system. */ -const struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys) +const struct machine_desc * __init setup_machine_fdt(void *dt_virt) { const struct machine_desc *mdesc, *mdesc_best = NULL; @@ -221,7 +221,7 @@ const struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys) mdesc_best = &__mach_desc_GENERIC_DT; #endif - if (!dt_phys || !early_init_dt_verify(phys_to_virt(dt_phys))) + if (!dt_virt || !early_init_dt_verify(dt_virt)) return NULL; mdesc = of_flat_dt_match_machine(mdesc_best, arch_get_next_mach); diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 98c1e68bdfcb..4af5c7679624 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S @@ -274,11 +274,10 @@ __create_page_tables: * We map 2 sections in case the ATAGs/DTB crosses a section boundary. */ mov r0, r2, lsr #SECTION_SHIFT - movs r0, r0, lsl #SECTION_SHIFT - subne r3, r0, r8 - addne r3, r3, #PAGE_OFFSET - addne r3, r4, r3, lsr #(SECTION_SHIFT - PMD_ORDER) - orrne r6, r7, r0 + cmp r2, #0 + ldrne r3, =FDT_FIXED_BASE >> (SECTION_SHIFT - PMD_ORDER) + addne r3, r3, r4 + orrne r6, r7, r0, lsl #SECTION_SHIFT strne r6, [r3], #1 << PMD_ORDER addne r6, r6, #1 << SECTION_SHIFT strne r6, [r3] diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c index 08660ae9dcbc..b1423fb130ea 100644 --- a/arch/arm/kernel/hw_breakpoint.c +++ b/arch/arm/kernel/hw_breakpoint.c @@ -886,7 +886,7 @@ static void breakpoint_handler(unsigned long unknown, struct pt_regs *regs) info->trigger = addr; pr_debug("breakpoint fired: address = 0x%x\n", addr); perf_bp_event(bp, regs); - if (!bp->overflow_handler) + if (is_default_overflow_handler(bp)) enable_single_step(bp, addr); goto unlock; } diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 50b1803dfdbf..4f17074f26b6 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -1095,19 +1096,27 @@ static struct notifier_block arm_restart_nb = { void __init setup_arch(char **cmdline_p) { - const struct machine_desc *mdesc; + const struct machine_desc *mdesc = NULL; + void *atags_vaddr = NULL; + + if (__atags_pointer) + atags_vaddr = FDT_VIRT_BASE(__atags_pointer); setup_processor(); - mdesc = setup_machine_fdt(__atags_pointer); + if (atags_vaddr) { + mdesc = setup_machine_fdt(atags_vaddr); + if (mdesc) + memblock_reserve(__atags_pointer, + fdt_totalsize(atags_vaddr)); + } if (!mdesc) - mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type); + mdesc = setup_machine_tags(atags_vaddr, __machine_arch_type); if (!mdesc) { early_print("\nError: invalid dtb and unrecognized/unsupported machine ID\n"); early_print(" r1=0x%08x, r2=0x%08x\n", __machine_arch_type, __atags_pointer); if (__atags_pointer) - early_print(" r2[]=%*ph\n", 16, - phys_to_virt(__atags_pointer)); + early_print(" r2[]=%*ph\n", 16, atags_vaddr); dump_machine_table(); } diff --git a/arch/arm/kernel/smccc-call.S b/arch/arm/kernel/smccc-call.S index 00664c78faca..931df62a7831 100644 --- a/arch/arm/kernel/smccc-call.S +++ b/arch/arm/kernel/smccc-call.S @@ -3,7 +3,9 @@ * Copyright (c) 2015, Linaro Limited */ #include +#include +#include #include #include #include @@ -27,7 +29,14 @@ UNWIND( .fnstart) UNWIND( .save {r4-r7}) ldm r12, {r4-r7} \instr - pop {r4-r7} + ldr r4, [sp, #36] + cmp r4, #0 + beq 1f // No quirk structure + ldr r5, [r4, #ARM_SMCCC_QUIRK_ID_OFFS] + cmp r5, #ARM_SMCCC_QUIRK_QCOM_A6 + bne 1f // No quirk present + str r6, [r4, #ARM_SMCCC_QUIRK_STATE_OFFS] +1: pop {r4-r7} ldr r12, [sp, #(4 * 4)] stm r12, {r0-r3} bx lr diff --git a/arch/arm/kernel/suspend.c b/arch/arm/kernel/suspend.c index 24bd20564be7..43f0a3ebf390 100644 --- a/arch/arm/kernel/suspend.c +++ b/arch/arm/kernel/suspend.c @@ -1,4 +1,5 @@ // SPDX-License-Identifier: GPL-2.0 +#include #include #include #include @@ -25,6 +26,13 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) if (!idmap_pgd) return -EINVAL; + /* + * Function graph tracer state gets incosistent when the kernel + * calls functions that never return (aka suspend finishers) hence + * disable graph tracing during their execution. + */ + pause_graph_tracing(); + /* * Provide a temporary page table with an identity mapping for * the MMU-enable code, required for resuming. On successful @@ -32,6 +40,9 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) * back to the correct page tables. */ ret = __cpu_suspend(arg, fn, __mpidr); + + unpause_graph_tracing(); + if (ret == 0) { cpu_switch_mm(mm->pgd, mm); local_flush_bp_all(); @@ -45,7 +56,13 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) { u32 __mpidr = cpu_logical_map(smp_processor_id()); - return __cpu_suspend(arg, fn, __mpidr); + int ret; + + pause_graph_tracing(); + ret = __cpu_suspend(arg, fn, __mpidr); + unpause_graph_tracing(); + + return ret; } #define idmap_pgd NULL #endif diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index c23dbf8bebee..d54d69cf1732 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c @@ -223,7 +223,6 @@ void __init arm_memblock_init(const struct machine_desc *mdesc) if (mdesc->reserve) mdesc->reserve(); - early_init_fdt_reserve_self(); early_init_fdt_scan_reserved_mem(); /* reserve memory for DMA contiguous allocations */ diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index ab69250a86bc..fa259825310c 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@ -39,6 +39,8 @@ #include "mm.h" #include "tcm.h" +extern unsigned long __atags_pointer; + /* * empty_zero_page is a special page that is used for * zero-initialized data and COW. @@ -946,7 +948,7 @@ static void __init create_mapping(struct map_desc *md) return; } - if ((md->type == MT_DEVICE || md->type == MT_ROM) && + if (md->type == MT_DEVICE && md->virtual >= PAGE_OFFSET && md->virtual < FIXADDR_START && (md->virtual < VMALLOC_START || md->virtual >= VMALLOC_END)) { pr_warn("BUG: mapping for 0x%08llx at 0x%08lx out of vmalloc space\n", @@ -1333,6 +1335,15 @@ static void __init devicemaps_init(const struct machine_desc *mdesc) for (addr = VMALLOC_START; addr < (FIXADDR_TOP & PMD_MASK); addr += PMD_SIZE) pmd_clear(pmd_off_k(addr)); + if (__atags_pointer) { + /* create a read-only mapping of the device tree */ + map.pfn = __phys_to_pfn(__atags_pointer & SECTION_MASK); + map.virtual = FDT_FIXED_BASE; + map.length = FDT_FIXED_SIZE; + map.type = MT_ROM; + create_mapping(&map); + } + /* * Map the kernel if it is XIP. * It is always first in the modulearea. @@ -1489,8 +1500,7 @@ static void __init map_lowmem(void) } #ifdef CONFIG_ARM_PV_FIXUP -extern unsigned long __atags_pointer; -typedef void pgtables_remap(long long offset, unsigned long pgd, void *bdata); +typedef void pgtables_remap(long long offset, unsigned long pgd); pgtables_remap lpae_pgtables_remap_asm; /* @@ -1503,7 +1513,6 @@ static void __init early_paging_init(const struct machine_desc *mdesc) unsigned long pa_pgd; unsigned int cr, ttbcr; long long offset; - void *boot_data; if (!mdesc->pv_fixup) return; @@ -1520,7 +1529,6 @@ static void __init early_paging_init(const struct machine_desc *mdesc) */ lpae_pgtables_remap = (pgtables_remap *)(unsigned long)__pa(lpae_pgtables_remap_asm); pa_pgd = __pa(swapper_pg_dir); - boot_data = __va(__atags_pointer); barrier(); pr_info("Switching physical address space to 0x%08llx\n", @@ -1556,7 +1564,7 @@ static void __init early_paging_init(const struct machine_desc *mdesc) * needs to be assembly. It's fairly simple, as we're using the * temporary tables setup by the initial assembly code. */ - lpae_pgtables_remap(offset, pa_pgd, boot_data); + lpae_pgtables_remap(offset, pa_pgd); /* Re-enable the caches and cacheable TLB walks */ asm volatile("mcr p15, 0, %0, c2, c0, 2" : : "r" (ttbcr)); diff --git a/arch/arm/mm/pv-fixup-asm.S b/arch/arm/mm/pv-fixup-asm.S index 8eade0416739..5c5e1952000a 100644 --- a/arch/arm/mm/pv-fixup-asm.S +++ b/arch/arm/mm/pv-fixup-asm.S @@ -39,8 +39,8 @@ ENTRY(lpae_pgtables_remap_asm) /* Update level 2 entries for the boot data */ add r7, r2, #0x1000 - add r7, r7, r3, lsr #SECTION_SHIFT - L2_ORDER - bic r7, r7, #(1 << L2_ORDER) - 1 + movw r3, #FDT_FIXED_BASE >> (SECTION_SHIFT - L2_ORDER) + add r7, r7, r3 ldrd r4, r5, [r7] adds r4, r4, r0 adc r5, r5, r1 diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile index 596c2ab255d0..7e2f0c346bbe 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -157,7 +157,10 @@ libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a boot := arch/arm64/boot KBUILD_IMAGE := $(boot)/Image.gz +# Don't compile Image in mixed build with "all" target +ifndef KBUILD_MIXED_TREE all: Image.gz +endif Image: vmlinux diff --git a/arch/arm64/Makefile.postlink b/arch/arm64/Makefile.postlink new file mode 100644 index 000000000000..eedcf35f8d94 --- /dev/null +++ b/arch/arm64/Makefile.postlink @@ -0,0 +1,38 @@ +# SPDX-License-Identifier: GPL-2.0 + +# +# This file is included by the generic Kbuild makefile to permit the +# architecture to perform postlink actions on vmlinux and any .ko module file. +# In this case, we only need it for fips140.ko, which needs a HMAC digest to be +# injected into it. All other targets are NOPs. +# + +PHONY := __archpost +__archpost: + +-include include/config/auto.conf +include scripts/Kbuild.include + +CMD_FIPS140_GEN_HMAC = crypto/fips140_gen_hmac +quiet_cmd_gen_hmac = HMAC $@ + cmd_gen_hmac = $(CMD_FIPS140_GEN_HMAC) $@ + +# `@true` prevents complaints when there is nothing to be done + +vmlinux: FORCE + @true + +$(objtree)/crypto/fips140.ko: FORCE + $(call cmd,gen_hmac) + +%.ko: FORCE + @true + +clean: + @true + +PHONY += FORCE clean + +FORCE: + +.PHONY: $(PHONY) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts index a1f621b388fe..358df6d926af 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts @@ -10,5 +10,5 @@ }; &mmc0 { - cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 push-push switch */ + broken-cd; /* card detect is broken on *some* boards */ }; diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var4.dts b/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var4.dts index df212ed5bb94..e65d1c477e2c 100644 --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var4.dts +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var4.dts @@ -31,11 +31,10 @@ reg = <0x4>; eee-broken-1000t; eee-broken-100tx; - qca,clk-out-frequency = <125000000>; qca,clk-out-strength = ; - - vddio-supply = <&vddh>; + qca,keep-pll-enabled; + vddio-supply = <&vddio>; vddio: vddio-regulator { regulator-name = "VDDIO"; diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi index 62f4dcb96e70..f3b58bb9b840 100644 --- a/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi +++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi @@ -192,8 +192,8 @@ ddr: memory-controller@1080000 { compatible = "fsl,qoriq-memory-controller"; reg = <0x0 0x1080000 0x0 0x1000>; - interrupts = ; - big-endian; + interrupts = ; + little-endian; }; dcfg: syscon@1e00000 { diff --git a/arch/arm64/boot/dts/freescale/imx8mq-librem5-r3.dts b/arch/arm64/boot/dts/freescale/imx8mq-librem5-r3.dts index 6704ea2c72a3..cc29223ca188 100644 --- a/arch/arm64/boot/dts/freescale/imx8mq-librem5-r3.dts +++ b/arch/arm64/boot/dts/freescale/imx8mq-librem5-r3.dts @@ -22,6 +22,10 @@ ti,termination-current = <144000>; /* uA */ }; +&buck3_reg { + regulator-always-on; +}; + &proximity { proximity-near-level = <25>; }; diff --git a/arch/arm64/boot/dts/freescale/imx8mq-zii-ultra.dtsi b/arch/arm64/boot/dts/freescale/imx8mq-zii-ultra.dtsi index fa7a041ffcfd..825c83c71a9f 100644 --- a/arch/arm64/boot/dts/freescale/imx8mq-zii-ultra.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mq-zii-ultra.dtsi @@ -45,8 +45,8 @@ reg_12p0_main: regulator-12p0-main { compatible = "regulator-fixed"; regulator-name = "12V_MAIN"; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; regulator-always-on; }; diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi index d5b6c0a1c54a..a89e47d95eef 100644 --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi @@ -156,7 +156,8 @@ }; nb_periph_clk: nb-periph-clk@13000 { - compatible = "marvell,armada-3700-periph-clock-nb"; + compatible = "marvell,armada-3700-periph-clock-nb", + "syscon"; reg = <0x13000 0x100>; clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>, <&tbg 3>, <&xtalclk>; diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi index 5e046f9d48ce..592c6bc10dd1 100644 --- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi @@ -1169,7 +1169,7 @@ <&mmsys CLK_MM_DSI1_DIGITAL>, <&mipi_tx1>; clock-names = "engine", "digital", "hs"; - phy = <&mipi_tx1>; + phys = <&mipi_tx1>; phy-names = "dphy"; status = "disabled"; }; diff --git a/arch/arm64/boot/dts/mediatek/pumpkin-common.dtsi b/arch/arm64/boot/dts/mediatek/pumpkin-common.dtsi index 29d8cf6df46b..99c2d6fd6304 100644 --- a/arch/arm64/boot/dts/mediatek/pumpkin-common.dtsi +++ b/arch/arm64/boot/dts/mediatek/pumpkin-common.dtsi @@ -56,7 +56,7 @@ tca6416: gpio@20 { compatible = "ti,tca6416"; reg = <0x20>; - reset-gpios = <&pio 65 GPIO_ACTIVE_HIGH>; + reset-gpios = <&pio 65 GPIO_ACTIVE_LOW>; pinctrl-names = "default"; pinctrl-0 = <&tca6416_pins>; diff --git a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts index c4ac6f5dc008..96d36b38f269 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts +++ b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts @@ -1015,7 +1015,7 @@ left_spkr: wsa8810-left{ compatible = "sdw10217201000"; reg = <0 1>; - powerdown-gpios = <&wcdgpio 2 GPIO_ACTIVE_HIGH>; + powerdown-gpios = <&wcdgpio 1 GPIO_ACTIVE_HIGH>; #thermal-sensor-cells = <0>; sound-name-prefix = "SpkrLeft"; #sound-dai-cells = <0>; @@ -1023,7 +1023,7 @@ right_spkr: wsa8810-right{ compatible = "sdw10217201000"; - powerdown-gpios = <&wcdgpio 2 GPIO_ACTIVE_HIGH>; + powerdown-gpios = <&wcdgpio 1 GPIO_ACTIVE_HIGH>; reg = <0 2>; #thermal-sensor-cells = <0>; sound-name-prefix = "SpkrRight"; diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi index f97f354af86f..ea6e3a11e641 100644 --- a/arch/arm64/boot/dts/qcom/sdm845.dtsi +++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi @@ -2192,7 +2192,7 @@ #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; - gpio-ranges = <&tlmm 0 0 150>; + gpio-ranges = <&tlmm 0 0 151>; wakeup-parent = <&pdc_intc>; cci0_default: cci0-default { diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi index f0a872e02686..1aec54590a11 100644 --- a/arch/arm64/boot/dts/qcom/sm8150.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi @@ -748,7 +748,7 @@ <0x0 0x03D00000 0x0 0x300000>; reg-names = "west", "east", "north", "south"; interrupts = ; - gpio-ranges = <&tlmm 0 0 175>; + gpio-ranges = <&tlmm 0 0 176>; gpio-controller; #gpio-cells = <2>; interrupt-controller; diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi index d057d85a19fb..d4547a192748 100644 --- a/arch/arm64/boot/dts/qcom/sm8250.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi @@ -216,7 +216,7 @@ pmu { compatible = "arm,armv8-pmuv3"; - interrupts = ; + interrupts = ; }; psci { @@ -1555,7 +1555,7 @@ #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; - gpio-ranges = <&tlmm 0 0 180>; + gpio-ranges = <&tlmm 0 0 181>; wakeup-parent = <&pdc>; qup_i2c0_default: qup-i2c0-default { @@ -2379,7 +2379,7 @@ (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>, , - ; }; diff --git a/arch/arm64/boot/dts/renesas/hihope-common.dtsi b/arch/arm64/boot/dts/renesas/hihope-common.dtsi index 2eda9f66ae81..e8bf6f0c4c40 100644 --- a/arch/arm64/boot/dts/renesas/hihope-common.dtsi +++ b/arch/arm64/boot/dts/renesas/hihope-common.dtsi @@ -12,6 +12,9 @@ aliases { serial0 = &scif2; serial1 = &hscif0; + mmc0 = &sdhi3; + mmc1 = &sdhi0; + mmc2 = &sdhi2; }; chosen { diff --git a/arch/arm64/boot/dts/renesas/r8a774a1-beacon-rzg2m-kit.dts b/arch/arm64/boot/dts/renesas/r8a774a1-beacon-rzg2m-kit.dts index 2c5b057c30c6..ad26f5bf0648 100644 --- a/arch/arm64/boot/dts/renesas/r8a774a1-beacon-rzg2m-kit.dts +++ b/arch/arm64/boot/dts/renesas/r8a774a1-beacon-rzg2m-kit.dts @@ -21,6 +21,9 @@ serial4 = &hscif2; serial5 = &scif5; ethernet0 = &avb; + mmc0 = &sdhi3; + mmc1 = &sdhi0; + mmc2 = &sdhi2; }; chosen { diff --git a/arch/arm64/boot/dts/renesas/r8a774c0-cat874.dts b/arch/arm64/boot/dts/renesas/r8a774c0-cat874.dts index 26aee004a44e..c4b50a5e3d92 100644 --- a/arch/arm64/boot/dts/renesas/r8a774c0-cat874.dts +++ b/arch/arm64/boot/dts/renesas/r8a774c0-cat874.dts @@ -17,6 +17,8 @@ aliases { serial0 = &scif2; serial1 = &hscif2; + mmc0 = &sdhi0; + mmc1 = &sdhi3; }; chosen { diff --git a/arch/arm64/boot/dts/renesas/r8a77980.dtsi b/arch/arm64/boot/dts/renesas/r8a77980.dtsi index d6cae90d7fd9..e6ef837c4a3b 100644 --- a/arch/arm64/boot/dts/renesas/r8a77980.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a77980.dtsi @@ -990,8 +990,8 @@ reg = <1>; - vin4csi41: endpoint@2 { - reg = <2>; + vin4csi41: endpoint@3 { + reg = <3>; remote-endpoint = <&csi41vin4>; }; }; @@ -1018,8 +1018,8 @@ reg = <1>; - vin5csi41: endpoint@2 { - reg = <2>; + vin5csi41: endpoint@3 { + reg = <3>; remote-endpoint = <&csi41vin5>; }; }; @@ -1046,8 +1046,8 @@ reg = <1>; - vin6csi41: endpoint@2 { - reg = <2>; + vin6csi41: endpoint@3 { + reg = <3>; remote-endpoint = <&csi41vin6>; }; }; @@ -1074,8 +1074,8 @@ reg = <1>; - vin7csi41: endpoint@2 { - reg = <2>; + vin7csi41: endpoint@3 { + reg = <3>; remote-endpoint = <&csi41vin7>; }; }; diff --git a/arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts b/arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts index e0ccca2222d2..b9e3b6762ff4 100644 --- a/arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts +++ b/arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts @@ -16,6 +16,9 @@ aliases { serial0 = &scif2; ethernet0 = &avb; + mmc0 = &sdhi3; + mmc1 = &sdhi0; + mmc2 = &sdhi1; }; chosen { diff --git a/arch/arm64/boot/dts/renesas/r8a779a0.dtsi b/arch/arm64/boot/dts/renesas/r8a779a0.dtsi index 6cf77ce9aa93..86ec32a919d2 100644 --- a/arch/arm64/boot/dts/renesas/r8a779a0.dtsi +++ b/arch/arm64/boot/dts/renesas/r8a779a0.dtsi @@ -50,10 +50,7 @@ pmu_a76 { compatible = "arm,cortex-a76-pmu"; - interrupts-extended = <&gic GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>, - <&gic GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>, - <&gic GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>, - <&gic GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&gic GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>; }; /* External SCIF clock - to be overridden by boards that provide it */ diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi index 1bf77957d2c2..08b8525bb725 100644 --- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi +++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi @@ -36,6 +36,9 @@ serial0 = &scif2; serial1 = &hscif1; ethernet0 = &avb; + mmc0 = &sdhi2; + mmc1 = &sdhi0; + mmc2 = &sdhi3; }; chosen { diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi index 202177706cde..05e64bfad023 100644 --- a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi @@ -16,6 +16,7 @@ aliases { serial1 = &hscif0; serial2 = &scif1; + mmc2 = &sdhi3; }; clksndsel: clksndsel { diff --git a/arch/arm64/boot/dts/renesas/ulcb.dtsi b/arch/arm64/boot/dts/renesas/ulcb.dtsi index a2e085db87c5..e11521b4b9ca 100644 --- a/arch/arm64/boot/dts/renesas/ulcb.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb.dtsi @@ -23,6 +23,8 @@ aliases { serial0 = &scif2; ethernet0 = &avb; + mmc0 = &sdhi2; + mmc1 = &sdhi0; }; chosen { diff --git a/arch/arm64/boot/dts/socionext/uniphier-ld20.dtsi b/arch/arm64/boot/dts/socionext/uniphier-ld20.dtsi index a87b8a678719..8f2c1c1e2c64 100644 --- a/arch/arm64/boot/dts/socionext/uniphier-ld20.dtsi +++ b/arch/arm64/boot/dts/socionext/uniphier-ld20.dtsi @@ -734,7 +734,7 @@ clocks = <&sys_clk 6>; reset-names = "ether"; resets = <&sys_rst 6>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; local-mac-address = [00 00 00 00 00 00]; socionext,syscon-phy-mode = <&soc_glue 0>; diff --git a/arch/arm64/boot/dts/socionext/uniphier-pxs3.dtsi b/arch/arm64/boot/dts/socionext/uniphier-pxs3.dtsi index 0e52dadf54b3..be97da132258 100644 --- a/arch/arm64/boot/dts/socionext/uniphier-pxs3.dtsi +++ b/arch/arm64/boot/dts/socionext/uniphier-pxs3.dtsi @@ -564,7 +564,7 @@ clocks = <&sys_clk 6>; reset-names = "ether"; resets = <&sys_rst 6>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; local-mac-address = [00 00 00 00 00 00]; socionext,syscon-phy-mode = <&soc_glue 0>; @@ -585,7 +585,7 @@ clocks = <&sys_clk 7>; reset-names = "ether"; resets = <&sys_rst 7>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; local-mac-address = [00 00 00 00 00 00]; socionext,syscon-phy-mode = <&soc_glue 1>; diff --git a/arch/arm64/boot/dts/ti/k3-j7200-main.dtsi b/arch/arm64/boot/dts/ti/k3-j7200-main.dtsi index 72d6496e88dd..689538244392 100644 --- a/arch/arm64/boot/dts/ti/k3-j7200-main.dtsi +++ b/arch/arm64/boot/dts/ti/k3-j7200-main.dtsi @@ -78,6 +78,8 @@ #size-cells = <2>; ranges = <0x00 0x30000000 0x00 0x30000000 0x00 0x0c400000>; ti,sci-dev-id = <199>; + dma-coherent; + dma-ranges; main_navss_intr: interrupt-controller1 { compatible = "ti,sci-intr"; diff --git a/arch/arm64/configs/db845c_gki.fragment b/arch/arm64/configs/db845c_gki.fragment index 5f6a7f17b770..d487757cfa3c 100644 --- a/arch/arm64/configs/db845c_gki.fragment +++ b/arch/arm64/configs/db845c_gki.fragment @@ -13,6 +13,7 @@ CONFIG_PINCTRL_QCOM_SPMI_PMIC=m CONFIG_PINCTRL_SDM845=m CONFIG_POWER_RESET_QCOM_PON=m CONFIG_SYSCON_REBOOT_MODE=m +CONFIG_QCOM_TSENS=m CONFIG_QCOM_WDT=m CONFIG_PM8916_WATCHDOG=m CONFIG_MFD_SPMI_PMIC=m diff --git a/arch/arm64/configs/fips140_gki.fragment b/arch/arm64/configs/fips140_gki.fragment new file mode 100644 index 000000000000..68292520be10 --- /dev/null +++ b/arch/arm64/configs/fips140_gki.fragment @@ -0,0 +1 @@ +CONFIG_CRYPTO_FIPS140_MOD=y diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index 2b80053258ca..2289194dae73 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -13,6 +13,7 @@ CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_IKHEADERS=y CONFIG_UCLAMP_TASK=y +CONFIG_UCLAMP_BUCKETS_COUNT=20 CONFIG_CGROUPS=y CONFIG_BLK_CGROUP=y CONFIG_CGROUP_SCHED=y @@ -43,6 +44,7 @@ CONFIG_SLAB_FREELIST_RANDOM=y CONFIG_SLAB_FREELIST_HARDENED=y CONFIG_SHUFFLE_PAGE_ALLOCATOR=y CONFIG_PROFILING=y +# CONFIG_ZONE_DMA is not set CONFIG_ARCH_SUNXI=y CONFIG_ARCH_HISI=y CONFIG_ARCH_QCOM=y @@ -225,20 +227,33 @@ CONFIG_MAC802154=y CONFIG_NET_SCHED=y CONFIG_NET_SCH_HTB=y CONFIG_NET_SCH_PRIO=y +CONFIG_NET_SCH_MULTIQ=y +CONFIG_NET_SCH_SFQ=y CONFIG_NET_SCH_TBF=y +CONFIG_NET_SCH_NETEM=y +CONFIG_NET_SCH_CODEL=y +CONFIG_NET_SCH_FQ_CODEL=y +CONFIG_NET_SCH_FQ=y CONFIG_NET_SCH_INGRESS=y CONFIG_NET_CLS_BASIC=y CONFIG_NET_CLS_TCINDEX=y CONFIG_NET_CLS_FW=y CONFIG_NET_CLS_U32=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_FLOW=y CONFIG_NET_CLS_BPF=y CONFIG_NET_CLS_MATCHALL=y CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=y +CONFIG_NET_EMATCH_NBYTE=y CONFIG_NET_EMATCH_U32=y +CONFIG_NET_EMATCH_META=y +CONFIG_NET_EMATCH_TEXT=y CONFIG_NET_CLS_ACT=y CONFIG_NET_ACT_POLICE=y CONFIG_NET_ACT_GACT=y CONFIG_NET_ACT_MIRRED=y +CONFIG_NET_ACT_SKBEDIT=y CONFIG_VSOCKETS=y CONFIG_BPF_JIT=y CONFIG_BT=y @@ -258,6 +273,7 @@ CONFIG_MAC80211=y CONFIG_RFKILL=y CONFIG_PCI=y CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y CONFIG_PCI_HOST_GENERIC=y CONFIG_PCIE_DW_PLAT_EP=y CONFIG_PCIE_QCOM=y @@ -299,17 +315,18 @@ CONFIG_WIREGUARD=y CONFIG_IFB=y CONFIG_TUN=y CONFIG_VETH=y -CONFIG_PHYLIB=y CONFIG_PPP=y CONFIG_PPP_BSDCOMP=y CONFIG_PPP_DEFLATE=y CONFIG_PPP_MPPE=y CONFIG_PPTP=y CONFIG_PPPOL2TP=y +CONFIG_USB_RTL8150=y CONFIG_USB_RTL8152=y CONFIG_USB_USBNET=y # CONFIG_USB_NET_AX8817X is not set # CONFIG_USB_NET_AX88179_178A is not set +CONFIG_USB_NET_CDC_EEM=y # CONFIG_USB_NET_NET1080 is not set # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set @@ -335,6 +352,8 @@ CONFIG_KEYBOARD_GPIO=y # CONFIG_MOUSE_PS2 is not set CONFIG_INPUT_JOYSTICK=y CONFIG_JOYSTICK_XPAD=y +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y CONFIG_INPUT_TOUCHSCREEN=y CONFIG_INPUT_MISC=y CONFIG_INPUT_UINPUT=y @@ -361,6 +380,7 @@ CONFIG_HW_RANDOM=y # CONFIG_DEVPORT is not set # CONFIG_I2C_COMPAT is not set # CONFIG_I2C_HELPER_AUTO is not set +CONFIG_I3C=y CONFIG_SPI=y CONFIG_SPMI=y # CONFIG_SPMI_MSM_PMIC_ARB is not set @@ -424,6 +444,7 @@ CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HIDRAW=y CONFIG_UHID=y CONFIG_HID_APPLE=y +CONFIG_HID_BETOP_FF=y CONFIG_HID_PRODIKEYS=y CONFIG_HID_ELECOM=y CONFIG_HID_UCLOGIC=y @@ -460,11 +481,14 @@ CONFIG_USB_CONFIGFS_UEVENT=y CONFIG_USB_CONFIGFS_SERIAL=y CONFIG_USB_CONFIGFS_ACM=y CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_ECM=y CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y CONFIG_USB_CONFIGFS_F_FS=y CONFIG_USB_CONFIGFS_F_ACC=y CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y +CONFIG_USB_CONFIGFS_F_UAC2=y CONFIG_USB_CONFIGFS_F_MIDI=y CONFIG_USB_CONFIGFS_F_HID=y CONFIG_TYPEC=y @@ -499,8 +523,10 @@ CONFIG_COMMON_CLK_SCPI=y CONFIG_HWSPINLOCK=y CONFIG_SUN4I_TIMER=y # CONFIG_SUN50I_ERRATUM_UNKNOWN1 is not set +CONFIG_MTK_TIMER=y CONFIG_MAILBOX=y CONFIG_IOMMU_LIMIT_IOVA_ALIGNMENT=y +CONFIG_IOMMU_IO_PGTABLE_ARMV7S=y CONFIG_REMOTEPROC=y CONFIG_REMOTEPROC_CDEV=y CONFIG_RPMSG_CHAR=y @@ -516,7 +542,6 @@ CONFIG_PWM=y CONFIG_GENERIC_PHY=y CONFIG_POWERCAP=y CONFIG_DTPM=y -CONFIG_RAS=y CONFIG_ANDROID=y CONFIG_ANDROID_BINDER_IPC=y CONFIG_ANDROID_BINDERFS=y @@ -544,12 +569,14 @@ CONFIG_OVERLAY_FS=y CONFIG_INCREMENTAL_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y +CONFIG_EXFAT_FS=y CONFIG_TMPFS=y # CONFIG_EFIVAR_FS is not set CONFIG_PSTORE=y CONFIG_PSTORE_CONSOLE=y CONFIG_PSTORE_PMSG=y CONFIG_PSTORE_RAM=y +CONFIG_EROFS_FS=y CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_CODEPAGE_737=y CONFIG_NLS_CODEPAGE_775=y @@ -637,12 +664,13 @@ CONFIG_UBSAN_TRAP=y CONFIG_UBSAN_LOCAL_BOUNDS=y # CONFIG_UBSAN_MISC is not set CONFIG_PAGE_OWNER=y +CONFIG_PAGE_PINNER=y CONFIG_DEBUG_STACK_USAGE=y CONFIG_DEBUG_MEMORY_INIT=y CONFIG_KASAN=y CONFIG_KASAN_HW_TAGS=y CONFIG_KFENCE=y -CONFIG_KFENCE_SAMPLE_INTERVAL=0 +CONFIG_KFENCE_SAMPLE_INTERVAL=500 CONFIG_KFENCE_NUM_OBJECTS=63 CONFIG_PANIC_ON_OOPS=y CONFIG_PANIC_TIMEOUT=-1 @@ -654,6 +682,4 @@ CONFIG_BUG_ON_DATA_CORRUPTION=y CONFIG_TRACE_MMIO_ACCESS=y CONFIG_TRACEFS_DISABLE_AUTOMOUNT=y CONFIG_HIST_TRIGGERS=y -CONFIG_KUNIT=y -CONFIG_KUNIT_DEBUGFS=y # CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/arch/arm64/crypto/Kbuild.fips140 b/arch/arm64/crypto/Kbuild.fips140 new file mode 100644 index 000000000000..986bdad2f50d --- /dev/null +++ b/arch/arm64/crypto/Kbuild.fips140 @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# Create a separate FIPS archive that duplicates the modules that are relevant +# for FIPS 140 certification as builtin objects +# + +sha1-ce-y := sha1-ce-glue.o sha1-ce-core.o +sha2-ce-y := sha2-ce-glue.o sha2-ce-core.o +sha512-ce-y := sha512-ce-glue.o sha512-ce-core.o +ghash-ce-y := ghash-ce-glue.o ghash-ce-core.o +aes-ce-cipher-y := aes-ce-core.o aes-ce-glue.o +aes-ce-blk-y := aes-glue-ce.o aes-ce.o +aes-neon-blk-y := aes-glue-neon.o aes-neon.o +sha256-arm64-y := sha256-glue.o sha256-core.o +sha512-arm64-y := sha512-glue.o sha512-core.o +aes-arm64-y := aes-cipher-core.o aes-cipher-glue.o +aes-neon-bs-y := aes-neonbs-core.o aes-neonbs-glue.o + +crypto-arm64-fips-src := $(srctree)/arch/arm64/crypto/ +crypto-arm64-fips-modules := sha1-ce.o sha2-ce.o sha512-ce.o ghash-ce.o \ + aes-ce-cipher.o aes-ce-blk.o aes-neon-blk.o \ + sha256-arm64.o sha512-arm64.o aes-arm64.o \ + aes-neon-bs.o + +crypto-fips-objs += $(foreach o,$(crypto-arm64-fips-modules),$($(o:.o=-y):.o=-fips-arch.o)) + +CFLAGS_aes-glue-ce-fips-arch.o := -DUSE_V8_CRYPTO_EXTENSIONS + +$(obj)/aes-glue-%-fips-arch.o: KBUILD_CFLAGS += $(FIPS140_CFLAGS) +$(obj)/aes-glue-%-fips-arch.o: $(crypto-arm64-fips-src)/aes-glue.c FORCE + $(call if_changed_rule,cc_o_c) + +$(obj)/%-fips-arch.o: KBUILD_CFLAGS += $(FIPS140_CFLAGS) +$(obj)/%-fips-arch.o: $(crypto-arm64-fips-src)/%.c FORCE + $(call if_changed_rule,cc_o_c) + +$(obj)/%-fips-arch.o: $(crypto-arm64-fips-src)/%.S FORCE + $(call if_changed_rule,as_o_S) + +$(obj)/%: $(crypto-arm64-fips-src)/%_shipped + $(call cmd,shipped) + +$(obj)/%-fips-arch.o: $(obj)/%.S FORCE + $(call if_changed_rule,as_o_S) diff --git a/arch/arm64/crypto/Kconfig b/arch/arm64/crypto/Kconfig index b8eb0453123d..454621a20eaa 100644 --- a/arch/arm64/crypto/Kconfig +++ b/arch/arm64/crypto/Kconfig @@ -88,16 +88,12 @@ config CRYPTO_AES_ARM64_CE_BLK depends on KERNEL_MODE_NEON select CRYPTO_SKCIPHER select CRYPTO_AES_ARM64_CE - select CRYPTO_AES_ARM64 - select CRYPTO_SIMD config CRYPTO_AES_ARM64_NEON_BLK tristate "AES in ECB/CBC/CTR/XTS modes using NEON instructions" depends on KERNEL_MODE_NEON select CRYPTO_SKCIPHER - select CRYPTO_AES_ARM64 select CRYPTO_LIB_AES - select CRYPTO_SIMD config CRYPTO_CHACHA20_NEON tristate "ChaCha20, XChaCha20, and XChaCha12 stream ciphers using NEON instructions" @@ -122,8 +118,6 @@ config CRYPTO_AES_ARM64_BS depends on KERNEL_MODE_NEON select CRYPTO_SKCIPHER select CRYPTO_AES_ARM64_NEON_BLK - select CRYPTO_AES_ARM64 select CRYPTO_LIB_AES - select CRYPTO_SIMD endif diff --git a/arch/arm64/crypto/aes-glue.c b/arch/arm64/crypto/aes-glue.c index 53c92e060c3d..326364c3ab5c 100644 --- a/arch/arm64/crypto/aes-glue.c +++ b/arch/arm64/crypto/aes-glue.c @@ -103,9 +103,9 @@ asmlinkage void aes_essiv_cbc_decrypt(u8 out[], u8 const in[], u32 const rk1[], int rounds, int blocks, u8 iv[], u32 const rk2[]); -asmlinkage void aes_mac_update(u8 const in[], u32 const rk[], int rounds, - int blocks, u8 dg[], int enc_before, - int enc_after); +asmlinkage int aes_mac_update(u8 const in[], u32 const rk[], int rounds, + int blocks, u8 dg[], int enc_before, + int enc_after); struct crypto_aes_xts_ctx { struct crypto_aes_ctx key1; @@ -442,7 +442,7 @@ static int __maybe_unused essiv_cbc_decrypt(struct skcipher_request *req) return err ?: cbc_decrypt_walk(req, &walk); } -static int ctr_encrypt(struct skcipher_request *req) +static int __maybe_unused ctr_encrypt(struct skcipher_request *req) { struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); struct crypto_aes_ctx *ctx = crypto_skcipher_ctx(tfm); @@ -481,29 +481,6 @@ static int ctr_encrypt(struct skcipher_request *req) return err; } -static void ctr_encrypt_one(struct crypto_skcipher *tfm, const u8 *src, u8 *dst) -{ - const struct crypto_aes_ctx *ctx = crypto_skcipher_ctx(tfm); - unsigned long flags; - - /* - * Temporarily disable interrupts to avoid races where - * cachelines are evicted when the CPU is interrupted - * to do something else. - */ - local_irq_save(flags); - aes_encrypt(ctx, dst, src); - local_irq_restore(flags); -} - -static int __maybe_unused ctr_encrypt_sync(struct skcipher_request *req) -{ - if (!crypto_simd_usable()) - return crypto_ctr_encrypt_walk(req, ctr_encrypt_one); - - return ctr_encrypt(req); -} - static int __maybe_unused xts_encrypt(struct skcipher_request *req) { struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); @@ -652,10 +629,9 @@ static int __maybe_unused xts_decrypt(struct skcipher_request *req) static struct skcipher_alg aes_algs[] = { { #if defined(USE_V8_CRYPTO_EXTENSIONS) || !IS_ENABLED(CONFIG_CRYPTO_AES_ARM64_BS) .base = { - .cra_name = "__ecb(aes)", - .cra_driver_name = "__ecb-aes-" MODE, + .cra_name = "ecb(aes)", + .cra_driver_name = "ecb-aes-" MODE, .cra_priority = PRIO, - .cra_flags = CRYPTO_ALG_INTERNAL, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct crypto_aes_ctx), .cra_module = THIS_MODULE, @@ -667,10 +643,9 @@ static struct skcipher_alg aes_algs[] = { { .decrypt = ecb_decrypt, }, { .base = { - .cra_name = "__cbc(aes)", - .cra_driver_name = "__cbc-aes-" MODE, + .cra_name = "cbc(aes)", + .cra_driver_name = "cbc-aes-" MODE, .cra_priority = PRIO, - .cra_flags = CRYPTO_ALG_INTERNAL, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct crypto_aes_ctx), .cra_module = THIS_MODULE, @@ -683,10 +658,9 @@ static struct skcipher_alg aes_algs[] = { { .decrypt = cbc_decrypt, }, { .base = { - .cra_name = "__ctr(aes)", - .cra_driver_name = "__ctr-aes-" MODE, + .cra_name = "ctr(aes)", + .cra_driver_name = "ctr-aes-" MODE, .cra_priority = PRIO, - .cra_flags = CRYPTO_ALG_INTERNAL, .cra_blocksize = 1, .cra_ctxsize = sizeof(struct crypto_aes_ctx), .cra_module = THIS_MODULE, @@ -700,26 +674,9 @@ static struct skcipher_alg aes_algs[] = { { .decrypt = ctr_encrypt, }, { .base = { - .cra_name = "ctr(aes)", - .cra_driver_name = "ctr-aes-" MODE, - .cra_priority = PRIO - 1, - .cra_blocksize = 1, - .cra_ctxsize = sizeof(struct crypto_aes_ctx), - .cra_module = THIS_MODULE, - }, - .min_keysize = AES_MIN_KEY_SIZE, - .max_keysize = AES_MAX_KEY_SIZE, - .ivsize = AES_BLOCK_SIZE, - .chunksize = AES_BLOCK_SIZE, - .setkey = skcipher_aes_setkey, - .encrypt = ctr_encrypt_sync, - .decrypt = ctr_encrypt_sync, -}, { - .base = { - .cra_name = "__xts(aes)", - .cra_driver_name = "__xts-aes-" MODE, + .cra_name = "xts(aes)", + .cra_driver_name = "xts-aes-" MODE, .cra_priority = PRIO, - .cra_flags = CRYPTO_ALG_INTERNAL, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct crypto_aes_xts_ctx), .cra_module = THIS_MODULE, @@ -734,10 +691,9 @@ static struct skcipher_alg aes_algs[] = { { }, { #endif .base = { - .cra_name = "__cts(cbc(aes))", - .cra_driver_name = "__cts-cbc-aes-" MODE, + .cra_name = "cts(cbc(aes))", + .cra_driver_name = "cts-cbc-aes-" MODE, .cra_priority = PRIO, - .cra_flags = CRYPTO_ALG_INTERNAL, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct crypto_aes_ctx), .cra_module = THIS_MODULE, @@ -751,10 +707,9 @@ static struct skcipher_alg aes_algs[] = { { .decrypt = cts_cbc_decrypt, }, { .base = { - .cra_name = "__essiv(cbc(aes),sha256)", - .cra_driver_name = "__essiv-cbc-aes-sha256-" MODE, + .cra_name = "essiv(cbc(aes),sha256)", + .cra_driver_name = "essiv-cbc-aes-sha256-" MODE, .cra_priority = PRIO + 1, - .cra_flags = CRYPTO_ALG_INTERNAL, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct crypto_aes_essiv_cbc_ctx), .cra_module = THIS_MODULE, @@ -852,10 +807,17 @@ static void mac_do_update(struct crypto_aes_ctx *ctx, u8 const in[], int blocks, int rounds = 6 + ctx->key_length / 4; if (crypto_simd_usable()) { - kernel_neon_begin(); - aes_mac_update(in, ctx->key_enc, rounds, blocks, dg, enc_before, - enc_after); - kernel_neon_end(); + int rem; + + do { + kernel_neon_begin(); + rem = aes_mac_update(in, ctx->key_enc, rounds, blocks, + dg, enc_before, enc_after); + kernel_neon_end(); + in += (blocks - rem) * AES_BLOCK_SIZE; + blocks = rem; + enc_before = 0; + } while (blocks); } else { if (enc_before) aes_encrypt(ctx, dg, dg); @@ -986,28 +948,15 @@ static struct shash_alg mac_algs[] = { { .descsize = sizeof(struct mac_desc_ctx), } }; -static struct simd_skcipher_alg *aes_simd_algs[ARRAY_SIZE(aes_algs)]; - static void aes_exit(void) { - int i; - - for (i = 0; i < ARRAY_SIZE(aes_simd_algs); i++) - if (aes_simd_algs[i]) - simd_skcipher_free(aes_simd_algs[i]); - crypto_unregister_shashes(mac_algs, ARRAY_SIZE(mac_algs)); crypto_unregister_skciphers(aes_algs, ARRAY_SIZE(aes_algs)); } static int __init aes_init(void) { - struct simd_skcipher_alg *simd; - const char *basename; - const char *algname; - const char *drvname; int err; - int i; err = crypto_register_skciphers(aes_algs, ARRAY_SIZE(aes_algs)); if (err) @@ -1017,26 +966,8 @@ static int __init aes_init(void) if (err) goto unregister_ciphers; - for (i = 0; i < ARRAY_SIZE(aes_algs); i++) { - if (!(aes_algs[i].base.cra_flags & CRYPTO_ALG_INTERNAL)) - continue; - - algname = aes_algs[i].base.cra_name + 2; - drvname = aes_algs[i].base.cra_driver_name + 2; - basename = aes_algs[i].base.cra_driver_name; - simd = simd_skcipher_create_compat(algname, drvname, basename); - err = PTR_ERR(simd); - if (IS_ERR(simd)) - goto unregister_simds; - - aes_simd_algs[i] = simd; - } - return 0; -unregister_simds: - aes_exit(); - return err; unregister_ciphers: crypto_unregister_skciphers(aes_algs, ARRAY_SIZE(aes_algs)); return err; diff --git a/arch/arm64/crypto/aes-modes.S b/arch/arm64/crypto/aes-modes.S index cf618d8f6cec..503d9b31795c 100644 --- a/arch/arm64/crypto/aes-modes.S +++ b/arch/arm64/crypto/aes-modes.S @@ -619,61 +619,47 @@ AES_FUNC_END(aes_xts_decrypt) * int blocks, u8 dg[], int enc_before, int enc_after) */ AES_FUNC_START(aes_mac_update) - frame_push 6 - - mov x19, x0 - mov x20, x1 - mov x21, x2 - mov x22, x3 - mov x23, x4 - mov x24, x6 - - ld1 {v0.16b}, [x23] /* get dg */ + ld1 {v0.16b}, [x4] /* get dg */ enc_prepare w2, x1, x7 cbz w5, .Lmacloop4x encrypt_block v0, w2, x1, x7, w8 .Lmacloop4x: - subs w22, w22, #4 + subs w3, w3, #4 bmi .Lmac1x - ld1 {v1.16b-v4.16b}, [x19], #64 /* get next pt block */ + ld1 {v1.16b-v4.16b}, [x0], #64 /* get next pt block */ eor v0.16b, v0.16b, v1.16b /* ..and xor with dg */ - encrypt_block v0, w21, x20, x7, w8 + encrypt_block v0, w2, x1, x7, w8 eor v0.16b, v0.16b, v2.16b - encrypt_block v0, w21, x20, x7, w8 + encrypt_block v0, w2, x1, x7, w8 eor v0.16b, v0.16b, v3.16b - encrypt_block v0, w21, x20, x7, w8 + encrypt_block v0, w2, x1, x7, w8 eor v0.16b, v0.16b, v4.16b - cmp w22, wzr - csinv x5, x24, xzr, eq + cmp w3, wzr + csinv x5, x6, xzr, eq cbz w5, .Lmacout - encrypt_block v0, w21, x20, x7, w8 - st1 {v0.16b}, [x23] /* return dg */ - cond_yield_neon .Lmacrestart + encrypt_block v0, w2, x1, x7, w8 + st1 {v0.16b}, [x4] /* return dg */ + cond_yield .Lmacout, x7, x8 b .Lmacloop4x .Lmac1x: - add w22, w22, #4 + add w3, w3, #4 .Lmacloop: - cbz w22, .Lmacout - ld1 {v1.16b}, [x19], #16 /* get next pt block */ + cbz w3, .Lmacout + ld1 {v1.16b}, [x0], #16 /* get next pt block */ eor v0.16b, v0.16b, v1.16b /* ..and xor with dg */ - subs w22, w22, #1 - csinv x5, x24, xzr, eq + subs w3, w3, #1 + csinv x5, x6, xzr, eq cbz w5, .Lmacout .Lmacenc: - encrypt_block v0, w21, x20, x7, w8 + encrypt_block v0, w2, x1, x7, w8 b .Lmacloop .Lmacout: - st1 {v0.16b}, [x23] /* return dg */ - frame_pop + st1 {v0.16b}, [x4] /* return dg */ + mov w0, w3 ret - -.Lmacrestart: - ld1 {v0.16b}, [x23] /* get dg */ - enc_prepare w21, x20, x0 - b .Lmacloop4x AES_FUNC_END(aes_mac_update) diff --git a/arch/arm64/crypto/aes-neonbs-core.S b/arch/arm64/crypto/aes-neonbs-core.S index 63a52ad9a75c..a3405b8c344b 100644 --- a/arch/arm64/crypto/aes-neonbs-core.S +++ b/arch/arm64/crypto/aes-neonbs-core.S @@ -613,7 +613,6 @@ SYM_FUNC_END(aesbs_decrypt8) st1 {\o7\().16b}, [x19], #16 cbz x23, 1f - cond_yield_neon b 99b 1: frame_pop @@ -715,7 +714,6 @@ SYM_FUNC_START(aesbs_cbc_decrypt) 1: st1 {v24.16b}, [x24] // store IV cbz x23, 2f - cond_yield_neon b 99b 2: frame_pop @@ -801,7 +799,7 @@ SYM_FUNC_END(__xts_crypt8) mov x23, x4 mov x24, x5 -0: movi v30.2s, #0x1 + movi v30.2s, #0x1 movi v25.2s, #0x87 uzp1 v30.4s, v30.4s, v25.4s ld1 {v25.16b}, [x24] @@ -846,7 +844,6 @@ SYM_FUNC_END(__xts_crypt8) cbz x23, 1f st1 {v25.16b}, [x24] - cond_yield_neon 0b b 99b 1: st1 {v25.16b}, [x24] @@ -889,7 +886,7 @@ SYM_FUNC_START(aesbs_ctr_encrypt) cset x26, ne add x23, x23, x26 // do one extra block if final -98: ldp x7, x8, [x24] + ldp x7, x8, [x24] ld1 {v0.16b}, [x24] CPU_LE( rev x7, x7 ) CPU_LE( rev x8, x8 ) @@ -967,7 +964,6 @@ CPU_LE( rev x8, x8 ) st1 {v0.16b}, [x24] cbz x23, .Lctr_done - cond_yield_neon 98b b 99b .Lctr_done: diff --git a/arch/arm64/crypto/aes-neonbs-glue.c b/arch/arm64/crypto/aes-neonbs-glue.c index fb507d569922..8df6ad8cb09d 100644 --- a/arch/arm64/crypto/aes-neonbs-glue.c +++ b/arch/arm64/crypto/aes-neonbs-glue.c @@ -63,11 +63,6 @@ struct aesbs_cbc_ctx { u32 enc[AES_MAX_KEYLENGTH_U32]; }; -struct aesbs_ctr_ctx { - struct aesbs_ctx key; /* must be first member */ - struct crypto_aes_ctx fallback; -}; - struct aesbs_xts_ctx { struct aesbs_ctx key; u32 twkey[AES_MAX_KEYLENGTH_U32]; @@ -207,25 +202,6 @@ static int cbc_decrypt(struct skcipher_request *req) return err; } -static int aesbs_ctr_setkey_sync(struct crypto_skcipher *tfm, const u8 *in_key, - unsigned int key_len) -{ - struct aesbs_ctr_ctx *ctx = crypto_skcipher_ctx(tfm); - int err; - - err = aes_expandkey(&ctx->fallback, in_key, key_len); - if (err) - return err; - - ctx->key.rounds = 6 + key_len / 4; - - kernel_neon_begin(); - aesbs_convert_key(ctx->key.rk, ctx->fallback.key_enc, ctx->key.rounds); - kernel_neon_end(); - - return 0; -} - static int ctr_encrypt(struct skcipher_request *req) { struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); @@ -292,29 +268,6 @@ static int aesbs_xts_setkey(struct crypto_skcipher *tfm, const u8 *in_key, return aesbs_setkey(tfm, in_key, key_len); } -static void ctr_encrypt_one(struct crypto_skcipher *tfm, const u8 *src, u8 *dst) -{ - struct aesbs_ctr_ctx *ctx = crypto_skcipher_ctx(tfm); - unsigned long flags; - - /* - * Temporarily disable interrupts to avoid races where - * cachelines are evicted when the CPU is interrupted - * to do something else. - */ - local_irq_save(flags); - aes_encrypt(&ctx->fallback, dst, src); - local_irq_restore(flags); -} - -static int ctr_encrypt_sync(struct skcipher_request *req) -{ - if (!crypto_simd_usable()) - return crypto_ctr_encrypt_walk(req, ctr_encrypt_one); - - return ctr_encrypt(req); -} - static int __xts_crypt(struct skcipher_request *req, bool encrypt, void (*fn)(u8 out[], u8 const in[], u8 const rk[], int rounds, int blocks, u8 iv[])) @@ -431,13 +384,12 @@ static int xts_decrypt(struct skcipher_request *req) } static struct skcipher_alg aes_algs[] = { { - .base.cra_name = "__ecb(aes)", - .base.cra_driver_name = "__ecb-aes-neonbs", + .base.cra_name = "ecb(aes)", + .base.cra_driver_name = "ecb-aes-neonbs", .base.cra_priority = 250, .base.cra_blocksize = AES_BLOCK_SIZE, .base.cra_ctxsize = sizeof(struct aesbs_ctx), .base.cra_module = THIS_MODULE, - .base.cra_flags = CRYPTO_ALG_INTERNAL, .min_keysize = AES_MIN_KEY_SIZE, .max_keysize = AES_MAX_KEY_SIZE, @@ -446,13 +398,12 @@ static struct skcipher_alg aes_algs[] = { { .encrypt = ecb_encrypt, .decrypt = ecb_decrypt, }, { - .base.cra_name = "__cbc(aes)", - .base.cra_driver_name = "__cbc-aes-neonbs", + .base.cra_name = "cbc(aes)", + .base.cra_driver_name = "cbc-aes-neonbs", .base.cra_priority = 250, .base.cra_blocksize = AES_BLOCK_SIZE, .base.cra_ctxsize = sizeof(struct aesbs_cbc_ctx), .base.cra_module = THIS_MODULE, - .base.cra_flags = CRYPTO_ALG_INTERNAL, .min_keysize = AES_MIN_KEY_SIZE, .max_keysize = AES_MAX_KEY_SIZE, @@ -462,13 +413,12 @@ static struct skcipher_alg aes_algs[] = { { .encrypt = cbc_encrypt, .decrypt = cbc_decrypt, }, { - .base.cra_name = "__ctr(aes)", - .base.cra_driver_name = "__ctr-aes-neonbs", + .base.cra_name = "ctr(aes)", + .base.cra_driver_name = "ctr-aes-neonbs", .base.cra_priority = 250, .base.cra_blocksize = 1, .base.cra_ctxsize = sizeof(struct aesbs_ctx), .base.cra_module = THIS_MODULE, - .base.cra_flags = CRYPTO_ALG_INTERNAL, .min_keysize = AES_MIN_KEY_SIZE, .max_keysize = AES_MAX_KEY_SIZE, @@ -479,29 +429,12 @@ static struct skcipher_alg aes_algs[] = { { .encrypt = ctr_encrypt, .decrypt = ctr_encrypt, }, { - .base.cra_name = "ctr(aes)", - .base.cra_driver_name = "ctr-aes-neonbs", - .base.cra_priority = 250 - 1, - .base.cra_blocksize = 1, - .base.cra_ctxsize = sizeof(struct aesbs_ctr_ctx), - .base.cra_module = THIS_MODULE, - - .min_keysize = AES_MIN_KEY_SIZE, - .max_keysize = AES_MAX_KEY_SIZE, - .chunksize = AES_BLOCK_SIZE, - .walksize = 8 * AES_BLOCK_SIZE, - .ivsize = AES_BLOCK_SIZE, - .setkey = aesbs_ctr_setkey_sync, - .encrypt = ctr_encrypt_sync, - .decrypt = ctr_encrypt_sync, -}, { - .base.cra_name = "__xts(aes)", - .base.cra_driver_name = "__xts-aes-neonbs", + .base.cra_name = "xts(aes)", + .base.cra_driver_name = "xts-aes-neonbs", .base.cra_priority = 250, .base.cra_blocksize = AES_BLOCK_SIZE, .base.cra_ctxsize = sizeof(struct aesbs_xts_ctx), .base.cra_module = THIS_MODULE, - .base.cra_flags = CRYPTO_ALG_INTERNAL, .min_keysize = 2 * AES_MIN_KEY_SIZE, .max_keysize = 2 * AES_MAX_KEY_SIZE, @@ -512,54 +445,17 @@ static struct skcipher_alg aes_algs[] = { { .decrypt = xts_decrypt, } }; -static struct simd_skcipher_alg *aes_simd_algs[ARRAY_SIZE(aes_algs)]; - static void aes_exit(void) { - int i; - - for (i = 0; i < ARRAY_SIZE(aes_simd_algs); i++) - if (aes_simd_algs[i]) - simd_skcipher_free(aes_simd_algs[i]); - crypto_unregister_skciphers(aes_algs, ARRAY_SIZE(aes_algs)); } static int __init aes_init(void) { - struct simd_skcipher_alg *simd; - const char *basename; - const char *algname; - const char *drvname; - int err; - int i; - if (!cpu_have_named_feature(ASIMD)) return -ENODEV; - err = crypto_register_skciphers(aes_algs, ARRAY_SIZE(aes_algs)); - if (err) - return err; - - for (i = 0; i < ARRAY_SIZE(aes_algs); i++) { - if (!(aes_algs[i].base.cra_flags & CRYPTO_ALG_INTERNAL)) - continue; - - algname = aes_algs[i].base.cra_name + 2; - drvname = aes_algs[i].base.cra_driver_name + 2; - basename = aes_algs[i].base.cra_driver_name; - simd = simd_skcipher_create_compat(algname, drvname, basename); - err = PTR_ERR(simd); - if (IS_ERR(simd)) - goto unregister_simds; - - aes_simd_algs[i] = simd; - } - return 0; - -unregister_simds: - aes_exit(); - return err; + return crypto_register_skciphers(aes_algs, ARRAY_SIZE(aes_algs)); } module_init(aes_init); diff --git a/arch/arm64/crypto/crct10dif-ce-core.S b/arch/arm64/crypto/crct10dif-ce-core.S index 111d9c9abddd..dce6dcebfca1 100644 --- a/arch/arm64/crypto/crct10dif-ce-core.S +++ b/arch/arm64/crypto/crct10dif-ce-core.S @@ -68,10 +68,10 @@ .text .arch armv8-a+crypto - init_crc .req w19 - buf .req x20 - len .req x21 - fold_consts_ptr .req x22 + init_crc .req w0 + buf .req x1 + len .req x2 + fold_consts_ptr .req x3 fold_consts .req v10 @@ -257,12 +257,6 @@ CPU_LE( ext v12.16b, v12.16b, v12.16b, #8 ) .endm .macro crc_t10dif_pmull, p - frame_push 4, 128 - - mov init_crc, w0 - mov buf, x1 - mov len, x2 - __pmull_init_\p // For sizes less than 256 bytes, we can't fold 128 bytes at a time. @@ -317,26 +311,7 @@ CPU_LE( ext v7.16b, v7.16b, v7.16b, #8 ) fold_32_bytes \p, v6, v7 subs len, len, #128 - b.lt .Lfold_128_bytes_loop_done_\@ - - if_will_cond_yield_neon - stp q0, q1, [sp, #.Lframe_local_offset] - stp q2, q3, [sp, #.Lframe_local_offset + 32] - stp q4, q5, [sp, #.Lframe_local_offset + 64] - stp q6, q7, [sp, #.Lframe_local_offset + 96] - do_cond_yield_neon - ldp q0, q1, [sp, #.Lframe_local_offset] - ldp q2, q3, [sp, #.Lframe_local_offset + 32] - ldp q4, q5, [sp, #.Lframe_local_offset + 64] - ldp q6, q7, [sp, #.Lframe_local_offset + 96] - ld1 {fold_consts.2d}, [fold_consts_ptr] - __pmull_init_\p - __pmull_pre_\p fold_consts - endif_yield_neon - - b .Lfold_128_bytes_loop_\@ - -.Lfold_128_bytes_loop_done_\@: + b.ge .Lfold_128_bytes_loop_\@ // Now fold the 112 bytes in v0-v6 into the 16 bytes in v7. @@ -453,7 +428,9 @@ CPU_LE( ext v0.16b, v0.16b, v0.16b, #8 ) // Final CRC value (x^16 * M(x)) mod G(x) is in low 16 bits of v0. umov w0, v0.h[0] - frame_pop + .ifc \p, p8 + ldp x29, x30, [sp], #16 + .endif ret .Lless_than_256_bytes_\@: @@ -489,7 +466,9 @@ CPU_LE( ext v7.16b, v7.16b, v7.16b, #8 ) // Assumes len >= 16. // SYM_FUNC_START(crc_t10dif_pmull_p8) - crc_t10dif_pmull p8 + stp x29, x30, [sp, #-16]! + mov x29, sp + crc_t10dif_pmull p8 SYM_FUNC_END(crc_t10dif_pmull_p8) .align 5 diff --git a/arch/arm64/crypto/crct10dif-ce-glue.c b/arch/arm64/crypto/crct10dif-ce-glue.c index ccc3f6067742..09eb1456aed4 100644 --- a/arch/arm64/crypto/crct10dif-ce-glue.c +++ b/arch/arm64/crypto/crct10dif-ce-glue.c @@ -37,9 +37,18 @@ static int crct10dif_update_pmull_p8(struct shash_desc *desc, const u8 *data, u16 *crc = shash_desc_ctx(desc); if (length >= CRC_T10DIF_PMULL_CHUNK_SIZE && crypto_simd_usable()) { - kernel_neon_begin(); - *crc = crc_t10dif_pmull_p8(*crc, data, length); - kernel_neon_end(); + do { + unsigned int chunk = length; + + if (chunk > SZ_4K + CRC_T10DIF_PMULL_CHUNK_SIZE) + chunk = SZ_4K; + + kernel_neon_begin(); + *crc = crc_t10dif_pmull_p8(*crc, data, chunk); + kernel_neon_end(); + data += chunk; + length -= chunk; + } while (length); } else { *crc = crc_t10dif_generic(*crc, data, length); } @@ -53,9 +62,18 @@ static int crct10dif_update_pmull_p64(struct shash_desc *desc, const u8 *data, u16 *crc = shash_desc_ctx(desc); if (length >= CRC_T10DIF_PMULL_CHUNK_SIZE && crypto_simd_usable()) { - kernel_neon_begin(); - *crc = crc_t10dif_pmull_p64(*crc, data, length); - kernel_neon_end(); + do { + unsigned int chunk = length; + + if (chunk > SZ_4K + CRC_T10DIF_PMULL_CHUNK_SIZE) + chunk = SZ_4K; + + kernel_neon_begin(); + *crc = crc_t10dif_pmull_p64(*crc, data, chunk); + kernel_neon_end(); + data += chunk; + length -= chunk; + } while (length); } else { *crc = crc_t10dif_generic(*crc, data, length); } diff --git a/arch/arm64/crypto/ghash-ce-core.S b/arch/arm64/crypto/ghash-ce-core.S index 6b958dcdf136..7868330dd54e 100644 --- a/arch/arm64/crypto/ghash-ce-core.S +++ b/arch/arm64/crypto/ghash-ce-core.S @@ -544,7 +544,22 @@ CPU_LE( rev w8, w8 ) ext XL.16b, XL.16b, XL.16b, #8 rev64 XL.16b, XL.16b eor XL.16b, XL.16b, KS0.16b + + .if \enc == 1 st1 {XL.16b}, [x10] // store tag + .else + ldp x11, x12, [sp, #40] // load tag pointer and authsize + adr_l x17, .Lpermute_table + ld1 {KS0.16b}, [x11] // load supplied tag + add x17, x17, x12 + ld1 {KS1.16b}, [x17] // load permute vector + + cmeq XL.16b, XL.16b, KS0.16b // compare tags + mvn XL.16b, XL.16b // -1 for fail, 0 for pass + tbl XL.16b, {XL.16b}, KS1.16b // keep authsize bytes only + sminv b0, XL.16b // signed minimum across XL + smov w0, v0.b[0] // return b0 + .endif 4: ldp x29, x30, [sp], #32 ret diff --git a/arch/arm64/crypto/ghash-ce-glue.c b/arch/arm64/crypto/ghash-ce-glue.c index 8536008e3e35..184602a97454 100644 --- a/arch/arm64/crypto/ghash-ce-glue.c +++ b/arch/arm64/crypto/ghash-ce-glue.c @@ -55,10 +55,10 @@ asmlinkage void pmull_ghash_update_p8(int blocks, u64 dg[], const char *src, asmlinkage void pmull_gcm_encrypt(int bytes, u8 dst[], const u8 src[], u64 const h[][2], u64 dg[], u8 ctr[], u32 const rk[], int rounds, u8 tag[]); - -asmlinkage void pmull_gcm_decrypt(int bytes, u8 dst[], const u8 src[], - u64 const h[][2], u64 dg[], u8 ctr[], - u32 const rk[], int rounds, u8 tag[]); +asmlinkage int pmull_gcm_decrypt(int bytes, u8 dst[], const u8 src[], + u64 const h[][2], u64 dg[], u8 ctr[], + u32 const rk[], int rounds, const u8 l[], + const u8 tag[], u64 authsize); static int ghash_init(struct shash_desc *desc) { @@ -458,6 +458,7 @@ static int gcm_decrypt(struct aead_request *req) unsigned int authsize = crypto_aead_authsize(aead); int nrounds = num_rounds(&ctx->aes_key); struct skcipher_walk walk; + u8 otag[AES_BLOCK_SIZE]; u8 buf[AES_BLOCK_SIZE]; u8 iv[AES_BLOCK_SIZE]; u64 dg[2] = {}; @@ -474,9 +475,15 @@ static int gcm_decrypt(struct aead_request *req) memcpy(iv, req->iv, GCM_IV_SIZE); put_unaligned_be32(2, iv + GCM_IV_SIZE); + scatterwalk_map_and_copy(otag, req->src, + req->assoclen + req->cryptlen - authsize, + authsize, 0); + err = skcipher_walk_aead_decrypt(&walk, req, false); if (likely(crypto_simd_usable())) { + int ret; + do { const u8 *src = walk.src.virt.addr; u8 *dst = walk.dst.virt.addr; @@ -493,9 +500,10 @@ static int gcm_decrypt(struct aead_request *req) } kernel_neon_begin(); - pmull_gcm_decrypt(nbytes, dst, src, ctx->ghash_key.h, - dg, iv, ctx->aes_key.key_enc, nrounds, - tag); + ret = pmull_gcm_decrypt(nbytes, dst, src, + ctx->ghash_key.h, + dg, iv, ctx->aes_key.key_enc, + nrounds, tag, otag, authsize); kernel_neon_end(); if (unlikely(!nbytes)) @@ -507,6 +515,11 @@ static int gcm_decrypt(struct aead_request *req) err = skcipher_walk_done(&walk, walk.nbytes - nbytes); } while (walk.nbytes); + + if (err) + return err; + if (ret) + return -EBADMSG; } else { while (walk.nbytes >= AES_BLOCK_SIZE) { int blocks = walk.nbytes / AES_BLOCK_SIZE; @@ -548,23 +561,20 @@ static int gcm_decrypt(struct aead_request *req) err = skcipher_walk_done(&walk, 0); } + if (err) + return err; + put_unaligned_be64(dg[1], tag); put_unaligned_be64(dg[0], tag + 8); put_unaligned_be32(1, iv + GCM_IV_SIZE); aes_encrypt(&ctx->aes_key, iv, iv); crypto_xor(tag, iv, AES_BLOCK_SIZE); + + if (crypto_memneq(tag, otag, authsize)) { + memzero_explicit(tag, AES_BLOCK_SIZE); + return -EBADMSG; + } } - - if (err) - return err; - - /* compare calculated auth tag with the stored one */ - scatterwalk_map_and_copy(buf, req->src, - req->assoclen + req->cryptlen - authsize, - authsize, 0); - - if (crypto_memneq(tag, buf, authsize)) - return -EBADMSG; return 0; } diff --git a/arch/arm64/crypto/poly1305-glue.c b/arch/arm64/crypto/poly1305-glue.c index f33ada70c4ed..01e22fe40823 100644 --- a/arch/arm64/crypto/poly1305-glue.c +++ b/arch/arm64/crypto/poly1305-glue.c @@ -25,7 +25,7 @@ asmlinkage void poly1305_emit(void *state, u8 *digest, const u32 *nonce); static __ro_after_init DEFINE_STATIC_KEY_FALSE(have_neon); -void poly1305_init_arch(struct poly1305_desc_ctx *dctx, const u8 *key) +void poly1305_init_arch(struct poly1305_desc_ctx *dctx, const u8 key[POLY1305_KEY_SIZE]) { poly1305_init_arm64(&dctx->h, key); dctx->s[0] = get_unaligned_le32(key + 16); diff --git a/arch/arm64/crypto/sha1-ce-core.S b/arch/arm64/crypto/sha1-ce-core.S index 92d0d2753e81..889ca0f8972b 100644 --- a/arch/arm64/crypto/sha1-ce-core.S +++ b/arch/arm64/crypto/sha1-ce-core.S @@ -62,40 +62,34 @@ .endm /* - * void sha1_ce_transform(struct sha1_ce_state *sst, u8 const *src, - * int blocks) + * int sha1_ce_transform(struct sha1_ce_state *sst, u8 const *src, + * int blocks) */ SYM_FUNC_START(sha1_ce_transform) - frame_push 3 - - mov x19, x0 - mov x20, x1 - mov x21, x2 - /* load round constants */ -0: loadrc k0.4s, 0x5a827999, w6 + loadrc k0.4s, 0x5a827999, w6 loadrc k1.4s, 0x6ed9eba1, w6 loadrc k2.4s, 0x8f1bbcdc, w6 loadrc k3.4s, 0xca62c1d6, w6 /* load state */ - ld1 {dgav.4s}, [x19] - ldr dgb, [x19, #16] + ld1 {dgav.4s}, [x0] + ldr dgb, [x0, #16] /* load sha1_ce_state::finalize */ ldr_l w4, sha1_ce_offsetof_finalize, x4 - ldr w4, [x19, x4] + ldr w4, [x0, x4] /* load input */ -1: ld1 {v8.4s-v11.4s}, [x20], #64 - sub w21, w21, #1 +0: ld1 {v8.4s-v11.4s}, [x1], #64 + sub w2, w2, #1 CPU_LE( rev32 v8.16b, v8.16b ) CPU_LE( rev32 v9.16b, v9.16b ) CPU_LE( rev32 v10.16b, v10.16b ) CPU_LE( rev32 v11.16b, v11.16b ) -2: add t0.4s, v8.4s, k0.4s +1: add t0.4s, v8.4s, k0.4s mov dg0v.16b, dgav.16b add_update c, ev, k0, 8, 9, 10, 11, dgb @@ -126,25 +120,18 @@ CPU_LE( rev32 v11.16b, v11.16b ) add dgbv.2s, dgbv.2s, dg1v.2s add dgav.4s, dgav.4s, dg0v.4s - cbz w21, 3f - - if_will_cond_yield_neon - st1 {dgav.4s}, [x19] - str dgb, [x19, #16] - do_cond_yield_neon + cbz w2, 2f + cond_yield 3f, x5, x6 b 0b - endif_yield_neon - - b 1b /* * Final block: add padding and total bit count. * Skip if the input size was not a round multiple of the block size, * the padding is handled by the C code in that case. */ -3: cbz x4, 4f +2: cbz x4, 3f ldr_l w4, sha1_ce_offsetof_count, x4 - ldr x4, [x19, x4] + ldr x4, [x0, x4] movi v9.2d, #0 mov x8, #0x80000000 movi v10.2d, #0 @@ -153,11 +140,11 @@ CPU_LE( rev32 v11.16b, v11.16b ) mov x4, #0 mov v11.d[0], xzr mov v11.d[1], x7 - b 2b + b 1b /* store new state */ -4: st1 {dgav.4s}, [x19] - str dgb, [x19, #16] - frame_pop +3: st1 {dgav.4s}, [x0] + str dgb, [x0, #16] + mov w0, w2 ret SYM_FUNC_END(sha1_ce_transform) diff --git a/arch/arm64/crypto/sha1-ce-glue.c b/arch/arm64/crypto/sha1-ce-glue.c index 8baf8d1846b6..c1757659516f 100644 --- a/arch/arm64/crypto/sha1-ce-glue.c +++ b/arch/arm64/crypto/sha1-ce-glue.c @@ -29,14 +29,22 @@ struct sha1_ce_state { extern const u32 sha1_ce_offsetof_count; extern const u32 sha1_ce_offsetof_finalize; -asmlinkage void sha1_ce_transform(struct sha1_ce_state *sst, u8 const *src, - int blocks); +asmlinkage int sha1_ce_transform(struct sha1_ce_state *sst, u8 const *src, + int blocks); static void __sha1_ce_transform(struct sha1_state *sst, u8 const *src, int blocks) { - sha1_ce_transform(container_of(sst, struct sha1_ce_state, sst), src, - blocks); + while (blocks) { + int rem; + + kernel_neon_begin(); + rem = sha1_ce_transform(container_of(sst, struct sha1_ce_state, + sst), src, blocks); + kernel_neon_end(); + src += (blocks - rem) * SHA1_BLOCK_SIZE; + blocks = rem; + } } const u32 sha1_ce_offsetof_count = offsetof(struct sha1_ce_state, sst.count); @@ -51,9 +59,7 @@ static int sha1_ce_update(struct shash_desc *desc, const u8 *data, return crypto_sha1_update(desc, data, len); sctx->finalize = 0; - kernel_neon_begin(); sha1_base_do_update(desc, data, len, __sha1_ce_transform); - kernel_neon_end(); return 0; } @@ -73,11 +79,9 @@ static int sha1_ce_finup(struct shash_desc *desc, const u8 *data, */ sctx->finalize = finalize; - kernel_neon_begin(); sha1_base_do_update(desc, data, len, __sha1_ce_transform); if (!finalize) sha1_base_do_finalize(desc, __sha1_ce_transform); - kernel_neon_end(); return sha1_base_finish(desc, out); } @@ -89,9 +93,7 @@ static int sha1_ce_final(struct shash_desc *desc, u8 *out) return crypto_sha1_finup(desc, NULL, 0, out); sctx->finalize = 0; - kernel_neon_begin(); sha1_base_do_finalize(desc, __sha1_ce_transform); - kernel_neon_end(); return sha1_base_finish(desc, out); } diff --git a/arch/arm64/crypto/sha2-ce-core.S b/arch/arm64/crypto/sha2-ce-core.S index 3f9d0f326987..491179922f49 100644 --- a/arch/arm64/crypto/sha2-ce-core.S +++ b/arch/arm64/crypto/sha2-ce-core.S @@ -76,36 +76,30 @@ */ .text SYM_FUNC_START(sha2_ce_transform) - frame_push 3 - - mov x19, x0 - mov x20, x1 - mov x21, x2 - /* load round constants */ -0: adr_l x8, .Lsha2_rcon + adr_l x8, .Lsha2_rcon ld1 { v0.4s- v3.4s}, [x8], #64 ld1 { v4.4s- v7.4s}, [x8], #64 ld1 { v8.4s-v11.4s}, [x8], #64 ld1 {v12.4s-v15.4s}, [x8] /* load state */ - ld1 {dgav.4s, dgbv.4s}, [x19] + ld1 {dgav.4s, dgbv.4s}, [x0] /* load sha256_ce_state::finalize */ ldr_l w4, sha256_ce_offsetof_finalize, x4 - ldr w4, [x19, x4] + ldr w4, [x0, x4] /* load input */ -1: ld1 {v16.4s-v19.4s}, [x20], #64 - sub w21, w21, #1 +0: ld1 {v16.4s-v19.4s}, [x1], #64 + sub w2, w2, #1 CPU_LE( rev32 v16.16b, v16.16b ) CPU_LE( rev32 v17.16b, v17.16b ) CPU_LE( rev32 v18.16b, v18.16b ) CPU_LE( rev32 v19.16b, v19.16b ) -2: add t0.4s, v16.4s, v0.4s +1: add t0.4s, v16.4s, v0.4s mov dg0v.16b, dgav.16b mov dg1v.16b, dgbv.16b @@ -134,24 +128,18 @@ CPU_LE( rev32 v19.16b, v19.16b ) add dgbv.4s, dgbv.4s, dg1v.4s /* handled all input blocks? */ - cbz w21, 3f - - if_will_cond_yield_neon - st1 {dgav.4s, dgbv.4s}, [x19] - do_cond_yield_neon + cbz w2, 2f + cond_yield 3f, x5, x6 b 0b - endif_yield_neon - - b 1b /* * Final block: add padding and total bit count. * Skip if the input size was not a round multiple of the block size, * the padding is handled by the C code in that case. */ -3: cbz x4, 4f +2: cbz x4, 3f ldr_l w4, sha256_ce_offsetof_count, x4 - ldr x4, [x19, x4] + ldr x4, [x0, x4] movi v17.2d, #0 mov x8, #0x80000000 movi v18.2d, #0 @@ -160,10 +148,10 @@ CPU_LE( rev32 v19.16b, v19.16b ) mov x4, #0 mov v19.d[0], xzr mov v19.d[1], x7 - b 2b + b 1b /* store new state */ -4: st1 {dgav.4s, dgbv.4s}, [x19] - frame_pop +3: st1 {dgav.4s, dgbv.4s}, [x0] + mov w0, w2 ret SYM_FUNC_END(sha2_ce_transform) diff --git a/arch/arm64/crypto/sha2-ce-glue.c b/arch/arm64/crypto/sha2-ce-glue.c index d33d3ee92cc9..1cfc4f61c761 100644 --- a/arch/arm64/crypto/sha2-ce-glue.c +++ b/arch/arm64/crypto/sha2-ce-glue.c @@ -30,14 +30,22 @@ struct sha256_ce_state { extern const u32 sha256_ce_offsetof_count; extern const u32 sha256_ce_offsetof_finalize; -asmlinkage void sha2_ce_transform(struct sha256_ce_state *sst, u8 const *src, - int blocks); +asmlinkage int sha2_ce_transform(struct sha256_ce_state *sst, u8 const *src, + int blocks); static void __sha2_ce_transform(struct sha256_state *sst, u8 const *src, int blocks) { - sha2_ce_transform(container_of(sst, struct sha256_ce_state, sst), src, - blocks); + while (blocks) { + int rem; + + kernel_neon_begin(); + rem = sha2_ce_transform(container_of(sst, struct sha256_ce_state, + sst), src, blocks); + kernel_neon_end(); + src += (blocks - rem) * SHA256_BLOCK_SIZE; + blocks = rem; + } } const u32 sha256_ce_offsetof_count = offsetof(struct sha256_ce_state, @@ -63,9 +71,7 @@ static int sha256_ce_update(struct shash_desc *desc, const u8 *data, __sha256_block_data_order); sctx->finalize = 0; - kernel_neon_begin(); sha256_base_do_update(desc, data, len, __sha2_ce_transform); - kernel_neon_end(); return 0; } @@ -90,11 +96,9 @@ static int sha256_ce_finup(struct shash_desc *desc, const u8 *data, */ sctx->finalize = finalize; - kernel_neon_begin(); sha256_base_do_update(desc, data, len, __sha2_ce_transform); if (!finalize) sha256_base_do_finalize(desc, __sha2_ce_transform); - kernel_neon_end(); return sha256_base_finish(desc, out); } @@ -108,9 +112,7 @@ static int sha256_ce_final(struct shash_desc *desc, u8 *out) } sctx->finalize = 0; - kernel_neon_begin(); sha256_base_do_finalize(desc, __sha2_ce_transform); - kernel_neon_end(); return sha256_base_finish(desc, out); } diff --git a/arch/arm64/crypto/sha3-ce-core.S b/arch/arm64/crypto/sha3-ce-core.S index 1cfb768df350..9c77313f5a60 100644 --- a/arch/arm64/crypto/sha3-ce-core.S +++ b/arch/arm64/crypto/sha3-ce-core.S @@ -37,20 +37,13 @@ .endm /* - * sha3_ce_transform(u64 *st, const u8 *data, int blocks, int dg_size) + * int sha3_ce_transform(u64 *st, const u8 *data, int blocks, int dg_size) */ .text SYM_FUNC_START(sha3_ce_transform) - frame_push 4 - - mov x19, x0 - mov x20, x1 - mov x21, x2 - mov x22, x3 - -0: /* load state */ - add x8, x19, #32 - ld1 { v0.1d- v3.1d}, [x19] + /* load state */ + add x8, x0, #32 + ld1 { v0.1d- v3.1d}, [x0] ld1 { v4.1d- v7.1d}, [x8], #32 ld1 { v8.1d-v11.1d}, [x8], #32 ld1 {v12.1d-v15.1d}, [x8], #32 @@ -58,13 +51,13 @@ SYM_FUNC_START(sha3_ce_transform) ld1 {v20.1d-v23.1d}, [x8], #32 ld1 {v24.1d}, [x8] -1: sub w21, w21, #1 +0: sub w2, w2, #1 mov w8, #24 adr_l x9, .Lsha3_rcon /* load input */ - ld1 {v25.8b-v28.8b}, [x20], #32 - ld1 {v29.8b-v31.8b}, [x20], #24 + ld1 {v25.8b-v28.8b}, [x1], #32 + ld1 {v29.8b-v31.8b}, [x1], #24 eor v0.8b, v0.8b, v25.8b eor v1.8b, v1.8b, v26.8b eor v2.8b, v2.8b, v27.8b @@ -73,10 +66,10 @@ SYM_FUNC_START(sha3_ce_transform) eor v5.8b, v5.8b, v30.8b eor v6.8b, v6.8b, v31.8b - tbnz x22, #6, 3f // SHA3-512 + tbnz x3, #6, 2f // SHA3-512 - ld1 {v25.8b-v28.8b}, [x20], #32 - ld1 {v29.8b-v30.8b}, [x20], #16 + ld1 {v25.8b-v28.8b}, [x1], #32 + ld1 {v29.8b-v30.8b}, [x1], #16 eor v7.8b, v7.8b, v25.8b eor v8.8b, v8.8b, v26.8b eor v9.8b, v9.8b, v27.8b @@ -84,34 +77,34 @@ SYM_FUNC_START(sha3_ce_transform) eor v11.8b, v11.8b, v29.8b eor v12.8b, v12.8b, v30.8b - tbnz x22, #4, 2f // SHA3-384 or SHA3-224 + tbnz x3, #4, 1f // SHA3-384 or SHA3-224 // SHA3-256 - ld1 {v25.8b-v28.8b}, [x20], #32 + ld1 {v25.8b-v28.8b}, [x1], #32 eor v13.8b, v13.8b, v25.8b eor v14.8b, v14.8b, v26.8b eor v15.8b, v15.8b, v27.8b eor v16.8b, v16.8b, v28.8b - b 4f + b 3f -2: tbz x22, #2, 4f // bit 2 cleared? SHA-384 +1: tbz x3, #2, 3f // bit 2 cleared? SHA-384 // SHA3-224 - ld1 {v25.8b-v28.8b}, [x20], #32 - ld1 {v29.8b}, [x20], #8 + ld1 {v25.8b-v28.8b}, [x1], #32 + ld1 {v29.8b}, [x1], #8 eor v13.8b, v13.8b, v25.8b eor v14.8b, v14.8b, v26.8b eor v15.8b, v15.8b, v27.8b eor v16.8b, v16.8b, v28.8b eor v17.8b, v17.8b, v29.8b - b 4f + b 3f // SHA3-512 -3: ld1 {v25.8b-v26.8b}, [x20], #16 +2: ld1 {v25.8b-v26.8b}, [x1], #16 eor v7.8b, v7.8b, v25.8b eor v8.8b, v8.8b, v26.8b -4: sub w8, w8, #1 +3: sub w8, w8, #1 eor3 v29.16b, v4.16b, v9.16b, v14.16b eor3 v26.16b, v1.16b, v6.16b, v11.16b @@ -190,33 +183,19 @@ SYM_FUNC_START(sha3_ce_transform) eor v0.16b, v0.16b, v31.16b - cbnz w8, 4b - cbz w21, 5f - - if_will_cond_yield_neon - add x8, x19, #32 - st1 { v0.1d- v3.1d}, [x19] - st1 { v4.1d- v7.1d}, [x8], #32 - st1 { v8.1d-v11.1d}, [x8], #32 - st1 {v12.1d-v15.1d}, [x8], #32 - st1 {v16.1d-v19.1d}, [x8], #32 - st1 {v20.1d-v23.1d}, [x8], #32 - st1 {v24.1d}, [x8] - do_cond_yield_neon - b 0b - endif_yield_neon - - b 1b + cbnz w8, 3b + cond_yield 4f, x8, x9 + cbnz w2, 0b /* save state */ -5: st1 { v0.1d- v3.1d}, [x19], #32 - st1 { v4.1d- v7.1d}, [x19], #32 - st1 { v8.1d-v11.1d}, [x19], #32 - st1 {v12.1d-v15.1d}, [x19], #32 - st1 {v16.1d-v19.1d}, [x19], #32 - st1 {v20.1d-v23.1d}, [x19], #32 - st1 {v24.1d}, [x19] - frame_pop +4: st1 { v0.1d- v3.1d}, [x0], #32 + st1 { v4.1d- v7.1d}, [x0], #32 + st1 { v8.1d-v11.1d}, [x0], #32 + st1 {v12.1d-v15.1d}, [x0], #32 + st1 {v16.1d-v19.1d}, [x0], #32 + st1 {v20.1d-v23.1d}, [x0], #32 + st1 {v24.1d}, [x0] + mov w0, w2 ret SYM_FUNC_END(sha3_ce_transform) diff --git a/arch/arm64/crypto/sha3-ce-glue.c b/arch/arm64/crypto/sha3-ce-glue.c index ddf7aca9ff45..d6cfb792b66c 100644 --- a/arch/arm64/crypto/sha3-ce-glue.c +++ b/arch/arm64/crypto/sha3-ce-glue.c @@ -28,8 +28,8 @@ MODULE_ALIAS_CRYPTO("sha3-256"); MODULE_ALIAS_CRYPTO("sha3-384"); MODULE_ALIAS_CRYPTO("sha3-512"); -asmlinkage void sha3_ce_transform(u64 *st, const u8 *data, int blocks, - int md_len); +asmlinkage int sha3_ce_transform(u64 *st, const u8 *data, int blocks, + int md_len); static int sha3_update(struct shash_desc *desc, const u8 *data, unsigned int len) @@ -59,11 +59,15 @@ static int sha3_update(struct shash_desc *desc, const u8 *data, blocks = len / sctx->rsiz; len %= sctx->rsiz; - if (blocks) { + while (blocks) { + int rem; + kernel_neon_begin(); - sha3_ce_transform(sctx->st, data, blocks, digest_size); + rem = sha3_ce_transform(sctx->st, data, blocks, + digest_size); kernel_neon_end(); - data += blocks * sctx->rsiz; + data += (blocks - rem) * sctx->rsiz; + blocks = rem; } } diff --git a/arch/arm64/crypto/sha512-ce-core.S b/arch/arm64/crypto/sha512-ce-core.S index cde606c0323e..b6a3a36e15f5 100644 --- a/arch/arm64/crypto/sha512-ce-core.S +++ b/arch/arm64/crypto/sha512-ce-core.S @@ -107,23 +107,17 @@ */ .text SYM_FUNC_START(sha512_ce_transform) - frame_push 3 - - mov x19, x0 - mov x20, x1 - mov x21, x2 - /* load state */ -0: ld1 {v8.2d-v11.2d}, [x19] + ld1 {v8.2d-v11.2d}, [x0] /* load first 4 round constants */ adr_l x3, .Lsha512_rcon ld1 {v20.2d-v23.2d}, [x3], #64 /* load input */ -1: ld1 {v12.2d-v15.2d}, [x20], #64 - ld1 {v16.2d-v19.2d}, [x20], #64 - sub w21, w21, #1 +0: ld1 {v12.2d-v15.2d}, [x1], #64 + ld1 {v16.2d-v19.2d}, [x1], #64 + sub w2, w2, #1 CPU_LE( rev64 v12.16b, v12.16b ) CPU_LE( rev64 v13.16b, v13.16b ) @@ -201,19 +195,12 @@ CPU_LE( rev64 v19.16b, v19.16b ) add v10.2d, v10.2d, v2.2d add v11.2d, v11.2d, v3.2d + cond_yield 3f, x4, x5 /* handled all input blocks? */ - cbz w21, 3f - - if_will_cond_yield_neon - st1 {v8.2d-v11.2d}, [x19] - do_cond_yield_neon - b 0b - endif_yield_neon - - b 1b + cbnz w2, 0b /* store new state */ -3: st1 {v8.2d-v11.2d}, [x19] - frame_pop +3: st1 {v8.2d-v11.2d}, [x0] + mov w0, w2 ret SYM_FUNC_END(sha512_ce_transform) diff --git a/arch/arm64/crypto/sha512-ce-glue.c b/arch/arm64/crypto/sha512-ce-glue.c index 57c6f086dfb4..04adf2c0371e 100644 --- a/arch/arm64/crypto/sha512-ce-glue.c +++ b/arch/arm64/crypto/sha512-ce-glue.c @@ -26,11 +26,25 @@ MODULE_LICENSE("GPL v2"); MODULE_ALIAS_CRYPTO("sha384"); MODULE_ALIAS_CRYPTO("sha512"); -asmlinkage void sha512_ce_transform(struct sha512_state *sst, u8 const *src, - int blocks); +asmlinkage int sha512_ce_transform(struct sha512_state *sst, u8 const *src, + int blocks); asmlinkage void sha512_block_data_order(u64 *digest, u8 const *src, int blocks); +static void __sha512_ce_transform(struct sha512_state *sst, u8 const *src, + int blocks) +{ + while (blocks) { + int rem; + + kernel_neon_begin(); + rem = sha512_ce_transform(sst, src, blocks); + kernel_neon_end(); + src += (blocks - rem) * SHA512_BLOCK_SIZE; + blocks = rem; + } +} + static void __sha512_block_data_order(struct sha512_state *sst, u8 const *src, int blocks) { @@ -40,45 +54,30 @@ static void __sha512_block_data_order(struct sha512_state *sst, u8 const *src, static int sha512_ce_update(struct shash_desc *desc, const u8 *data, unsigned int len) { - if (!crypto_simd_usable()) - return sha512_base_do_update(desc, data, len, - __sha512_block_data_order); - - kernel_neon_begin(); - sha512_base_do_update(desc, data, len, sha512_ce_transform); - kernel_neon_end(); + sha512_block_fn *fn = crypto_simd_usable() ? __sha512_ce_transform + : __sha512_block_data_order; + sha512_base_do_update(desc, data, len, fn); return 0; } static int sha512_ce_finup(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out) { - if (!crypto_simd_usable()) { - if (len) - sha512_base_do_update(desc, data, len, - __sha512_block_data_order); - sha512_base_do_finalize(desc, __sha512_block_data_order); - return sha512_base_finish(desc, out); - } + sha512_block_fn *fn = crypto_simd_usable() ? __sha512_ce_transform + : __sha512_block_data_order; - kernel_neon_begin(); - sha512_base_do_update(desc, data, len, sha512_ce_transform); - sha512_base_do_finalize(desc, sha512_ce_transform); - kernel_neon_end(); + sha512_base_do_update(desc, data, len, fn); + sha512_base_do_finalize(desc, fn); return sha512_base_finish(desc, out); } static int sha512_ce_final(struct shash_desc *desc, u8 *out) { - if (!crypto_simd_usable()) { - sha512_base_do_finalize(desc, __sha512_block_data_order); - return sha512_base_finish(desc, out); - } + sha512_block_fn *fn = crypto_simd_usable() ? __sha512_ce_transform + : __sha512_block_data_order; - kernel_neon_begin(); - sha512_base_do_finalize(desc, sha512_ce_transform); - kernel_neon_end(); + sha512_base_do_finalize(desc, fn); return sha512_base_finish(desc, out); } diff --git a/arch/arm64/include/asm/alternative-macros.h b/arch/arm64/include/asm/alternative-macros.h index 8a078fc662ac..5cc2c8f11fe3 100644 --- a/arch/arm64/include/asm/alternative-macros.h +++ b/arch/arm64/include/asm/alternative-macros.h @@ -9,6 +9,7 @@ /* A64 instructions are always 32 bits. */ #define AARCH64_INSN_SIZE 4 +#ifndef BUILD_FIPS140_KO #ifndef __ASSEMBLY__ #include @@ -214,4 +215,33 @@ alternative_endif #define ALTERNATIVE(oldinstr, newinstr, ...) \ _ALTERNATIVE_CFG(oldinstr, newinstr, __VA_ARGS__, 1) +#else + +/* + * The FIPS140 module does not support alternatives patching, as this + * invalidates the HMAC digest of the .text section. However, some alternatives + * are known to be irrelevant so we can tolerate them in the FIPS140 module, as + * they will never be applied in the first place in the use cases that the + * FIPS140 module targets (Android running on a production phone). Any other + * uses of alternatives should be avoided, as it is not safe in the general + * case to simply use the default sequence in one place (the fips module) and + * the alternative sequence everywhere else. + * + * Below is an allowlist of features that we can ignore, by simply taking the + * safe default instruction sequence. Note that this implies that the FIPS140 + * module is not compatible with VHE, or with pseudo-NMI support. + */ + +#define __ALT_ARM64_HAS_LDAPR 0, +#define __ALT_ARM64_HAS_VIRT_HOST_EXTN 0, +#define __ALT_ARM64_HAS_IRQ_PRIO_MASKING 0, + +#define ALTERNATIVE(oldinstr, newinstr, feature, ...) \ + _ALTERNATIVE(oldinstr, __ALT_ ## feature, #feature) + +#define _ALTERNATIVE(oldinstr, feature, feature_str) \ + __take_second_arg(feature oldinstr, \ + ".err Feature " feature_str " not supported in fips140 module") + +#endif /* BUILD_FIPS140_KO */ #endif /* __ASM_ALTERNATIVE_MACROS_H */ diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h index 2bce4e17dc22..4eed9601d9d4 100644 --- a/arch/arm64/include/asm/assembler.h +++ b/arch/arm64/include/asm/assembler.h @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -24,6 +25,14 @@ #include #include + /* + * Provide a wxN alias for each wN register so what we can paste a xN + * reference after a 'w' to obtain the 32-bit version. + */ + .irp n,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 + wx\n .req w\n + .endr + .macro save_and_disable_daif, flags mrs \flags, daif msr daifset, #0xf @@ -713,74 +722,33 @@ USER(\label, ic ivau, \tmp2) // invalidate I line PoU set_sctlr sctlr_el2, \reg .endm -/* - * Check whether to yield to another runnable task from kernel mode NEON code - * (which runs with preemption disabled). - * - * if_will_cond_yield_neon - * // pre-yield patchup code - * do_cond_yield_neon - * // post-yield patchup code - * endif_yield_neon