summary'>refs'>log'>tree'>commit'>diffstats
diff options
context:
space:
mode:
authorBertrand Jacquin <bertrand@jacquin.bzh>2019-05-10 21:20:51 +0100
committerBertrand Jacquin <bertrand@jacquin.bzh>2019-05-11 14:02:22 +0100
commit'>5f7ace9604d47c2ce2df91c5ef3a8e708083148b ( ('>patch)
tree'>9d113eb72d561ccd21a91abaf0b299f4fbbfe3e2
parentsys-kernel/longterm-sources: Bump 4.9 (diff)
downloadetc-portage-patches-5f7ace9604d47c2ce2df91c5ef3a8e708083148b.tar.gz
sys-kernel/longterm-sources: Bump 4.19
-rw-rw-r--r--sys-kernel/boest-v4.19.37/0001-patch-4.19-ja1.diff.patch2127
--rw-r--r--sys-kernel/boest-v4.19.37/0002-pool-2.6.25-tcp-timewait-20s.diff.patch27
--rw-r--r--r--sys-kernel/boest-v4.19.37/0003-pool-2.6.25-disable-tcp-debug.diff.patch25
--rw-r--r--r--sys-kernel/boest-v4.19.37/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch142142
--rw-r--r--sys-kernel/boest-v4.19.37/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch3434
--rw-r--r--r--sys-kernel/boest-v4.19.37/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch4545
--rw-r--r--r--sys-kernel/boest-v4.19.37/0007-This-patch-adds-support-for-a-restricted-user-contro.patch75
--rw-r--r--r--'>sys-kernel/boest-v4.19.37/0008-fs-Enable-link-security-restrictions-by-default.patch2626
--rw-r--r--sys-kernel/boest-v4.19.37/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch37
--rw-r--r--r--sys-kernel/boest-v4.19.37/0010-4.19-2600_enable-key-swapping-for-apple-mac.patch.patch125
--rw-r--r--'>sys-kernel/boest-v4.19.37/0011-4.19-4200_fbcondecor.patch.patch2121
--rw-r--r--r--sys-kernel/boest-v4.19.37/0012-4.19-4400_alpha-sysctl-uac.patch.patch153
--rw-r--r--sys-kernel/boest-v4.19.37/0013-4.19-4567_distro-Gentoo-Kconfig.patch.patch173
-rw-r--r--sys-kernel/boest-v4.19.37/0014-WARNING.patch565
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch107
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0002-smsx95xx-fix-crimes-against-truesize.patch49
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0003-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch45
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0004-Allow-mac-address-to-be-set-in-smsc95xx.patch98
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0005-Protect-__release_resource-against-resources-without.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0006-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0007-irq-bcm2836-Avoid-Invalid-trigger-warning.patch26
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0008-irqchip-bcm2835-Add-FIQ-support.patch131
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0009-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch101
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0010-spidev-Add-spidev-compatible-string-to-silence-warni.patch23
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0011-spi-bcm2835-Support-pin-groups-other-than-7-11.patch82
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0012-spi-bcm2835-Disable-forced-software-CS.patch36
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0013-spi-bcm2835-Remove-unused-code.patch90
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0014-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch105
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0015-firmware-Updated-mailbox-header.patch38
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0016-rtc-Add-SPI-alias-for-pcf2123-driver.patch22
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0017-watchdog-bcm2835-Support-setting-reboot-partition.patch104
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0018-reboot-Use-power-off-rather-than-busy-spinning-when-.patch25
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0019-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch21
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0020-Register-the-clocks-early-during-the-boot-process-so.patch47
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0021-bcm2835-rng-Avoid-initialising-if-already-enabled.patch27
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0022-kbuild-Ignore-dtco-targets-when-filtering-symbols.patch22
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0023-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0024-clk-bcm2835-Add-claim-clocks-property.patch104
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0025-clk-bcm2835-Read-max-core-clock-from-firmware.patch117
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0026-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch40
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0027-sound-Demote-deferral-errors-to-INFO-level.patch39
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0028-Update-vfpmodule.c.patch139
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0029-i2c-bcm2835-Add-debug-support.patch191
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0030-mm-Remove-the-PFN-busy-warning.patch27
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0031-ASoC-Add-prompt-for-ICS43432-codec.patch27
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0032-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch116
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0033-lan78xx-Enable-LEDs-and-auto-negotiation.patch50
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0034-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch31
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0035-amba_pl011-Round-input-clock-up.patch88
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0036-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0037-amba_pl011-Add-cts-event-workaround-DT-property.patch51
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0038-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch24
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0039-Main-bcm2708-bcm2709-linux-port.patch158
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0040-Add-dwc_otg-driver.patch61338
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0041-bcm2708-framebuffer-driver.patch3489
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0042-Speed-up-console-framebuffer-imageblit-function.patch211
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0043-dmaengine-Add-support-for-BCM2708.patch648
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0044-MMC-added-alternative-MMC-driver.patch1893
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0045-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch2432
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0046-vc_mem-Add-vc_mem-driver-for-querying-firmware-memor.patch523
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0047-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch4987
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0048-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch309
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0049-Add-SMI-driver.patch1948
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0050-MISC-bcm2835-smi-use-clock-manager-and-fix-reload-is.patch171
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0051-Add-SMI-NAND-driver.patch356
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0052-Add-cpufreq-driver.patch265
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0053-Add-Chris-Boot-s-i2c-driver.patch666
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0054-char-broadcom-Add-vcio-module.patch226
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0055-firmware-bcm2835-Support-ARCH_BCM270x.patch85
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0056-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch537
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0057-BCM2708-Add-core-Device-Tree-support.patch16229
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0058-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch178
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0059-fbdev-add-FBIOCOPYAREA-ioctl.patch271
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0060-Added-Device-IDs-for-August-DVB-T-205.patch24
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0061-rpi-ft5406-Add-touchscreen-driver-for-pi-LCD-display.patch346
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0062-Improve-__copy_to_user-and-__copy_from_user-performa.patch1575
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0063-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch37
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0064-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch862
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0065-ASoC-pcm512x-implement-set_tdm_slot-interface.patch82
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0066-ASoC-Add-support-for-Rpi-DAC.patch129
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0067-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch294
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0068-Added-support-for-HiFiBerry-DAC.patch601
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0069-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch655
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0070-Add-driver-for-rpi-proto.patch170
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0071-Add-Support-for-JustBoom-Audio-boards.patch175
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0072-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch209
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0073-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch432
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0074-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch133
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0075-Allo-Piano-DAC-boards-Initial-2-channel-stereo-suppo.patch159
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0076-Add-support-for-Allo-Piano-DAC-2.1-plus-add-on-board.patch1059
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0077-Add-support-for-Allo-Boss-DAC-add-on-board-for-Raspb.patch673
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0078-Support-for-Blokas-Labs-pisound-board.patch1273
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0079-ASoC-Add-driver-for-Cirrus-Logic-Audio-Card.patch1050
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0080-sound-Support-for-Dion-Audio-LOCO-V2-DAC-AMP-HAT.patch140
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0081-Add-support-for-Fe-Pi-audio-sound-card.-1867.patch172
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0082-Add-support-for-the-AudioInjector.net-Octo-sound-car.patch376
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0083-Driver-support-for-Google-voiceHAT-soundcard.patch256
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0084-Driver-and-overlay-for-Allo-Katana-DAC.patch378
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0085-ASoC-wm8804-MCLK-configuration-options-32-bit.patch34
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0086-ASoC-Add-generic-RPI-driver-for-simple-soundcards.patch302
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0087-ASoC-Add-Kconfig-and-Makefile-for-sound-soc-bcm.patch268
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0088-ASoC-Create-a-generic-Pi-Hat-WM8804-driver.patch461
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0089-rpi_display-add-backlight-driver-and-overlay.patch178
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0090-bcm2835-virtgpio-Virtual-GPIO-driver.patch262
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0091-net-Add-non-mainline-source-for-rtl8192cu-wlan.patch172981
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0092-OF-DT-Overlay-configfs-interface.patch435
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0093-brcm-adds-support-for-BCM43341-wifi.patch134
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0094-brcmfmac-Mute-expected-startup-errors.patch26
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0095-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch25
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0096-config-Add-default-configs.patch2735
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0097-Add-arm64-configuration-and-device-tree-differences..patch1415
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0098-ARM64-DWC_OTG-Port-dwc_otg-driver-to-ARM64.patch345
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0099-ARM64-Round-Robin-dispatch-IRQs-between-CPUs.patch76
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0100-ARM64-Force-hardware-emulation-of-deprecated-instruc.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0101-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch27
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0102-cache-export-clean-and-invalidate.patch54
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0103-AXI-performance-monitor-driver-2222.patch687
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0104-mcp2515-Use-DT-supplied-interrupt-flags.patch38
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0105-Tidy-up-of-the-ft5406-driver-to-use-DT-2189.patch382
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0106-cgroup-Disable-cgroup-memory-by-default.patch72
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0107-ARM-bcm2835-Set-Serial-number-and-Revision.patch65
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0108-ARM-Activate-FIQs-to-avoid-__irq_startup-warnings.patch38
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0109-serial-8250-bcm2835aux-suppress-EPROBE_DEFER.patch24
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0110-raspberrypi-firmware-Export-the-general-transaction-.patch34
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0111-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch772
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0112-drm-vc4-Name-the-primary-and-cursor-planes-in-fkms.patch26
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0113-drm-vc4-Add-DRM_DEBUG_ATOMIC-for-the-insides-of-fkms.patch72
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0114-drm-vc4-Fix-sending-of-page-flip-completion-events-i.patch44
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0115-drm-vc4-Add-support-for-setting-DPMS-in-firmwarekms.patch105
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0116-drm-vc4-Add-FB-modifier-support-to-firmwarekms.patch34
--rw-r--r--r--sys-kernel/boest-v4.19.37/raspberrypi/0117-drm-vc4-Add-missing-enable-disable-vblank-handlers-i.patch83
--rw-r--r--r--sys-kernel/boest-v4.19.37/raspberrypi/0118-vc4_fkms-Apply-firmware-overscan-offset-to-hardware-.patch59
--rw-r--r--r--sys-kernel/boest-v4.19.37/raspberrypi/0119-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch52
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0120-drm-vc4-Skip-SET_CURSOR_INFO-when-the-cursor-content.patch59
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0121-drm-vc4-Remove-duplicate-primary-cursor-fields-from-.patch73
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0122-vc4_firmware_kms-fix-build.patch40
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0123-hack-cache-Fix-linker-error.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0124-i2c-gpio-Also-set-bus-numbers-from-reg-property.patch37
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0125-sound-bcm-Fix-memset-dereference-warning.patch38
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0126-added-capture_clear-option-to-pps-gpio-via-dtoverlay.patch24
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0127-lan78xx-Read-initial-EEE-status-from-DT.patch42
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0128-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch34
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0129-gpiolib-Don-t-prevent-IRQ-usage-of-output-GPIOs.patch48
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0130-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch61
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0131-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch86
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0132-irqchip-irq-bcm2835-Calc.-FIQ_START-at-boot-time.patch68
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0133-of-configfs-Use-of_overlay_fdt_apply-API-call.patch116
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0134-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch58
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0135-brcmfmac-Re-enable-firmware-roaming-support.patch31
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0136-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch66
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0137-staging-vc04_services-Derive-g_cache_line_size.patch66
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0138-Add-rpi-poe-fan-driver.patch726
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0139-cxd2880-CXD2880_SPI_DRV-should-select-DVB_CXD2880-wi.patch22
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0140-bcm2835-interpolate-audio-delay.patch93
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0141-vchiq_2835_arm-Implement-a-DMA-pool-for-small-bulk-t.patch128
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0142-BCM2708_DT-Use-upstreamed-GPIO-expander-driver.patch56
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0143-overlays-Fix-a-few-dtc-warnings.patch193
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0144-bcm2708-rpi-Disable-txp-interrupt-unless-using-vc4-k.patch45
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0145-config-Enable-Raspberry-Pi-voltage-monitor.patch38
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0146-hwmon-raspberrypi-Prevent-voltage-low-warnings-from-.patch77
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0147-firmware-raspberrypi-Add-backward-compatible-get_thr.patch81
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0148-Increase-firmware-call-buffer-size-to-48-bytes.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0149-sc16is7xx-Don-t-spin-if-no-data-received.patch25
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0150-configs-Rebuild-bcmrpi3_defconfig-to-fix-warnings.patch328
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0151-brcmfmac-Disable-ARP-offloading-when-promiscuous.patch72
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0152-config-enable-Audio-Graph-Card-module.patch35
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0153-config-Add-IPVLAN-module.patch34
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0154-config-Add-I2C_TINY_USB-m.patch39
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0155-Add-device-tree-overlay-for-HD44780.patch111
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0156-Add-hd44780-module-to-defconfig.patch36
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0157-overlays-Add-addr-parameter-to-i2c-rtc-gpio.patch117
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0158-ARM-BCM270X-Add-the-18-bit-DPI-pinmux-to-the-RPI-DTs.patch32
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0159-overlays-Add-an-overlay-for-the-Adafruit-Kippah-with.patch92
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0160-overlays-Remove-stale-notes-about-vc4-s-CMA-alignmen.patch53
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0161-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch34
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0162-devicetree-add-RPi-CM3-dts-to-arm64-mimic-the-RPi-3B.patch34
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0163-Add-support-for-audioinjector.net-ultra-soundcard.-2.patch151
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0164-ASoC-cs4265-Add-a-S-PDIF-enable-switch.patch28
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0165-ASoC-cs4265-Add-native-32bit-I2S-transport.patch31
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0166-configs-Add-SENSOR_GPIO_FAN-m.patch59
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0167-BCM270X_DT-Add-gpio-fan-overlay.patch120
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0168-HID-hid-bigbenff-driver-for-BigBen-Interactive-PS3OF.patch492
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0169-configs-Add-CONFIG_HID_BIGBEN_FF-m.patch37
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0170-ASoC-cs4265-Add-a-MIC-pre.-route-2696.patch36
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0171-Update-gpio-fan-overlay.dts-2711.patch74
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0172-drivers-thermal-step_wise-add-support-for-hysteresis.patch98
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0173-drivers-thermal-step_wise-avoid-throttling-at-hyster.patch24
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0174-hwmon-adjust-rpi-poe-fan-overlay-trip-points.patch69
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0175-overlays-add-overrides-for-PoE-HAT-fan-control.patch54
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0176-overlays-Add-gpio-no-bank0-irq-overlay.patch66
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0177-Add-hy28b-2017-model-device-tree-overlay-2721.patch215
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0178-config-Add-CONFIG_USBIP_VUDC.patch35
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0179-mmc-bcm2835-sdhost-Recover-from-MMC_SEND_EXT_CSD.patch52
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0180-overlays-pi3-disable-bt-Clear-out-bt_pins-node.patch35
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0181-Revert-rtc-pcf8523-properly-handle-oscillator-stop-b.patch58
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0182-Update-issue-templates-2736.patch49
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0183-overlays-uart0-return-GPIOs-14-and-15-to-inputs.patch44
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0184-mmc-bcm2835-sdhost-Fix-warnings-on-arm64.patch254
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0185-Fix-warning-in-bcm2835-smi-nand.patch25
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0186-media-ov5647-Add-set_fmt-and-get_fmt-calls.patch49
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0187-media-Documentation-DT-add-device-tree-for-PWDN-cont.patch35
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0188-media-ov5647-Add-support-for-PWDN-GPIO.patch94
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0189-media-ov5647-Add-support-for-non-continuous-clock-mo.patch81
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0190-media-tc358743-Increase-FIFO-level-to-374.patch33
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0191-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch99
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0192-media-tc358743-Add-support-for-972Mbit-s-link-freq.patch81
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0193-media-tc358743-Check-I2C-succeeded-during-probe.patch100
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0194-media-adv7180-Default-to-the-first-valid-input.patch47
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0195-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch26
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0196-media-videodev2-Add-helper-defines-for-printing-FOUR.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0197-dt-bindings-Document-BCM283x-CSI2-CCP2-receiver.patch105
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0198-media-bcm2835-unicam-Driver-for-CCP2-CSI2-camera-int.patch2449
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0199-MAINTAINERS-Add-entry-for-BCM2835-Unicam-driver.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0200-defconfig-Enable-Unicam-driver-and-various-sources-o.patch88
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0201-media-adv7180-Nasty-hack-to-allow-input-selection.patch91
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0202-BCM283x-DT-Add-CSI-nodes-to-the-device-tree.patch224
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0203-BCM270X_DT-Add-CSI-defines-for-all-the-downstream-Pi.patch135
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0204-arm-dt-Add-DT-overlays-for-ADV7282M-OV5647-and-TC358.patch493
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0205-dtoverlays-Add-support-for-ADV7280-M-ADV7281-M-and-A.patch143
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0206-Mailbox-firmware-calls-now-use-kmalloc-2749.patch91
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0207-vcsm-Fix-an-NULL-dereference-in-the-import_dmabuf-er.patch27
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0208-Update-README-2750.patch28
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0209-overlays-Remove-superfluous-address-size-cells.patch69
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0210-Revert-ASoC-wm8804-MCLK-configuration-options-32-bit.patch31
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0211-rpi-wm8804-soundcard-drop-PWRDN-register-writes.patch130
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0212-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch48
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0213-dtoverlays-Add-i2c-on-0-1-option-to-TC358743-ADV7282.patch150
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0214-overlays-Update-upstream-overlay.patch60
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0215-BCM2708_DT-update-firmware-node-binding.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0216-BCM2710_DT-fix-gpio-expander-bindings.patch73
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0217-ARM-dts-bcm283x-The-lan7515-PHY-node-has-moved.patch66
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0218-net-lan78xx-Support-auto-downshift-to-100Mb-s.patch87
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0219-dt-bindings-Document-microchip-downshift-after.patch26
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0220-ARM-dts-bcm283x-Set-downshift-after-for-Pi-3B.patch26
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0221-BCM270X_DT-Add-new-Ethernet-DT-parameters.patch59
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0222-BCM270X_DT-Mark-eth_downshift_after-as-an-integer.patch23
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0223-dwc-otg-FIQ-Fix-bad-mode-in-data-abort-handler.patch132
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0224-lirc-rpi-Remove-in-favour-of-gpio-ir.patch85
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0225-media-bcm2835-unicam-Pass-through-the-colorspace-on-.patch32
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0226-media-tc358743-Return-an-appropriate-colorspace-from.patch100
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0227-staging-bcm2835-camera-fix-module-autoloading.patch26
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0228-staging-bcm2835-camera-Move-module-info-to-the-end.patch40
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0229-staging-vchiq_arm-Fix-platform-device-unregistration.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0230-staging-vchiq_arm-Fix-camera-device-registration.patch58
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0231-staging-vchiq_arm-Register-a-platform-device-for-the.patch40
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0232-staging-bcm2835-audio-Enable-compile-test.patch24
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0233-staging-bcm2835-audio-use-module_platform_driver-mac.patch45
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0234-staging-bcm2835-audio-Drop-DT-dependency.patch118
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch168
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0236-staging-bcm2835-camera-Add-hint-about-possible-fault.patch3333
--rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0237-staging-bcm2835-Don-t-probe-if-no-camera-is-detected.patch4343
--rw-r--r--r--sys-kernel/boest-v4.19.37/raspberrypi/0238-staging-vchiq_arm-Improve-error-handling-on-loading-.patch47
--rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0239-staging-bcm2835-camera-Do-not-bulk-receive-from-serv.patch199
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0240-staging-bcm2835-camera-Ensure-H264-header-bytes-get-.patch91
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0241-staging-bcm2835-camera-Correctly-denote-key-frames-i.patch27
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0242-staging-bcm2835-camera-Return-early-on-errors.patch199
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0243-staging-bcm2835-camera-Remove-dead-email-addresses.patch265
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0244-staging-bcm2835-camera-Fix-comment-style-violations.patch622
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0245-staging-bcm2835-camera-Fix-spacing-around-operators.patch108
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0246-staging-bcm2835-camera-Reduce-length-of-enum-names.patch780
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0247-staging-bcm2835-camera-Fix-multiple-line-dereference.patch135
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0248-staging-bcm2835-camera-Fix-brace-style-issues.patch62
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0249-staging-bcm2835-camera-Fix-missing-lines-between-ite.patch39
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0250-staging-bcm2835-camera-Fix-logical-continuation-spli.patch51
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0251-staging-bcm2835-camera-Fix-open-parenthesis-alignmen.patch145
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0252-staging-bcm2835_camera-Ensure-all-buffers-are-return.patch101
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0253-staging-bcm2835-camera-Remove-check-of-the-number-of.patch41
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0254-staging-bcm2835-camera-Handle-empty-EOS-buffers-whil.patch88
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0255-staging-bcm2835-camera-Set-sequence-number-correctly.patch50
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0256-staging-bcm2835-camera-Ensure-timestamps-never-go-ba.patch40
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0257-staging-bcm2835-camera-Avoid-unneeded-internal-decla.patch43
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0258-staging-bcm2835-camera-Add-multiple-inclusion-protec.patch52
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0259-staging-bcm2835-camera-Unify-header-inclusion-define.patch32
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0260-ARM-bcm2835_defconfig-Enable-bcm2835-camera.patch35
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0261-staging-bcm2835-camera-Fix-alignment-should-match-op.patch53
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0262-staging-bcm2835-camera-Fix-multiple-assignments-shou.patch32
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0263-staging-bcm2835-camera-Fix-up-all-formatting-in-mmal.patch338
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0264-staging-bcm2835-camera-Use-enums-for-max-value-in-co.patch114
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0265-staging-bcm2835-camera-Correct-V4L2_CID_COLORFX_CBCR.patch36
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0266-staging-bcm2835-camera-Remove-amend-some-obsolete-co.patch51
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0267-staging-vc04_services-Split-vchiq-mmal-into-a-module.patch298
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0268-staging-mmal-vchiq-Allocate-and-free-components-as-r.patch111
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0269-staging-mmal-vchiq-Avoid-use-of-bool-in-structures.patch97
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0270-staging-mmal-vchiq-Make-timeout-a-defined-parameter.patch40
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0271-staging-mmal-vchiq-Make-a-mmal_buf-struct-for-passin.patch288
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0272-staging-mmal-vchiq-Add-support-for-event-callbacks.patch364
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0273-staging-vc04_services-Support-sending-data-to-MMAL-p.patch44
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0274-staging-vc04_services-Fixup-vchiq-mmal-include-order.patch40
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0275-staging-vc04_services-Add-new-vc-sm-cma-driver.patch1903
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0276-staging-vc-sm-cma-Fixup-driver-for-older-VCHI-APIs.patch46
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0277-staging-vc04_services-Use-vc-sm-cma-to-support-zero-.patch171
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0278-media-videobuf2-Allow-exporting-of-a-struct-dmabuf.patch87
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0279-staging-vc04_services-Add-a-V4L2-M2M-codec-driver.patch2479
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0280-staging-vchiq_arm-Register-bcm2835-codec-as-a-platfo.patch36
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0281-staging-vchiq_arm-Register-vcsm-cma-as-a-platform-dr.patch36
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0282-ARM-bcm2835_defconfig-Enable-bcm2835-codec.patch24
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0283-config-Add-bcm2835-codec-to-Pi-defconfigs.patch37
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0284-staging-bcm2835-camera-Fix-stride-on-RGB3-BGR3-forma.patch55
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0285-media-vb2-Allow-reqbufs-0-with-in-use-MMAP-buffers.patch78
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0286-tpm-Make-SECURITYFS-a-weak-dependency.patch37
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0287-Enable-TPM-TIS-SPI-support-for-TPM1.2-and-TPM2.0-chi.patch110
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0288-Add-overlay-for-SLB9760-Iridium-LetsTrust-TPM.patch98
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0289-Revert-staging-vchiq_arm-Register-a-platform-device-.patch50
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0290-Revert-staging-bcm2835-audio-Drop-DT-dependency.patch116
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0291-ASoC-add-driver-for-3Dlab-Nano-soundcard-2758.patch521
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0292-overlays-Update-README-with-removal-of-lirc-rpi.patch89
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0293-staging-bcm2835-camera-Check-the-error-for-REPEAT_SE.patch33
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0294-gpio-ir-change-default-pull-configuration-to-up.patch51
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0295-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch83
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0296-firmware-raspberrypi-Report-the-fw-git-hash-during-p.patch62
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0297-arm64-dts-broadcom-Enable-fixups-for-overlays.patch25
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0298-sc16is7xx-Fix-for-Unexpected-interrupt-8.patch112
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0299-dtoverlays-fe-pi-audio-fix-sgtl5000-compatible-strin.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0300-bcm2835_smi-re-add-dereference-to-fix-DMA-transfers.patch22
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0301-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch46
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0302-ASoC-Add-support-for-AudioSense-Pi-add-on-soundcard.patch326
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0303-BCM270X-Adding-device-tree-support-for-AudioSense-Pi.patch141
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0304-configs-Add-CONFIG_SND_AUDIOSENSE_PI-m.patch50
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0305-configs-Add-CONFIG_USB_TMC-m.patch76
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0306-overlays-sdio-Add-enhanced-1-bit-support.patch111
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0307-dwc_otg-fix-bug-with-port_addr-assignment-for-single.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0308-configs-Add-CONFIG_USB_UAS-m.patch52
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0309-Added-driver-for-the-HiFiBerry-DAC-ADC-2694.patch614
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0310-Revert-pwm-Set-class-for-exported-channels-in-sysfs.patch65
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0311-pwm-Send-a-uevent-on-the-pwmchip-device-upon-channel.patch88
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0312-usb-dwc2-Disable-all-EP-s-on-disconnect.patch109
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0313-usb-dwc2-Fix-disable-all-EP-s-on-disconnect.patch154
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0314-overlays-Add-ssd1306-overlay-for-OLED-display.patch110
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0315-overlays-mcp23017-Support-the-MCP23008.patch53
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0316-overlays-Add-mcp342x-overlay.patch154
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0317-char-vcio-Add-compat-ioctl-handling.patch60
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0318-char-vcio-Fail-probe-if-rpi_firmware-is-not-found.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0319-staging-mmal-vchiq-Fix-client_component-for-64-bit-k.patch72
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0320-staging-bcm2835-camera-Add-sanity-checks-for-queue_s.patch46
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0321-staging-bcm2835-camera-Set-the-field-value-within-ea.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0322-char-vc_mem-Fix-up-compat-ioctls-for-64bit-kernel.patch115
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0323-char-vc_mem-Fix-all-coding-style-issues.patch432
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0324-clk-clk-bcm2835-Use-zd-when-printing-size_t.patch26
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0325-mfd-Add-rpi_sense_core-of-compatible-string.patch28
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0326-gpu-vc4_firmware_kms-Fix-up-64-bit-compile-warnings.patch68
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0327-input-rpi-ft5406-Clear-build-warning-on-64-bit-build.patch28
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0328-dtoverlays-Correct-DT-handling-camera-GPIOs.patch91
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0329-media-ov5647-Use-gpiod_set_value_cansleep.patch56
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0330-media-bcm2835-unicam-Power-on-subdev-on-open-release.patch123
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0331-audioinjector-octo-revert-to-dummy-supplies.patch25
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0332-staging-bcm2835-camera-Correct-ctrl-min-max-step-def.patch60
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0333-staging-bcm2835-codec-variable-vb2-may-be-used-unini.patch39
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0334-staging-bcm2835-codec-Fix-potentially-uninitialised-.patch27
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0335-video-bcm2708_fb-Add-compat_ioctl-support.patch156
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0336-video-bcm2708_fb-Fix-warnings-on-64-bit-builds.patch48
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0337-video-bcm2708_fb-Clean-up-coding-style-issues.patch277
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0338-bcm2835-dma-Add-support-for-per-channel-flags.patch50
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0339-bcm283x-Set-the-DISDEBUG-flag-for-SD-transfers.patch23
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0340-ASoC-pcm512x-Implement-the-digital_mute-interface.patch200
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0341-ASoC-pcm512x-Fix-a-double-unlock-in-pcm512x_digital_.patch64
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0342-usb-dwc_otg-Clean-up-build-warnings-on-64bit-kernels.patch118
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0343-usb-dwc_otg-Use-dma-allocation-for-mphi-dummy_send-b.patch80
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0344-staging-vchiq_arm-Set-up-dma-ranges-on-child-devices.patch49
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0345-staging-vc-sm-cma-Correct-DMA-configuration.patch46
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0346-staging-vc-sm-cma-Use-a-void-pointer-as-the-handle-w.patch119
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0347-staging-vc-sm-cma-Fix-up-for-64bit-builds.patch203
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0348-configs-Add-Unicam-and-subdevices-to-bcmrpi3_defconf.patch49
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0349-configs-Add-VIDEO_BCM2835-to-bcmrpi3_defconfig.patch25
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0350-configs-Add-V4L2-codec-driver-to-bcmrpi3_defconfig.patch25
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0351-config-Add-IPVLAN-module-to-bcmrpi3_defconfig.patch24
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0352-configs-Enable-the-AD193x-codecs.patch72
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0353-overlays-balenaFin-v1.1.0-carrier-board-update.patch113
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0354-configs-Add-CONFIG_LEDS_PCA963X-m.patch53
-rw-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0355-Revert-brcmfmac-Mute-expected-startup-errors.patch2828
--rw-r--r--r--sys-kernel/boest-v4.19.37/raspberrypi/0356-gpu-vc4-fkms-Update-driver-to-not-use-plane-crtc.patch3838
--rw-r--r--r--sys-kernel/boest-v4.19.37/raspberrypi/0357-drm-vc4-Programming-the-CTM-is-conditional-on-runnin.patch2828
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0358-staging-mmal_vchiq-Add-in-the-Bayer-encoding-formats.patch53
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0359-staging-mmal-vchiq-Always-return-the-param-size-from.patch40
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0360-staging-mmal-vchiq-If-the-VPU-returns-an-error-don-t.patch31
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0361-staging-bcm2835_codec-Query-supported-formats-from-t.patch729
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0362-staging-bcm2835_codec-Add-support-for-the-ISP-as-an-.patch386
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0363-staging-bcm2835_codec-Add-an-option-for-ignoring-Bay.patch181
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0364-staging-bcm2835_codec-Fix-handling-of-VB2_MEMORY_DMA.patch192
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0365-staging-mmal-vchiq-Update-mmal_parameters.h-with-rec.patch58
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0366-staging-bcm2835_codec-Include-timing-info-in-SPS-hea.patch46
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0367-drm-vc4-Don-t-wait-for-vblank-on-fkms-cursor-updates.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0368-Fix-for-Pisound-kernel-module-in-Real-Time-kernel-co.patch40
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0369-config-Add-CONFIG_FB_TFT_SH1106-m.patch70
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0370-Added-mute-stream-func.patch148
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0371-lan78xx-EEE-support-is-now-a-PHY-property.patch28
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0372-video-bcm2708_fb-Try-allocating-on-the-ARM-and-passi.patch166
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0373-staging-vc_sm_cma-Remove-erroneous-misc_deregister.patch46
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0374-vcsm-Fix-makefile-include-on-out-of-tree-builds.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0375-vcsm-Remove-set-but-unused-variable.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0376-vcsm-Reduce-scope-of-local-functions.patch73
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0377-staging-bcm2835-codec-NULL-component-handle-on-queue.patch61
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0378-staging-vc-sm-cma-Remove-the-debugfs-directory-on-re.patch26
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0379-staging-vc-sm-cma-Use-devm_-allocs-for-sm_state.patch71
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0380-staging-vc-sm-cma-Don-t-fail-if-debugfs-calls-fail.patch39
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0381-staging-vc-sm-cma-Ensure-mutex-and-idr-are-destroyed.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0382-staging-bcm2835_codec-Clean-up-logging-on-unloading-.patch51
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0383-configs-Enable-MT76-USB-wifi.patch51
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0384-bcm2835-sdhost-Allow-for-sg-entries-that-cross-pages.patch34
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0385-overlays-sdio-Added-4-bit-support-on-GPIOs-34-39.-29.patch51
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0386-overlays-Fix-multiple-instantiation-of-sc16is7xx.patch63
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0387-configs-Re-enable-CONFIG_NETFILTER_XT_MATCH_SOCKET.patch53
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0388-bcm2835-mmc-Fix-DMA-channel-leak.patch44
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0389-bcm2835-mmc-Fix-struct-mmc_host-leak-on-probe.patch31
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0390-bcm2835-mmc-Fix-duplicate-free_irq-on-remove.patch40
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0391-bcm2835-mmc-Handle-mmc_add_host-errors.patch37
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0392-bcm2835-mmc-Deduplicate-reset-of-driver-data-on-remo.patch28
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0393-configs-Add-CONFIG_BATTERY_MAX17040.patch50
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0394-overlays-Add-max17040-support-to-i2c-sensor.patch60
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0395-defconfigs-disable-memory-and-IO-cgroups-2908.patch87
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0396-media-bcm2835-unicam-Add-support-for-enum-framesizes.patch135
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0397-staging-bcm2835-codec-Refactor-default-resolution-co.patch154
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0398-nvmem-add-type-attribute.patch135
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0399-rtc-rv3028-add-new-driver.patch868
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0400-configs-Add-RTC_DRV_RV3028-m.patch50
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0401-overlays-Add-rv3028-to-i2c-rtc.patch79
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0402-ASoC-tlv320aic32x4-SND_SOC_DAPM_MICBIAS-is-deprecate.patch82
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0403-ASoC-tlv320aic32x4-Break-out-clock-setting-into-sepa.patch66
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0404-ASoC-tlv320aic32x4-Properly-Set-Processing-Blocks.patch113
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0405-ASoC-tlv320aic32x4-Model-PLL-in-CCF.patch887
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0406-ASoC-tlv320aic32x4-Model-CODEC_CLKIN-in-CCF.patch124
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0407-ASoC-tlv320aic32x4-Model-DAC-ADC-dividers-in-CCF.patch312
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0408-ASoC-tlv320aic32x4-Model-BDIV-divider-in-CCF.patch214
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0409-ASoC-tlv320aic32x4-Control-clock-gating-with-CCF.patch111
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0410-ASoC-tlv320aic32x4-Move-aosr-and-dosr-setting-to-sep.patch61
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0411-ASoC-tlv320aic32x4-Dynamically-Determine-Clocking.patch289
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0412-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch53
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0413-ASoC-tlv320aic32x4-Remove-mclk-references.patch41
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0414-ASoC-tlv320aic32x4-Allow-192000-Sample-Rate.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0415-ASoC-tlv320aic32x4-Only-enable-with-common-clock.patch45
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0416-Audiophonics-I-Sabre-9038Q2M-DAC-driver.patch820
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0417-ASoC-tlv320aic32x4-Fix-Common-Pins.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0418-ASoC-tlv320aic32x4-Change-author-s-name.patch58
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0419-ASoC-tlv320aic32x4-Update-copyright-and-use-SPDX-ide.patch74
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0420-ASoC-tlv320aic32x4-Add-Switch-for-Setting-Common-Mod.patch42
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0421-ASoC-tlv320aic32x4-Add-Playback-PowerTune-Controls.patch56
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0422-dtoverlays-Add-Support-for-the-UDRC-DRAWS.patch453
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0423-dwc_otg-only-do_split-when-we-actually-need-to-do-a-.patch57
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0424-Input-ili210x-fetch-touchscreen-geometry-from-DT.patch493
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0425-Input-ili210x-add-DT-binding-document.patch49
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0426-configs-Add-TOUCHSCREEN_ILI210X-m.patch48
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0427-BCM2708-Add-core-Device-Tree-support-ilitek251x.patch97
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0428-dwc_otg-fix-locking-around-dequeueing-and-killing-UR.patch67
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0429-rtc-rv3028-Add-backup-switchover-mode-support.patch52
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0430-dt-bindings-rv3028-backup-switchover-support.patch22
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0431-overlays-Add-rv3028-backup-switchover-support-to-i2c.patch38
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0432-Maxim-MAX98357A-I2S-DAC-overlay-2935.patch136
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0433-media-m88ds3103-serialize-reset-messages-in-m88ds310.patch99
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0434-sound-Fixes-for-audioinjector-octo-under-4.19.patch116
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0435-Revert-cgroup-Disable-cgroup-memory-by-default.patch65
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0436-Revert-defconfigs-disable-memory-and-IO-cgroups-2908.patch85
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0437-overlays-Add-PiGlow-overlay.patch153
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0438-configs-enable-LED-driver-for-PiGlow.patch58
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0439-Revert-bcm2835-interpolate-audio-delay.patch75
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0440-Revert-staging-bcm2835-audio-Enable-compile-test.patch24
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0441-Revert-staging-bcm2835-audio-use-module_platform_dri.patch44
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0442-staging-bcm2835-audio-Clean-up-mutex-locks.patch309
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0443-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch91
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0444-staging-bcm2835-audio-Clean-up-include-files-in-bcm2.patch45
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0445-staging-bcm2835-audio-Remove-redundant-substream-mas.patch121
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0446-staging-bcm2835-audio-Fix-mute-controls-volume-handl.patch281
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0447-staging-bcm2835-audio-Remove-redundant-function-call.patch101
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0448-staging-bcm2835-audio-Remove-superfluous-open-flag.patch65
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0449-staging-bcm2835-audio-Drop-useless-running-flag-and-.patch110
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0450-staging-bcm2835-audio-Fix-incorrect-draining-handlin.patch71
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0451-staging-bcm2835-audio-Kill-unused-spinlock.patch43
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0452-staging-bcm2835-audio-Use-PCM-runtime-values-instead.patch78
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0453-staging-bcm2835-audio-Drop-unnecessary-pcm-indirect-.patch31
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0454-staging-bcm2835-audio-Drop-useless-NULL-check.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0455-staging-bcm2835-audio-Propagate-parameter-setup-erro.patch42
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0456-staging-bcm2835-audio-Drop-debug-messages-in-bcm2835.patch152
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0457-staging-bcm2835-audio-Drop-superfluous-mutex-lock-du.patch51
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0458-staging-bcm2835-audio-Add-10ms-period-constraint.patch35
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0459-staging-bcm2835-audio-Make-single-vchi-handle.patch414
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0460-staging-bcm2835-audio-Code-refactoring-of-vchiq-acce.patch578
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0461-staging-bcm2835-audio-Operate-non-atomic-PCM-ops.patch601
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0462-staging-bcm2835-audio-Use-card-private_data.patch140
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0463-staging-bcm2835-audio-Use-standard-error-print-helpe.patch245
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0464-staging-bcm2835-audio-Remove-unnecessary-header-file.patch77
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0465-staging-bcm2835-audio-Move-module-parameter-descript.patch38
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0466-staging-bcm2835-audio-Use-coherent-device-buffers.patch63
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0467-staging-bcm2835-audio-Set-SNDRV_PCM_INFO_SYNC_APPLPT.patch42
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0468-staging-bcm2835-audio-Simplify-PCM-creation-helpers.patch202
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0469-staging-bcm2835-audio-Simplify-kctl-creation-helpers.patch164
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0470-staging-bcm2835-audio-Simplify-card-object-managemen.patch216
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0471-staging-bcm2835-audio-unify-FOURCC-command-definitio.patch75
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0472-staging-bcm2835-audio-don-t-initialize-memory-twice.patch32
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0473-staging-bcm2835-audio-reorder-variable-declarations-.patch124
-rw-r--r--r--sys-kernel/boest-v4.19.37/raspberrypi/0474-staging-bcm2835-audio-use-anonymous-union-in-struct-.patch109109
--rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0475-staging-bcm2835-audio-more-generic-probe-function-na.patch4141
--rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0476-staging-bcm2835-audio-rename-platform_driver-structu.patch4949
--rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0477-staging-bcm2835-audio-update-TODO.patch58
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0478-staging-bcm2835-audio-interpolate-audio-delay.patch86
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0479-staging-bcm2835-audio-Enable-compile-test.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0480-staging-bcm2835-audio-use-module_platform_driver-mac.patch50
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0481-staging-bcm2835-audio-Drop-DT-dependency.patch107
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0482-staging-bcm2835-audio-double-free-in-init-error-path.patch32
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0483-dts-Increase-default-coherent-pool-size.patch29
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0484-Revert-staging-bcm2835-audio-Drop-DT-dependency.patch98
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0485-configs-Enable-netdev-LED-trigger.patch48
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0486-smsc95xx-dynamically-fix-up-TX-buffer-alignment-with.patch66
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0487-lan78xx-use-default-alignment-for-rx-buffers.patch25
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0488-staging-bcm2835-codec-Correct-port-width-calc-for-tr.patch31
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0489-staging-bcm2835-codec-Remove-height-padding-for-ISP-.patch63
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0490-staging-mmal-vchiq-Free-the-event-context-for-contro.patch30
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0491-staging-mmal-vchiq-Replace-spinlock-protecting-conte.patch69
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0492-BCM270X_DT-Also-set-coherent_pool-1M-for-BT-Pis.patch53
-rw-r--r--sys-kernel/boest-v4.19.37/raspberrypi/0493-configs-Enable-ICS-43432-I2S-microphone-module.patch48
-rw-r--r--sys-kernel/boest-v4.19.42/0001-patch-4.19-ja1.diff.patch2127
-rw-r--r--sys-kernel/boest-v4.19.42/0002-pool-2.6.25-tcp-timewait-20s.diff.patch27
-rw-r--r--sys-kernel/boest-v4.19.42/0003-pool-2.6.25-disable-tcp-debug.diff.patch25
-rw-r--r--sys-kernel/boest-v4.19.42/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch142
-rw-r--r--sys-kernel/boest-v4.19.42/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch34
-rw-r--r--sys-kernel/boest-v4.19.42/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch45
-rw-r--r--sys-kernel/boest-v4.19.42/0007-This-patch-adds-support-for-a-restricted-user-contro.patch75
-rw-r--r--sys-kernel/boest-v4.19.42/0008-fs-Enable-link-security-restrictions-by-default.patch26
-rw-r--r--sys-kernel/boest-v4.19.42/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch37
-rw-r--r--sys-kernel/boest-v4.19.42/0010-4.19-2600_enable-key-swapping-for-apple-mac.patch.patch125
-rw-r--r--sys-kernel/boest-v4.19.42/0011-4.19-4200_fbcondecor.patch.patch2121
-rw-r--r--sys-kernel/boest-v4.19.42/0012-4.19-4400_alpha-sysctl-uac.patch.patch153
-rw-r--r--sys-kernel/boest-v4.19.42/0013-4.19-4567_distro-Gentoo-Kconfig.patch.patch173
-rw-r--r--sys-kernel/boest-v4.19.42/0014-WARNING.patch565
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch107
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0002-smsx95xx-fix-crimes-against-truesize.patch49
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0003-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch45
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0004-Allow-mac-address-to-be-set-in-smsc95xx.patch98
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0005-Protect-__release_resource-against-resources-without.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0006-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0007-irq-bcm2836-Avoid-Invalid-trigger-warning.patch26
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0008-irqchip-bcm2835-Add-FIQ-support.patch131
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0009-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch101
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0010-spidev-Add-spidev-compatible-string-to-silence-warni.patch23
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0011-spi-bcm2835-Support-pin-groups-other-than-7-11.patch82
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0012-spi-bcm2835-Disable-forced-software-CS.patch36
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0013-spi-bcm2835-Remove-unused-code.patch90
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0014-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch105
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0015-firmware-Updated-mailbox-header.patch38
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0016-rtc-Add-SPI-alias-for-pcf2123-driver.patch22
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0017-watchdog-bcm2835-Support-setting-reboot-partition.patch104
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0018-reboot-Use-power-off-rather-than-busy-spinning-when-.patch25
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0019-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch21
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0020-Register-the-clocks-early-during-the-boot-process-so.patch47
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0021-bcm2835-rng-Avoid-initialising-if-already-enabled.patch27
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0022-kbuild-Ignore-dtco-targets-when-filtering-symbols.patch22
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0023-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0024-clk-bcm2835-Add-claim-clocks-property.patch104
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0025-clk-bcm2835-Read-max-core-clock-from-firmware.patch117
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0026-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch40
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0027-sound-Demote-deferral-errors-to-INFO-level.patch39
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0028-Update-vfpmodule.c.patch139
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0029-i2c-bcm2835-Add-debug-support.patch191
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0030-mm-Remove-the-PFN-busy-warning.patch27
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0031-ASoC-Add-prompt-for-ICS43432-codec.patch27
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0032-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch116
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0033-lan78xx-Enable-LEDs-and-auto-negotiation.patch50
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0034-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch31
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0035-amba_pl011-Round-input-clock-up.patch88
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0036-amba_pl011-Insert-mb-for-correct-FIFO-handling.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0037-amba_pl011-Add-cts-event-workaround-DT-property.patch51
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0038-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch24
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0039-Main-bcm2708-bcm2709-linux-port.patch158
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0040-Add-dwc_otg-driver.patch61338
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0041-bcm2708-framebuffer-driver.patch3489
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0042-Speed-up-console-framebuffer-imageblit-function.patch211
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0043-dmaengine-Add-support-for-BCM2708.patch648
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0044-MMC-added-alternative-MMC-driver.patch1893
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0045-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch2432
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0046-vc_mem-Add-vc_mem-driver-for-querying-firmware-memor.patch523
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0047-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch4987
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0048-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch309
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0049-Add-SMI-driver.patch1948
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0050-MISC-bcm2835-smi-use-clock-manager-and-fix-reload-is.patch171
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0051-Add-SMI-NAND-driver.patch356
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0052-Add-cpufreq-driver.patch265
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0053-Add-Chris-Boot-s-i2c-driver.patch666
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0054-char-broadcom-Add-vcio-module.patch226
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0055-firmware-bcm2835-Support-ARCH_BCM270x.patch85
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0056-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch537
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0057-BCM2708-Add-core-Device-Tree-support.patch16229
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0058-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch178
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0059-fbdev-add-FBIOCOPYAREA-ioctl.patch271
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0060-Added-Device-IDs-for-August-DVB-T-205.patch24
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0061-rpi-ft5406-Add-touchscreen-driver-for-pi-LCD-display.patch346
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0062-Improve-__copy_to_user-and-__copy_from_user-performa.patch1575
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0063-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch37
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0064-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch862
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0065-ASoC-pcm512x-implement-set_tdm_slot-interface.patch82
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0066-ASoC-Add-support-for-Rpi-DAC.patch129
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0067-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch294
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0068-Added-support-for-HiFiBerry-DAC.patch601
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0069-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch655
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0070-Add-driver-for-rpi-proto.patch170
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0071-Add-Support-for-JustBoom-Audio-boards.patch175
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0072-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch209
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0073-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch432
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0074-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch133
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0075-Allo-Piano-DAC-boards-Initial-2-channel-stereo-suppo.patch159
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0076-Add-support-for-Allo-Piano-DAC-2.1-plus-add-on-board.patch1059
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0077-Add-support-for-Allo-Boss-DAC-add-on-board-for-Raspb.patch673
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0078-Support-for-Blokas-Labs-pisound-board.patch1273
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0079-ASoC-Add-driver-for-Cirrus-Logic-Audio-Card.patch1050
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0080-sound-Support-for-Dion-Audio-LOCO-V2-DAC-AMP-HAT.patch140
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0081-Add-support-for-Fe-Pi-audio-sound-card.-1867.patch172
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0082-Add-support-for-the-AudioInjector.net-Octo-sound-car.patch376
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0083-Driver-support-for-Google-voiceHAT-soundcard.patch256
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0084-Driver-and-overlay-for-Allo-Katana-DAC.patch378
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0085-ASoC-wm8804-MCLK-configuration-options-32-bit.patch34
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0086-ASoC-Add-generic-RPI-driver-for-simple-soundcards.patch302
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0087-ASoC-Add-Kconfig-and-Makefile-for-sound-soc-bcm.patch268
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0088-ASoC-Create-a-generic-Pi-Hat-WM8804-driver.patch461
--rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0089-rpi_display-add-backlight-driver-and-overlay.patch178178
--rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0090-bcm2835-virtgpio-Virtual-GPIO-driver.patch262262
--rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0091-net-Add-non-mainline-source-for-rtl8192cu-wlan.patch172981
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0092-OF-DT-Overlay-configfs-interface.patch435
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0093-brcm-adds-support-for-BCM43341-wifi.patch134
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0094-brcmfmac-Mute-expected-startup-errors.patch26
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0095-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch25
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0096-config-Add-default-configs.patch2735
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0097-Add-arm64-configuration-and-device-tree-differences..patch1415
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0098-ARM64-DWC_OTG-Port-dwc_otg-driver-to-ARM64.patch345
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0099-ARM64-Round-Robin-dispatch-IRQs-between-CPUs.patch76
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0100-ARM64-Force-hardware-emulation-of-deprecated-instruc.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0101-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch27
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0102-cache-export-clean-and-invalidate.patch54
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0103-AXI-performance-monitor-driver-2222.patch687
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0104-mcp2515-Use-DT-supplied-interrupt-flags.patch38
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0105-Tidy-up-of-the-ft5406-driver-to-use-DT-2189.patch382
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0106-cgroup-Disable-cgroup-memory-by-default.patch72
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0107-ARM-bcm2835-Set-Serial-number-and-Revision.patch65
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0108-ARM-Activate-FIQs-to-avoid-__irq_startup-warnings.patch38
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0109-serial-8250-bcm2835aux-suppress-EPROBE_DEFER.patch24
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0110-raspberrypi-firmware-Export-the-general-transaction-.patch34
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0111-drm-vc4-Add-a-mode-for-using-the-closed-firmware-for.patch772
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0112-drm-vc4-Name-the-primary-and-cursor-planes-in-fkms.patch26
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0113-drm-vc4-Add-DRM_DEBUG_ATOMIC-for-the-insides-of-fkms.patch72
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0114-drm-vc4-Fix-sending-of-page-flip-completion-events-i.patch44
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0115-drm-vc4-Add-support-for-setting-DPMS-in-firmwarekms.patch105
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0116-drm-vc4-Add-FB-modifier-support-to-firmwarekms.patch34
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0117-drm-vc4-Add-missing-enable-disable-vblank-handlers-i.patch83
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0118-vc4_fkms-Apply-firmware-overscan-offset-to-hardware-.patch59
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0119-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch52
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0120-drm-vc4-Skip-SET_CURSOR_INFO-when-the-cursor-content.patch59
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0121-drm-vc4-Remove-duplicate-primary-cursor-fields-from-.patch73
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0122-vc4_firmware_kms-fix-build.patch40
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0123-hack-cache-Fix-linker-error.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0124-i2c-gpio-Also-set-bus-numbers-from-reg-property.patch37
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0125-sound-bcm-Fix-memset-dereference-warning.patch38
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0126-added-capture_clear-option-to-pps-gpio-via-dtoverlay.patch24
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0127-lan78xx-Read-initial-EEE-status-from-DT.patch42
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0128-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch34
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0129-gpiolib-Don-t-prevent-IRQ-usage-of-output-GPIOs.patch48
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0130-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch61
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0131-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch86
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0132-irqchip-irq-bcm2835-Calc.-FIQ_START-at-boot-time.patch68
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0133-of-configfs-Use-of_overlay_fdt_apply-API-call.patch116
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0134-net-lan78xx-Disable-TCP-Segmentation-Offload-TSO.patch58
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0135-brcmfmac-Re-enable-firmware-roaming-support.patch31
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0136-lan78xx-Move-enabling-of-EEE-into-PHY-init-code.patch66
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0137-staging-vc04_services-Derive-g_cache_line_size.patch66
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0138-Add-rpi-poe-fan-driver.patch726
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0139-cxd2880-CXD2880_SPI_DRV-should-select-DVB_CXD2880-wi.patch22
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0140-bcm2835-interpolate-audio-delay.patch93
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0141-vchiq_2835_arm-Implement-a-DMA-pool-for-small-bulk-t.patch128
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0142-BCM2708_DT-Use-upstreamed-GPIO-expander-driver.patch56
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0143-overlays-Fix-a-few-dtc-warnings.patch193
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0144-bcm2708-rpi-Disable-txp-interrupt-unless-using-vc4-k.patch45
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0145-config-Enable-Raspberry-Pi-voltage-monitor.patch38
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0146-hwmon-raspberrypi-Prevent-voltage-low-warnings-from-.patch77
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0147-firmware-raspberrypi-Add-backward-compatible-get_thr.patch81
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0148-Increase-firmware-call-buffer-size-to-48-bytes.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0149-sc16is7xx-Don-t-spin-if-no-data-received.patch25
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0150-configs-Rebuild-bcmrpi3_defconfig-to-fix-warnings.patch328
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0151-brcmfmac-Disable-ARP-offloading-when-promiscuous.patch72
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0152-config-enable-Audio-Graph-Card-module.patch35
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0153-config-Add-IPVLAN-module.patch34
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0154-config-Add-I2C_TINY_USB-m.patch39
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0155-Add-device-tree-overlay-for-HD44780.patch111
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0156-Add-hd44780-module-to-defconfig.patch36
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0157-overlays-Add-addr-parameter-to-i2c-rtc-gpio.patch117
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0158-ARM-BCM270X-Add-the-18-bit-DPI-pinmux-to-the-RPI-DTs.patch32
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0159-overlays-Add-an-overlay-for-the-Adafruit-Kippah-with.patch92
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0160-overlays-Remove-stale-notes-about-vc4-s-CMA-alignmen.patch53
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0161-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch34
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0162-devicetree-add-RPi-CM3-dts-to-arm64-mimic-the-RPi-3B.patch34
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0163-Add-support-for-audioinjector.net-ultra-soundcard.-2.patch151
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0164-ASoC-cs4265-Add-a-S-PDIF-enable-switch.patch28
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0165-ASoC-cs4265-Add-native-32bit-I2S-transport.patch31
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0166-configs-Add-SENSOR_GPIO_FAN-m.patch59
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0167-BCM270X_DT-Add-gpio-fan-overlay.patch120
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0168-HID-hid-bigbenff-driver-for-BigBen-Interactive-PS3OF.patch492
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0169-configs-Add-CONFIG_HID_BIGBEN_FF-m.patch37
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0170-ASoC-cs4265-Add-a-MIC-pre.-route-2696.patch36
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0171-Update-gpio-fan-overlay.dts-2711.patch74
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0172-drivers-thermal-step_wise-add-support-for-hysteresis.patch96
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0173-drivers-thermal-step_wise-avoid-throttling-at-hyster.patch24
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0174-hwmon-adjust-rpi-poe-fan-overlay-trip-points.patch69
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0175-overlays-add-overrides-for-PoE-HAT-fan-control.patch54
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0176-overlays-Add-gpio-no-bank0-irq-overlay.patch66
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0177-Add-hy28b-2017-model-device-tree-overlay-2721.patch215
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0178-config-Add-CONFIG_USBIP_VUDC.patch35
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0179-mmc-bcm2835-sdhost-Recover-from-MMC_SEND_EXT_CSD.patch52
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0180-overlays-pi3-disable-bt-Clear-out-bt_pins-node.patch35
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0181-Revert-rtc-pcf8523-properly-handle-oscillator-stop-b.patch58
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0182-Update-issue-templates-2736.patch49
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0183-overlays-uart0-return-GPIOs-14-and-15-to-inputs.patch44
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0184-mmc-bcm2835-sdhost-Fix-warnings-on-arm64.patch254
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0185-Fix-warning-in-bcm2835-smi-nand.patch25
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0186-media-ov5647-Add-set_fmt-and-get_fmt-calls.patch49
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0187-Documentation-DT-add-device-tree-for-PWDN-control.patch34
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0188-media-ov5647-Add-support-for-PWDN-GPIO.patch94
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0189-media-ov5647-Add-support-for-non-continuous-clock-mo.patch81
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0190-media-tc358743-Increase-FIFO-level-to-374.patch33
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0191-media-tc358743-fix-connected-active-CSI-2-lane-repor.patch99
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0192-media-tc358743-Add-support-for-972Mbit-s-link-freq.patch81
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0193-media-tc358743-Check-I2C-succeeded-during-probe.patch100
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0194-media-adv7180-Default-to-the-first-valid-input.patch47
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0195-media-adv7180-Add-YPrPb-support-for-ADV7282M.patch26
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0196-media-videodev2-Add-helper-defines-for-printing-FOUR.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0197-dt-bindings-Document-BCM283x-CSI2-CCP2-receiver.patch105
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0198-media-bcm2835-unicam-Driver-for-CCP2-CSI2-camera-int.patch2449
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0199-MAINTAINERS-Add-entry-for-BCM2835-Unicam-driver.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0200-defconfig-Enable-Unicam-driver-and-various-sources-o.patch88
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0201-media-adv7180-Nasty-hack-to-allow-input-selection.patch91
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0202-BCM283x-DT-Add-CSI-nodes-to-the-device-tree.patch224
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0203-BCM270X_DT-Add-CSI-defines-for-all-the-downstream-Pi.patch135
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0204-arm-dt-Add-DT-overlays-for-ADV7282M-OV5647-and-TC358.patch493
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0205-dtoverlays-Add-support-for-ADV7280-M-ADV7281-M-and-A.patch143
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0206-Mailbox-firmware-calls-now-use-kmalloc-2749.patch91
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0207-vcsm-Fix-an-NULL-dereference-in-the-import_dmabuf-er.patch27
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0208-Update-README-2750.patch28
--rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0209-overlays-Remove-superfluous-address-size-cells.patch69
--rw-r--r--r--sys-kernel/boest-v4.19.42/raspberrypi/0210-Revert-ASoC-wm8804-MCLK-configuration-options-32-bit.patch31
--rw-r--r--'>sys-kernel/boest-v4.19.42/raspberrypi/0211-rpi-wm8804-soundcard-drop-PWRDN-register-writes.patch130
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0212-rpi-wm8804-soundcard-configure-wm8804-clocks-only-on.patch48
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0213-dtoverlays-Add-i2c-on-0-1-option-to-TC358743-ADV7282.patch150
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0214-overlays-Update-upstream-overlay.patch60
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0215-BCM2708_DT-update-firmware-node-binding.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0216-BCM2710_DT-fix-gpio-expander-bindings.patch73
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0217-ARM-dts-bcm283x-The-lan7515-PHY-node-has-moved.patch66
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0218-net-lan78xx-Support-auto-downshift-to-100Mb-s.patch87
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0219-dt-bindings-Document-microchip-downshift-after.patch26
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0220-ARM-dts-bcm283x-Set-downshift-after-for-Pi-3B.patch26
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0221-BCM270X_DT-Add-new-Ethernet-DT-parameters.patch59
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0222-BCM270X_DT-Mark-eth_downshift_after-as-an-integer.patch23
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0223-dwc-otg-FIQ-Fix-bad-mode-in-data-abort-handler.patch132
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0224-lirc-rpi-Remove-in-favour-of-gpio-ir.patch85
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0225-media-bcm2835-unicam-Pass-through-the-colorspace-on-.patch32
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0226-media-tc358743-Return-an-appropriate-colorspace-from.patch100
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0227-staging-bcm2835-camera-fix-module-autoloading.patch26
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0228-staging-bcm2835-camera-Move-module-info-to-the-end.patch40
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0229-staging-vchiq_arm-Fix-platform-device-unregistration.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0230-staging-vchiq_arm-Fix-camera-device-registration.patch58
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0231-staging-vchiq_arm-Register-a-platform-device-for-the.patch40
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0232-staging-bcm2835-audio-Enable-compile-test.patch24
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0233-staging-bcm2835-audio-use-module_platform_driver-mac.patch45
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0234-staging-bcm2835-audio-Drop-DT-dependency.patch118
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch168
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0236-staging-bcm2835-camera-Add-hint-about-possible-fault.patch33
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0237-staging-bcm2835-Don-t-probe-if-no-camera-is-detected.patch43
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0238-staging-vchiq_arm-Improve-error-handling-on-loading-.patch47
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0239-staging-bcm2835-camera-Do-not-bulk-receive-from-serv.patch199
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0240-staging-bcm2835-camera-Ensure-H264-header-bytes-get-.patch91
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0241-staging-bcm2835-camera-Correctly-denote-key-frames-i.patch27
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0242-staging-bcm2835-camera-Return-early-on-errors.patch199
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0243-staging-bcm2835-camera-Remove-dead-email-addresses.patch265
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0244-staging-bcm2835-camera-Fix-comment-style-violations.patch622
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0245-staging-bcm2835-camera-Fix-spacing-around-operators.patch108
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0246-staging-bcm2835-camera-Reduce-length-of-enum-names.patch780
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0247-staging-bcm2835-camera-Fix-multiple-line-dereference.patch135
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0248-staging-bcm2835-camera-Fix-brace-style-issues.patch62
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0249-staging-bcm2835-camera-Fix-missing-lines-between-ite.patch39
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0250-staging-bcm2835-camera-Fix-logical-continuation-spli.patch51
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0251-staging-bcm2835-camera-Fix-open-parenthesis-alignmen.patch145
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0252-staging-bcm2835_camera-Ensure-all-buffers-are-return.patch101
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0253-staging-bcm2835-camera-Remove-check-of-the-number-of.patch41
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0254-staging-bcm2835-camera-Handle-empty-EOS-buffers-whil.patch88
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0255-staging-bcm2835-camera-Set-sequence-number-correctly.patch50
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0256-staging-bcm2835-camera-Ensure-timestamps-never-go-ba.patch40
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0257-staging-bcm2835-camera-Avoid-unneeded-internal-decla.patch43
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0258-staging-bcm2835-camera-Add-multiple-inclusion-protec.patch52
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0259-staging-bcm2835-camera-Unify-header-inclusion-define.patch32
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0260-ARM-bcm2835_defconfig-Enable-bcm2835-camera.patch35
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0261-staging-bcm2835-camera-Fix-alignment-should-match-op.patch53
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0262-staging-bcm2835-camera-Fix-multiple-assignments-shou.patch32
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0263-staging-bcm2835-camera-Fix-up-all-formatting-in-mmal.patch338
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0264-staging-bcm2835-camera-Use-enums-for-max-value-in-co.patch114
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0265-staging-bcm2835-camera-Correct-V4L2_CID_COLORFX_CBCR.patch36
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0266-staging-bcm2835-camera-Remove-amend-some-obsolete-co.patch51
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0267-staging-vc04_services-Split-vchiq-mmal-into-a-module.patch298
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0268-staging-mmal-vchiq-Allocate-and-free-components-as-r.patch111
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0269-staging-mmal-vchiq-Avoid-use-of-bool-in-structures.patch97
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0270-staging-mmal-vchiq-Make-timeout-a-defined-parameter.patch40
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0271-staging-mmal-vchiq-Make-a-mmal_buf-struct-for-passin.patch288
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0272-staging-mmal-vchiq-Add-support-for-event-callbacks.patch364
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0273-staging-vc04_services-Support-sending-data-to-MMAL-p.patch44
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0274-staging-vc04_services-Fixup-vchiq-mmal-include-order.patch40
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0275-staging-vc04_services-Add-new-vc-sm-cma-driver.patch1903
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0276-staging-vc-sm-cma-Fixup-driver-for-older-VCHI-APIs.patch46
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0277-staging-vc04_services-Use-vc-sm-cma-to-support-zero-.patch171
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0278-media-videobuf2-Allow-exporting-of-a-struct-dmabuf.patch87
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0279-staging-vc04_services-Add-a-V4L2-M2M-codec-driver.patch2479
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0280-staging-vchiq_arm-Register-bcm2835-codec-as-a-platfo.patch36
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0281-staging-vchiq_arm-Register-vcsm-cma-as-a-platform-dr.patch36
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0282-ARM-bcm2835_defconfig-Enable-bcm2835-codec.patch24
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0283-config-Add-bcm2835-codec-to-Pi-defconfigs.patch37
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0284-staging-bcm2835-camera-Fix-stride-on-RGB3-BGR3-forma.patch55
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0285-media-vb2-Allow-reqbufs-0-with-in-use-MMAP-buffers.patch78
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0286-tpm-Make-SECURITYFS-a-weak-dependency.patch37
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0287-Enable-TPM-TIS-SPI-support-for-TPM1.2-and-TPM2.0-chi.patch110
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0288-Add-overlay-for-SLB9760-Iridium-LetsTrust-TPM.patch98
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0289-Revert-staging-vchiq_arm-Register-a-platform-device-.patch50
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0290-Revert-staging-bcm2835-audio-Drop-DT-dependency.patch116
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0291-ASoC-add-driver-for-3Dlab-Nano-soundcard-2758.patch521
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0292-overlays-Update-README-with-removal-of-lirc-rpi.patch89
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0293-staging-bcm2835-camera-Check-the-error-for-REPEAT_SE.patch33
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0294-gpio-ir-change-default-pull-configuration-to-up.patch51
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0295-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch83
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0296-firmware-raspberrypi-Report-the-fw-git-hash-during-p.patch62
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0297-arm64-dts-broadcom-Enable-fixups-for-overlays.patch25
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0298-sc16is7xx-Fix-for-Unexpected-interrupt-8.patch112
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0299-dtoverlays-fe-pi-audio-fix-sgtl5000-compatible-strin.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0300-bcm2835_smi-re-add-dereference-to-fix-DMA-transfers.patch22
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0301-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch46
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0302-ASoC-Add-support-for-AudioSense-Pi-add-on-soundcard.patch326
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0303-BCM270X-Adding-device-tree-support-for-AudioSense-Pi.patch141
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0304-configs-Add-CONFIG_SND_AUDIOSENSE_PI-m.patch50
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0305-configs-Add-CONFIG_USB_TMC-m.patch76
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0306-overlays-sdio-Add-enhanced-1-bit-support.patch111
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0307-dwc_otg-fix-bug-with-port_addr-assignment-for-single.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0308-configs-Add-CONFIG_USB_UAS-m.patch52
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0309-Added-driver-for-the-HiFiBerry-DAC-ADC-2694.patch614
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0310-Revert-pwm-Set-class-for-exported-channels-in-sysfs.patch65
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0311-pwm-Send-a-uevent-on-the-pwmchip-device-upon-channel.patch88
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0312-usb-dwc2-Disable-all-EP-s-on-disconnect.patch109
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0313-usb-dwc2-Fix-disable-all-EP-s-on-disconnect.patch154
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0314-overlays-Add-ssd1306-overlay-for-OLED-display.patch110
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0315-overlays-mcp23017-Support-the-MCP23008.patch53
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0316-overlays-Add-mcp342x-overlay.patch154
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0317-char-vcio-Add-compat-ioctl-handling.patch60
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0318-char-vcio-Fail-probe-if-rpi_firmware-is-not-found.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0319-staging-mmal-vchiq-Fix-client_component-for-64-bit-k.patch72
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0320-staging-bcm2835-camera-Add-sanity-checks-for-queue_s.patch46
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0321-staging-bcm2835-camera-Set-the-field-value-within-ea.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0322-char-vc_mem-Fix-up-compat-ioctls-for-64bit-kernel.patch115
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0323-char-vc_mem-Fix-all-coding-style-issues.patch432
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0324-clk-clk-bcm2835-Use-zd-when-printing-size_t.patch26
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0325-mfd-Add-rpi_sense_core-of-compatible-string.patch28
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0326-gpu-vc4_firmware_kms-Fix-up-64-bit-compile-warnings.patch68
-rw-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0327-input-rpi-ft5406-Clear-build-warning-on-64-bit-build.patch2828
--rw-r--r--r--'>sys-kernel/boest-v4.19.42/raspberrypi/0328-dtoverlays-Correct-DT-handling-camera-GPIOs.patch9191
-rw-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0329-media-ov5647-Use-gpiod_set_value_cansleep.patch56
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0330-media-bcm2835-unicam-Power-on-subdev-on-open-release.patch123
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0331-audioinjector-octo-revert-to-dummy-supplies.patch25
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0332-staging-bcm2835-camera-Correct-ctrl-min-max-step-def.patch60
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0333-staging-bcm2835-codec-variable-vb2-may-be-used-unini.patch39
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0334-staging-bcm2835-codec-Fix-potentially-uninitialised-.patch27
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0335-video-bcm2708_fb-Add-compat_ioctl-support.patch156
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0336-video-bcm2708_fb-Fix-warnings-on-64-bit-builds.patch48
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0337-video-bcm2708_fb-Clean-up-coding-style-issues.patch277
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0338-bcm2835-dma-Add-support-for-per-channel-flags.patch50
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0339-bcm283x-Set-the-DISDEBUG-flag-for-SD-transfers.patch23
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0340-ASoC-pcm512x-Implement-the-digital_mute-interface.patch200
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0341-ASoC-pcm512x-Fix-a-double-unlock-in-pcm512x_digital_.patch64
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0342-usb-dwc_otg-Clean-up-build-warnings-on-64bit-kernels.patch118
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0343-usb-dwc_otg-Use-dma-allocation-for-mphi-dummy_send-b.patch80
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0344-staging-vchiq_arm-Set-up-dma-ranges-on-child-devices.patch49
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0345-staging-vc-sm-cma-Correct-DMA-configuration.patch46
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0346-staging-vc-sm-cma-Use-a-void-pointer-as-the-handle-w.patch119
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0347-staging-vc-sm-cma-Fix-up-for-64bit-builds.patch203
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0348-configs-Add-Unicam-and-subdevices-to-bcmrpi3_defconf.patch49
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0349-configs-Add-VIDEO_BCM2835-to-bcmrpi3_defconfig.patch25
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0350-configs-Add-V4L2-codec-driver-to-bcmrpi3_defconfig.patch25
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0351-config-Add-IPVLAN-module-to-bcmrpi3_defconfig.patch24
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0352-configs-Enable-the-AD193x-codecs.patch72
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0353-overlays-balenaFin-v1.1.0-carrier-board-update.patch113
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0354-configs-Add-CONFIG_LEDS_PCA963X-m.patch53
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0355-Revert-brcmfmac-Mute-expected-startup-errors.patch28
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0356-gpu-vc4-fkms-Update-driver-to-not-use-plane-crtc.patch38
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0357-drm-vc4-Programming-the-CTM-is-conditional-on-runnin.patch28
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0358-staging-mmal_vchiq-Add-in-the-Bayer-encoding-formats.patch53
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0359-staging-mmal-vchiq-Always-return-the-param-size-from.patch40
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0360-staging-mmal-vchiq-If-the-VPU-returns-an-error-don-t.patch31
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0361-staging-bcm2835_codec-Query-supported-formats-from-t.patch729
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0362-staging-bcm2835_codec-Add-support-for-the-ISP-as-an-.patch386
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0363-staging-bcm2835_codec-Add-an-option-for-ignoring-Bay.patch181
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0364-staging-bcm2835_codec-Fix-handling-of-VB2_MEMORY_DMA.patch192
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0365-staging-mmal-vchiq-Update-mmal_parameters.h-with-rec.patch58
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0366-staging-bcm2835_codec-Include-timing-info-in-SPS-hea.patch46
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0367-drm-vc4-Don-t-wait-for-vblank-on-fkms-cursor-updates.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0368-Fix-for-Pisound-kernel-module-in-Real-Time-kernel-co.patch40
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0369-config-Add-CONFIG_FB_TFT_SH1106-m.patch70
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0370-Added-mute-stream-func.patch148
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0371-lan78xx-EEE-support-is-now-a-PHY-property.patch28
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0372-video-bcm2708_fb-Try-allocating-on-the-ARM-and-passi.patch166
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0373-staging-vc_sm_cma-Remove-erroneous-misc_deregister.patch46
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0374-vcsm-Fix-makefile-include-on-out-of-tree-builds.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0375-vcsm-Remove-set-but-unused-variable.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0376-vcsm-Reduce-scope-of-local-functions.patch73
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0377-staging-bcm2835-codec-NULL-component-handle-on-queue.patch61
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0378-staging-vc-sm-cma-Remove-the-debugfs-directory-on-re.patch26
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0379-staging-vc-sm-cma-Use-devm_-allocs-for-sm_state.patch71
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0380-staging-vc-sm-cma-Don-t-fail-if-debugfs-calls-fail.patch39
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0381-staging-vc-sm-cma-Ensure-mutex-and-idr-are-destroyed.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0382-staging-bcm2835_codec-Clean-up-logging-on-unloading-.patch51
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0383-configs-Enable-MT76-USB-wifi.patch51
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0384-bcm2835-sdhost-Allow-for-sg-entries-that-cross-pages.patch34
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0385-overlays-sdio-Added-4-bit-support-on-GPIOs-34-39.-29.patch51
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0386-overlays-Fix-multiple-instantiation-of-sc16is7xx.patch63
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0387-configs-Re-enable-CONFIG_NETFILTER_XT_MATCH_SOCKET.patch53
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0388-bcm2835-mmc-Fix-DMA-channel-leak.patch44
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0389-bcm2835-mmc-Fix-struct-mmc_host-leak-on-probe.patch31
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0390-bcm2835-mmc-Fix-duplicate-free_irq-on-remove.patch40
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0391-bcm2835-mmc-Handle-mmc_add_host-errors.patch37
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0392-bcm2835-mmc-Deduplicate-reset-of-driver-data-on-remo.patch28
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0393-configs-Add-CONFIG_BATTERY_MAX17040.patch50
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0394-overlays-Add-max17040-support-to-i2c-sensor.patch60
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0395-defconfigs-disable-memory-and-IO-cgroups-2908.patch87
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0396-media-bcm2835-unicam-Add-support-for-enum-framesizes.patch135
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0397-staging-bcm2835-codec-Refactor-default-resolution-co.patch154
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0398-nvmem-add-type-attribute.patch135
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0399-rtc-rv3028-add-new-driver.patch868
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0400-configs-Add-RTC_DRV_RV3028-m.patch50
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0401-overlays-Add-rv3028-to-i2c-rtc.patch79
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0402-ASoC-tlv320aic32x4-SND_SOC_DAPM_MICBIAS-is-deprecate.patch82
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0403-ASoC-tlv320aic32x4-Break-out-clock-setting-into-sepa.patch66
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0404-ASoC-tlv320aic32x4-Properly-Set-Processing-Blocks.patch113
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0405-ASoC-tlv320aic32x4-Model-PLL-in-CCF.patch887
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0406-ASoC-tlv320aic32x4-Model-CODEC_CLKIN-in-CCF.patch124
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0407-ASoC-tlv320aic32x4-Model-DAC-ADC-dividers-in-CCF.patch312
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0408-ASoC-tlv320aic32x4-Model-BDIV-divider-in-CCF.patch214
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0409-ASoC-tlv320aic32x4-Control-clock-gating-with-CCF.patch111
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0410-ASoC-tlv320aic32x4-Move-aosr-and-dosr-setting-to-sep.patch61
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0411-ASoC-tlv320aic32x4-Dynamically-Determine-Clocking.patch289
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0412-ASoC-tlv320aic32x4-Restructure-set_dai_sysclk.patch53
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0413-ASoC-tlv320aic32x4-Remove-mclk-references.patch41
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0414-ASoC-tlv320aic32x4-Allow-192000-Sample-Rate.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0415-ASoC-tlv320aic32x4-Only-enable-with-common-clock.patch45
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0416-Audiophonics-I-Sabre-9038Q2M-DAC-driver.patch820
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0417-ASoC-tlv320aic32x4-Change-author-s-name.patch58
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0418-ASoC-tlv320aic32x4-Update-copyright-and-use-SPDX-ide.patch74
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0419-ASoC-tlv320aic32x4-Add-Switch-for-Setting-Common-Mod.patch42
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0420-ASoC-tlv320aic32x4-Add-Playback-PowerTune-Controls.patch56
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0421-dtoverlays-Add-Support-for-the-UDRC-DRAWS.patch453
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0422-dwc_otg-only-do_split-when-we-actually-need-to-do-a-.patch57
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0423-Input-ili210x-fetch-touchscreen-geometry-from-DT.patch493
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0424-Input-ili210x-add-DT-binding-document.patch48
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0425-configs-Add-TOUCHSCREEN_ILI210X-m.patch48
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0426-BCM2708-Add-core-Device-Tree-support-ilitek251x.patch97
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0427-dwc_otg-fix-locking-around-dequeueing-and-killing-UR.patch67
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0428-rtc-rv3028-Add-backup-switchover-mode-support.patch52
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0429-dt-bindings-rv3028-backup-switchover-support.patch22
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0430-overlays-Add-rv3028-backup-switchover-support-to-i2c.patch38
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0431-Maxim-MAX98357A-I2S-DAC-overlay-2935.patch136
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0432-media-m88ds3103-serialize-reset-messages-in-m88ds310.patch99
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0433-sound-Fixes-for-audioinjector-octo-under-4.19.patch116
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0434-Revert-cgroup-Disable-cgroup-memory-by-default.patch65
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0435-Revert-defconfigs-disable-memory-and-IO-cgroups-2908.patch85
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0436-overlays-Add-PiGlow-overlay.patch153
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0437-configs-enable-LED-driver-for-PiGlow.patch58
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0438-Revert-bcm2835-interpolate-audio-delay.patch75
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0439-Revert-staging-bcm2835-audio-Enable-compile-test.patch24
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0440-Revert-staging-bcm2835-audio-use-module_platform_dri.patch44
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0441-staging-bcm2835-audio-Clean-up-mutex-locks.patch309
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0442-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch91
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0443-staging-bcm2835-audio-Clean-up-include-files-in-bcm2.patch45
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0444-staging-bcm2835-audio-Remove-redundant-substream-mas.patch121
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0445-staging-bcm2835-audio-Fix-mute-controls-volume-handl.patch281
-rw-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0446-staging-bcm2835-audio-Remove-redundant-function-call.patch101101
--rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0447-staging-bcm2835-audio-Remove-superfluous-open-flag.patch65
--rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0448-staging-bcm2835-audio-Drop-useless-running-flag-and-.patch110
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0449-staging-bcm2835-audio-Fix-incorrect-draining-handlin.patch71
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0450-staging-bcm2835-audio-Kill-unused-spinlock.patch43
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0451-staging-bcm2835-audio-Use-PCM-runtime-values-instead.patch78
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0452-staging-bcm2835-audio-Drop-unnecessary-pcm-indirect-.patch31
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0453-staging-bcm2835-audio-Drop-useless-NULL-check.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0454-staging-bcm2835-audio-Propagate-parameter-setup-erro.patch42
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0455-staging-bcm2835-audio-Drop-debug-messages-in-bcm2835.patch152
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0456-staging-bcm2835-audio-Drop-superfluous-mutex-lock-du.patch51
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0457-staging-bcm2835-audio-Add-10ms-period-constraint.patch35
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0458-staging-bcm2835-audio-Make-single-vchi-handle.patch414
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0459-staging-bcm2835-audio-Code-refactoring-of-vchiq-acce.patch578
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0460-staging-bcm2835-audio-Operate-non-atomic-PCM-ops.patch601
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0461-staging-bcm2835-audio-Use-card-private_data.patch140
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0462-staging-bcm2835-audio-Use-standard-error-print-helpe.patch245
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0463-staging-bcm2835-audio-Remove-unnecessary-header-file.patch77
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0464-staging-bcm2835-audio-Move-module-parameter-descript.patch38
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0465-staging-bcm2835-audio-Use-coherent-device-buffers.patch63
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0466-staging-bcm2835-audio-Set-SNDRV_PCM_INFO_SYNC_APPLPT.patch42
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0467-staging-bcm2835-audio-Simplify-PCM-creation-helpers.patch202
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0468-staging-bcm2835-audio-Simplify-kctl-creation-helpers.patch164
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0469-staging-bcm2835-audio-Simplify-card-object-managemen.patch216
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0470-staging-bcm2835-audio-unify-FOURCC-command-definitio.patch75
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0471-staging-bcm2835-audio-don-t-initialize-memory-twice.patch32
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0472-staging-bcm2835-audio-reorder-variable-declarations-.patch124
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0473-staging-bcm2835-audio-use-anonymous-union-in-struct-.patch109
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0474-staging-bcm2835-audio-more-generic-probe-function-na.patch41
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0475-staging-bcm2835-audio-rename-platform_driver-structu.patch49
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0476-staging-bcm2835-audio-update-TODO.patch58
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0477-staging-bcm2835-audio-interpolate-audio-delay.patch86
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0478-staging-bcm2835-audio-Enable-compile-test.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0479-staging-bcm2835-audio-use-module_platform_driver-mac.patch50
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0480-staging-bcm2835-audio-Drop-DT-dependency.patch107
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0481-staging-bcm2835-audio-double-free-in-init-error-path.patch32
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0482-dts-Increase-default-coherent-pool-size.patch29
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0483-Revert-staging-bcm2835-audio-Drop-DT-dependency.patch98
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0484-configs-Enable-netdev-LED-trigger.patch48
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0485-smsc95xx-dynamically-fix-up-TX-buffer-alignment-with.patch66
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0486-lan78xx-use-default-alignment-for-rx-buffers.patch25
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0487-staging-bcm2835-codec-Correct-port-width-calc-for-tr.patch31
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0488-staging-bcm2835-codec-Remove-height-padding-for-ISP-.patch63
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0489-staging-mmal-vchiq-Free-the-event-context-for-contro.patch30
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0490-staging-mmal-vchiq-Replace-spinlock-protecting-conte.patch69
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0491-BCM270X_DT-Also-set-coherent_pool-1M-for-BT-Pis.patch53
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0492-configs-Enable-ICS-43432-I2S-microphone-module.patch48
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0493-arm-dts-overlays-rpi-sense-add-upstream-humidity-com.patch28
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0494-staging-mmal-vchiq-Fix-memory-leak-in-error-path.patch69
-rw-r--r--sys-kernel/boest-v4.19.42/raspberrypi/0495-staging-vchiq-mmal-Fix-memory-leak-of-vchiq-instance.patch64
l---------sys-kernel/longterm-sources-4.19.371
l---------sys-kernel/longterm-sources-4.19.421
1018 files changed, 343960 insertions, 343832 deletions
diff --git a/sys-kernel/boest-v4.19.37/0001-patch-4.19-ja1.diff.patch b/sys-kernel/boest-v4.19.37/0001-patch-4.19-ja1.diff.patch
deleted file mode 100644
index 42110ba4..00000000
--- a/sys-kernel/boest-v4.19.37/0001-patch-4.19-ja1.diff.patch
+++ /dev/null
@@ -1,2127 +0,0 @@
-From fc37e8fa03ac080b32199a316eb71665cf29344c Mon Sep 17 00:00:00 2001
-From: Julian Anastasov <ja@ssi.bg>
-Date: Sun, 28 Oct 2018 09:28:02 +0000
-Subject: [PATCH 01/14] patch-4.19-ja1.diff
-
-Jumbo patch containing the following parts:
- - routes-2.X.*.diff (static_routes, alt_routes, nf_reroute but without arp_prefsrc functionality, it is replaced by arprules and rp_filter_mask)
- - hidden-2.X.*.diff (conf/*/hidden)
- - arprules-2.X.*.diff (iparp/arprules support)
- - rp_filter_mask-2.X.*.diff (conf/*/rp_filter_mask)
- - forward_shared-2.X.*.diff (conf/*/forward_shared)
- - send-to-self-2.X.*.diff (conf/*/loop, included March 3, 2004, up to Linux 3.5)
-
-URL: http://ja.ssi.bg/patch-4.19-ja1.diff
----
- Documentation/networking/ip-sysctl.txt | 30 +
- include/linux/inetdevice.h | 3 +
- include/net/flow.h | 2 +
- include/net/ip_fib.h | 7 +-
- include/net/netfilter/nf_nat.h | 5 +
- include/net/route.h | 5 +
- include/uapi/linux/ip.h | 3 +
- include/uapi/linux/rtnetlink.h | 64 +-
- net/bridge/br_netfilter_hooks.c | 3 +
- net/ipv4/arp.c | 695 +++++++++++++++++++-
- net/ipv4/devinet.c | 14 +-
- net/ipv4/fib_frontend.c | 56 +-
- net/ipv4/fib_rules.c | 5 +
- net/ipv4/fib_semantics.c | 257 ++++++--
- net/ipv4/fib_trie.c | 3 +
- net/ipv4/netfilter/iptable_nat.c | 7 +
- net/ipv4/netfilter/nf_nat_masquerade_ipv4.c | 27 +-
- net/ipv4/route.c | 69 +-
- net/netfilter/nf_nat_core.c | 43 ++
- security/selinux/nlmsgtab.c | 5 +-
- 20 files changed, 1175 insertions(+), 128 deletions(-)
-
-diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
-index 960de8fe3f40..e100d5fc6451 100644
---- a/Documentation/networking/ip-sysctl.txt
-+++ b/Documentation/networking/ip-sysctl.txt
-@@ -1053,6 +1053,19 @@ forwarding - BOOLEAN
- Enable IP forwarding on this interface. This controls whether packets
- received _on_ this interface can be forwarded.
-
-+forward_shared - BOOLEAN
-+ Integer value determines if a source validation should allow
-+ forwarding of packets with local source address. 1 means yes,
-+ 0 means no. By default the flag is disabled and such packets
-+ are not forwarded.
-+
-+ If you enable this flag on internal network, the router will forward
-+ packets from internal hosts with shared IP addresses no matter how
-+ the rp_filter is set. This flag is activated only if it is
-+ enabled both in specific device section and in "all" section.
-+
-+ The forward_shared value could be ignored when rp_filter is set to 0.
-+
- mc_forwarding - BOOLEAN
- Do multicast routing. The kernel needs to be compiled with CONFIG_MROUTE
- and a multicast routing daemon is required.
-@@ -1168,6 +1181,15 @@ rp_filter - INTEGER
- Default value is 0. Note that some distributions enable it
- in startup scripts.
-
-+rp_filter_mask - INTEGER
-+ Integer value representing bitmask of the mediums for which the
-+ reverse path protection is disabled. If the source validation
-+ results in reverse path to interface with medium_id value in
-+ the 1..31 range the access is allowed if the corresponding bit
-+ is set in the bitmask. The bitmask value is considered only when
-+ rp_filter is enabled. By default the bitmask is empty preserving
-+ the original rp_filter semantic.
-+
- arp_filter - BOOLEAN
- 1 - Allows you to have multiple network interfaces on the same
- subnet, and have the ARPs for each interface be answered
-@@ -1308,6 +1330,14 @@ drop_gratuitous_arp - BOOLEAN
- Default: off (0)
-
-
-+hidden - BOOLEAN
-+ Hide addresses attached to this device from other devices.
-+ Such addresses will never be selected by source address autoselection
-+ mechanism, host does not answer broadcast ARP requests for them,
-+ does not announce them as source address of ARP requests, but they
-+ are still reachable via IP. This flag is activated only if it is
-+ enabled both in specific device section and in "all" section.
-+
- tag - INTEGER
- Allows you to write a number, which can be used as required.
- Default value is 0.
-diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h
-index c759d1cbcedd..46e2a7ec281b 100644
---- a/include/linux/inetdevice.h
-+++ b/include/linux/inetdevice.h
-@@ -95,9 +95,11 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
- #define IN_DEV_MFORWARD(in_dev) IN_DEV_ANDCONF((in_dev), MC_FORWARDING)
- #define IN_DEV_BFORWARD(in_dev) IN_DEV_ANDCONF((in_dev), BC_FORWARDING)
- #define IN_DEV_RPFILTER(in_dev) IN_DEV_MAXCONF((in_dev), RP_FILTER)
-+#define IN_DEV_RPFILTER_MASK(in_dev) IN_DEV_CONF_GET(in_dev, RP_FILTER_MASK)
- #define IN_DEV_SRC_VMARK(in_dev) IN_DEV_ORCONF((in_dev), SRC_VMARK)
- #define IN_DEV_SOURCE_ROUTE(in_dev) IN_DEV_ANDCONF((in_dev), \
- ACCEPT_SOURCE_ROUTE)
-+#define IN_DEV_FORWARD_SHARED(in_dev) IN_DEV_ANDCONF((in_dev), FORWARD_SHARED)
- #define IN_DEV_ACCEPT_LOCAL(in_dev) IN_DEV_ORCONF((in_dev), ACCEPT_LOCAL)
- #define IN_DEV_BOOTP_RELAY(in_dev) IN_DEV_ANDCONF((in_dev), BOOTP_RELAY)
-
-@@ -110,6 +112,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
- SECURE_REDIRECTS)
- #define IN_DEV_IDTAG(in_dev) IN_DEV_CONF_GET(in_dev, TAG)
- #define IN_DEV_MEDIUM_ID(in_dev) IN_DEV_CONF_GET(in_dev, MEDIUM_ID)
-+#define IN_DEV_HIDDEN(in_dev) IN_DEV_ANDCONF((in_dev), HIDDEN)
- #define IN_DEV_PROMOTE_SECONDARIES(in_dev) \
- IN_DEV_ORCONF((in_dev), \
- PROMOTE_SECONDARIES)
-diff --git a/include/net/flow.h b/include/net/flow.h
-index 8ce21793094e..8278eb051131 100644
---- a/include/net/flow.h
-+++ b/include/net/flow.h
-@@ -91,6 +91,7 @@ struct flowi4 {
- #define fl4_ipsec_spi uli.spi
- #define fl4_mh_type uli.mht.type
- #define fl4_gre_key uli.gre_key
-+ __be32 fl4_gw;
- } __attribute__((__aligned__(BITS_PER_LONG/8)));
-
- static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
-@@ -114,6 +115,7 @@ static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
- fl4->saddr = saddr;
- fl4->fl4_dport = dport;
- fl4->fl4_sport = sport;
-+ fl4->fl4_gw = 0;
- }
-
- /* Reset some input parameters after previous lookup */
-diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
-index 95eed32d8c6b..6ec06dcdf7ba 100644
---- a/include/net/ip_fib.h
-+++ b/include/net/ip_fib.h
-@@ -367,6 +367,8 @@ static inline bool fib4_rules_early_flow_dissect(struct net *net,
- return true;
- }
-
-+u32 fib_result_table(struct fib_result *res);
-+
- #endif /* CONFIG_IP_MULTIPLE_TABLES */
-
- /* Exported by fib_frontend.c */
-@@ -375,7 +377,8 @@ void ip_fib_init(void);
- __be32 fib_compute_spec_dst(struct sk_buff *skb);
- int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- u8 tos, int oif, struct net_device *dev,
-- struct in_device *idev, u32 *itag);
-+ struct in_device *idev, u32 *itag, int our);
-+void fib_select_default(const struct flowi4 *flp, struct fib_result *res);
- #ifdef CONFIG_IP_ROUTE_CLASSID
- static inline int fib_num_tclassid_users(struct net *net)
- {
-@@ -452,4 +455,6 @@ static inline void fib_proc_exit(struct net *net)
-
- u32 ip_mtu_from_fib_result(struct fib_result *res, __be32 daddr);
-
-+extern rwlock_t fib_nhflags_lock;
-+
- #endif /* _NET_FIB_H */
-diff --git a/include/net/netfilter/nf_nat.h b/include/net/netfilter/nf_nat.h
-index a17eb2f8d40e..749d505486d3 100644
---- a/include/net/netfilter/nf_nat.h
-+++ b/include/net/netfilter/nf_nat.h
-@@ -37,6 +37,11 @@ struct nf_conn_nat {
- #endif
- };
-
-+/* Call input routing for SNAT-ed traffic */
-+unsigned int ip_nat_route_input(void *priv,
-+ struct sk_buff *skb,
-+ const struct nf_hook_state *state);
-+
- /* Set up the info structure to map into this range. */
- unsigned int nf_nat_setup_info(struct nf_conn *ct,
- const struct nf_nat_range2 *range,
-diff --git a/include/net/route.h b/include/net/route.h
-index bb53cdba38dc..646b987c4001 100644
---- a/include/net/route.h
-+++ b/include/net/route.h
-@@ -182,6 +182,9 @@ int ip_route_input_noref(struct sk_buff *skb, __be32 dst, __be32 src,
- int ip_route_input_rcu(struct sk_buff *skb, __be32 dst, __be32 src,
- u8 tos, struct net_device *devin,
- struct fib_result *res);
-+int ip_route_input_common_rcu(struct sk_buff *skb, __be32 dst, __be32 src,
-+ u8 tos, struct net_device *devin, __be32 lsrc,
-+ struct fib_result *res);
-
- static inline int ip_route_input(struct sk_buff *skb, __be32 dst, __be32 src,
- u8 tos, struct net_device *devin)
-@@ -218,6 +221,8 @@ unsigned int inet_addr_type_dev_table(struct net *net,
- void ip_rt_multicast_event(struct in_device *);
- int ip_rt_ioctl(struct net *, unsigned int cmd, struct rtentry *rt);
- void ip_rt_get_source(u8 *src, struct sk_buff *skb, struct rtable *rt);
-+int ip_route_input_lookup(struct sk_buff*, __be32 dst, __be32 src, u8 tos,
-+ struct net_device *devin, __be32 lsrc);
- struct rtable *rt_dst_alloc(struct net_device *dev,
- unsigned int flags, u16 type,
- bool nopolicy, bool noxfrm, bool will_cache);
-diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h
-index e42d13b55cf3..d03711046f2e 100644
---- a/include/uapi/linux/ip.h
-+++ b/include/uapi/linux/ip.h
-@@ -169,6 +169,9 @@ enum
- IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
- IPV4_DEVCONF_DROP_GRATUITOUS_ARP,
- IPV4_DEVCONF_BC_FORWARDING,
-+ IPV4_DEVCONF_HIDDEN,
-+ IPV4_DEVCONF_RP_FILTER_MASK,
-+ IPV4_DEVCONF_FORWARD_SHARED,
- __IPV4_DEVCONF_MAX
- };
-
-diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
-index 46399367627f..92593fd1a055 100644
---- a/include/uapi/linux/rtnetlink.h
-+++ b/include/uapi/linux/rtnetlink.h
-@@ -157,6 +157,13 @@ enum {
- RTM_GETCHAIN,
- #define RTM_GETCHAIN RTM_GETCHAIN
-
-+ RTM_NEWARPRULE = 104,
-+#define RTM_NEWARPRULE RTM_NEWARPRULE
-+ RTM_DELARPRULE,
-+#define RTM_DELARPRULE RTM_DELARPRULE
-+ RTM_GETARPRULE,
-+#define RTM_GETARPRULE RTM_GETARPRULE
-+
- __RTM_MAX,
- #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
- };
-@@ -374,8 +381,11 @@ struct rtnexthop {
- #define RTNH_F_OFFLOAD 8 /* offloaded route */
- #define RTNH_F_LINKDOWN 16 /* carrier-down on nexthop */
- #define RTNH_F_UNRESOLVED 32 /* The entry is unresolved (ipmr) */
-+#define RTNH_F_SUSPECT 64 /* We don't know the real state */
-+#define RTNH_F_BADSTATE (RTNH_F_DEAD | RTNH_F_SUSPECT)
-
--#define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
-+#define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | \
-+ RTNH_F_OFFLOAD | RTNH_F_SUSPECT)
-
- /* Macros to handle hexthops */
-
-@@ -617,6 +627,54 @@ enum {
-
- #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
-
-+/******************************************************************************
-+ * Definitions used in ARP tables administration
-+ ****/
-+
-+#define ARPA_TABLE_INPUT 0
-+#define ARPA_TABLE_OUTPUT 1
-+#define ARPA_TABLE_FORWARD 2
-+#define ARPA_TABLE_ALL -1
-+
-+#define ARPM_F_PREFSRC 0x0001
-+#define ARPM_F_WILDIIF 0x0002
-+#define ARPM_F_WILDOIF 0x0004
-+#define ARPM_F_BROADCAST 0x0008
-+#define ARPM_F_UNICAST 0x0010
-+
-+struct arpmsg
-+{
-+ unsigned char arpm_family;
-+ unsigned char arpm_table;
-+ unsigned char arpm_action;
-+ unsigned char arpm_from_len;
-+ unsigned char arpm_to_len;
-+ unsigned char arpm__pad1;
-+ unsigned short arpm__pad2;
-+ unsigned arpm_pref;
-+ unsigned arpm_flags;
-+};
-+
-+enum
-+{
-+ ARPA_UNSPEC,
-+ ARPA_FROM, /* FROM IP prefix */
-+ ARPA_TO, /* TO IP prefix */
-+ ARPA_LLFROM, /* FROM LL prefix */
-+ ARPA_LLTO, /* TO LL prefix */
-+ ARPA_LLSRC, /* New SRC lladdr */
-+ ARPA_LLDST, /* New DST lladdr */
-+ ARPA_IIF, /* In interface prefix */
-+ ARPA_OIF, /* Out interface prefix */
-+ ARPA_SRC, /* New IP SRC */
-+ ARPA_DST, /* New IP DST, not used */
-+ ARPA_PACKETS, /* Packets */
-+};
-+
-+#define ARPA_MAX ARPA_PACKETS
-+
-+#define ARPA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct arpmsg))))
-+
- #ifndef __KERNEL__
- /* RTnetlink multicast groups - backwards compatibility for userspace */
- #define RTMGRP_LINK 1
-@@ -637,6 +695,8 @@ enum {
- #define RTMGRP_DECnet_IFADDR 0x1000
- #define RTMGRP_DECnet_ROUTE 0x4000
-
-+#define RTMGRP_ARP 0x00010000
-+
- #define RTMGRP_IPV6_PREFIX 0x20000
- #endif
-
-@@ -704,6 +764,8 @@ enum rtnetlink_groups {
- #define RTNLGRP_IPV4_MROUTE_R RTNLGRP_IPV4_MROUTE_R
- RTNLGRP_IPV6_MROUTE_R,
- #define RTNLGRP_IPV6_MROUTE_R RTNLGRP_IPV6_MROUTE_R
-+ RTNLGRP_ARP,
-+#define RTNLGRP_ARP RTNLGRP_ARP
- __RTNLGRP_MAX
- };
- #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
-diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c
-index 3b0a03b92080..d39722a73f46 100644
---- a/net/bridge/br_netfilter_hooks.c
-+++ b/net/bridge/br_netfilter_hooks.c
-@@ -360,6 +360,9 @@ static int br_nf_pre_routing_finish(struct net *net, struct sock *sk, struct sk_
-
- nf_bridge->frag_max_size = IPCB(skb)->frag_max_size;
-
-+ /* Old skb->dst is not expected, it is lost in all cases */
-+ skb_dst_drop(skb);
-+
- if (nf_bridge->pkt_otherhost) {
- skb->pkt_type = PACKET_OTHERHOST;
- nf_bridge->pkt_otherhost = false;
-diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
-index e90c89ef8c08..8873e5ca3c3f 100644
---- a/net/ipv4/arp.c
-+++ b/net/ipv4/arp.c
-@@ -71,6 +71,9 @@
- * sending (e.g. insert 8021q tag).
- * Harald Welte : convert to make use of jenkins hash
- * Jesper D. Brouer: Proxy ARP PVLAN RFC 3069 support.
-+ * Julian Anastasov: "hidden" flag: hide the
-+ * interface and don't reply for it
-+ * Julian Anastasov: ARP filtering via netlink
- */
-
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-@@ -95,6 +98,7 @@
- #include <linux/proc_fs.h>
- #include <linux/seq_file.h>
- #include <linux/stat.h>
-+#include <net/netlink.h>
- #include <linux/init.h>
- #include <linux/net.h>
- #include <linux/rcupdate.h>
-@@ -185,6 +189,48 @@ struct neigh_table arp_tbl = {
- };
- EXPORT_SYMBOL(arp_tbl);
-
-+struct arpf_node {
-+ struct arpf_node * at_next;
-+ u32 at_pref;
-+ u32 at_from;
-+ u32 at_from_mask;
-+ u32 at_to;
-+ u32 at_to_mask;
-+ u32 at_src;
-+ atomic_t at_packets;
-+ atomic_t at_refcnt;
-+ unsigned at_flags;
-+ unsigned char at_from_len;
-+ unsigned char at_to_len;
-+ unsigned char at_action;
-+ char at_dead;
-+ unsigned char at_llfrom_len;
-+ unsigned char at_llto_len;
-+ unsigned char at_llsrc_len;
-+ unsigned char at_lldst_len;
-+ unsigned char at_iif_len;
-+ unsigned char at_oif_len;
-+ unsigned short at__pad1;
-+ unsigned char at_llfrom[MAX_ADDR_LEN];
-+ unsigned char at_llto[MAX_ADDR_LEN];
-+ unsigned char at_llsrc[MAX_ADDR_LEN];
-+ unsigned char at_lldst[MAX_ADDR_LEN];
-+ char at_iif[IFNAMSIZ];
-+ char at_oif[IFNAMSIZ];
-+};
-+
-+static struct arpf_node *arp_tabs[3];
-+
-+static struct kmem_cache *arpf_cachep;
-+
-+static DEFINE_RWLOCK(arpf_lock);
-+
-+static void
-+arpf_send(int table, struct net *net, struct sk_buff *skb, u32 sip, u32 tip,
-+ unsigned char *from_hw, unsigned char *to_hw,
-+ struct net_device *idev, struct net_device *odev,
-+ struct dst_entry *dst);
-+
- int arp_mc_map(__be32 addr, u8 *haddr, struct net_device *dev, int dir)
- {
- switch (dev->type) {
-@@ -338,7 +384,9 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
- struct net_device *dev = neigh->dev;
- __be32 target = *(__be32 *)neigh->primary_key;
- int probes = atomic_read(&neigh->probes);
-- struct in_device *in_dev;
-+ struct in_device *in_dev, *in_dev2;
-+ struct net_device *dev2;
-+ int mode;
- struct dst_entry *dst = NULL;
-
- rcu_read_lock();
-@@ -347,9 +395,22 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
- rcu_read_unlock();
- return;
- }
-- switch (IN_DEV_ARP_ANNOUNCE(in_dev)) {
-+ mode = IN_DEV_ARP_ANNOUNCE(in_dev);
-+ if (mode != 2 && skb &&
-+ (dev2 = __ip_dev_find(dev_net(dev), ip_hdr(skb)->saddr,
-+ false)) != NULL &&
-+ (saddr = ip_hdr(skb)->saddr,
-+ in_dev2 = __in_dev_get_rcu(dev2)) != NULL &&
-+ IN_DEV_HIDDEN(in_dev2)) {
-+ saddr = 0;
-+ goto get;
-+ }
-+
-+ switch (mode) {
- default:
- case 0: /* By default announce any local IP */
-+ if (saddr)
-+ break;
- if (skb && inet_addr_type_dev_table(dev_net(dev), dev,
- ip_hdr(skb)->saddr) == RTN_LOCAL)
- saddr = ip_hdr(skb)->saddr;
-@@ -357,9 +418,10 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
- case 1: /* Restrict announcements of saddr in same subnet */
- if (!skb)
- break;
-- saddr = ip_hdr(skb)->saddr;
-- if (inet_addr_type_dev_table(dev_net(dev), dev,
-- saddr) == RTN_LOCAL) {
-+ if (saddr ||
-+ (saddr = ip_hdr(skb)->saddr,
-+ inet_addr_type_dev_table(dev_net(dev), dev,
-+ saddr) == RTN_LOCAL)) {
- /* saddr should be known to target */
- if (inet_addr_onlink(in_dev, target, saddr))
- break;
-@@ -369,6 +431,8 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
- case 2: /* Avoid secondary IPs, get a primary/preferred one */
- break;
- }
-+
-+get:
- rcu_read_unlock();
-
- if (!saddr)
-@@ -390,8 +454,8 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb)
-
- if (skb && !(dev->priv_flags & IFF_XMIT_DST_RELEASE))
- dst = skb_dst(skb);
-- arp_send_dst(ARPOP_REQUEST, ETH_P_ARP, target, dev, saddr,
-- dst_hw, dev->dev_addr, NULL, dst);
-+ arpf_send(ARPA_TABLE_OUTPUT, dev_net(dev), skb, saddr, target, NULL,
-+ dst_hw, NULL, dev, dst);
- }
-
- static int arp_ignore(struct in_device *in_dev, __be32 sip, __be32 tip)
-@@ -448,6 +512,21 @@ static int arp_filter(__be32 sip, __be32 tip, struct net_device *dev)
- return flag;
- }
-
-+static int arp_hidden(u32 tip, struct net_device *dev)
-+{
-+ struct net_device *dev2;
-+ struct in_device *in_dev2;
-+ int ret = 0;
-+
-+ if (!IPV4_DEVCONF_ALL(dev_net(dev), HIDDEN))
-+ return 0;
-+
-+ if ((dev2 = __ip_dev_find(dev_net(dev), tip, false)) && dev2 != dev &&
-+ (in_dev2 = __in_dev_get_rcu(dev2)) && IN_DEV_HIDDEN(in_dev2))
-+ ret = 1;
-+ return ret;
-+}
-+
- /*
- * Check if we can use proxy ARP for this path
- */
-@@ -808,9 +887,10 @@ static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb)
- if (sip == 0) {
- if (arp->ar_op == htons(ARPOP_REQUEST) &&
- inet_addr_type_dev_table(net, dev, tip) == RTN_LOCAL &&
-+ !arp_hidden(tip, dev) &&
- !arp_ignore(in_dev, sip, tip))
-- arp_send_dst(ARPOP_REPLY, ETH_P_ARP, sip, dev, tip,
-- sha, dev->dev_addr, sha, reply_dst);
-+ arpf_send(ARPA_TABLE_INPUT, net, skb, sip, tip, sha,
-+ tha, dev, NULL, reply_dst);
- goto out_consume_skb;
- }
-
-@@ -826,13 +906,14 @@ static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb)
- dont_send = arp_ignore(in_dev, sip, tip);
- if (!dont_send && IN_DEV_ARPFILTER(in_dev))
- dont_send = arp_filter(sip, tip, dev);
-+ if (!dont_send && skb->pkt_type != PACKET_HOST)
-+ dont_send = arp_hidden(tip,dev);
- if (!dont_send) {
- n = neigh_event_ns(&arp_tbl, sha, &sip, dev);
- if (n) {
-- arp_send_dst(ARPOP_REPLY, ETH_P_ARP,
-- sip, dev, tip, sha,
-- dev->dev_addr, sha,
-- reply_dst);
-+ arpf_send(ARPA_TABLE_INPUT, net, skb,
-+ sip, tip, sha, tha, dev,
-+ NULL, reply_dst);
- neigh_release(n);
- }
- }
-@@ -850,10 +931,9 @@ static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb)
- if (NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED ||
- skb->pkt_type == PACKET_HOST ||
- NEIGH_VAR(in_dev->arp_parms, PROXY_DELAY) == 0) {
-- arp_send_dst(ARPOP_REPLY, ETH_P_ARP,
-- sip, dev, tip, sha,
-- dev->dev_addr, sha,
-- reply_dst);
-+ arpf_send(ARPA_TABLE_FORWARD, net,
-+ skb, sip, tip, sha, tha, dev,
-+ rt->dst.dev, reply_dst);
- } else {
- pneigh_enqueue(&arp_tbl,
- in_dev->arp_parms, skb);
-@@ -1277,6 +1357,577 @@ void arp_ifdown(struct net_device *dev)
- }
-
-
-+static void arpf_destroy(struct arpf_node *afp)
-+{
-+ if (!afp->at_dead) {
-+ printk(KERN_ERR "Destroying alive arp table node %p from %08lx\n", afp,
-+ *(((unsigned long*)&afp)-1));
-+ return;
-+ }
-+ kmem_cache_free(arpf_cachep, afp);
-+}
-+
-+static inline void arpf_put(struct arpf_node *afp)
-+{
-+ if (atomic_dec_and_test(&afp->at_refcnt))
-+ arpf_destroy(afp);
-+}
-+
-+static inline struct arpf_node *
-+arpf_lookup(int table, struct sk_buff *skb, u32 sip, u32 tip,
-+ unsigned char *from_hw, unsigned char *to_hw,
-+ struct net_device *idev, struct net_device *odev)
-+{
-+ int sz_iif = idev? strlen(idev->name) : 0;
-+ int sz_oif = odev? strlen(odev->name) : 0;
-+ int alen;
-+ struct arpf_node *afp;
-+
-+ if (ARPA_TABLE_OUTPUT != table) {
-+ alen = idev->addr_len;
-+ } else {
-+ if (!from_hw) from_hw = odev->dev_addr;
-+ if (!to_hw) to_hw = odev->broadcast;
-+ alen = odev->addr_len;
-+ }
-+
-+ read_lock_bh(&arpf_lock);
-+ for (afp = arp_tabs[table]; afp; afp = afp->at_next) {
-+ if ((tip ^ afp->at_to) & afp->at_to_mask)
-+ continue;
-+ if ((sip ^ afp->at_from) & afp->at_from_mask)
-+ continue;
-+ if (afp->at_llfrom_len &&
-+ (afp->at_llfrom_len > alen ||
-+ memcmp(from_hw, afp->at_llfrom, afp->at_llfrom_len)))
-+ continue;
-+ if (afp->at_llto_len &&
-+ (afp->at_llto_len > alen ||
-+ memcmp(to_hw, afp->at_llto, afp->at_llto_len)))
-+ continue;
-+ if (afp->at_iif_len &&
-+ (afp->at_iif_len > sz_iif ||
-+ memcmp(afp->at_iif, idev->name, afp->at_iif_len) ||
-+ (sz_iif != afp->at_iif_len &&
-+ !(afp->at_flags & ARPM_F_WILDIIF))))
-+ continue;
-+ if (afp->at_oif_len &&
-+ (afp->at_oif_len > sz_oif ||
-+ memcmp(afp->at_oif, odev->name, afp->at_oif_len) ||
-+ (sz_oif != afp->at_oif_len &&
-+ !(afp->at_flags & ARPM_F_WILDOIF))))
-+ continue;
-+ if (afp->at_flags & ARPM_F_BROADCAST &&
-+ skb->pkt_type == PACKET_HOST)
-+ continue;
-+ if (afp->at_flags & ARPM_F_UNICAST &&
-+ skb->pkt_type != PACKET_HOST)
-+ continue;
-+ if (afp->at_llsrc_len && afp->at_llsrc_len != alen)
-+ continue;
-+ if (afp->at_lldst_len && afp->at_lldst_len != alen)
-+ continue;
-+ atomic_inc(&afp->at_refcnt);
-+ atomic_inc(&afp->at_packets);
-+ break;
-+ }
-+ read_unlock_bh(&arpf_lock);
-+ return afp;
-+}
-+
-+static void
-+arpf_send(int table, struct net *net, struct sk_buff *skb, u32 sip, u32 tip,
-+ unsigned char *from_hw, unsigned char *to_hw,
-+ struct net_device *idev, struct net_device *odev,
-+ struct dst_entry *dst)
-+{
-+ struct arpf_node *afp = NULL;
-+
-+ if (!arp_tabs[table] ||
-+ !net_eq(net, &init_net) ||
-+ !(afp = arpf_lookup(table, skb, sip, tip,
-+ from_hw, to_hw, idev, odev))) {
-+ switch (table) {
-+ case ARPA_TABLE_INPUT:
-+ case ARPA_TABLE_FORWARD:
-+ arp_send_dst(ARPOP_REPLY, ETH_P_ARP, sip, idev, tip,
-+ from_hw, idev->dev_addr, from_hw, dst);
-+ break;
-+ case ARPA_TABLE_OUTPUT:
-+ arp_send_dst(ARPOP_REQUEST, ETH_P_ARP, tip, odev, sip,
-+ to_hw, odev->dev_addr, NULL, dst);
-+ break;
-+ }
-+ return;
-+ }
-+
-+ /* deny? */
-+ if (!afp->at_action) goto out;
-+
-+ switch (table) {
-+ case ARPA_TABLE_INPUT:
-+ case ARPA_TABLE_FORWARD:
-+ arp_send_dst(ARPOP_REPLY, ETH_P_ARP, sip, idev, tip,
-+ afp->at_lldst_len?afp->at_lldst:from_hw,
-+ afp->at_llsrc_len?afp->at_llsrc:idev->dev_addr,
-+ afp->at_lldst_len?afp->at_lldst:from_hw, dst);
-+ break;
-+ case ARPA_TABLE_OUTPUT:
-+ if (afp->at_flags & ARPM_F_PREFSRC && afp->at_src == 0) {
-+ struct rtable *rt;
-+ struct flowi4 fl4 = { .daddr = tip,
-+ .flowi4_oif = odev->ifindex };
-+-+
-+ rt = ip_route_output_key(net, &fl4);
-+ if (IS_ERR(rt))
-+ break;
-+ sip = fl4.saddr;
-+ ip_rt_put(rt);
-+ if (!sip)
-+ break;
-+ }
-+ arp_send_dst(ARPOP_REQUEST, ETH_P_ARP, tip, odev,
-+ afp->at_src?:sip,
-+ afp->at_lldst_len?afp->at_lldst:to_hw,
-+ afp->at_llsrc_len?afp->at_llsrc:odev->dev_addr,
-+ NULL, dst);
-+ break;
-+ }
-+
-+out:
-+ arpf_put(afp);
-+}
-+
-+static int
-+arpf_fill_node(struct sk_buff *skb, u32 portid, u32 seq, unsigned flags,
-+ int event, int table, struct arpf_node *afp)
-+{
-+ struct arpmsg *am;
-+ struct nlmsghdr *nlh;
-+ u32 packets = atomic_read(&afp->at_packets);
-+
-+ nlh = nlmsg_put(skb, portid, seq, event, sizeof(*am), 0);
-+ if (nlh == NULL)
-+ return -ENOBUFS;
-+ nlh->nlmsg_flags = flags;
-+ am = nlmsg_data(nlh);
-+ am->arpm_family = AF_UNSPEC;
-+ am->arpm_table = table;
-+ am->arpm_action = afp->at_action;
-+ am->arpm_from_len = afp->at_from_len;
-+ am->arpm_to_len = afp->at_to_len;
-+ am->arpm_pref = afp->at_pref;
-+ am->arpm_flags = afp->at_flags;
-+ if (afp->at_from_len &&
-+ nla_put(skb, ARPA_FROM, 4, &afp->at_from))
-+ goto nla_put_failure;
-+ if (afp->at_to_len &&
-+ nla_put(skb, ARPA_TO, 4, &afp->at_to))
-+ goto nla_put_failure;
-+ if ((afp->at_src || afp->at_flags & ARPM_F_PREFSRC) &&
-+ nla_put(skb, ARPA_SRC, 4, &afp->at_src))
-+ goto nla_put_failure;
-+ if (afp->at_iif[0] &&
-+ nla_put(skb, ARPA_IIF, sizeof(afp->at_iif), afp->at_iif))
-+ goto nla_put_failure;
-+ if (afp->at_oif[0] &&
-+ nla_put(skb, ARPA_OIF, sizeof(afp->at_oif), afp->at_oif))
-+ goto nla_put_failure;
-+ if (afp->at_llfrom_len &&
-+ nla_put(skb, ARPA_LLFROM, afp->at_llfrom_len, afp->at_llfrom))
-+ goto nla_put_failure;
-+ if (afp->at_llto_len &&
-+ nla_put(skb, ARPA_LLTO, afp->at_llto_len, afp->at_llto))
-+ goto nla_put_failure;
-+ if (afp->at_llsrc_len &&
-+ nla_put(skb, ARPA_LLSRC, afp->at_llsrc_len, afp->at_llsrc))
-+ goto nla_put_failure;
-+ if (afp->at_lldst_len &&
-+ nla_put(skb, ARPA_LLDST, afp->at_lldst_len, afp->at_lldst))
-+ goto nla_put_failure;
-+ if (nla_put(skb, ARPA_PACKETS, 4, &packets))
-+ goto nla_put_failure;
-+ nlmsg_end(skb, nlh);
-+ return 0;
-+
-+nla_put_failure:
-+ nlmsg_cancel(skb, nlh);
-+ return -EMSGSIZE;
-+}
-+
-+static void
-+arpmsg_notify(struct sk_buff *oskb, struct nlmsghdr *nlh, int table,
-+ struct arpf_node *afp, int event)
-+{
-+ struct sk_buff *skb;
-+ u32 portid = oskb ? NETLINK_CB(oskb).portid : 0;
-+ int payload = sizeof(struct arpmsg) + 256;
-+ int err = -ENOBUFS;
-+
-+ skb = nlmsg_new(nlmsg_total_size(payload), GFP_KERNEL);
-+ if (!skb)
-+ goto errout;
-+
-+ err = arpf_fill_node(skb, portid, nlh->nlmsg_seq, 0, event, table, afp);
-+ if (err < 0) {
-+ kfree_skb(skb);
-+ goto errout;
-+ }
-+
-+ rtnl_notify(skb, &init_net, portid, RTNLGRP_ARP, nlh, GFP_KERNEL);
-+ return;
-+errout:
-+ if (err < 0)
-+ rtnl_set_sk_err(&init_net, RTNLGRP_ARP, err);
-+}
-+
-+static inline int
-+arpf_str_size(int a, struct nlattr **rta, int maxlen)
-+{
-+ int size = 0;
-+
-+ if (rta[a] && (size = nla_len(rta[a]))) {
-+ if (size > maxlen)
-+ size = maxlen;
-+ }
-+ return size;
-+}
-+
-+static inline int
-+arpf_get_str(int a, struct nlattr **rta, unsigned char *p,
-+ int maxlen, unsigned char *l)
-+{
-+ int size = arpf_str_size(a, rta, maxlen);
-+
-+ if (size) {
-+ memcpy(p, nla_data(rta[a]), size);
-+ *l = size;
-+ }
-+ return size;
-+}
-+
-+#define ARPF_MATCH_U32(ind, field) ( \
-+ (!rta[ind] && r->at_ ## field == 0) || \
-+ (rta[ind] && \
-+ *(u32*) nla_data(rta[ind]) == r->at_ ## field))
-+
-+#define ARPF_MATCH_STR(ind, field) ( \
-+ (!rta[ind] && r->at_ ## field ## _len == 0) || \
-+ (rta[ind] && r->at_ ## field ## _len && \
-+ r->at_ ## field ## _len < nla_len(rta[ind]) && \
-+ strcmp(nla_data(rta[ind]), r->at_ ## field) == 0))
-+
-+#define ARPF_MATCH_DATA(ind, field) ( \
-+ (!rta[ind] && r->at_ ## field ## _len == 0) || \
-+ (rta[ind] && r->at_ ## field ## _len && \
-+ r->at_ ## field ## _len == nla_len(rta[ind]) && \
-+ memcmp(nla_data(rta[ind]), &r->at_ ## field, \
-+ r->at_ ## field ## _len) == 0))
-+
-+/* RTM_NEWARPRULE/RTM_DELARPRULE/RTM_GETARPRULE */
-+
-+int arpf_rule_ctl(struct sk_buff *skb, struct nlmsghdr *n,
-+ struct netlink_ext_ack *extack)
-+{
-+ struct net *net = sock_net(skb->sk);
-+ struct nlattr *rta[ARPA_MAX + 1];
-+ struct arpmsg *am;
-+ struct arpf_node *r, **rp, **prevp = 0, **delp = 0, *newp = 0;
-+ unsigned pref = 1;
-+ int size, ret;
-+
-+ if (!capable(CAP_NET_ADMIN))
-+ return -EPERM;
-+
-+ if (!net_eq(net, &init_net))
-+ return -EINVAL;
-+
-+ ret = nlmsg_parse(n, sizeof(struct arpmsg), rta, ARPA_MAX, NULL,
-+ extack);
-+ if (ret < 0)
-+ return ret;
-+
-+ am = nlmsg_data(n);
-+ ret = -EINVAL;
-+ if (am->arpm_table >= sizeof(arp_tabs)/sizeof(arp_tabs[0]))
-+ goto out;
-+ if (!((~am->arpm_flags) & (ARPM_F_BROADCAST|ARPM_F_UNICAST)))
-+ goto out;
-+ if (am->arpm_action > 1)
-+ goto out;
-+ if (am->arpm_to_len > 32 || am->arpm_from_len > 32)
-+ goto out;
-+ if (am->arpm_flags & ARPM_F_WILDIIF &&
-+ (!rta[ARPA_IIF] || !nla_len(rta[ARPA_IIF]) ||
-+ !*(char*) nla_data(rta[ARPA_IIF])))
-+ am->arpm_flags &= ~ARPM_F_WILDIIF;
-+ if (am->arpm_flags & ARPM_F_WILDOIF &&
-+ (!rta[ARPA_OIF] || !nla_len(rta[ARPA_OIF]) ||
-+ !*(char*) nla_data(rta[ARPA_OIF])))
-+ am->arpm_flags &= ~ARPM_F_WILDOIF;
-+ switch (am->arpm_table) {
-+ case ARPA_TABLE_INPUT:
-+ if (rta[ARPA_SRC] || rta[ARPA_OIF])
-+ goto out;
-+ break;
-+ case ARPA_TABLE_OUTPUT:
-+ if (rta[ARPA_IIF])
-+ goto out;
-+ if (am->arpm_flags & (ARPM_F_BROADCAST|ARPM_F_UNICAST))
-+ goto out;
-+ break;
-+ case ARPA_TABLE_FORWARD:
-+ if (rta[ARPA_SRC])
-+ goto out;
-+ break;
-+ }
-+ if (rta[ARPA_SRC] && !*(u32*) nla_data(rta[ARPA_SRC]))
-+ am->arpm_flags |= ARPM_F_PREFSRC;
-+ else
-+ am->arpm_flags &= ~ARPM_F_PREFSRC;
-+
-+ for (rp = &arp_tabs[am->arpm_table]; (r=*rp) != NULL; rp=&r->at_next) {
-+ if (pref < r->at_pref)
-+ prevp = rp;
-+ if (am->arpm_pref == r->at_pref ||
-+ (!am->arpm_pref &&
-+ am->arpm_to_len == r->at_to_len &&
-+ am->arpm_from_len == r->at_from_len &&
-+ !((am->arpm_flags ^ r->at_flags) &
-+ (ARPM_F_BROADCAST | ARPM_F_UNICAST |
-+ ARPM_F_WILDIIF | ARPM_F_WILDOIF)) &&
-+ ARPF_MATCH_U32(ARPA_TO, to) &&
-+ ARPF_MATCH_U32(ARPA_FROM, from) &&
-+ ARPF_MATCH_DATA(ARPA_LLFROM, llfrom) &&
-+ ARPF_MATCH_DATA(ARPA_LLTO, llto) &&
-+ ARPF_MATCH_STR(ARPA_IIF, iif) &&
-+ ARPF_MATCH_STR(ARPA_OIF, oif) &&
-+ (n->nlmsg_type != RTM_DELARPRULE ||
-+ /* DEL matches more keys */
-+ (am->arpm_flags == r->at_flags &&
-+ am->arpm_action == r->at_action &&
-+ ARPF_MATCH_U32(ARPA_SRC, src) &&
-+ ARPF_MATCH_DATA(ARPA_LLSRC, llsrc) &&
-+ ARPF_MATCH_DATA(ARPA_LLDST, lldst)
-+ )
-+ )
-+ )
-+ )
-+ break;
-+ if (am->arpm_pref && r->at_pref > am->arpm_pref) {
-+ r = NULL;
-+ break;
-+ }
-+ pref = r->at_pref+1;
-+ }
-+
-+ /*
-+ * r=NULL: *rp != NULL (stopped before next pref), pref: not valid
-+ * *rp == NULL (not found), pref: ready to use
-+ * r!=NULL: found, pref: not valid
-+ *
-+ * prevp=NULL: no free slot
-+ * prevp!=NULL: free slot for rule
-+ */
-+
-+ if (n->nlmsg_type == RTM_DELARPRULE) {
-+ if (!r)
-+ return -ESRCH;
-+ delp = rp;
-+ goto dequeue;
-+ }
-+
-+ if (r) {
-+ /* Existing rule */
-+ ret = -EEXIST;
-+ if (n->nlmsg_flags&NLM_F_EXCL)
-+ goto out;
-+
-+ if (n->nlmsg_flags&NLM_F_REPLACE) {
-+ pref = r->at_pref;
-+ prevp = delp = rp;
-+ goto replace;
-+ }
-+ }
-+
-+ if (n->nlmsg_flags&NLM_F_APPEND) {
-+ if (r) {
-+ pref = r->at_pref+1;
-+ for (rp=&r->at_next; (r=*rp) != NULL; rp=&r->at_next) {
-+ if (pref != r->at_pref)
-+ break;
-+ pref ++;
-+ }
-+ ret = -EBUSY;
-+ if (!pref)
-+ goto out;
-+ } else if (am->arpm_pref)
-+ pref = am->arpm_pref;
-+ prevp = rp;
-+ }
-+
-+ if (!(n->nlmsg_flags&NLM_F_CREATE)) {
-+ ret = -ENOENT;
-+ if (n->nlmsg_flags&NLM_F_EXCL || r)
-+ ret = 0;
-+ goto out;
-+ }
-+
-+ if (!(n->nlmsg_flags&NLM_F_APPEND)) {
-+ if (!prevp) {
-+ ret = -EBUSY;
-+ if (r || *rp ||
-+ (!am->arpm_pref && arp_tabs[am->arpm_table]))
-+ goto out;
-+ prevp = rp;
-+ pref = am->arpm_pref? : 99;
-+ } else {
-+ if (r || !am->arpm_pref) {
-+ pref = (*prevp)->at_pref - 1;
-+ if (am->arpm_pref && am->arpm_pref < pref)
-+ pref = am->arpm_pref;
-+ } else {
-+ prevp = rp;
-+ pref = am->arpm_pref;
-+ }
-+ }
-+ }
-+
-+replace:
-+
-+ ret = -ENOMEM;
-+ r = kmem_cache_alloc(arpf_cachep, GFP_KERNEL);
-+ if (!r)
-+ return ret;
-+ memset(r, 0, sizeof(*r));
-+
-+ arpf_get_str(ARPA_LLFROM, rta, r->at_llfrom, MAX_ADDR_LEN,
-+ &r->at_llfrom_len);
-+ arpf_get_str(ARPA_LLTO, rta, r->at_llto, MAX_ADDR_LEN,
-+ &r->at_llto_len);
-+ arpf_get_str(ARPA_LLSRC, rta, r->at_llsrc, MAX_ADDR_LEN,
-+ &r->at_llsrc_len);
-+ arpf_get_str(ARPA_LLDST, rta, r->at_lldst, MAX_ADDR_LEN,
-+ &r->at_lldst_len);
-+
-+ if (delp)
-+ r->at_next = (*delp)->at_next;
-+ else if (*prevp)
-+ r->at_next = *prevp;
-+
-+ r->at_pref = pref;
-+ r->at_from_len = am->arpm_from_len;
-+ r->at_from_mask = inet_make_mask(r->at_from_len);
-+ if (rta[ARPA_FROM])
-+ r->at_from = *(u32*) nla_data(rta[ARPA_FROM]);
-+ r->at_from &= r->at_from_mask;
-+ r->at_to_len = am->arpm_to_len;
-+ r->at_to_mask = inet_make_mask(r->at_to_len);
-+ if (rta[ARPA_TO])
-+ r->at_to = *(u32*) nla_data(rta[ARPA_TO]);
-+ r->at_to &= r->at_to_mask;
-+ if (rta[ARPA_SRC])
-+ r->at_src = *(u32*) nla_data(rta[ARPA_SRC]);
-+ if (rta[ARPA_PACKETS]) {
-+ u32 packets = *(u32*) nla_data(rta[ARPA_PACKETS]);
-+ atomic_set(&r->at_packets, packets);
-+ }
-+ atomic_set(&r->at_refcnt, 1);
-+ r->at_flags = am->arpm_flags;
-+ r->at_action = am->arpm_action;
-+
-+ if (rta[ARPA_IIF] && (size = nla_len(rta[ARPA_IIF]))) {
-+ if (size >= sizeof(r->at_iif))
-+ size = sizeof(r->at_iif)-1;
-+ memcpy(r->at_iif, nla_data(rta[ARPA_IIF]), size);
-+ r->at_iif_len = strlen(r->at_iif);
-+ }
-+ if (rta[ARPA_OIF] && (size = nla_len(rta[ARPA_OIF]))) {
-+ if (size >= sizeof(r->at_oif))
-+ size = sizeof(r->at_oif)-1;
-+ memcpy(r->at_oif, nla_data(rta[ARPA_OIF]), size);
-+ r->at_oif_len = strlen(r->at_oif);
-+ }
-+
-+ newp = r;
-+
-+dequeue:
-+
-+ if (delp) {
-+ r = *delp;
-+ write_lock_bh(&arpf_lock);
-+ if (newp) {
-+ if (!rta[ARPA_PACKETS])
-+ atomic_set(&newp->at_packets,
-+ atomic_read(&r->at_packets));
-+ *delp = newp;
-+ } else {
-+ *delp = r->at_next;
-+ }
-+ r->at_dead = 1;
-+ write_unlock_bh(&arpf_lock);
-+ arpmsg_notify(skb, n, am->arpm_table, r, RTM_DELARPRULE);
-+ arpf_put(r);
-+ prevp = 0;
-+ }
-+
-+ if (newp) {
-+ if (prevp) {
-+ write_lock_bh(&arpf_lock);
-+ *prevp = newp;
-+ write_unlock_bh(&arpf_lock);
-+ }
-+ arpmsg_notify(skb, n, am->arpm_table, newp, RTM_NEWARPRULE);
-+ }
-+
-+ ret = 0;
-+
-+out:
-+ return ret;
-+}
-+
-+int arpf_dump_table(int t, struct sk_buff *skb, struct netlink_callback *cb)
-+{
-+ int idx, ret = -1;
-+ struct arpf_node *afp;
-+ int s_idx = cb->args[1];
-+
-+ for (idx=0, afp = arp_tabs[t]; afp; afp = afp->at_next, idx++) {
-+ if (idx < s_idx)
-+ continue;
-+ if (arpf_fill_node(skb, NETLINK_CB(cb->skb).portid,
-+ cb->nlh->nlmsg_seq, NLM_F_MULTI, RTM_NEWARPRULE, t, afp) < 0)
-+ goto out;
-+ }
-+
-+ ret = skb->len;
-+
-+out:
-+ cb->args[1] = idx;
-+
-+ return ret;
-+}
-+
-+int arpf_dump_rules(struct sk_buff *skb, struct netlink_callback *cb)
-+{
-+ int idx;
-+ int s_idx = cb->args[0];
-+
-+ read_lock_bh(&arpf_lock);
-+ for (idx = 0; idx < sizeof(arp_tabs)/sizeof(arp_tabs[0]); idx++) {
-+ if (idx < s_idx)
-+ continue;
-+ if (idx > s_idx)
-+ memset(&cb->args[1], 0, sizeof(cb->args)-1*sizeof(cb->args[0]));
-+ if (arpf_dump_table(idx, skb, cb) < 0)
-+ break;
-+ }
-+ read_unlock_bh(&arpf_lock);
-+ cb->args[0] = idx;
-+
-+ return skb->len;
-+}
-+
- /*
- * Called once on startup.
- */
-@@ -1290,6 +1941,16 @@ static int arp_proc_init(void);
-
- void __init arp_init(void)
- {
-+ arpf_cachep = kmem_cache_create("ip_arpf_cache",
-+ sizeof(struct arpf_node), 0,
-+ SLAB_HWCACHE_ALIGN, NULL);
-+ if (!arpf_cachep)
-+ panic("IP: failed to allocate ip_arpf_cache\n");
-+
-+ rtnl_register(PF_UNSPEC, RTM_NEWARPRULE, arpf_rule_ctl, NULL, 0);
-+ rtnl_register(PF_UNSPEC, RTM_DELARPRULE, arpf_rule_ctl, NULL, 0);
-+ rtnl_register(PF_UNSPEC, RTM_GETARPRULE, NULL, arpf_dump_rules, 0);
-+
- neigh_table_init(NEIGH_ARP_TABLE, &arp_tbl);
-
- dev_add_pack(&arp_packet_type);
-diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
-index ea4bd8a52422..825cd4101000 100644
---- a/net/ipv4/devinet.c
-+++ b/net/ipv4/devinet.c
-@@ -1296,9 +1296,14 @@ __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope)
- if (!in_dev)
- continue;
-
-- addr = in_dev_select_addr(in_dev, scope);
-- if (addr)
-- goto out_unlock;
-+ for_primary_ifa(in_dev) {
-+ if (!IN_DEV_HIDDEN(in_dev) &&
-+ ifa->ifa_scope != RT_SCOPE_LINK &&
-+ ifa->ifa_scope <= scope) {
-+ addr = ifa->ifa_local;
-+ goto out_unlock;
-+ }
-+ } endfor_ifa(in_dev);
- }
- out_unlock:
- rcu_read_unlock();
-@@ -2278,13 +2283,16 @@ static struct devinet_sysctl_table {
- DEVINET_SYSCTL_RW_ENTRY(SEND_REDIRECTS, "send_redirects"),
- DEVINET_SYSCTL_RW_ENTRY(ACCEPT_SOURCE_ROUTE,
- "accept_source_route"),
-+ DEVINET_SYSCTL_RW_ENTRY(FORWARD_SHARED, "forward_shared"),
- DEVINET_SYSCTL_RW_ENTRY(ACCEPT_LOCAL, "accept_local"),
- DEVINET_SYSCTL_RW_ENTRY(SRC_VMARK, "src_valid_mark"),
- DEVINET_SYSCTL_RW_ENTRY(PROXY_ARP, "proxy_arp"),
- DEVINET_SYSCTL_RW_ENTRY(MEDIUM_ID, "medium_id"),
-+ DEVINET_SYSCTL_RW_ENTRY(RP_FILTER_MASK, "rp_filter_mask"),
- DEVINET_SYSCTL_RW_ENTRY(BOOTP_RELAY, "bootp_relay"),
- DEVINET_SYSCTL_RW_ENTRY(LOG_MARTIANS, "log_martians"),
- DEVINET_SYSCTL_RW_ENTRY(TAG, "tag"),
-+ DEVINET_SYSCTL_RW_ENTRY(HIDDEN, "hidden"),
- DEVINET_SYSCTL_RW_ENTRY(ARPFILTER, "arp_filter"),
- DEVINET_SYSCTL_RW_ENTRY(ARP_ANNOUNCE, "arp_announce"),
- DEVINET_SYSCTL_RW_ENTRY(ARP_IGNORE, "arp_ignore"),
-diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
-index dae743b649c1..7ff52bf6560d 100644
---- a/net/ipv4/fib_frontend.c
-+++ b/net/ipv4/fib_frontend.c
-@@ -51,6 +51,8 @@
-
- #ifndef CONFIG_IP_MULTIPLE_TABLES
-
-+#define FIB_RES_TABLE(r) (RT_TABLE_MAIN)
-+
- static int __net_init fib4_rules_init(struct net *net)
- {
- struct fib_table *local_table, *main_table;
-@@ -80,6 +82,8 @@ static bool fib4_has_custom_rules(struct net *net)
- }
- #else
-
-+#define FIB_RES_TABLE(r) (fib_result_table(r))
-+
- struct fib_table *fib_new_table(struct net *net, u32 id)
- {
- struct fib_table *tb, *alias = NULL;
-@@ -325,13 +329,19 @@ __be32 fib_compute_spec_dst(struct sk_buff *skb)
- */
- static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- u8 tos, int oif, struct net_device *dev,
-- int rpf, struct in_device *idev, u32 *itag)
-+ int rpf, struct in_device *idev, u32 *itag,
-+ int our)
- {
- struct net *net = dev_net(dev);
- struct flow_keys flkeys;
-+ u32 table;
-+ unsigned char prefixlen;
-+ unsigned char scope;
- int ret, no_addr;
- struct fib_result res;
- struct flowi4 fl4;
-+ int fwdsh;
-+ unsigned int rpf_mask;
- bool dev_match;
-
- fl4.flowi4_oif = 0;
-@@ -345,10 +355,13 @@ static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- fl4.flowi4_tun_key.tun_id = 0;
- fl4.flowi4_flags = 0;
- fl4.flowi4_uid = sock_net_uid(net, NULL);
-+ fl4.fl4_gw = 0;
-
- no_addr = idev->ifa_list == NULL;
-
-+ fwdsh = IN_DEV_FORWARD_SHARED(idev);
- fl4.flowi4_mark = IN_DEV_SRC_VMARK(idev) ? skb->mark : 0;
-+ rpf_mask = IN_DEV_RPFILTER_MASK(idev);
- if (!fib4_rules_early_flow_dissect(net, skb, &fl4, &flkeys)) {
- fl4.flowi4_proto = 0;
- fl4.fl4_sport = 0;
-@@ -357,7 +370,12 @@ static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
-
- if (fib_lookup(net, &fl4, &res, 0))
- goto last_resort;
-- if (res.type != RTN_UNICAST &&
-+ if (fwdsh) {
-+ fwdsh = (res.type == RTN_LOCAL && !our);
-+ if (fwdsh)
-+ rpf = 0;
-+ }
-+ if (res.type != RTN_UNICAST && !fwdsh &&
- (res.type != RTN_LOCAL || !IN_DEV_ACCEPT_LOCAL(idev)))
- goto e_inval;
- fib_combine_itag(itag, &res);
-@@ -383,17 +401,36 @@ static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- ret = FIB_RES_NH(res).nh_scope >= RT_SCOPE_HOST;
- return ret;
- }
-+ if (rpf_mask && rpf) {
-+ int omi = 0;
-+
-+ idev = __in_dev_get_rcu(FIB_RES_DEV(res));
-+ if (idev)
-+ omi = IN_DEV_MEDIUM_ID(idev);
-+ if (omi >= 1 && omi <= 31 && ((1 << omi) & rpf_mask))
-+ rpf = 0;
-+ }
- if (no_addr)
- goto last_resort;
-- if (rpf == 1)
-- goto e_rpf;
-+ table = FIB_RES_TABLE(&res);
-+ prefixlen = res.prefixlen;
-+ scope = res.scope;
- fl4.flowi4_oif = dev->ifindex;
-+ if (fwdsh)
-+ fl4.flowi4_iif = LOOPBACK_IFINDEX;
-
- ret = 0;
- if (fib_lookup(net, &fl4, &res, FIB_LOOKUP_IGNORE_LINKSTATE) == 0) {
-- if (res.type == RTN_UNICAST)
-+ if (res.type == RTN_UNICAST &&
-+ ((table == FIB_RES_TABLE(&res) &&
-+ res.prefixlen >= prefixlen && res.scope >= scope) ||
-+ !rpf)) {
- ret = FIB_RES_NH(res).nh_scope >= RT_SCOPE_HOST;
-+ return ret;
-+ }
- }
-+ if (rpf == 1)
-+ goto e_rpf;
- return ret;
-
- last_resort:
-@@ -411,7 +448,7 @@ static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- /* Ignore rp_filter for packets protected by IPsec. */
- int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- u8 tos, int oif, struct net_device *dev,
-- struct in_device *idev, u32 *itag)
-+ struct in_device *idev, u32 *itag, int our)
- {
- int r = secpath_exists(skb) ? 0 : IN_DEV_RPFILTER(idev);
- struct net *net = dev_net(dev);
-@@ -436,7 +473,8 @@ int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
- }
-
- full_check:
-- return __fib_validate_source(skb, src, dst, tos, oif, dev, r, idev, itag);
-+ return __fib_validate_source(skb, src, dst, tos, oif, dev, r, idev,
-+ itag, our);
- }
-
- static inline __be32 sk_extract_addr(struct sockaddr *addr)
-@@ -1222,9 +1260,7 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
- switch (event) {
- case NETDEV_UP:
- fib_add_ifaddr(ifa);
--#ifdef CONFIG_IP_ROUTE_MULTIPATH
- fib_sync_up(dev, RTNH_F_DEAD);
--#endif
- atomic_inc(&net->ipv4.dev_addr_genid);
- rt_cache_flush(dev_net(dev));
- break;
-@@ -1268,9 +1304,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
- for_ifa(in_dev) {
- fib_add_ifaddr(ifa);
- } endfor_ifa(in_dev);
--#ifdef CONFIG_IP_ROUTE_MULTIPATH
- fib_sync_up(dev, RTNH_F_DEAD);
--#endif
- atomic_inc(&net->ipv4.dev_addr_genid);
- rt_cache_flush(net);
- break;
-diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c
-index f8eb78d042a4..b7bceafca946 100644
---- a/net/ipv4/fib_rules.c
-+++ b/net/ipv4/fib_rules.c
-@@ -78,6 +78,11 @@ unsigned int fib4_rules_seq_read(struct net *net)
- return fib_rules_seq_read(net, AF_INET);
- }
-
-+u32 fib_result_table(struct fib_result *res)
-+{
-+ return res->table ? res->table->tb_id : RT_TABLE_UNSPEC;
-+}
-+
- int __fib_lookup(struct net *net, struct flowi4 *flp,
- struct fib_result *res, unsigned int flags)
- {
-diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
-index 446204ca7406..be5c82db4c0b 100644
---- a/net/ipv4/fib_semantics.c
-+++ b/net/ipv4/fib_semantics.c
-@@ -53,6 +53,7 @@ static struct hlist_head *fib_info_hash;
- static struct hlist_head *fib_info_laddrhash;
- static unsigned int fib_info_hash_size;
- static unsigned int fib_info_cnt;
-+DEFINE_RWLOCK(fib_nhflags_lock);
-
- #define DEVINDEX_HASHBITS 8
- #define DEVINDEX_HASHSIZE (1U << DEVINDEX_HASHBITS)
-@@ -435,28 +436,71 @@ void rtmsg_fib(int event, __be32 key, struct fib_alias *fa,
-
- static int fib_detect_death(struct fib_info *fi, int order,
- struct fib_info **last_resort, int *last_idx,
-- int dflt)
-+ int dflt, int *last_nhsel,
-+ const struct flowi4 *flp)
- {
- struct neighbour *n;
-- int state = NUD_NONE;
-+ int nhsel;
-+ int state;
-+ struct fib_nh * nh;
-+ __be32 dst;
-+ int flag, dead = 1;
-
-- n = neigh_lookup(&arp_tbl, &fi->fib_nh[0].nh_gw, fi->fib_dev);
-- if (n) {
-- state = n->nud_state;
-- neigh_release(n);
-- } else {
-- return 0;
-- }
-- if (state == NUD_REACHABLE)
-- return 0;
-- if ((state & NUD_VALID) && order != dflt)
-- return 0;
-- if ((state & NUD_VALID) ||
-- (*last_idx < 0 && order > dflt && state != NUD_INCOMPLETE)) {
-- *last_resort = fi;
-- *last_idx = order;
-+ /* change_nexthops(fi) { */
-+ for (nhsel = 0, nh = fi->fib_nh; nhsel < fi->fib_nhs; nh++, nhsel++) {
-+ if (flp->flowi4_oif && flp->flowi4_oif != nh->nh_oif &&
-+ !(flp->flowi4_flags & FLOWI_FLAG_SKIP_NH_OIF))
-+ continue;
-+ if (flp->fl4_gw && flp->fl4_gw != nh->nh_gw && nh->nh_gw &&
-+ nh->nh_scope == RT_SCOPE_LINK)
-+ continue;
-+ if (nh->nh_flags & RTNH_F_DEAD)
-+ continue;
-+
-+ flag = 0;
-+ if (nh->nh_dev->flags & IFF_NOARP) {
-+ dead = 0;
-+ goto setfl;
-+ }
-+
-+ dst = nh->nh_gw;
-+ if (!nh->nh_gw || nh->nh_scope != RT_SCOPE_LINK)
-+ dst = flp->daddr;
-+
-+ state = NUD_NONE;
-+ n = neigh_lookup(&arp_tbl, &dst, nh->nh_dev);
-+ if (n) {
-+ state = n->nud_state;
-+ neigh_release(n);
-+ }
-+ if (state == NUD_REACHABLE ||
-+ ((state & NUD_VALID) && order != dflt)) {
-+ dead = 0;
-+ goto setfl;
-+ }
-+ if (!(state & NUD_VALID))
-+ flag = 1;
-+ if (!dead)
-+ goto setfl;
-+ if ((state & NUD_VALID) ||
-+ (*last_idx < 0 && order >= dflt)) {
-+ *last_resort = fi;
-+ *last_idx = order;
-+ *last_nhsel = nhsel;
-+ }
-+
-+ setfl:
-+
-+ read_lock_bh(&fib_nhflags_lock);
-+ if (flag)
-+ nh->nh_flags |= RTNH_F_SUSPECT;
-+ else
-+ nh->nh_flags &= ~RTNH_F_SUSPECT;
-+ read_unlock_bh(&fib_nhflags_lock);
- }
-- return 1;
-+ /* } endfor_nexthops(fi) */
-+
-+ return dead;
- }
-
- #ifdef CONFIG_IP_ROUTE_MULTIPATH
-@@ -783,6 +827,7 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_nh *nh,
- int err = 0;
- struct net *net;
- struct net_device *dev;
-+ struct fib_info *fi = nh->nh_parent;
-
- net = cfg->fc_nlinfo.nl_net;
- if (nh->nh_gw) {
-@@ -800,9 +845,12 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_nh *nh,
- if (!dev)
- return -ENODEV;
- if (!(dev->flags & IFF_UP)) {
-- NL_SET_ERR_MSG(extack,
-- "Nexthop device is not up");
-- return -ENETDOWN;
-+ if (fi->fib_protocol != RTPROT_STATIC) {
-+ NL_SET_ERR_MSG(extack,
-+ "Nexthop device is not up");
-+ return -ENETDOWN;
-+ }
-+ nh->nh_flags |= RTNH_F_DEAD;
- }
- addr_type = inet_addr_type_dev_table(net, dev, nh->nh_gw);
- if (addr_type != RTN_UNICAST) {
-@@ -847,31 +895,57 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_nh *nh,
- err = fib_lookup(net, &fl4, &res,
- FIB_LOOKUP_IGNORE_LINKSTATE);
- }
-+ }
-+ if (err) {
-+ struct in_device *in_dev;
-
-- if (err) {
-+ if (err != -ENETUNREACH ||
-+ fi->fib_protocol != RTPROT_STATIC) {
- NL_SET_ERR_MSG(extack,
- "Nexthop has invalid gateway");
-- rcu_read_unlock();
-- return err;
-+ goto out;
- }
-+
-+ in_dev = inetdev_by_index(net, nh->nh_oif);
-+ if (in_dev == NULL ||
-+ in_dev->dev->flags & IFF_UP) {
-+ NL_SET_ERR_MSG(extack,
-+ "Device for nexthop is not up");
-+ goto out;
-+ }
-+ nh->nh_flags |= RTNH_F_DEAD;
-+ nh->nh_scope = RT_SCOPE_LINK;
-+ nh->nh_dev = in_dev->dev;
-+ dev_hold(nh->nh_dev);
-+ } else {
-+ err = -EINVAL;
-+ if (res.type != RTN_UNICAST && res.type != RTN_LOCAL) {
-+ NL_SET_ERR_MSG(extack,
-+ "Nexthop has invalid gateway");
-+ goto out;
-+ }
-+ nh->nh_scope = res.scope;
-+ nh->nh_oif = FIB_RES_OIF(res);
-+ nh->nh_dev = dev = FIB_RES_DEV(res);
-+ if (!dev) {
-+ NL_SET_ERR_MSG(extack,
-+ "No egress device for nexthop gateway");
-+ goto out;
-+ }
-+ dev_hold(dev);
-+ if (!netif_carrier_ok(dev))
-+ nh->nh_flags |= RTNH_F_LINKDOWN;
-+ if (!(nh->nh_dev->flags & IFF_UP)) {
-+ if (fi->fib_protocol != RTPROT_STATIC) {
-+ err = -ENETDOWN;
-+ NL_SET_ERR_MSG(extack,
-+ "Device for nexthop is not up");
-+ goto out;
-+ }
-+ nh->nh_flags |= RTNH_F_DEAD;
-+ }
-+ err = 0;
- }
-- err = -EINVAL;
-- if (res.type != RTN_UNICAST && res.type != RTN_LOCAL) {
-- NL_SET_ERR_MSG(extack, "Nexthop has invalid gateway");
-- goto out;
-- }
-- nh->nh_scope = res.scope;
-- nh->nh_oif = FIB_RES_OIF(res);
-- nh->nh_dev = dev = FIB_RES_DEV(res);
-- if (!dev) {
-- NL_SET_ERR_MSG(extack,
-- "No egress device for nexthop gateway");
-- goto out;
-- }
-- dev_hold(dev);
-- if (!netif_carrier_ok(dev))
-- nh->nh_flags |= RTNH_F_LINKDOWN;
-- err = (dev->flags & IFF_UP) ? 0 : -ENETDOWN;
- } else {
- struct in_device *in_dev;
-
-@@ -887,8 +961,12 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_nh *nh,
- goto out;
- err = -ENETDOWN;
- if (!(in_dev->dev->flags & IFF_UP)) {
-- NL_SET_ERR_MSG(extack, "Device for nexthop is not up");
-- goto out;
-+ if (fi->fib_protocol != RTPROT_STATIC) {
-+ NL_SET_ERR_MSG(extack,
-+ "Device for nexthop is not up");
-+ goto out;
-+ }
-+ nh->nh_flags |= RTNH_F_DEAD;
- }
- nh->nh_dev = in_dev->dev;
- dev_hold(nh->nh_dev);
-@@ -1548,10 +1626,15 @@ int fib_sync_down_dev(struct net_device *dev, unsigned long event, bool force)
- prev_fi = fi;
- dead = 0;
- change_nexthops(fi) {
-- if (nexthop_nh->nh_flags & RTNH_F_DEAD)
-- dead++;
-- else if (nexthop_nh->nh_dev == dev &&
-- nexthop_nh->nh_scope != scope) {
-+ if (nexthop_nh->nh_flags & RTNH_F_DEAD) {
-+ if (fi->fib_protocol != RTPROT_STATIC ||
-+ nexthop_nh->nh_dev == NULL ||
-+ __in_dev_get_rtnl(nexthop_nh->nh_dev) == NULL ||
-+ nexthop_nh->nh_dev->flags&IFF_UP)
-+ dead++;
-+ } else if (nexthop_nh->nh_dev == dev &&
-+ nexthop_nh->nh_scope != scope) {
-+ write_lock_bh(&fib_nhflags_lock);
- switch (event) {
- case NETDEV_DOWN:
- case NETDEV_UNREGISTER:
-@@ -1563,7 +1646,11 @@ int fib_sync_down_dev(struct net_device *dev, unsigned long event, bool force)
- }
- call_fib_nh_notifiers(nexthop_nh,
- FIB_EVENT_NH_DEL);
-- dead++;
-+ write_unlock_bh(&fib_nhflags_lock);
-+ if (fi->fib_protocol != RTPROT_STATIC ||
-+ force ||
-+ __in_dev_get_rtnl(dev) == NULL)
-+ dead++;
- }
- #ifdef CONFIG_IP_ROUTE_MULTIPATH
- if (event == NETDEV_UNREGISTER &&
-@@ -1593,13 +1680,13 @@ int fib_sync_down_dev(struct net_device *dev, unsigned long event, bool force)
- }
-
- /* Must be invoked inside of an RCU protected region. */
--static void fib_select_default(const struct flowi4 *flp, struct fib_result *res)
-+void fib_select_default(const struct flowi4 *flp, struct fib_result *res)
- {
- struct fib_info *fi = NULL, *last_resort = NULL;
- struct hlist_head *fa_head = res->fa_head;
- struct fib_table *tb = res->table;
- u8 slen = 32 - res->prefixlen;
-- int order = -1, last_idx = -1;
-+ int order = -1, last_idx = -1, last_nhsel = 0;
- struct fib_alias *fa, *fa1 = NULL;
- u32 last_prio = res->fi->fib_priority;
- u8 last_tos = 0;
-@@ -1627,9 +1714,6 @@ static void fib_select_default(const struct flowi4 *flp, struct fib_result *res)
- if (next_fi->fib_scope != res->scope ||
- fa->fa_type != RTN_UNICAST)
- continue;
-- if (!next_fi->fib_nh[0].nh_gw ||
-- next_fi->fib_nh[0].nh_scope != RT_SCOPE_LINK)
-- continue;
-
- fib_alias_accessed(fa);
-
-@@ -1638,7 +1722,8 @@ static void fib_select_default(const struct flowi4 *flp, struct fib_result *res)
- break;
- fa1 = fa;
- } else if (!fib_detect_death(fi, order, &last_resort,
-- &last_idx, fa1->fa_default)) {
-+ &last_idx, fa1->fa_default,
-+ &last_nhsel, flp)) {
- fib_result_assign(res, fi);
- fa1->fa_default = order;
- goto out;
-@@ -1648,28 +1733,39 @@ static void fib_select_default(const struct flowi4 *flp, struct fib_result *res)
- }
-
- if (order <= 0 || !fi) {
-+ if (fi && fi->fib_nhs > 1 &&
-+ fib_detect_death(fi, order, &last_resort, &last_idx,
-+ fa1->fa_default, &last_nhsel, flp) &&
-+ last_resort == fi) {
-+ read_lock_bh(&fib_nhflags_lock);
-+ fi->fib_nh[last_nhsel].nh_flags &= ~RTNH_F_SUSPECT;
-+ read_unlock_bh(&fib_nhflags_lock);
-+ }
- if (fa1)
- fa1->fa_default = -1;
- goto out;
- }
-
- if (!fib_detect_death(fi, order, &last_resort, &last_idx,
-- fa1->fa_default)) {
-+ fa1->fa_default, &last_nhsel, flp)) {
- fib_result_assign(res, fi);
- fa1->fa_default = order;
- goto out;
- }
-
-- if (last_idx >= 0)
-+ if (last_idx >= 0) {
- fib_result_assign(res, last_resort);
-+ read_lock_bh(&fib_nhflags_lock);
-+ last_resort->fib_nh[last_nhsel].nh_flags &= ~RTNH_F_SUSPECT;
-+ read_unlock_bh(&fib_nhflags_lock);
-+ }
- fa1->fa_default = last_idx;
- out:
- return;
- }
-
- /*
-- * Dead device goes up. We wake up dead nexthops.
-- * It takes sense only on multipath routes.
-+ * Dead device goes up or new address is added. We wake up dead nexthops.
- */
- int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
- {
-@@ -1677,8 +1773,10 @@ int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
- unsigned int hash;
- struct hlist_head *head;
- struct fib_nh *nh;
-- int ret;
-+ struct fib_result res;
-+ int ret, rep;
-
-+repeat:
- if (!(dev->flags & IFF_UP))
- return 0;
-
-@@ -1693,6 +1791,7 @@ int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
- hash = fib_devindex_hashfn(dev->ifindex);
- head = &fib_info_devhash[hash];
- ret = 0;
-+ rep = 0;
-
- hlist_for_each_entry(nh, head, nh_hash) {
- struct fib_info *fi = nh->nh_parent;
-@@ -1705,16 +1804,37 @@ int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
- prev_fi = fi;
- alive = 0;
- change_nexthops(fi) {
-- if (!(nexthop_nh->nh_flags & nh_flags)) {
-- alive++;
-+ if (!(nexthop_nh->nh_flags & nh_flags))
- continue;
-- }
- if (!nexthop_nh->nh_dev ||
- !(nexthop_nh->nh_dev->flags & IFF_UP))
- continue;
- if (nexthop_nh->nh_dev != dev ||
- !__in_dev_get_rtnl(dev))
- continue;
-+ if ((nh_flags & RTNH_F_DEAD) && nexthop_nh->nh_gw &&
-+ fi->fib_protocol == RTPROT_STATIC) {
-+ struct flowi4 fl4 = {
-+ .daddr = nexthop_nh->nh_gw,
-+ .flowi4_scope = nexthop_nh->nh_scope,
-+ .flowi4_oif = nexthop_nh->nh_oif,
-+ };
-+
-+ rcu_read_lock();
-+ if (fib_lookup(dev_net(dev), &fl4, &res,
-+ FIB_LOOKUP_IGNORE_LINKSTATE) != 0) {
-+ rcu_read_unlock();
-+ continue;
-+ }
-+ if (res.type != RTN_UNICAST &&
-+ res.type != RTN_LOCAL) {
-+ rcu_read_unlock();
-+ continue;
-+ }
-+ nexthop_nh->nh_scope = res.scope;
-+ rcu_read_unlock();
-+ rep = 1;
-+ }
- alive++;
- nexthop_nh->nh_flags &= ~nh_flags;
- call_fib_nh_notifiers(nexthop_nh, FIB_EVENT_NH_ADD);
-@@ -1727,6 +1847,8 @@ int fib_sync_up(struct net_device *dev, unsigned int nh_flags)
-
- fib_rebalance(fi);
- }
-+ if (rep)
-+ goto repeat;
-
- return ret;
- }
-@@ -1780,23 +1902,16 @@ void fib_select_multipath(struct fib_result *res, int hash)
- void fib_select_path(struct net *net, struct fib_result *res,
- struct flowi4 *fl4, const struct sk_buff *skb)
- {
-- if (fl4->flowi4_oif && !(fl4->flowi4_flags & FLOWI_FLAG_SKIP_NH_OIF))
-- goto check_saddr;
--
-+ if (res->type == RTN_UNICAST)
-+ fib_select_default(fl4, res);
- #ifdef CONFIG_IP_ROUTE_MULTIPATH
- if (res->fi->fib_nhs > 1) {
- int h = fib_multipath_hash(net, fl4, skb, NULL);
-
- fib_select_multipath(res, h);
- }
-- else
- #endif
-- if (!res->prefixlen &&
-- res->table->tb_num_default > 1 &&
-- res->type == RTN_UNICAST)
-- fib_select_default(fl4, res);
-
--check_saddr:
- if (!fl4->saddr)
- fl4->saddr = FIB_RES_PREFSRC(net, *res);
- }
-diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
-index 3955a6d7ea66..5ca216e3a73d 100644
---- a/net/ipv4/fib_trie.c
-+++ b/net/ipv4/fib_trie.c
-@@ -1482,6 +1482,9 @@ int fib_table_lookup(struct fib_table *tb, const struct flowi4 *flp,
- if (flp->flowi4_oif &&
- flp->flowi4_oif != nh->nh_oif)
- continue;
-+ if (flp->fl4_gw && flp->fl4_gw != nh->nh_gw &&
-+ nh->nh_gw && nh->nh_scope == RT_SCOPE_LINK)
-+ continue;
- }
-
- if (!(fib_flags & FIB_LOOKUP_NOREF))
-diff --git a/net/ipv4/netfilter/iptable_nat.c b/net/ipv4/netfilter/iptable_nat.c
-index a317445448bf..9be4af94f10e 100644
---- a/net/ipv4/netfilter/iptable_nat.c
-+++ b/net/ipv4/netfilter/iptable_nat.c
-@@ -45,6 +45,13 @@ static const struct nf_hook_ops nf_nat_ipv4_ops[] = {
- .hooknum = NF_INET_PRE_ROUTING,
- .priority = NF_IP_PRI_NAT_DST,
- },
-+ /* Before routing, route before mangling */
-+ {
-+ .hook = ip_nat_route_input,
-+ .pf = NFPROTO_IPV4,
-+ .hooknum = NF_INET_PRE_ROUTING,
-+ .priority = NF_IP_PRI_LAST-1,
-+ },
- {
- .hook = iptable_nat_do_chain,
- .pf = NFPROTO_IPV4,
-diff --git a/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c b/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-index 4c7fcd32f8e6..ca9332e1cd5c 100644
---- a/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-+++ b/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-@@ -30,8 +30,8 @@ nf_nat_masquerade_ipv4(struct sk_buff *skb, unsigned int hooknum,
- struct nf_conn_nat *nat;
- enum ip_conntrack_info ctinfo;
- struct nf_nat_range2 newrange;
-- const struct rtable *rt;
-- __be32 newsrc, nh;
-+ struct rtable *rt;
-+ __be32 newsrc;
-
- WARN_ON(hooknum != NF_INET_POST_ROUTING);
-
-@@ -46,12 +46,23 @@ nf_nat_masquerade_ipv4(struct sk_buff *skb, unsigned int hooknum,
- if (ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.ip == 0)
- return NF_ACCEPT;
-
-- rt = skb_rtable(skb);
-- nh = rt_nexthop(rt, ip_hdr(skb)->daddr);
-- newsrc = inet_select_addr(out, nh, RT_SCOPE_UNIVERSE);
-- if (!newsrc) {
-- pr_info("%s ate my IP address\n", out->name);
-- return NF_DROP;
-+ {
-+ struct flowi4 fl4 = { .flowi4_tos = RT_TOS(ip_hdr(skb)->tos),
-+ .flowi4_mark = skb->mark,
-+ .flowi4_oif = out->ifindex,
-+ .daddr = ip_hdr(skb)->daddr,
-+ .fl4_gw = skb_rtable(skb)->rt_gateway };
-+ rt = ip_route_output_key(dev_net(out), &fl4);
-+ if (IS_ERR(rt)) {
-+ /* Funky routing can do this. */
-+ if (net_ratelimit())
-+ pr_info("%s:"
-+ " No route: Rusty's brain broke!\n",
-+ out->name);
-+ return NF_DROP;
-+ }
-+ newsrc = fl4.saddr;
-+ ip_rt_put(rt);
- }
-
- nat = nf_ct_nat_ext_add(ct);
-diff --git a/net/ipv4/route.c b/net/ipv4/route.c
-index 98c81c21b753..3a2705cb5ecb 100644
---- a/net/ipv4/route.c
-+++ b/net/ipv4/route.c
-@@ -1644,7 +1644,7 @@ int ip_mc_validate_source(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- return -EINVAL;
- } else {
- err = fib_validate_source(skb, saddr, 0, tos, 0, dev,
-- in_dev, itag);
-+ in_dev, itag, 1);
- if (err < 0)
- return err;
- }
-@@ -1719,7 +1719,7 @@ static void ip_handle_martian_source(struct net_device *dev,
- static int __mkroute_input(struct sk_buff *skb,
- const struct fib_result *res,
- struct in_device *in_dev,
-- __be32 daddr, __be32 saddr, u32 tos)
-+ __be32 daddr, __be32 saddr, u32 tos, __be32 lsrc)
- {
- struct fib_nh_exception *fnhe;
- struct rtable *rth;
-@@ -1736,7 +1736,7 @@ static int __mkroute_input(struct sk_buff *skb,
- }
-
- err = fib_validate_source(skb, saddr, daddr, tos, FIB_RES_OIF(*res),
-- in_dev->dev, in_dev, &itag);
-+ in_dev->dev, in_dev, &itag, 0);
- if (err < 0) {
- ip_handle_martian_source(in_dev->dev, in_dev, skb, daddr,
- saddr);
-@@ -1746,7 +1746,7 @@ static int __mkroute_input(struct sk_buff *skb,
-
- do_cache = res->fi && !itag;
- if (out_dev == in_dev && err && IN_DEV_TX_REDIRECTS(out_dev) &&
-- skb->protocol == htons(ETH_P_IP) &&
-+ skb->protocol == htons(ETH_P_IP) && !lsrc &&
- (IN_DEV_SHARED_MEDIA(out_dev) ||
- inet_addr_onlink(out_dev, saddr, FIB_RES_GW(*res))))
- IPCB(skb)->flags |= IPSKB_DOREDIRECT;
-@@ -1904,10 +1904,12 @@ int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4,
-
- static int ip_mkroute_input(struct sk_buff *skb,
- struct fib_result *res,
-+ const struct flowi4 *fl4,
- struct in_device *in_dev,
- __be32 daddr, __be32 saddr, u32 tos,
-- struct flow_keys *hkeys)
-+ struct flow_keys *hkeys, __be32 lsrc)
- {
-+ fib_select_default(fl4, res);
- #ifdef CONFIG_IP_ROUTE_MULTIPATH
- if (res->fi && res->fi->fib_nhs > 1) {
- int h = fib_multipath_hash(res->fi->fib_net, NULL, skb, hkeys);
-@@ -1917,7 +1919,7 @@ static int ip_mkroute_input(struct sk_buff *skb,
- #endif
-
- /* create a routing cache entry */
-- return __mkroute_input(skb, res, in_dev, daddr, saddr, tos);
-+ return __mkroute_input(skb, res, in_dev, daddr, saddr, tos, lsrc);
- }
-
- /*
-@@ -1932,7 +1934,7 @@ static int ip_mkroute_input(struct sk_buff *skb,
- */
-
- static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-- u8 tos, struct net_device *dev,
-+ u8 tos, struct net_device *dev, __be32 lsrc,
- struct fib_result *res)
- {
- struct in_device *in_dev = __in_dev_get_rcu(dev);
-@@ -1990,18 +1992,25 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- goto martian_source;
- }
-
-+ if (lsrc) {
-+ if (ipv4_is_multicast(lsrc) || ipv4_is_lbcast(lsrc) ||
-+ ipv4_is_zeronet(lsrc) || ipv4_is_loopback(lsrc))
-+ goto martian_source;
-+ }
-+
- /*
- * Now we are ready to route packet.
- */
- fl4.flowi4_oif = 0;
-- fl4.flowi4_iif = dev->ifindex;
-+ fl4.flowi4_iif = lsrc ? LOOPBACK_IFINDEX : dev->ifindex;
- fl4.flowi4_mark = skb->mark;
- fl4.flowi4_tos = tos;
- fl4.flowi4_scope = RT_SCOPE_UNIVERSE;
- fl4.flowi4_flags = 0;
- fl4.daddr = daddr;
-- fl4.saddr = saddr;
-+ fl4.saddr = lsrc? : saddr;
- fl4.flowi4_uid = sock_net_uid(net, NULL);
-+ fl4.fl4_gw = 0;
-
- if (fib4_rules_early_flow_dissect(net, skb, &fl4, &_flkeys)) {
- flkeys = &_flkeys;
-@@ -2012,6 +2021,8 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- }
-
- err = fib_lookup(net, &fl4, res, 0);
-+ fl4.flowi4_iif = dev->ifindex;
-+ fl4.saddr = saddr;
- if (err != 0) {
- if (!IN_DEV_FORWARD(in_dev))
- err = -EHOSTUNREACH;
-@@ -2026,7 +2037,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-
- if (res->type == RTN_LOCAL) {
- err = fib_validate_source(skb, saddr, daddr, tos,
-- 0, dev, in_dev, &itag);
-+ 0, dev, in_dev, &itag, 1);
- if (err < 0)
- goto martian_source;
- goto local_input;
-@@ -2040,16 +2051,19 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- goto martian_destination;
-
- make_route:
-- err = ip_mkroute_input(skb, res, in_dev, daddr, saddr, tos, flkeys);
-+ err = ip_mkroute_input(skb, res, &fl4, in_dev, daddr, saddr, tos,
-+ flkeys, lsrc);
- out: return err;
-
- brd_input:
- if (skb->protocol != htons(ETH_P_IP))
- goto e_inval;
-+ if (lsrc)
-+ goto e_inval;
-
- if (!ipv4_is_zeronet(saddr)) {
- err = fib_validate_source(skb, saddr, 0, tos, 0, dev,
-- in_dev, &itag);
-+ in_dev, &itag, 1);
- if (err < 0)
- goto martian_source;
- }
-@@ -2153,9 +2167,26 @@ int ip_route_input_noref(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- }
- EXPORT_SYMBOL(ip_route_input_noref);
-
-+int ip_route_input_lookup(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-+ u8 tos, struct net_device *dev, __be32 lsrc)
-+{
-+ struct fib_result res;
-+ int err;
-+
-+ tos &= IPTOS_RT_MASK;
-+ rcu_read_lock();
-+ err = ip_route_input_common_rcu(skb, daddr, saddr, tos, dev, lsrc,
-+ &res);
-+ rcu_read_unlock();
-+
-+ return err;
-+}
-+EXPORT_SYMBOL(ip_route_input_lookup);
-+
- /* called with rcu_read_lock held */
--int ip_route_input_rcu(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-- u8 tos, struct net_device *dev, struct fib_result *res)
-+int ip_route_input_common_rcu(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-+ u8 tos, struct net_device *dev, __be32 lsrc,
-+ struct fib_result *res)
- {
- /* Multicast recognition logic is moved from route cache to here.
- The problem was that too many Ethernet cards have broken/missing
-@@ -2201,7 +2232,13 @@ int ip_route_input_rcu(struct sk_buff *skb, __be32 daddr, __be32 saddr,
- return err;
- }
-
-- return ip_route_input_slow(skb, daddr, saddr, tos, dev, res);
-+ return ip_route_input_slow(skb, daddr, saddr, tos, dev, lsrc, res);
-+}
-+
-+int ip_route_input_rcu(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-+ u8 tos, struct net_device *dev, struct fib_result *res)
-+{
-+ return ip_route_input_common_rcu(skb, daddr, saddr, tos, dev, 0, res);
- }
-
- /* called with rcu_read_lock() */
-@@ -2453,6 +2490,7 @@ struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 *fl4,
- fl4->daddr = fl4->saddr = htonl(INADDR_LOOPBACK);
- dev_out = net->loopback_dev;
- fl4->flowi4_oif = LOOPBACK_IFINDEX;
-+ fl4->fl4_gw = 0;
- res->type = RTN_LOCAL;
- flags |= RTCF_LOCAL;
- goto make_route;
-@@ -2511,6 +2549,7 @@ struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 *fl4,
- orig_oif = FIB_RES_OIF(*res);
-
- fl4->flowi4_oif = dev_out->ifindex;
-+ fl4->fl4_gw = 0;
- flags |= RTCF_LOCAL;
- goto make_route;
- }
-diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c
-index 2268b10a9dcf..6f2c3e907c29 100644
---- a/net/netfilter/nf_nat_core.c
-+++ b/net/netfilter/nf_nat_core.c
-@@ -1042,6 +1042,49 @@ static struct nf_nat_hook nat_hook = {
- .manip_pkt = nf_nat_manip_pkt,
- };
-
-+unsigned int ip_nat_route_input(void *priv,
-+ struct sk_buff *skb,
-+ const struct nf_hook_state *state)
-+{
-+ struct iphdr *iph;
-+ struct nf_conn *conn;
-+ enum ip_conntrack_info ctinfo;
-+ enum ip_conntrack_dir dir;
-+ unsigned long statusbit;
-+ __be32 saddr;
-+
-+ if (!(conn = nf_ct_get(skb, &ctinfo)))
-+ return NF_ACCEPT;
-+
-+ if (!(conn->status & IPS_NAT_DONE_MASK))
-+ return NF_ACCEPT;
-+ dir = CTINFO2DIR(ctinfo);
-+ statusbit = IPS_SRC_NAT;
-+ if (dir == IP_CT_DIR_REPLY)
-+ statusbit ^= IPS_NAT_MASK;
-+ if (!(conn->status & statusbit))
-+ return NF_ACCEPT;
-+
-+ if (skb_dst(skb))
-+ return NF_ACCEPT;
-+
-+ if (skb->len < sizeof(struct iphdr))
-+ return NF_ACCEPT;
-+
-+ /* use daddr in other direction as masquerade address (lsrc) */
-+ iph = ip_hdr(skb);
-+ saddr = conn->tuplehash[!dir].tuple.dst.u3.ip;
-+ if (saddr == iph->saddr)
-+ return NF_ACCEPT;
-+
-+ if (ip_route_input_lookup(skb, iph->daddr, iph->saddr, iph->tos,
-+ skb->dev, saddr))
-+ return NF_DROP;
-+
-+ return NF_ACCEPT;
-+}
-+EXPORT_SYMBOL_GPL(ip_nat_route_input);
-+
- static int __init nf_nat_init(void)
- {
- int ret, i;
-diff --git a/security/selinux/nlmsgtab.c b/security/selinux/nlmsgtab.c
-index 9cec81209617..437a8430ce4c 100644
---- a/security/selinux/nlmsgtab.c
-+++ b/security/selinux/nlmsgtab.c
-@@ -83,6 +83,9 @@ static const struct nlmsg_perm nlmsg_route_perms[] =
- { RTM_NEWCHAIN, NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
- { RTM_DELCHAIN, NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
- { RTM_GETCHAIN, NETLINK_ROUTE_SOCKET__NLMSG_READ },
-+ { RTM_NEWARPRULE, NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
-+ { RTM_DELARPRULE, NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
-+ { RTM_GETARPRULE, NETLINK_ROUTE_SOCKET__NLMSG_READ },
- };
-
- static const struct nlmsg_perm nlmsg_tcpdiag_perms[] =
-@@ -166,7 +169,7 @@ int selinux_nlmsg_lookup(u16 sclass, u16 nlmsg_type, u32 *perm)
- * structures at the top of this file with the new mappings
- * before updating the BUILD_BUG_ON() macro!
- */
-- BUILD_BUG_ON(RTM_MAX != (RTM_NEWCHAIN + 3));
-+ BUILD_BUG_ON(RTM_MAX != (RTM_NEWARPRULE + 3));
- err = nlmsg_perm(nlmsg_type, perm, nlmsg_route_perms,
- sizeof(nlmsg_route_perms));
- break;
diff --git a/sys-kernel/boest-v4.19.37/0002-pool-2.6.25-tcp-timewait-20s.diff.patch b/sys-kernel/boest-v4.19.37/0002-pool-2.6.25-tcp-timewait-20s.diff.patch
deleted file mode 100644
index ac10f11b..00000000
--- a/sys-kernel/boest-v4.19.37/0002-pool-2.6.25-tcp-timewait-20s.diff.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 6b047e1ad654da6b74be04e498bca6293c68da81 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Sun, 15 Feb 2009 14:51:33 +0100
-Subject: [PATCH 02/14] pool/2.6.25-tcp-timewait-20s.diff
-
-From http://linux.1wt.eu/alix/kernel-src/2.6.27-wt11/patches-2.6.27-wt11.tar.bz2
-
-Signed-off-by: Bertrand Jacquin <bertrand@jacquin.bzh>
----
- include/net/tcp.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/include/net/tcp.h b/include/net/tcp.h
-index 770917d0caa7..9bfcc9cc3c40 100644
---- a/include/net/tcp.h
-+++ b/include/net/tcp.h
-@@ -118,8 +118,8 @@ void tcp_time_wait(struct sock *sk, int state, int timeo);
- * initial RTO.
- */
-
--#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT
-- * state, about 60 seconds */
-+#define TCP_TIMEWAIT_LEN (20*HZ) /* how long to wait to destroy TIME-WAIT
-+ * state, about 20 seconds */
- #define TCP_FIN_TIMEOUT TCP_TIMEWAIT_LEN
- /* BSD style FIN_WAIT2 deadlock breaker.
- * It used to be 3min, new value is 60sec,
diff --git a/sys-kernel/boest-v4.19.37/0003-pool-2.6.25-disable-tcp-debug.diff.patch b/sys-kernel/boest-v4.19.37/0003-pool-2.6.25-disable-tcp-debug.diff.patch
deleted file mode 100644
index 6d163966..00000000
--- a/sys-kernel/boest-v4.19.37/0003-pool-2.6.25-disable-tcp-debug.diff.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 5d426110ad5d29315d7292c703ee2ccc0a522e48 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Sun, 15 Feb 2009 14:51:33 +0100
-Subject: [PATCH 03/14] pool/2.6.25-disable-tcp-debug.diff
-
-From http://linux.1wt.eu/alix/kernel-src/2.6.27-wt11/patches-2.6.27-wt11.tar.bz2
-
-Signed-off-by: Bertrand Jacquin <bertrand@jacquin.bzh>
----
- include/net/tcp.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/net/tcp.h b/include/net/tcp.h
-index 9bfcc9cc3c40..6fc81d586e3b 100644
---- a/include/net/tcp.h
-+++ b/include/net/tcp.h
-@@ -18,7 +18,7 @@
- #ifndef _TCP_H
- #define _TCP_H
-
--#define FASTRETRANS_DEBUG 1
-+#define FASTRETRANS_DEBUG 0
-
- #include <linux/list.h>
- #include <linux/tcp.h>
diff --git a/sys-kernel/boest-v4.19.37/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch b/sys-kernel/boest-v4.19.37/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch
deleted file mode 100644
index bf5b703b..00000000
--- a/sys-kernel/boest-v4.19.37/0004-TCP-add-a-sysctl-to-disable-simultaneous-connection-.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From c143c2428e0ddb24bd2347205bad4ff3bbdc7804 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Wed, 8 Oct 2008 10:00:42 +0200
-Subject: [PATCH 04/14] TCP: add a sysctl to disable simultaneous connection
- opening.
-
-Strict implementation of RFC793 (TCP) requires support for a feature
-called "simultaneous connect", which allows two clients to connect to
-each other without anyone entering a listening state. While almost
-never used, and supported by few OSes, Linux supports this feature.
-
-However, it introduces a weakness in the protocol which makes it very
-easy for an attacker to prevent a client from connecting to a known
-server. The attacker only has to guess the source port to shut down
-the client connection during its establishment. The impact is limited,
-but it may be used to prevent an antivirus or IPS from fetching updates
-and not detecting an attack, or to prevent an SSL gateway from fetching
-a CRL for example.
-
-This patch provides a new sysctl "tcp_simult_connect" to enable or disable
-support for this useless feature. It comes disabled by default.
-
-Hundreds of systems running with that feature disabled for more than 4 years
-have never encountered an application which requires it. It is almost never
-supported by firewalls BTW.
-
-From http://linux.1wt.eu/alix/kernel-src/2.6.27-wt11/patches-2.6.27-wt11.tar.bz2
-
-Reviewed-by: Bertrand Jacquin <bertrand@jacquin.bzh>
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
-Signed-off-by: Bertrand Jacquin <bertrand@jacquin.bzh>
----
- Documentation/networking/ip-sysctl.txt | 22 ++++++++++++++++++++++
- include/net/netns/ipv4.h | 1 +
- include/uapi/linux/sysctl.h | 1 +
- net/ipv4/sysctl_net_ipv4.c | 7 +++++++
- net/ipv4/tcp_input.c | 6 +++++-
- 5 files changed, 36 insertions(+), 1 deletion(-)
-
-diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
-index e100d5fc6451..7459496e7fb9 100644
---- a/Documentation/networking/ip-sysctl.txt
-+++ b/Documentation/networking/ip-sysctl.txt
-@@ -199,6 +199,28 @@ inet_peer_maxttl - INTEGER
-
- TCP variables:
-
-+tcp_simult_connect - BOOLEAN
-+ Enables TCP simultaneous connect feature conforming to RFC793.
-+ Strict implementation of RFC793 (TCP) requires support for a feature
-+ called "simultaneous connect", which allows two clients to connect to
-+ each other without anyone entering a listening state. While almost
-+ never used, and supported by few OSes, Linux supports this feature.
-+
-+ However, it introduces a weakness in the protocol which makes it very
-+ easy for an attacker to prevent a client from connecting to a known
-+ server. The attacker only has to guess the source port to shut down
-+ the client connection during its establishment. The impact is limited,
-+ but it may be used to prevent an antivirus or IPS from fetching updates
-+ and not detecting an attack, or to prevent an SSL gateway from fetching
-+ a CRL for example.
-+
-+ If you want absolute compatibility with any possible application,
-+ you should set it to 1. If you prefer to enhance security on your
-+ systems you'd better let it to 0. After four years of usage on
-+ hundreds of systems, no application was ever found to require this
-+ feature, which is not even supported by most firewalls.
-+ Default: 0
-+
- somaxconn - INTEGER
- Limit of socket listen() backlog, known in userspace as SOMAXCONN.
- Defaults to 128. See also tcp_max_syn_backlog for additional tuning
-diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
-index e47503b4e4d1..df7430038b04 100644
---- a/include/net/netns/ipv4.h
-+++ b/include/net/netns/ipv4.h
-@@ -137,6 +137,7 @@ struct netns_ipv4 {
- int sysctl_tcp_recovery;
- int sysctl_tcp_thin_linear_timeouts;
- int sysctl_tcp_slow_start_after_idle;
-+ int sysctl_tcp_simult_connect;
- int sysctl_tcp_retrans_collapse;
- int sysctl_tcp_stdurg;
- int sysctl_tcp_rfc1337;
-diff --git a/include/uapi/linux/sysctl.h b/include/uapi/linux/sysctl.h
-index d71013fffaf6..ba7df2acb258 100644
---- a/include/uapi/linux/sysctl.h
-+++ b/include/uapi/linux/sysctl.h
-@@ -425,6 +425,7 @@ enum
- NET_TCP_ALLOWED_CONG_CONTROL=123,
- NET_TCP_MAX_SSTHRESH=124,
- NET_TCP_FRTO_RESPONSE=125,
-+ NET_TCP_SIMULT_CONNECT=126,
- };
-
- enum {
-diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
-index 891ed2f91467..8afe9646f418 100644
---- a/net/ipv4/sysctl_net_ipv4.c
-+++ b/net/ipv4/sysctl_net_ipv4.c
-@@ -514,6 +514,13 @@ static struct ctl_table ipv4_table[] = {
- .mode = 0444,
- .proc_handler = proc_tcp_available_congestion_control,
- },
-+ {
-+ .procname = "tcp_simult_connect",
-+ .data = &init_net.ipv4.sysctl_tcp_simult_connect,
-+ .maxlen = sizeof(int),
-+ .mode = 0644,
-+ .proc_handler = &proc_dointvec,
-+ },
- {
- .procname = "tcp_allowed_congestion_control",
- .maxlen = TCP_CA_BUF_MAX,
-diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
-index cfdd70e32755..59c857ed7954 100644
---- a/net/ipv4/tcp_input.c
-+++ b/net/ipv4/tcp_input.c
-@@ -5768,6 +5768,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
- const struct tcphdr *th)
- {
- struct inet_connection_sock *icsk = inet_csk(sk);
-+ struct net *net = sock_net(sk);
- struct tcp_sock *tp = tcp_sk(sk);
- struct tcp_fastopen_cookie foc = { .len = -1 };
- int saved_clamp = tp->rx_opt.mss_clamp;
-@@ -5923,10 +5924,13 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
- tcp_paws_reject(&tp->rx_opt, 0))
- goto discard_and_undo;
-
-- if (th->syn) {
-+ if (th->syn && net->ipv4.sysctl_tcp_simult_connect) {
- /* We see SYN without ACK. It is attempt of
- * simultaneous connect with crossed SYNs.
- * Particularly, it can be connect to self.
-+ * This feature is disabled by default as it introduces
-+ * weakness in the protocol. It can be enabled by a
-+ * sysctl.
- */
- tcp_set_state(sk, TCP_SYN_RECV);
-
diff --git a/sys-kernel/boest-v4.19.37/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch b/sys-kernel/boest-v4.19.37/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch
deleted file mode 100644
index d810b7f0..00000000
--- a/sys-kernel/boest-v4.19.37/0005-pool-2.6.25-disable-kbdrate-at-boot.diff.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From b03e7e4318758e61a6f5d7aeebbc2eb6b175c52a Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Sun, 15 Feb 2009 14:51:33 +0100
-Subject: [PATCH 05/14] pool/2.6.25-disable-kbdrate-at-boot.diff
-
-From http://linux.1wt.eu/alix/kernel-src/2.6.27-wt11/patches-2.6.27-wt11.tar.bz2
-
-Reviewed-by: Bertrand Jacquin <bertrand@jacquin.bzh>
-Signed-off-by: Bertrand Jacquin <bertrand@jacquin.bzh>
----
- arch/x86/boot/main.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/arch/x86/boot/main.c b/arch/x86/boot/main.c
-index 9bcea386db65..fd2d8e4e7d3a 100644
---- a/arch/x86/boot/main.c
-+++ b/arch/x86/boot/main.c
-@@ -64,6 +64,8 @@ static void copy_boot_params(void)
- */
- static void keyboard_init(void)
- {
-+/*This may take several seconds if the system has no kbd controller */
-+#ifdef CONFIG_INPUT_KEYBOARD
- struct biosregs ireg, oreg;
- initregs(&ireg);
-
-@@ -73,6 +75,7 @@ static void keyboard_init(void)
-
- ireg.ax = 0x0305; /* Set keyboard repeat rate */
- intcall(0x16, &ireg, NULL);
-+#endif
- }
-
- /*
diff --git a/sys-kernel/boest-v4.19.37/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch b/sys-kernel/boest-v4.19.37/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch
deleted file mode 100644
index 194ddc41..00000000
--- a/sys-kernel/boest-v4.19.37/0006-Disable-CONFIG_PROCESSOR_SELECT-printk-s.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 584c7daaebbd652df6a57a3cdbc71f0a7b83dbe2 Mon Sep 17 00:00:00 2001
-From: Bertrand Jacquin <bertrand@jacquin.bzh>
-Date: Wed, 9 Jan 2013 00:28:28 +0100
-Subject: [PATCH 06/14] Disable CONFIG_PROCESSOR_SELECT printk()'s
--
-Signed-off-by: Bertrand Jacquin <bertrand@jacquin.bzh>
----
- arch/x86/kernel/cpu/common.c | 17 -----------------
- 1 file changed, 17 deletions(-)
--
-diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
-index 44c4ef3d989b..1e4a8be8cda6 100644
---- a/arch/x86/kernel/cpu/common.c
-+++ b/arch/x86/kernel/cpu/common.c
-@@ -1134,10 +1134,6 @@ void __init early_cpu_init(void)
- const struct cpu_dev *const *cdev;
- int count = 0;
-
--#ifdef CONFIG_PROCESSOR_SELECT
-- pr_info("KERNEL supported cpus:\n");
--#endif
--
- for (cdev = __x86_cpu_dev_start; cdev < __x86_cpu_dev_end; cdev++) {
- const struct cpu_dev *cpudev = *cdev;
-
-@@ -1145,19 +1141,6 @@ void __init early_cpu_init(void)
- break;
- cpu_devs[count] = cpudev;
- count++;
--
--#ifdef CONFIG_PROCESSOR_SELECT
-- {
-- unsigned int j;
--
-- for (j = 0; j < 2; j++) {
-- if (!cpudev->c_ident[j])
-- continue;
-- pr_info(" %s %s\n", cpudev->c_vendor,
-- cpudev->c_ident[j]);
-- }
-- }
--#endif
- }
- early_identify_cpu(&boot_cpu_data);
- }
diff --git a/sys-kernel/boest-v4.19.37/0007-This-patch-adds-support-for-a-restricted-user-contro.patch b/sys-kernel/boest-v4.19.37/0007-This-patch-adds-support-for-a-restricted-user-contro.patch
deleted file mode 100644
index 5f190d54..00000000
--- a/sys-kernel/boest-v4.19.37/0007-This-patch-adds-support-for-a-restricted-user-contro.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 8a3b9c0a24ed13869b3eca128da5c1fa614c1222 Mon Sep 17 00:00:00 2001
-From: "Anthony G. Basile" <blueness@gentoo.org>
-Date: Fri, 28 Sep 2018 08:20:14 -0400
-Subject: [PATCH 07/14] This patch adds support for a restricted
- user-controlled namespace on tmpfs filesystem used to house PaX flags. The
- namespace must be of the form user.pax.* and its value cannot exceed a size
- of 8 bytes.
-
-This is needed even on all Gentoo systems so that XATTR_PAX flags
-are preserved for users who might build packages using portage on
-a tmpfs system with a non-hardened kernel and then switch to a
-hardened kernel with XATTR_PAX enabled.
-
-The namespace is added to any user with Extended Attribute support
-enabled for tmpfs. Users who do not enable xattrs will not have
-the XATTR_PAX flags preserved.
----
- include/uapi/linux/xattr.h | 4 ++++
- mm/shmem.c | 15 +++++++++++++++
- 2 files changed, 19 insertions(+)
-
-diff --git a/include/uapi/linux/xattr.h b/include/uapi/linux/xattr.h
-index c1395b5bd432..bac6d48eca8e 100644
---- a/include/uapi/linux/xattr.h
-+++ b/include/uapi/linux/xattr.h
-@@ -77,5 +77,9 @@
- #define XATTR_POSIX_ACL_DEFAULT "posix_acl_default"
- #define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_DEFAULT
-
-+/* User namespace */
-+#define XATTR_PAX_PREFIX XATTR_USER_PREFIX "pax."
-+#define XATTR_PAX_FLAGS_SUFFIX "flags"
-+#define XATTR_NAME_PAX_FLAGS XATTR_PAX_PREFIX XATTR_PAX_FLAGS_SUFFIX
-
- #endif /* _UAPI_LINUX_XATTR_H */
-diff --git a/mm/shmem.c b/mm/shmem.c
-index 3c8742655756..526eb832f8da 100644
---- a/mm/shmem.c
-+++ b/mm/shmem.c
-@@ -3187,6 +3187,14 @@ static int shmem_xattr_handler_set(const struct xattr_handler *handler,
- struct shmem_inode_info *info = SHMEM_I(inode);
-
- name = xattr_full_name(handler, name);
-+
-+ if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN)) {
-+ if (strcmp(name, XATTR_NAME_PAX_FLAGS))
-+ return -EOPNOTSUPP;
-+ if (size > 8)
-+ return -EINVAL;
-+ }
-+
- return simple_xattr_set(&info->xattrs, name, value, size, flags);
- }
-
-@@ -3202,6 +3210,12 @@ static const struct xattr_handler shmem_trusted_xattr_handler = {
- .set = shmem_xattr_handler_set,
- };
-
-+static const struct xattr_handler shmem_user_xattr_handler = {
-+ .prefix = XATTR_USER_PREFIX,
-+ .get = shmem_xattr_handler_get,
-+ .set = shmem_xattr_handler_set,
-+};
-+
- static const struct xattr_handler *shmem_xattr_handlers[] = {
- #ifdef CONFIG_TMPFS_POSIX_ACL
- &posix_acl_access_xattr_handler,
-@@ -3209,6 +3223,7 @@ static const struct xattr_handler *shmem_xattr_handlers[] = {
- #endif
- &shmem_security_xattr_handler,
- &shmem_trusted_xattr_handler,
-+ &shmem_user_xattr_handler,
- NULL
- };
-
diff --git a/sys-kernel/boest-v4.19.37/0008-fs-Enable-link-security-restrictions-by-default.patch b/sys-kernel/boest-v4.19.37/0008-fs-Enable-link-security-restrictions-by-default.patch
deleted file mode 100644
index ce489508..00000000
--- a/sys-kernel/boest-v4.19.37/0008-fs-Enable-link-security-restrictions-by-default.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From b02aa75f0354df2e35fcbfecfad4b35a7bdf5e29 Mon Sep 17 00:00:00 2001
-From: Ben Hutchings <ben@decadent.org.uk>
-Date: Fri, 2 Nov 2012 05:32:06 +0000
-Subject: [PATCH 08/14] fs: Enable link security restrictions by default
-
-This reverts commit 561ec64ae67ef25cac8d72bb9c4bfc955edfd415
-('VFS: don't do protected {sym,hard}links by default').
----
- fs/namei.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/fs/namei.c b/fs/namei.c
-index 914178cdbe94..bd94f65a9efd 100644
---- a/fs/namei.c
-+++ b/fs/namei.c
-@@ -885,8 +885,8 @@ static inline void put_link(struct nameidata *nd)
- path_put(&last->link);
- }
-
--int sysctl_protected_symlinks __read_mostly = 0;
--int sysctl_protected_hardlinks __read_mostly = 0;
-+int sysctl_protected_symlinks __read_mostly = 1;
-+int sysctl_protected_hardlinks __read_mostly = 1;
- int sysctl_protected_fifos __read_mostly;
- int sysctl_protected_regular __read_mostly;
-
diff --git a/sys-kernel/boest-v4.19.37/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch b/sys-kernel/boest-v4.19.37/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch
deleted file mode 100644
index e55c5117..00000000
--- a/sys-kernel/boest-v4.19.37/0009-usb-storage-Disable-UAS-on-JMicron-SATA-enclosure.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From c249cb22bc1030368742b422d784ee90db213682 Mon Sep 17 00:00:00 2001
-From: Laura Abbott <labbott@fedoraproject.org>
-Date: Tue, 8 Sep 2015 09:53:38 -0700
-Subject: [PATCH 09/14] usb-storage: Disable UAS on JMicron SATA enclosure
-
-Steve Ellis reported incorrect block sizes and alignement
-offsets with a SATA enclosure. Adding a quirk to disable
-UAS fixes the problems.
-
-Reported-by: Steven Ellis <sellis@redhat.com>
-Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
----
- drivers/usb/storage/unusual_uas.h | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h
-index d0bdebd87ce3..1b23741036ee 100644
---- a/drivers/usb/storage/unusual_uas.h
-+++ b/drivers/usb/storage/unusual_uas.h
-@@ -87,12 +87,15 @@ UNUSUAL_DEV(0x2537, 0x1068, 0x0000, 0x9999,
- USB_SC_DEVICE, USB_PR_DEVICE, NULL,
- US_FL_IGNORE_UAS),
-
--/* Reported-by: Takeo Nakayama <javhera@gmx.com> */
-+/*
-+ * Initially Reported-by: Takeo Nakayama <javhera@gmx.com>
-+ * UAS Ignore Reported by Steven Ellis <sellis@redhat.com>
-+ */
- UNUSUAL_DEV(0x357d, 0x7788, 0x0000, 0x9999,
- "JMicron",
- "JMS566",
- USB_SC_DEVICE, USB_PR_DEVICE, NULL,
-- US_FL_NO_REPORT_OPCODES),
-+ US_FL_NO_REPORT_OPCODES | US_FL_IGNORE_UAS),
-
- /* Reported-by: Hans de Goede <hdegoede@redhat.com> */
- UNUSUAL_DEV(0x4971, 0x1012, 0x0000, 0x9999,
diff --git a/sys-kernel/boest-v4.19.37/0010-4.19-2600_enable-key-swapping-for-apple-mac.patch.patch b/sys-kernel/boest-v4.19.37/0010-4.19-2600_enable-key-swapping-for-apple-mac.patch.patch
deleted file mode 100644
index 31178296..00000000
--- a/sys-kernel/boest-v4.19.37/0010-4.19-2600_enable-key-swapping-for-apple-mac.patch.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From 3bf47da5e16e869dcb7ba8ef846a29618c89d496 Mon Sep 17 00:00:00 2001
-From: Mike Pagano <mpagano@gentoo.org>
-Date: Fri, 28 Sep 2018 08:20:14 -0400
-Subject: [PATCH 10/14] 4.19:2600_enable-key-swapping-for-apple-mac.patch
-
----
- drivers/hid/hid-apple.c | 76 +++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 74 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
-index 1cb41992aaa1..c34a3be5085a 100644
---- a/drivers/hid/hid-apple.c
-+++ b/drivers/hid/hid-apple.c
-@@ -54,6 +54,22 @@ MODULE_PARM_DESC(swap_opt_cmd, "Swap the Option (\"Alt\") and Command (\"Flag\")
- "(For people who want to keep Windows PC keyboard muscle memory. "
- "[0] = as-is, Mac layout. 1 = swapped, Windows layout.)");
-
-+static unsigned int swap_fn_leftctrl;
-+module_param(swap_fn_leftctrl, uint, 0644);
-+MODULE_PARM_DESC(swap_fn_leftctrl, "Swap the Fn and left Control keys. "
-+ "(For people who want to keep PC keyboard muscle memory. "
-+ "[0] = as-is, Mac layout, 1 = swapped, PC layout)");
-+
-+static unsigned int rightalt_as_rightctrl;
-+module_param(rightalt_as_rightctrl, uint, 0644);
-+MODULE_PARM_DESC(rightalt_as_rightctrl, "Use the right Alt key as a right Ctrl key. "
-+ "[0] = as-is, Mac layout. 1 = Right Alt is right Ctrl");
-+
-+static unsigned int ejectcd_as_delete;
-+module_param(ejectcd_as_delete, uint, 0644);
-+MODULE_PARM_DESC(ejectcd_as_delete, "Use Eject-CD key as Delete key. "
-+ "([0] = disabled, 1 = enabled)");
-+
- struct apple_sc {
- unsigned long quirks;
- unsigned int fn_on;
-@@ -166,6 +182,21 @@ static const struct apple_key_translation swapped_option_cmd_keys[] = {
- { }
- };
-
-+static const struct apple_key_translation swapped_fn_leftctrl_keys[] = {
-+ { KEY_FN, KEY_LEFTCTRL },
-+ { }
-+};
-+
-+static const struct apple_key_translation rightalt_as_rightctrl_keys[] = {
-+ { KEY_RIGHTALT, KEY_RIGHTCTRL },
-+ { }
-+};
-+
-+static const struct apple_key_translation ejectcd_as_delete_keys[] = {
-+ { KEY_EJECTCD, KEY_DELETE },
-+ { }
-+};
-+
- static const struct apple_key_translation *apple_find_translation(
- const struct apple_key_translation *table, u16 from)
- {
-@@ -185,9 +216,11 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
- struct apple_sc *asc = hid_get_drvdata(hid);
- const struct apple_key_translation *trans, *table;
-
-- if (usage->code == KEY_FN) {
-+ u16 fn_keycode = (swap_fn_leftctrl) ? (KEY_LEFTCTRL) : (KEY_FN);
-+
-+ if (usage->code == fn_keycode) {
- asc->fn_on = !!value;
-- input_event(input, usage->type, usage->code, value);
-+ input_event(input, usage->type, KEY_FN, value);
- return 1;
- }
-
-@@ -266,6 +299,30 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
- }
- }
-
-+ if (swap_fn_leftctrl) {
-+ trans = apple_find_translation(swapped_fn_leftctrl_keys, usage->code);
-+ if (trans) {
-+ input_event(input, usage->type, trans->to, value);
-+ return 1;
-+ }
-+ }
-+
-+ if (ejectcd_as_delete) {
-+ trans = apple_find_translation(ejectcd_as_delete_keys, usage->code);
-+ if (trans) {
-+ input_event(input, usage->type, trans->to, value);
-+ return 1;
-+ }
-+ }
-+
-+ if (rightalt_as_rightctrl) {
-+ trans = apple_find_translation(rightalt_as_rightctrl_keys, usage->code);
-+ if (trans) {
-+ input_event(input, usage->type, trans->to, value);
-+ return 1;
-+ }
-+ }
-+
- return 0;
- }
-
-@@ -329,6 +386,21 @@ static void apple_setup_input(struct input_dev *input)
-
- for (trans = apple_iso_keyboard; trans->from; trans++)
- set_bit(trans->to, input->keybit);
-+
-+ if (swap_fn_leftctrl) {
-+ for (trans = swapped_fn_leftctrl_keys; trans->from; trans++)
-+ set_bit(trans->to, input->keybit);
-+ }
-+
-+ if (ejectcd_as_delete) {
-+ for (trans = ejectcd_as_delete_keys; trans->from; trans++)
-+ set_bit(trans->to, input->keybit);
-+ }
-+
-+ if (rightalt_as_rightctrl) {
-+ for (trans = rightalt_as_rightctrl_keys; trans->from; trans++)
-+ set_bit(trans->to, input->keybit);
-+ }
- }
-
- static int apple_input_mapping(struct hid_device *hdev, struct hid_input *hi,
diff --git a/sys-kernel/boest-v4.19.37/0011-4.19-4200_fbcondecor.patch.patch b/sys-kernel/boest-v4.19.37/0011-4.19-4200_fbcondecor.patch.patch
deleted file mode 100644
index a908312e..00000000
--- a/sys-kernel/boest-v4.19.37/0011-4.19-4200_fbcondecor.patch.patch
+++ /dev/null
@@ -1,2121 +0,0 @@
-From 2da96e07aac9cc13793d11cbf06c3b61c276f02c Mon Sep 17 00:00:00 2001
-From: Mike Pagano <mpagano@gentoo.org>
-Date: Fri, 28 Sep 2018 08:20:14 -0400
-Subject: [PATCH 11/14] 4.19:4200_fbcondecor.patch
-
----
- Documentation/fb/00-INDEX | 2 +
- Documentation/fb/fbcondecor.txt | 207 +++++++++++
- drivers/Makefile | 9 +-
- drivers/video/console/Kconfig | 13 +
- drivers/video/console/Makefile | 1 +
- drivers/video/console/cfbcondecor.c | 473 ++++++++++++++++++++++++
- drivers/video/console/fbcondecor.c | 549 ++++++++++++++++++++++++++++
- drivers/video/console/fbcondecor.h | 77 ++++
- drivers/video/fbdev/Kconfig | 1 -
- drivers/video/fbdev/core/bitblit.c | 20 +-
- drivers/video/fbdev/core/fbcmap.c | 9 +-
- drivers/video/fbdev/core/fbcon.c | 171 +++++++--
- drivers/video/fbdev/core/fbmem.c | 9 -
- include/linux/console_decor.h | 46 +++
- include/linux/console_struct.h | 3 +
- include/linux/fb.h | 31 ++
- include/uapi/linux/fb.h | 59 +++
- kernel/sysctl.c | 13 +
- 18 files changed, 1649 insertions(+), 44 deletions(-)
-
-diff --git a/Documentation/fb/00-INDEX b/Documentation/fb/00-INDEX
-index fe85e7c5907a..22309308ba56 100644
---- a/Documentation/fb/00-INDEX
-+++ b/Documentation/fb/00-INDEX
-@@ -23,6 +23,8 @@ ep93xx-fb.txt
- - info on the driver for EP93xx LCD controller.
- fbcon.txt
- - intro to and usage guide for the framebuffer console (fbcon).
-+fbcondecor.txt
-+ - info on the Framebuffer Console Decoration
- framebuffer.txt
- - introduction to frame buffer devices.
- gxfb.txt
-diff --git a/Documentation/fb/fbcondecor.txt b/Documentation/fb/fbcondecor.txt
-new file mode 100644
-index 000000000000..637209e11ccd
---- /dev/null
-+++ b/Documentation/fb/fbcondecor.txt
-@@ -0,0 +1,207 @@
-+What is it?
-+-----------
-+
-+The framebuffer decorations are a kernel feature which allows displaying a
-+background picture on selected consoles.
-+
-+What do I need to get it to work?
-+---------------------------------
-+
-+To get fbcondecor up-and-running you will have to:
-+ 1) get a copy of splashutils [1] or a similar program
-+ 2) get some fbcondecor themes
-+ 3) build the kernel helper program
-+ 4) build your kernel with the FB_CON_DECOR option enabled.
-+
-+To get fbcondecor operational right after fbcon initialization is finished, you
-+will have to include a theme and the kernel helper into your initramfs image.
-+Please refer to splashutils documentation for instructions on how to do that.
-+
-+[1] The splashutils package can be downloaded from:
-+ http://github.com/alanhaggai/fbsplash
-+
-+The userspace helper
-+--------------------
-+
-+The userspace fbcondecor helper (by default: /sbin/fbcondecor_helper) is called by the
-+kernel whenever an important event occurs and the kernel needs some kind of
-+job to be carried out. Important events include console switches and video
-+mode switches (the kernel requests background images and configuration
-+parameters for the current console). The fbcondecor helper must be accessible at
-+all times. If it's not, fbcondecor will be switched off automatically.
-+
-+It's possible to set path to the fbcondecor helper by writing it to
-+/proc/sys/kernel/fbcondecor.
-+
-+*****************************************************************************
-+
-+The information below is mostly technical stuff. There's probably no need to
-+read it unless you plan to develop a userspace helper.
-+
-+The fbcondecor protocol
-+-----------------------
-+
-+The fbcondecor protocol defines a communication interface between the kernel and
-+the userspace fbcondecor helper.
-+
-+The kernel side is responsible for:
-+
-+ * rendering console text, using an image as a background (instead of a
-+ standard solid color fbcon uses),
-+ * accepting commands from the user via ioctls on the fbcondecor device,
-+ * calling the userspace helper to set things up as soon as the fb subsystem
-+ is initialized.
-+
-+The userspace helper is responsible for everything else, including parsing
-+configuration files, decompressing the image files whenever the kernel needs
-+it, and communicating with the kernel if necessary.
-+
-+The fbcondecor protocol specifies how communication is done in both ways:
-+kernel->userspace and userspace->helper.
-+
-+Kernel -> Userspace
-+-------------------
-+
-+The kernel communicates with the userspace helper by calling it and specifying
-+the task to be done in a series of arguments.
-+
-+The arguments follow the pattern:
-+<fbcondecor protocol version> <command> <parameters>
-+
-+All commands defined in fbcondecor protocol v2 have the following parameters:
-+ virtual console
-+ framebuffer number
-+ theme
-+
-+Fbcondecor protocol v1 specified an additional 'fbcondecor mode' after the
-+framebuffer number. Fbcondecor protocol v1 is deprecated and should not be used.
-+
-+Fbcondecor protocol v2 specifies the following commands:
-+
-+getpic
-+------
-+ The kernel issues this command to request image data. It's up to the
-+ userspace helper to find a background image appropriate for the specified
-+ theme and the current resolution. The userspace helper should respond by
-+ issuing the FBIOCONDECOR_SETPIC ioctl.
-+
-+init
-+----
-+ The kernel issues this command after the fbcondecor device is created and
-+ the fbcondecor interface is initialized. Upon receiving 'init', the userspace
-+ helper should parse the kernel command line (/proc/cmdline) or otherwise
-+ decide whether fbcondecor is to be activated.
-+
-+ To activate fbcondecor on the first console the helper should issue the
-+ FBIOCONDECOR_SETCFG, FBIOCONDECOR_SETPIC and FBIOCONDECOR_SETSTATE commands,
-+ in the above-mentioned order.
-+
-+ When the userspace helper is called in an early phase of the boot process
-+ (right after the initialization of fbcon), no filesystems will be mounted.
-+ The helper program should mount sysfs and then create the appropriate
-+ framebuffer, fbcondecor and tty0 devices (if they don't already exist) to get
-+ current display settings and to be able to communicate with the kernel side.
-+ It should probably also mount the procfs to be able to parse the kernel
-+ command line parameters.
-+
-+ Note that the console sem is not held when the kernel calls fbcondecor_helper
-+ with the 'init' command. The fbcondecor helper should perform all ioctls with
-+ origin set to FBCON_DECOR_IO_ORIG_USER.
-+
-+modechange
-+----------
-+ The kernel issues this command on a mode change. The helper's response should
-+ be similar to the response to the 'init' command. Note that this time the
-+ console sem is held and all ioctls must be performed with origin set to
-+ FBCON_DECOR_IO_ORIG_KERNEL.
-+
-+
-+Userspace -> Kernel
-+-------------------
-+
-+Userspace programs can communicate with fbcondecor via ioctls on the
-+fbcondecor device. These ioctls are to be used by both the userspace helper
-+(called only by the kernel) and userspace configuration tools (run by the users).
-+
-+The fbcondecor helper should set the origin field to FBCON_DECOR_IO_ORIG_KERNEL
-+when doing the appropriate ioctls. All userspace configuration tools should
-+use FBCON_DECOR_IO_ORIG_USER. Failure to set the appropriate value in the origin
-+field when performing ioctls from the kernel helper will most likely result
-+in a console deadlock.
-+
-+FBCON_DECOR_IO_ORIG_KERNEL instructs fbcondecor not to try to acquire the console
-+semaphore. Not surprisingly, FBCON_DECOR_IO_ORIG_USER instructs it to acquire
-+the console sem.
-+
-+The framebuffer console decoration provides the following ioctls (all defined in
-+linux/fb.h):
-+
-+FBIOCONDECOR_SETPIC
-+description: loads a background picture for a virtual console
-+argument: struct fbcon_decor_iowrapper*; data: struct fb_image*
-+notes:
-+If called for consoles other than the current foreground one, the picture data
-+will be ignored.
-+
-+If the current virtual console is running in a 8-bpp mode, the cmap substruct
-+of fb_image has to be filled appropriately: start should be set to 16 (first
-+16 colors are reserved for fbcon), len to a value <= 240 and red, green and
-+blue should point to valid cmap data. The transp field is ingored. The fields
-+dx, dy, bg_color, fg_color in fb_image are ignored as well.
-+
-+FBIOCONDECOR_SETCFG
-+description: sets the fbcondecor config for a virtual console
-+argument: struct fbcon_decor_iowrapper*; data: struct vc_decor*
-+notes: The structure has to be filled with valid data.
-+
-+FBIOCONDECOR_GETCFG
-+description: gets the fbcondecor config for a virtual console
-+argument: struct fbcon_decor_iowrapper*; data: struct vc_decor*
-+
-+FBIOCONDECOR_SETSTATE
-+description: sets the fbcondecor state for a virtual console
-+argument: struct fbcon_decor_iowrapper*; data: unsigned int*
-+ values: 0 = disabled, 1 = enabled.
-+
-+FBIOCONDECOR_GETSTATE
-+description: gets the fbcondecor state for a virtual console
-+argument: struct fbcon_decor_iowrapper*; data: unsigned int*
-+ values: as in FBIOCONDECOR_SETSTATE
-+
-+Info on used structures:
-+
-+Definition of struct vc_decor can be found in linux/console_decor.h. It's
-+heavily commented. Note that the 'theme' field should point to a string
-+no longer than FBCON_DECOR_THEME_LEN. When FBIOCONDECOR_GETCFG call is
-+performed, the theme field should point to a char buffer of length
-+FBCON_DECOR_THEME_LEN.
-+
-+Definition of struct fbcon_decor_iowrapper can be found in linux/fb.h.
-+The fields in this struct have the following meaning:
-+
-+vc:
-+Virtual console number.
-+
-+origin:
-+Specifies if the ioctl is performed as a response to a kernel request. The
-+fbcondecor helper should set this field to FBCON_DECOR_IO_ORIG_KERNEL, userspace
-+programs should set it to FBCON_DECOR_IO_ORIG_USER. This field is necessary to
-+avoid console semaphore deadlocks.
-+
-+data:
-+Pointer to a data structure appropriate for the performed ioctl. Type of
-+the data struct is specified in the ioctls description.
-+
-+*****************************************************************************
-+
-+Credit
-+------
-+
-+Original 'bootsplash' project & implementation by:
-+ Volker Poplawski <volker@poplawski.de>, Stefan Reinauer <stepan@suse.de>,
-+ Steffen Winterfeldt <snwint@suse.de>, Michael Schroeder <mls@suse.de>,
-+ Ken Wimer <wimer@suse.de>.
-+
-+Fbcondecor, fbcondecor protocol design, current implementation & docs by:
-+ Michal Januszewski <michalj+fbcondecor@gmail.com>
-+
-diff --git a/drivers/Makefile b/drivers/Makefile
-index 578f469f72fb..366fd320de4f 100644
---- a/drivers/Makefile
-+++ b/drivers/Makefile
-@@ -20,6 +20,10 @@ obj-y += pci/
-
- obj-$(CONFIG_PARISC) += parisc/
- obj-$(CONFIG_RAPIDIO) += rapidio/
-+# tty/ comes before char/ so that the VT console is the boot-time
-+# default.
-+obj-y += tty/
-+obj-y += char/
- obj-y += video/
- obj-y += idle/
-
-@@ -50,11 +54,6 @@ obj-$(CONFIG_REGULATOR) += regulator/
- # reset controllers early, since gpu drivers might rely on them to initialize
- obj-$(CONFIG_RESET_CONTROLLER) += reset/
-
--# tty/ comes before char/ so that the VT console is the boot-time
--# default.
--obj-y += tty/
--obj-y += char/
--
- # iommu/ comes before gpu as gpu are using iommu controllers
- obj-$(CONFIG_IOMMU_SUPPORT) += iommu/
-
-diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig
-index 787792c3d08d..3339b17ccbf1 100644
---- a/drivers/video/console/Kconfig
-+++ b/drivers/video/console/Kconfig
-@@ -161,6 +161,19 @@ config FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
- by the firmware in place, rather then replacing the contents with a
- black screen as soon as fbcon loads.
-
-+config FB_CON_DECOR
-+ bool "Support for the Framebuffer Console Decorations"
-+ depends on FRAMEBUFFER_CONSOLE=y && !FB_TILEBLITTING
-+ default n
-+ ---help---
-+ This option enables support for framebuffer console decorations which
-+ makes it possible to display images in the background of the system
-+ consoles. Note that userspace utilities are necessary in order to take
-+ advantage of these features. Refer to Documentation/fb/fbcondecor.txt
-+ for more information.
-+
-+ If unsure, say N.
-+
- config STI_CONSOLE
- bool "STI text console"
- depends on PARISC && HAS_IOMEM
-diff --git a/drivers/video/console/Makefile b/drivers/video/console/Makefile
-index db07b784bd2c..3e369bd120b8 100644
---- a/drivers/video/console/Makefile
-+++ b/drivers/video/console/Makefile
-@@ -9,4 +9,5 @@ obj-$(CONFIG_STI_CONSOLE) += sticon.o sticore.o
- obj-$(CONFIG_VGA_CONSOLE) += vgacon.o
- obj-$(CONFIG_MDA_CONSOLE) += mdacon.o
-
-+obj-$(CONFIG_FB_CON_DECOR) += fbcondecor.o cfbcondecor.o
- obj-$(CONFIG_FB_STI) += sticore.o
-diff --git a/drivers/video/console/cfbcondecor.c b/drivers/video/console/cfbcondecor.c
-new file mode 100644
-index 000000000000..b00960803edc
---- /dev/null
-+++ b/drivers/video/console/cfbcondecor.c
-@@ -0,0 +1,473 @@
-+/*
-+ * linux/drivers/video/cfbcon_decor.c -- Framebuffer decor render functions
-+ *
-+ * Copyright (C) 2004 Michal Januszewski <michalj+fbcondecor@gmail.com>
-+ *
-+ * Code based upon "Bootdecor" (C) 2001-2003
-+ * Volker Poplawski <volker@poplawski.de>,
-+ * Stefan Reinauer <stepan@suse.de>,
-+ * Steffen Winterfeldt <snwint@suse.de>,
-+ * Michael Schroeder <mls@suse.de>,
-+ * Ken Wimer <wimer@suse.de>.
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive for
-+ * more details.
-+ */
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/fb.h>
-+#include <linux/selection.h>
-+#include <linux/slab.h>
-+#include <linux/vt_kern.h>
-+#include <asm/irq.h>
-+
-+#include "../fbdev/core/fbcon.h"
-+#include "fbcondecor.h"
-+
-+#define parse_pixel(shift, bpp, type) \
-+ do { \
-+ if (d & (0x80 >> (shift))) \
-+ dd2[(shift)] = fgx; \
-+ else \
-+ dd2[(shift)] = transparent ? *(type *)decor_src : bgx; \
-+ decor_src += (bpp); \
-+ } while (0) \
-+
-+extern int get_color(struct vc_data *vc, struct fb_info *info,
-+ u16 c, int is_fg);
-+
-+void fbcon_decor_fix_pseudo_pal(struct fb_info *info, struct vc_data *vc)
-+{
-+ int i, j, k;
-+ int minlen = min(min(info->var.red.length, info->var.green.length),
-+ info->var.blue.length);
-+ u32 col;
-+
-+ for (j = i = 0; i < 16; i++) {
-+ k = color_table[i];
-+
-+ col = ((vc->vc_palette[j++] >> (8-minlen))
-+ << info->var.red.offset);
-+ col |= ((vc->vc_palette[j++] >> (8-minlen))
-+ << info->var.green.offset);
-+ col |= ((vc->vc_palette[j++] >> (8-minlen))
-+ << info->var.blue.offset);
-+ ((u32 *)info->pseudo_palette)[k] = col;
-+ }
-+}
-+
-+void fbcon_decor_renderc(struct fb_info *info, int ypos, int xpos, int height,
-+ int width, u8 *src, u32 fgx, u32 bgx, u8 transparent)
-+{
-+ unsigned int x, y;
-+ u32 dd;
-+ int bytespp = ((info->var.bits_per_pixel + 7) >> 3);
-+ unsigned int d = ypos * info->fix.line_length + xpos * bytespp;
-+ unsigned int ds = (ypos * info->var.xres + xpos) * bytespp;
-+ u16 dd2[4];
-+
-+ u8 *decor_src = (u8 *)(info->bgdecor.data + ds);
-+ u8 *dst = (u8 *)(info->screen_base + d);
-+
-+ if ((ypos + height) > info->var.yres || (xpos + width) > info->var.xres)
-+ return;
-+
-+ for (y = 0; y < height; y++) {
-+ switch (info->var.bits_per_pixel) {
-+
-+ case 32:
-+ for (x = 0; x < width; x++) {
-+
-+ if ((x & 7) == 0)
-+ d = *src++;
-+ if (d & 0x80)
-+ dd = fgx;
-+ else
-+ dd = transparent ?
-+ *(u32 *)decor_src : bgx;
-+
-+ d <<= 1;
-+ decor_src += 4;
-+ fb_writel(dd, dst);
-+ dst += 4;
-+ }
-+ break;
-+ case 24:
-+ for (x = 0; x < width; x++) {
-+
-+ if ((x & 7) == 0)
-+ d = *src++;
-+ if (d & 0x80)
-+ dd = fgx;
-+ else
-+ dd = transparent ?
-+ (*(u32 *)decor_src & 0xffffff) : bgx;
-+
-+ d <<= 1;
-+ decor_src += 3;
-+#ifdef __LITTLE_ENDIAN
-+ fb_writew(dd & 0xffff, dst);
-+ dst += 2;
-+ fb_writeb((dd >> 16), dst);
-+#else
-+ fb_writew(dd >> 8, dst);
-+ dst += 2;
-+ fb_writeb(dd & 0xff, dst);
-+#endif
-+ dst++;
-+ }
-+ break;
-+ case 16:
-+ for (x = 0; x < width; x += 2) {
-+ if ((x & 7) == 0)
-+ d = *src++;
-+
-+ parse_pixel(0, 2, u16);
-+ parse_pixel(1, 2, u16);
-+#ifdef __LITTLE_ENDIAN
-+ dd = dd2[0] | (dd2[1] << 16);
-+#else
-+ dd = dd2[1] | (dd2[0] << 16);
-+#endif
-+ d <<= 2;
-+ fb_writel(dd, dst);
-+ dst += 4;
-+ }
-+ break;
-+
-+ case 8:
-+ for (x = 0; x < width; x += 4) {
-+ if ((x & 7) == 0)
-+ d = *src++;
-+
-+ parse_pixel(0, 1, u8);
-+ parse_pixel(1, 1, u8);
-+ parse_pixel(2, 1, u8);
-+ parse_pixel(3, 1, u8);
-+
-+#ifdef __LITTLE_ENDIAN
-+ dd = dd2[0] | (dd2[1] << 8) | (dd2[2] << 16) | (dd2[3] << 24);
-+#else
-+ dd = dd2[3] | (dd2[2] << 8) | (dd2[1] << 16) | (dd2[0] << 24);
-+#endif
-+ d <<= 4;
-+ fb_writel(dd, dst);
-+ dst += 4;
-+ }
-+ }
-+
-+ dst += info->fix.line_length - width * bytespp;
-+ decor_src += (info->var.xres - width) * bytespp;
-+ }
-+}
-+
-+#define cc2cx(a) \
-+ ((info->fix.visual == FB_VISUAL_TRUECOLOR || \
-+ info->fix.visual == FB_VISUAL_DIRECTCOLOR) ? \
-+ ((u32 *)info->pseudo_palette)[a] : a)
-+
-+void fbcon_decor_putcs(struct vc_data *vc, struct fb_info *info,
-+ const unsigned short *s, int count, int yy, int xx)
-+{
-+ unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-+ struct fbcon_ops *ops = info->fbcon_par;
-+ int fg_color, bg_color, transparent;
-+ u8 *src;
-+ u32 bgx, fgx;
-+ u16 c = scr_readw(s);
-+
-+ fg_color = get_color(vc, info, c, 1);
-+ bg_color = get_color(vc, info, c, 0);
-+
-+ /* Don't paint the background image if console is blanked */
-+ transparent = ops->blank_state ? 0 :
-+ (vc->vc_decor.bg_color == bg_color);
-+
-+ xx = xx * vc->vc_font.width + vc->vc_decor.tx;
-+ yy = yy * vc->vc_font.height + vc->vc_decor.ty;
-+
-+ fgx = cc2cx(fg_color);
-+ bgx = cc2cx(bg_color);
-+
-+ while (count--) {
-+ c = scr_readw(s++);
-+ src = vc->vc_font.data + (c & charmask) * vc->vc_font.height *
-+ ((vc->vc_font.width + 7) >> 3);
-+
-+ fbcon_decor_renderc(info, yy, xx, vc->vc_font.height,
-+ vc->vc_font.width, src, fgx, bgx, transparent);
-+ xx += vc->vc_font.width;
-+ }
-+}
-+
-+void fbcon_decor_cursor(struct fb_info *info, struct fb_cursor *cursor)
-+{
-+ int i;
-+ unsigned int dsize, s_pitch;
-+ struct fbcon_ops *ops = info->fbcon_par;
-+ struct vc_data *vc;
-+ u8 *src;
-+
-+ /* we really don't need any cursors while the console is blanked */
-+ if (info->state != FBINFO_STATE_RUNNING || ops->blank_state)
-+ return;
-+
-+ vc = vc_cons[ops->currcon].d;
-+
-+ src = kmalloc(64 + sizeof(struct fb_image), GFP_ATOMIC);
-+ if (!src)
-+ return;
-+
-+ s_pitch = (cursor->image.width + 7) >> 3;
-+ dsize = s_pitch * cursor->image.height;
-+ if (cursor->enable) {
-+ switch (cursor->rop) {
-+ case ROP_XOR:
-+ for (i = 0; i < dsize; i++)
-+ src[i] = cursor->image.data[i] ^ cursor->mask[i];
-+ break;
-+ case ROP_COPY:
-+ default:
-+ for (i = 0; i < dsize; i++)
-+ src[i] = cursor->image.data[i] & cursor->mask[i];
-+ break;
-+ }
-+ } else
-+ memcpy(src, cursor->image.data, dsize);
-+
-+ fbcon_decor_renderc(info,
-+ cursor->image.dy + vc->vc_decor.ty,
-+ cursor->image.dx + vc->vc_decor.tx,
-+ cursor->image.height,
-+ cursor->image.width,
-+ (u8 *)src,
-+ cc2cx(cursor->image.fg_color),
-+ cc2cx(cursor->image.bg_color),
-+ cursor->image.bg_color == vc->vc_decor.bg_color);
-+
-+ kfree(src);
-+}
-+
-+static void decorset(u8 *dst, int height, int width, int dstbytes,
-+ u32 bgx, int bpp)
-+{
-+ int i;
-+
-+ if (bpp == 8)
-+ bgx |= bgx << 8;
-+ if (bpp == 16 || bpp == 8)
-+ bgx |= bgx << 16;
-+
-+ while (height-- > 0) {
-+ u8 *p = dst;
-+
-+ switch (bpp) {
-+
-+ case 32:
-+ for (i = 0; i < width; i++) {
-+ fb_writel(bgx, p); p += 4;
-+ }
-+ break;
-+ case 24:
-+ for (i = 0; i < width; i++) {
-+#ifdef __LITTLE_ENDIAN
-+ fb_writew((bgx & 0xffff), (u16 *)p); p += 2;
-+ fb_writeb((bgx >> 16), p++);
-+#else
-+ fb_writew((bgx >> 8), (u16 *)p); p += 2;
-+ fb_writeb((bgx & 0xff), p++);
-+#endif
-+ }
-+ break;
-+ case 16:
-+ for (i = 0; i < width/4; i++) {
-+ fb_writel(bgx, p); p += 4;
-+ fb_writel(bgx, p); p += 4;
-+ }
-+ if (width & 2) {
-+ fb_writel(bgx, p); p += 4;
-+ }
-+ if (width & 1)
-+ fb_writew(bgx, (u16 *)p);
-+ break;
-+ case 8:
-+ for (i = 0; i < width/4; i++) {
-+ fb_writel(bgx, p); p += 4;
-+ }
-+
-+ if (width & 2) {
-+ fb_writew(bgx, p); p += 2;
-+ }
-+ if (width & 1)
-+ fb_writeb(bgx, (u8 *)p);
-+ break;
-+
-+ }
-+ dst += dstbytes;
-+ }
-+}
-+
-+void fbcon_decor_copy(u8 *dst, u8 *src, int height, int width, int linebytes,
-+ int srclinebytes, int bpp)
-+{
-+ int i;
-+
-+ while (height-- > 0) {
-+ u32 *p = (u32 *)dst;
-+ u32 *q = (u32 *)src;
-+
-+ switch (bpp) {
-+
-+ case 32:
-+ for (i = 0; i < width; i++)
-+ fb_writel(*q++, p++);
-+ break;
-+ case 24:
-+ for (i = 0; i < (width * 3 / 4); i++)
-+ fb_writel(*q++, p++);
-+ if ((width * 3) % 4) {
-+ if (width & 2) {
-+ fb_writeb(*(u8 *)q, (u8 *)p);
-+ } else if (width & 1) {
-+ fb_writew(*(u16 *)q, (u16 *)p);
-+ fb_writeb(*(u8 *)((u16 *)q + 1),
-+ (u8 *)((u16 *)p + 2));
-+ }
-+ }
-+ break;
-+ case 16:
-+ for (i = 0; i < width/4; i++) {
-+ fb_writel(*q++, p++);
-+ fb_writel(*q++, p++);
-+ }
-+ if (width & 2)
-+ fb_writel(*q++, p++);
-+ if (width & 1)
-+ fb_writew(*(u16 *)q, (u16 *)p);
-+ break;
-+ case 8:
-+ for (i = 0; i < width/4; i++)
-+ fb_writel(*q++, p++);
-+
-+ if (width & 2) {
-+ fb_writew(*(u16 *)q, (u16 *)p);
-+ q = (u32 *) ((u16 *)q + 1);
-+ p = (u32 *) ((u16 *)p + 1);
-+ }
-+ if (width & 1)
-+ fb_writeb(*(u8 *)q, (u8 *)p);
-+ break;
-+ }
-+
-+ dst += linebytes;
-+ src += srclinebytes;
-+ }
-+}
-+
-+static void decorfill(struct fb_info *info, int sy, int sx, int height,
-+ int width)
-+{
-+ int bytespp = ((info->var.bits_per_pixel + 7) >> 3);
-+ int d = sy * info->fix.line_length + sx * bytespp;
-+ int ds = (sy * info->var.xres + sx) * bytespp;
-+
-+ fbcon_decor_copy((u8 *)(info->screen_base + d), (u8 *)(info->bgdecor.data + ds),
-+ height, width, info->fix.line_length, info->var.xres * bytespp,
-+ info->var.bits_per_pixel);
-+}
-+
-+void fbcon_decor_clear(struct vc_data *vc, struct fb_info *info, int sy, int sx,
-+ int height, int width)
-+{
-+ int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
-+ struct fbcon_ops *ops = info->fbcon_par;
-+ u8 *dst;
-+ int transparent, bg_color = attr_bgcol_ec(bgshift, vc, info);
-+
-+ transparent = (vc->vc_decor.bg_color == bg_color);
-+ sy = sy * vc->vc_font.height + vc->vc_decor.ty;
-+ sx = sx * vc->vc_font.width + vc->vc_decor.tx;
-+ height *= vc->vc_font.height;
-+ width *= vc->vc_font.width;
-+
-+ /* Don't paint the background image if console is blanked */
-+ if (transparent && !ops->blank_state) {
-+ decorfill(info, sy, sx, height, width);
-+ } else {
-+ dst = (u8 *)(info->screen_base + sy * info->fix.line_length +
-+ sx * ((info->var.bits_per_pixel + 7) >> 3));
-+ decorset(dst, height, width, info->fix.line_length, cc2cx(bg_color),
-+ info->var.bits_per_pixel);
-+ }
-+}
-+
-+void fbcon_decor_clear_margins(struct vc_data *vc, struct fb_info *info,
-+ int bottom_only)
-+{
-+ unsigned int tw = vc->vc_cols*vc->vc_font.width;
-+ unsigned int th = vc->vc_rows*vc->vc_font.height;
-+
-+ if (!bottom_only) {
-+ /* top margin */
-+ decorfill(info, 0, 0, vc->vc_decor.ty, info->var.xres);
-+ /* left margin */
-+ decorfill(info, vc->vc_decor.ty, 0, th, vc->vc_decor.tx);
-+ /* right margin */
-+ decorfill(info, vc->vc_decor.ty, vc->vc_decor.tx + tw, th,
-+ info->var.xres - vc->vc_decor.tx - tw);
-+ }
-+ decorfill(info, vc->vc_decor.ty + th, 0,
-+ info->var.yres - vc->vc_decor.ty - th, info->var.xres);
-+}
-+
-+void fbcon_decor_bmove_redraw(struct vc_data *vc, struct fb_info *info, int y,
-+ int sx, int dx, int width)
-+{
-+ u16 *d = (u16 *) (vc->vc_origin + vc->vc_size_row * y + dx * 2);
-+ u16 *s = d + (dx - sx);
-+ u16 *start = d;
-+ u16 *ls = d;
-+ u16 *le = d + width;
-+ u16 c;
-+ int x = dx;
-+ u16 attr = 1;
-+
-+ do {
-+ c = scr_readw(d);
-+ if (attr != (c & 0xff00)) {
-+ attr = c & 0xff00;
-+ if (d > start) {
-+ fbcon_decor_putcs(vc, info, start, d - start, y, x);
-+ x += d - start;
-+ start = d;
-+ }
-+ }
-+ if (s >= ls && s < le && c == scr_readw(s)) {
-+ if (d > start) {
-+ fbcon_decor_putcs(vc, info, start, d - start, y, x);
-+ x += d - start + 1;
-+ start = d + 1;
-+ } else {
-+ x++;
-+ start++;
-+ }
-+ }
-+ s++;
-+ d++;
-+ } while (d < le);
-+ if (d > start)
-+ fbcon_decor_putcs(vc, info, start, d - start, y, x);
-+}
-+
-+void fbcon_decor_blank(struct vc_data *vc, struct fb_info *info, int blank)
-+{
-+ if (blank) {
-+ decorset((u8 *)info->screen_base, info->var.yres, info->var.xres,
-+ info->fix.line_length, 0, info->var.bits_per_pixel);
-+ } else {
-+ update_screen(vc);
-+ fbcon_decor_clear_margins(vc, info, 0);
-+ }
-+}
-+
-diff --git a/drivers/video/console/fbcondecor.c b/drivers/video/console/fbcondecor.c
-new file mode 100644
-index 000000000000..78288a497a60
---- /dev/null
-+++ b/drivers/video/console/fbcondecor.c
-@@ -0,0 +1,549 @@
-+/*
-+ * linux/drivers/video/console/fbcondecor.c -- Framebuffer console decorations
-+ *
-+ * Copyright (C) 2004-2009 Michal Januszewski <michalj+fbcondecor@gmail.com>
-+ *
-+ * Code based upon "Bootsplash" (C) 2001-2003
-+ * Volker Poplawski <volker@poplawski.de>,
-+ * Stefan Reinauer <stepan@suse.de>,
-+ * Steffen Winterfeldt <snwint@suse.de>,
-+ * Michael Schroeder <mls@suse.de>,
-+ * Ken Wimer <wimer@suse.de>.
-+ *
-+ * Compat ioctl support by Thorsten Klein <TK@Thorsten-Klein.de>.
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive for
-+ * more details.
-+ *
-+ */
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <linux/types.h>
-+#include <linux/fb.h>
-+#include <linux/vt_kern.h>
-+#include <linux/vmalloc.h>
-+#include <linux/unistd.h>
-+#include <linux/syscalls.h>
-+#include <linux/init.h>
-+#include <linux/proc_fs.h>
-+#include <linux/workqueue.h>
-+#include <linux/kmod.h>
-+#include <linux/miscdevice.h>
-+#include <linux/device.h>
-+#include <linux/fs.h>
-+#include <linux/compat.h>
-+#include <linux/console.h>
-+#include <linux/binfmts.h>
-+#include <linux/uaccess.h>
-+#include <asm/irq.h>
-+
-+#include "../fbdev/core/fbcon.h"
-+#include "fbcondecor.h"
-+
-+extern signed char con2fb_map[];
-+static int fbcon_decor_enable(struct vc_data *vc);
-+
-+static int initialized;
-+
-+char fbcon_decor_path[KMOD_PATH_LEN] = "/sbin/fbcondecor_helper";
-+EXPORT_SYMBOL(fbcon_decor_path);
-+
-+int fbcon_decor_call_helper(char *cmd, unsigned short vc)
-+{
-+ char *envp[] = {
-+ "HOME=/",
-+ "PATH=/sbin:/bin",
-+ NULL
-+ };
-+
-+ char tfb[5];
-+ char tcons[5];
-+ unsigned char fb = (int) con2fb_map[vc];
-+
-+ char *argv[] = {
-+ fbcon_decor_path,
-+ "2",
-+ cmd,
-+ tcons,
-+ tfb,
-+ vc_cons[vc].d->vc_decor.theme,
-+ NULL
-+ };
-+
-+ snprintf(tfb, 5, "%d", fb);
-+ snprintf(tcons, 5, "%d", vc);
-+
-+ return call_usermodehelper(fbcon_decor_path, argv, envp, UMH_WAIT_EXEC);
-+}
-+
-+/* Disables fbcondecor on a virtual console; called with console sem held. */
-+int fbcon_decor_disable(struct vc_data *vc, unsigned char redraw)
-+{
-+ struct fb_info *info;
-+
-+ if (!vc->vc_decor.state)
-+ return -EINVAL;
-+
-+ info = registered_fb[(int) con2fb_map[vc->vc_num]];
-+
-+ if (info == NULL)
-+ return -EINVAL;
-+
-+ vc->vc_decor.state = 0;
-+ vc_resize(vc, info->var.xres / vc->vc_font.width,
-+ info->var.yres / vc->vc_font.height);
-+-+
-+ if (fg_console == vc->vc_num && redraw) {
-+ redraw_screen(vc, 0);
-+ update_region(vc, vc->vc_origin +
-+ vc->vc_size_row * vc->vc_top,
-+ vc->vc_size_row * (vc->vc_bottom - vc->vc_top) / 2);
-+ }
-+-+
-+ printk(KERN_INFO "fbcondecor: switched decor state to 'off' on console %d\n",
-+ vc->vc_num);
-+-+
-+ return 0;
-+}
-+-+
-+/* Enables fbcondecor on a virtual console; called with console sem held. */
-+static int fbcon_decor_enable(struct vc_data *vc)
-+{-+{
-+ struct fb_info *info;
-+-+
-+ info = registered_fb[(int) con2fb_map[vc->vc_num]];
-+-+
-+ if (vc->vc_decor.twidth == 0 || vc->vc_decor.theight == 0 ||
-+ info == NULL || vc->vc_decor.state || (!info->bgdecor.data &&
-+ vc->vc_num == fg_console))
-+ return -EINVAL;
-+
-+ vc->vc_decor.state = 1;
-+ vc_resize(vc, vc->vc_decor.twidth / vc->vc_font.width,
-+ vc->vc_decor.theight / vc->vc_font.height);
-+
-+ if (fg_console == vc->vc_num) {
-+ redraw_screen(vc, 0);
-+ update_region(vc, vc->vc_origin +
-+ vc->vc_size_row * vc->vc_top,
-+ vc->vc_size_row * (vc->vc_bottom - vc->vc_top) / 2);
-+ fbcon_decor_clear_margins(vc, info, 0);
-+ }
-+
-+ printk(KERN_INFO "fbcondecor: switched decor state to 'on' on console %d\n",
-+ vc->vc_num);
-+
-+ return 0;
-+}
-+
-+static inline int fbcon_decor_ioctl_dosetstate(struct vc_data *vc, unsigned int state, unsigned char origin)
-+{
-+ int ret;
-+
-+ console_lock();
-+ if (!state)
-+ ret = fbcon_decor_disable(vc, 1);
-+ else
-+ ret = fbcon_decor_enable(vc);
-+ console_unlock();
-+
-+ return ret;
-+}
-+
-+static inline void fbcon_decor_ioctl_dogetstate(struct vc_data *vc, unsigned int *state)
-+{
-+ *state = vc->vc_decor.state;
-+}
-+
-+static int fbcon_decor_ioctl_dosetcfg(struct vc_data *vc, struct vc_decor *cfg, unsigned char origin)
-+{
-+ struct fb_info *info;
-+ int len;
-+ char *tmp;
-+
-+ info = registered_fb[(int) con2fb_map[vc->vc_num]];
-+
-+ if (info == NULL || !cfg->twidth || !cfg->theight ||
-+ cfg->tx + cfg->twidth > info->var.xres ||
-+ cfg->ty + cfg->theight > info->var.yres)
-+ return -EINVAL;
-+
-+ len = strnlen_user(cfg->theme, MAX_ARG_STRLEN);
-+ if (!len || len > FBCON_DECOR_THEME_LEN)
-+ return -EINVAL;
-+ tmp = kmalloc(len, GFP_KERNEL);
-+ if (!tmp)
-+ return -ENOMEM;
-+ if (copy_from_user(tmp, (void __user *)cfg->theme, len))
-+ return -EFAULT;
-+ cfg->theme = tmp;
-+ cfg->state = 0;
-+
-+ console_lock();
-+ if (vc->vc_decor.state)
-+ fbcon_decor_disable(vc, 1);
-+ kfree(vc->vc_decor.theme);
-+ vc->vc_decor = *cfg;
-+ console_unlock();
-+
-+ printk(KERN_INFO "fbcondecor: console %d using theme '%s'\n",
-+ vc->vc_num, vc->vc_decor.theme);
-+ return 0;
-+}
-+
-+static int fbcon_decor_ioctl_dogetcfg(struct vc_data *vc,
-+ struct vc_decor *decor)
-+{
-+ char __user *tmp;
-+
-+ tmp = decor->theme;
-+ *decor = vc->vc_decor;
-+ decor->theme = tmp;
-+
-+ if (vc->vc_decor.theme) {
-+ if (copy_to_user(tmp, vc->vc_decor.theme,
-+ strlen(vc->vc_decor.theme) + 1))
-+ return -EFAULT;
-+ } else
-+ if (put_user(0, tmp))
-+ return -EFAULT;
-+
-+ return 0;
-+}
-+
-+static int fbcon_decor_ioctl_dosetpic(struct vc_data *vc, struct fb_image *img,
-+ unsigned char origin)
-+{
-+ struct fb_info *info;
-+ int len;
-+ u8 *tmp;
-+
-+ if (vc->vc_num != fg_console)
-+ return -EINVAL;
-+
-+ info = registered_fb[(int) con2fb_map[vc->vc_num]];
-+
-+ if (info == NULL)
-+ return -EINVAL;
-+
-+ if (img->width != info->var.xres || img->height != info->var.yres) {
-+ printk(KERN_ERR "fbcondecor: picture dimensions mismatch\n");
-+ printk(KERN_ERR "%dx%d vs %dx%d\n", img->width, img->height,
-+ info->var.xres, info->var.yres);
-+ return -EINVAL;
-+ }
-+
-+ if (img->depth != info->var.bits_per_pixel) {
-+ printk(KERN_ERR "fbcondecor: picture depth mismatch\n");
-+ return -EINVAL;
-+ }
-+
-+ if (img->depth == 8) {
-+ if (!img->cmap.len || !img->cmap.red || !img->cmap.green ||
-+ !img->cmap.blue)
-+ return -EINVAL;
-+
-+ tmp = vmalloc(img->cmap.len * 3 * 2);
-+ if (!tmp)
-+ return -ENOMEM;
-+
-+ if (copy_from_user(tmp,
-+ (void __user *)img->cmap.red,
-+ (img->cmap.len << 1)) ||
-+ copy_from_user(tmp + (img->cmap.len << 1),
-+ (void __user *)img->cmap.green,
-+ (img->cmap.len << 1)) ||
-+ copy_from_user(tmp + (img->cmap.len << 2),
-+ (void __user *)img->cmap.blue,
-+ (img->cmap.len << 1))) {
-+ vfree(tmp);
-+ return -EFAULT;
-+ }
-+
-+ img->cmap.transp = NULL;
-+ img->cmap.red = (u16 *)tmp;
-+ img->cmap.green = img->cmap.red + img->cmap.len;
-+ img->cmap.blue = img->cmap.green + img->cmap.len;
-+ } else {
-+ img->cmap.red = NULL;
-+ }
-+
-+ len = ((img->depth + 7) >> 3) * img->width * img->height;
-+
-+ /*
-+ * Allocate an additional byte so that we never go outside of the
-+ * buffer boundaries in the rendering functions in a 24 bpp mode.
-+ */
-+ tmp = vmalloc(len + 1);
-+
-+ if (!tmp)
-+ goto out;
-+
-+ if (copy_from_user(tmp, (void __user *)img->data, len))
-+ goto out;
-+
-+ img->data = tmp;
-+
-+ console_lock();
-+
-+ if (info->bgdecor.data)
-+ vfree((u8 *)info->bgdecor.data);
-+ if (info->bgdecor.cmap.red)
-+ vfree(info->bgdecor.cmap.red);
-+
-+ info->bgdecor = *img;
-+
-+ if (fbcon_decor_active_vc(vc) && fg_console == vc->vc_num) {
-+ redraw_screen(vc, 0);
-+ update_region(vc, vc->vc_origin +
-+ vc->vc_size_row * vc->vc_top,
-+ vc->vc_size_row * (vc->vc_bottom - vc->vc_top) / 2);
-+ fbcon_decor_clear_margins(vc, info, 0);
-+ }
-+
-+ console_unlock();
-+
-+ return 0;
-+
-+out:
-+ if (img->cmap.red)
-+ vfree(img->cmap.red);
-+
-+ if (tmp)
-+ vfree(tmp);
-+ return -ENOMEM;
-+}
-+
-+static long fbcon_decor_ioctl(struct file *filp, u_int cmd, u_long arg)
-+{
-+ struct fbcon_decor_iowrapper __user *wrapper = (void __user *) arg;
-+ struct vc_data *vc = NULL;
-+ unsigned short vc_num = 0;
-+ unsigned char origin = 0;
-+ void __user *data = NULL;
-+
-+ if (!access_ok(VERIFY_READ, wrapper,
-+ sizeof(struct fbcon_decor_iowrapper)))
-+ return -EFAULT;
-+
-+ __get_user(vc_num, &wrapper->vc);
-+ __get_user(origin, &wrapper->origin);
-+ __get_user(data, &wrapper->data);
-+
-+ if (!vc_cons_allocated(vc_num))
-+ return -EINVAL;
-+
-+ vc = vc_cons[vc_num].d;
-+
-+ switch (cmd) {
-+ case FBIOCONDECOR_SETPIC:
-+ {
-+ struct fb_image img;
-+
-+ if (copy_from_user(&img, (struct fb_image __user *)data, sizeof(struct fb_image)))
-+ return -EFAULT;
-+
-+ return fbcon_decor_ioctl_dosetpic(vc, &img, origin);
-+ }
-+ case FBIOCONDECOR_SETCFG:
-+ {
-+ struct vc_decor cfg;
-+
-+ if (copy_from_user(&cfg, (struct vc_decor __user *)data, sizeof(struct vc_decor)))
-+ return -EFAULT;
-+
-+ return fbcon_decor_ioctl_dosetcfg(vc, &cfg, origin);
-+ }
-+ case FBIOCONDECOR_GETCFG:
-+ {
-+ int rval;
-+ struct vc_decor cfg;
-+
-+ if (copy_from_user(&cfg, (struct vc_decor __user *)data, sizeof(struct vc_decor)))
-+ return -EFAULT;
-+
-+ rval = fbcon_decor_ioctl_dogetcfg(vc, &cfg);
-+
-+ if (copy_to_user(data, &cfg, sizeof(struct vc_decor)))
-+ return -EFAULT;
-+ return rval;
-+ }
-+ case FBIOCONDECOR_SETSTATE:
-+ {
-+ unsigned int state = 0;
-+
-+ if (get_user(state, (unsigned int __user *)data))
-+ return -EFAULT;
-+ return fbcon_decor_ioctl_dosetstate(vc, state, origin);
-+ }
-+ case FBIOCONDECOR_GETSTATE:
-+ {
-+ unsigned int state = 0;
-+
-+ fbcon_decor_ioctl_dogetstate(vc, &state);
-+ return put_user(state, (unsigned int __user *)data);
-+ }
-+
-+ default:
-+ return -ENOIOCTLCMD;
-+ }
-+}
-+
-+#ifdef CONFIG_COMPAT
-+
-+static long fbcon_decor_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
-+{
-+ struct fbcon_decor_iowrapper32 __user *wrapper = (void __user *)arg;
-+ struct vc_data *vc = NULL;
-+ unsigned short vc_num = 0;
-+ unsigned char origin = 0;
-+ compat_uptr_t data_compat = 0;
-+ void __user *data = NULL;
-+
-+ if (!access_ok(VERIFY_READ, wrapper,
-+ sizeof(struct fbcon_decor_iowrapper32)))
-+ return -EFAULT;
-+
-+ __get_user(vc_num, &wrapper->vc);
-+ __get_user(origin, &wrapper->origin);
-+ __get_user(data_compat, &wrapper->data);
-+ data = compat_ptr(data_compat);
-+
-+ if (!vc_cons_allocated(vc_num))
-+ return -EINVAL;
-+
-+ vc = vc_cons[vc_num].d;
-+
-+ switch (cmd) {
-+ case FBIOCONDECOR_SETPIC32:
-+ {
-+ struct fb_image32 img_compat;
-+ struct fb_image img;
-+
-+ if (copy_from_user(&img_compat, (struct fb_image32 __user *)data, sizeof(struct fb_image32)))
-+ return -EFAULT;
-+
-+ fb_image_from_compat(img, img_compat);
-+
-+ return fbcon_decor_ioctl_dosetpic(vc, &img, origin);
-+ }
-+
-+ case FBIOCONDECOR_SETCFG32:
-+ {
-+ struct vc_decor32 cfg_compat;
-+ struct vc_decor cfg;
-+
-+ if (copy_from_user(&cfg_compat, (struct vc_decor32 __user *)data, sizeof(struct vc_decor32)))
-+ return -EFAULT;
-+
-+ vc_decor_from_compat(cfg, cfg_compat);
-+
-+ return fbcon_decor_ioctl_dosetcfg(vc, &cfg, origin);
-+ }
-+
-+ case FBIOCONDECOR_GETCFG32:
-+ {
-+ int rval;
-+ struct vc_decor32 cfg_compat;
-+ struct vc_decor cfg;
-+
-+ if (copy_from_user(&cfg_compat, (struct vc_decor32 __user *)data, sizeof(struct vc_decor32)))
-+ return -EFAULT;
-+ cfg.theme = compat_ptr(cfg_compat.theme);
-+
-+ rval = fbcon_decor_ioctl_dogetcfg(vc, &cfg);
-+
-+ vc_decor_to_compat(cfg_compat, cfg);
-+
-+ if (copy_to_user((struct vc_decor32 __user *)data, &cfg_compat, sizeof(struct vc_decor32)))
-+ return -EFAULT;
-+ return rval;
-+ }
-+
-+ case FBIOCONDECOR_SETSTATE32:
-+ {
-+ compat_uint_t state_compat = 0;
-+ unsigned int state = 0;
-+
-+ if (get_user(state_compat, (compat_uint_t __user *)data))
-+ return -EFAULT;
-+
-+ state = (unsigned int)state_compat;
-+
-+ return fbcon_decor_ioctl_dosetstate(vc, state, origin);
-+ }
-+
-+ case FBIOCONDECOR_GETSTATE32:
-+ {
-+ compat_uint_t state_compat = 0;
-+ unsigned int state = 0;
-+
-+ fbcon_decor_ioctl_dogetstate(vc, &state);
-+ state_compat = (compat_uint_t)state;
-+
-+ return put_user(state_compat, (compat_uint_t __user *)data);
-+ }
-+
-+ default:
-+ return -ENOIOCTLCMD;
-+ }
-+}
-+#else
-+ #define fbcon_decor_compat_ioctl NULL
-+#endif
-+
-+static struct file_operations fbcon_decor_ops = {
-+ .owner = THIS_MODULE,
-+ .unlocked_ioctl = fbcon_decor_ioctl,
-+ .compat_ioctl = fbcon_decor_compat_ioctl
-+};
-+
-+static struct miscdevice fbcon_decor_dev = {
-+ .minor = MISC_DYNAMIC_MINOR,
-+ .name = "fbcondecor",
-+ .fops = &fbcon_decor_ops
-+};
-+
-+void fbcon_decor_reset(void)
-+{
-+ int i;
-+
-+ for (i = 0; i < num_registered_fb; i++) {
-+ registered_fb[i]->bgdecor.data = NULL;
-+ registered_fb[i]->bgdecor.cmap.red = NULL;
-+ }
-+
-+ for (i = 0; i < MAX_NR_CONSOLES && vc_cons[i].d; i++) {
-+ vc_cons[i].d->vc_decor.state = vc_cons[i].d->vc_decor.twidth =
-+ vc_cons[i].d->vc_decor.theight = 0;
-+ vc_cons[i].d->vc_decor.theme = NULL;
-+ }
-+}
-+
-+int fbcon_decor_init(void)
-+{
-+ int i;
-+
-+ fbcon_decor_reset();
-+
-+ if (initialized)
-+ return 0;
-+
-+ i = misc_register(&fbcon_decor_dev);
-+ if (i) {
-+ printk(KERN_ERR "fbcondecor: failed to register device\n");
-+ return i;
-+ }
-+
-+ fbcon_decor_call_helper("init", 0);
-+ initialized = 1;
-+ return 0;
-+}
-+
-+int fbcon_decor_exit(void)
-+{
-+ fbcon_decor_reset();
-+ return 0;
-+}
-diff --git a/drivers/video/console/fbcondecor.h b/drivers/video/console/fbcondecor.h
-new file mode 100644
-index 000000000000..c49386c16695
---- /dev/null
-+++ b/drivers/video/console/fbcondecor.h
-@@ -0,0 +1,77 @@
-+/*
-+ * linux/drivers/video/console/fbcondecor.h -- Framebuffer Console Decoration headers
-+ *
-+ * Copyright (C) 2004 Michal Januszewski <michalj+fbcondecor@gmail.com>
-+ *
-+ */
-+
-+#ifndef __FBCON_DECOR_H
-+#define __FBCON_DECOR_H
-+
-+#ifndef _LINUX_FB_H
-+#include <linux/fb.h>
-+#endif
-+
-+/* This is needed for vc_cons in fbcmap.c */
-+#include <linux/vt_kern.h>
-+
-+struct fb_cursor;
-+struct fb_info;
-+struct vc_data;
-+
-+#ifdef CONFIG_FB_CON_DECOR
-+/* fbcondecor.c */
-+int fbcon_decor_init(void);
-+int fbcon_decor_exit(void);
-+int fbcon_decor_call_helper(char *cmd, unsigned short cons);
-+int fbcon_decor_disable(struct vc_data *vc, unsigned char redraw);
-+
-+/* cfbcondecor.c */
-+void fbcon_decor_putcs(struct vc_data *vc, struct fb_info *info, const unsigned short *s, int count, int yy, int xx);
-+void fbcon_decor_cursor(struct fb_info *info, struct fb_cursor *cursor);
-+void fbcon_decor_clear(struct vc_data *vc, struct fb_info *info, int sy, int sx, int height, int width);
-+void fbcon_decor_clear_margins(struct vc_data *vc, struct fb_info *info, int bottom_only);
-+void fbcon_decor_blank(struct vc_data *vc, struct fb_info *info, int blank);
-+void fbcon_decor_bmove_redraw(struct vc_data *vc, struct fb_info *info, int y, int sx, int dx, int width);
-+void fbcon_decor_copy(u8 *dst, u8 *src, int height, int width, int linebytes, int srclinesbytes, int bpp);
-+void fbcon_decor_fix_pseudo_pal(struct fb_info *info, struct vc_data *vc);
-+
-+/* vt.c */
-+void acquire_console_sem(void);
-+void release_console_sem(void);
-+void do_unblank_screen(int entering_gfx);
-+
-+/* struct vc_data *y */
-+#define fbcon_decor_active_vc(y) (y->vc_decor.state && y->vc_decor.theme)
-+
-+/* struct fb_info *x, struct vc_data *y */
-+#define fbcon_decor_active_nores(x, y) (x->bgdecor.data && fbcon_decor_active_vc(y))
-+
-+/* struct fb_info *x, struct vc_data *y */
-+#define fbcon_decor_active(x, y) (fbcon_decor_active_nores(x, y) && \
-+ x->bgdecor.width == x->var.xres && \
-+ x->bgdecor.height == x->var.yres && \
-+ x->bgdecor.depth == x->var.bits_per_pixel)
-+
-+#else /* CONFIG_FB_CON_DECOR */
-+
-+static inline void fbcon_decor_putcs(struct vc_data *vc, struct fb_info *info, const unsigned short *s, int count, int yy, int xx) {}
-+static inline void fbcon_decor_putc(struct vc_data *vc, struct fb_info *info, int c, int ypos, int xpos) {}
-+static inline void fbcon_decor_cursor(struct fb_info *info, struct fb_cursor *cursor) {}
-+static inline void fbcon_decor_clear(struct vc_data *vc, struct fb_info *info, int sy, int sx, int height, int width) {}
-+static inline void fbcon_decor_clear_margins(struct vc_data *vc, struct fb_info *info, int bottom_only) {}
-+static inline void fbcon_decor_blank(struct vc_data *vc, struct fb_info *info, int blank) {}
-+static inline void fbcon_decor_bmove_redraw(struct vc_data *vc, struct fb_info *info, int y, int sx, int dx, int width) {}
-+static inline void fbcon_decor_fix_pseudo_pal(struct fb_info *info, struct vc_data *vc) {}
-+static inline int fbcon_decor_call_helper(char *cmd, unsigned short cons) { return 0; }
-+static inline int fbcon_decor_init(void) { return 0; }
-+static inline int fbcon_decor_exit(void) { return 0; }
-+static inline int fbcon_decor_disable(struct vc_data *vc, unsigned char redraw) { return 0; }
-+
-+#define fbcon_decor_active_vc(y) (0)
-+#define fbcon_decor_active_nores(x, y) (0)
-+#define fbcon_decor_active(x, y) (0)
-+
-+#endif /* CONFIG_FB_CON_DECOR */
-+
-+#endif /* __FBCON_DECOR_H */
-diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
-index 591a13a59787..d774f89b710a 100644
---- a/drivers/video/fbdev/Kconfig
-+++ b/drivers/video/fbdev/Kconfig
-@@ -1118,7 +1118,6 @@ config FB_MATROX
- select FB_CFB_FILLRECT
- select FB_CFB_COPYAREA
- select FB_CFB_IMAGEBLIT
-- select FB_TILEBLITTING
- select FB_MACMODES if PPC_PMAC
- ---help---
- Say Y here if you have a Matrox Millennium, Matrox Millennium II,
-diff --git a/drivers/video/fbdev/core/bitblit.c b/drivers/video/fbdev/core/bitblit.c
-index ca935c09a261..73e693fa1552 100644
---- a/drivers/video/fbdev/core/bitblit.c
-+++ b/drivers/video/fbdev/core/bitblit.c
-@@ -18,6 +18,7 @@
- #include <linux/console.h>
- #include <asm/types.h>
- #include "fbcon.h"
-+#include "../../console/fbcondecor.h"
-
- /*
- * Accelerated handlers.
-@@ -55,6 +56,13 @@ static void bit_bmove(struct vc_data *vc, struct fb_info *info, int sy,
- area.height = height * vc->vc_font.height;
- area.width = width * vc->vc_font.width;
-
-+ if (fbcon_decor_active(info, vc)) {
-+ area.sx += vc->vc_decor.tx;
-+ area.sy += vc->vc_decor.ty;
-+ area.dx += vc->vc_decor.tx;
-+ area.dy += vc->vc_decor.ty;
-+ }
-+
- info->fbops->fb_copyarea(info, &area);
- }
-
-@@ -379,11 +387,15 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, int mode,
- cursor.image.depth = 1;
- cursor.rop = ROP_XOR;
-
-- if (info->fbops->fb_cursor)
-- err = info->fbops->fb_cursor(info, &cursor);
-+ if (fbcon_decor_active(info, vc)) {
-+ fbcon_decor_cursor(info, &cursor);
-+ } else {
-+ if (info->fbops->fb_cursor)
-+ err = info->fbops->fb_cursor(info, &cursor);
-
-- if (err)
-- soft_cursor(info, &cursor);
-+ if (err)
-+ soft_cursor(info, &cursor);
-+ }
-
- ops->cursor_reset = 0;
- }
-diff --git a/drivers/video/fbdev/core/fbcmap.c b/drivers/video/fbdev/core/fbcmap.c
-index 68a113594808..21f977cb59d2 100644
---- a/drivers/video/fbdev/core/fbcmap.c
-+++ b/drivers/video/fbdev/core/fbcmap.c
-@@ -17,6 +17,8 @@
- #include <linux/slab.h>
- #include <linux/uaccess.h>
-
-+#include "../../console/fbcondecor.h"
-+
- static u16 red2[] __read_mostly = {
- 0x0000, 0xaaaa
- };
-@@ -256,9 +258,12 @@ int fb_set_cmap(struct fb_cmap *cmap, struct fb_info *info)
- break;
- }
- }
-- if (rc == 0)
-+ if (rc == 0) {
- fb_copy_cmap(cmap, &info->cmap);
--
-+ if (fbcon_decor_active(info, vc_cons[fg_console].d) &&
-+ info->fix.visual == FB_VISUAL_DIRECTCOLOR)
-+ fbcon_decor_fix_pseudo_pal(info, vc_cons[fg_console].d);
-+ }
- return rc;
- }
-
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index 5d961e3ac66e..4f52a556083e 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -80,6 +80,7 @@
- #include <asm/irq.h>
-
- #include "fbcon.h"
-+#include "../../console/fbcondecor.h"
-
- #ifdef FBCONDEBUG
- # define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __func__ , ## args)
-@@ -95,7 +96,7 @@ enum {
-
- static struct display fb_display[MAX_NR_CONSOLES];
-
--static signed char con2fb_map[MAX_NR_CONSOLES];
-+signed char con2fb_map[MAX_NR_CONSOLES];
- static signed char con2fb_map_boot[MAX_NR_CONSOLES];
-
- static int logo_lines;
-@@ -288,7 +289,7 @@ static inline int fbcon_is_inactive(struct vc_data *vc, struct fb_info *info)
- !vt_force_oops_output(vc);
- }
-
--static int get_color(struct vc_data *vc, struct fb_info *info,
-+int get_color(struct vc_data *vc, struct fb_info *info,
- u16 c, int is_fg)
- {
- int depth = fb_get_color_depth(&info->var, &info->fix);
-@@ -562,6 +563,9 @@ static int do_fbcon_takeover(int show_logo)
- info_idx = -1;
- } else {
- fbcon_has_console_bind = 1;
-+#ifdef CONFIG_FB_CON_DECOR
-+ fbcon_decor_init();
-+#endif
- }
-
- return err;
-@@ -1032,6 +1036,12 @@ static const char *fbcon_startup(void)
- rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
- cols /= vc->vc_font.width;
- rows /= vc->vc_font.height;
-+
-+ if (fbcon_decor_active(info, vc)) {
-+ cols = vc->vc_decor.twidth / vc->vc_font.width;
-+ rows = vc->vc_decor.theight / vc->vc_font.height;
-+ }
-+
- vc_resize(vc, cols, rows);
-
- DPRINTK("mode: %s\n", info->fix.id);
-@@ -1061,7 +1071,7 @@ static void fbcon_init(struct vc_data *vc, int init)
- cap = info->flags;
-
- if (vc != svc || logo_shown == FBCON_LOGO_DONTSHOW ||
-- (info->fix.type == FB_TYPE_TEXT))
-+ (info->fix.type == FB_TYPE_TEXT) || fbcon_decor_active(info, vc))
- logo = 0;
-
- if (var_to_display(p, &info->var, info))
-@@ -1297,6 +1307,11 @@ static void fbcon_clear(struct vc_data *vc, int sy, int sx, int height,
- fbcon_clear_margins(vc, 0);
- }
-
-+ if (fbcon_decor_active(info, vc)) {
-+ fbcon_decor_clear(vc, info, sy, sx, height, width);
-+ return;
-+ }
-+
- /* Split blits that cross physical y_wrap boundary */
-
- y_break = p->vrows - p->yscroll;
-@@ -1316,10 +1331,15 @@ static void fbcon_putcs(struct vc_data *vc, const unsigned short *s,
- struct display *p = &fb_display[vc->vc_num];
- struct fbcon_ops *ops = info->fbcon_par;
-
-- if (!fbcon_is_inactive(vc, info))
-- ops->putcs(vc, info, s, count, real_y(p, ypos), xpos,
-- get_color(vc, info, scr_readw(s), 1),
-- get_color(vc, info, scr_readw(s), 0));
-+ if (!fbcon_is_inactive(vc, info)) {
-+
-+ if (fbcon_decor_active(info, vc))
-+ fbcon_decor_putcs(vc, info, s, count, ypos, xpos);
-+ else
-+ ops->putcs(vc, info, s, count, real_y(p, ypos), xpos,
-+ get_color(vc, info, scr_readw(s), 1),
-+ get_color(vc, info, scr_readw(s), 0));
-+ }
- }
-
- static void fbcon_putc(struct vc_data *vc, int c, int ypos, int xpos)
-@@ -1335,8 +1355,12 @@ static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
- struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]];
- struct fbcon_ops *ops = info->fbcon_par;
-
-- if (!fbcon_is_inactive(vc, info))
-- ops->clear_margins(vc, info, margin_color, bottom_only);
-+ if (!fbcon_is_inactive(vc, info)) {
-+ if (fbcon_decor_active(info, vc))
-+ fbcon_decor_clear_margins(vc, info, bottom_only);
-+ else
-+ ops->clear_margins(vc, info, margin_color, bottom_only);
-+ }
- }
-
- static void fbcon_cursor(struct vc_data *vc, int mode)
-@@ -1857,7 +1881,7 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b,
- count = vc->vc_rows;
- if (softback_top)
- fbcon_softback_note(vc, t, count);
-- if (logo_shown >= 0)
-+ if (logo_shown >= 0 || fbcon_decor_active(info, vc))
- goto redraw_up;
- switch (p->scrollmode) {
- case SCROLL_MOVE:
-@@ -1950,6 +1974,8 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b,
- count = vc->vc_rows;
- if (logo_shown >= 0)
- goto redraw_down;
-+ if (fbcon_decor_active(info, vc))
-+ goto redraw_down;
- switch (p->scrollmode) {
- case SCROLL_MOVE:
- fbcon_redraw_blit(vc, info, p, b - 1, b - t - count,
-@@ -2098,6 +2124,13 @@ static void fbcon_bmove_rec(struct vc_data *vc, struct display *p, int sy, int s
- }
- return;
- }
-+
-+ if (fbcon_decor_active(info, vc) && sy == dy && height == 1) {
-+ /* must use slower redraw bmove to keep background pic intact */
-+ fbcon_decor_bmove_redraw(vc, info, sy, sx, dx, width);
-+ return;
-+ }
-+
- ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx,
- height, width);
- }
-@@ -2168,8 +2201,8 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
- var.yres = virt_h * virt_fh;
- x_diff = info->var.xres - var.xres;
- y_diff = info->var.yres - var.yres;
-- if (x_diff < 0 || x_diff > virt_fw ||
-- y_diff < 0 || y_diff > virt_fh) {
-+ if ((x_diff < 0 || x_diff > virt_fw ||
-+ y_diff < 0 || y_diff > virt_fh) && !vc->vc_decor.state) {
- const struct fb_videomode *mode;
-
- DPRINTK("attempting resize %ix%i\n", var.xres, var.yres);
-@@ -2205,6 +2238,22 @@ static int fbcon_switch(struct vc_data *vc)
-
- info = registered_fb[con2fb_map[vc->vc_num]];
- ops = info->fbcon_par;
-+ prev_console = ops->currcon;
-+ if (prev_console != -1)
-+ old_info = registered_fb[con2fb_map[prev_console]];
-+
-+#ifdef CONFIG_FB_CON_DECOR
-+ if (!fbcon_decor_active_vc(vc) && info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
-+ struct vc_data *vc_curr = vc_cons[prev_console].d;
-+
-+ if (vc_curr && fbcon_decor_active_vc(vc_curr)) {
-+ // Clear the screen to avoid displaying funky colors
-+ // during palette updates.
-+ memset((u8 *)info->screen_base + info->fix.line_length * info->var.yoffset,
-+ 0, info->var.yres * info->fix.line_length);
-+ }
-+ }
-+#endif
-
- if (softback_top) {
- if (softback_lines)
-@@ -2223,9 +2272,6 @@ static int fbcon_switch(struct vc_data *vc)
- logo_shown = FBCON_LOGO_CANSHOW;
- }
-
-- prev_console = ops->currcon;
-- if (prev_console != -1)
-- old_info = registered_fb[con2fb_map[prev_console]];
- /*
- * FIXME: If we have multiple fbdev's loaded, we need to
- * update all info->currcon. Perhaps, we can place this
-@@ -2269,6 +2315,18 @@ static int fbcon_switch(struct vc_data *vc)
- fbcon_del_cursor_timer(old_info);
- }
-
-+ if (fbcon_decor_active_vc(vc)) {
-+ struct vc_data *vc_curr = vc_cons[prev_console].d;
-+
-+ if (!vc_curr->vc_decor.theme ||
-+ strcmp(vc->vc_decor.theme, vc_curr->vc_decor.theme) ||
-+ (fbcon_decor_active_nores(info, vc_curr) &&
-+ !fbcon_decor_active(info, vc_curr))) {
-+ fbcon_decor_disable(vc, 0);
-+ fbcon_decor_call_helper("modechange", vc->vc_num);
-+ }
-+ }
-+
- if (fbcon_is_inactive(vc, info) ||
- ops->blank_state != FB_BLANK_UNBLANK)
- fbcon_del_cursor_timer(info);
-@@ -2377,15 +2435,20 @@ static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch)
- }
- }
-
-- if (!fbcon_is_inactive(vc, info)) {
-+ if (!fbcon_is_inactive(vc, info)) {
- if (ops->blank_state != blank) {
- ops->blank_state = blank;
- fbcon_cursor(vc, blank ? CM_ERASE : CM_DRAW);
- ops->cursor_flash = (!blank);
-
-- if (!(info->flags & FBINFO_MISC_USEREVENT))
-- if (fb_blank(info, blank))
-- fbcon_generic_blank(vc, info, blank);
-+ if (!(info->flags & FBINFO_MISC_USEREVENT)) {
-+ if (fb_blank(info, blank)) {
-+ if (fbcon_decor_active(info, vc))
-+ fbcon_decor_blank(vc, info, blank);
-+ else
-+ fbcon_generic_blank(vc, info, blank);
-+ }
-+ }
- }
-
- if (!blank)
-@@ -2568,13 +2631,22 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h,
- set_vc_hi_font(vc, true);
-
- if (resize) {
-+ /* reset wrap/pan */
- int cols, rows;
-
- cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
- rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+
-+ if (fbcon_decor_active(info, vc)) {
-+ info->var.xoffset = info->var.yoffset = p->yscroll = 0;
-+ cols = vc->vc_decor.twidth;
-+ rows = vc->vc_decor.theight;
-+ }
- cols /= w;
- rows /= h;
-+
- vc_resize(vc, cols, rows);
-+
- if (con_is_visible(vc) && softback_buf)
- fbcon_update_softback(vc);
- } else if (con_is_visible(vc)
-@@ -2704,7 +2776,11 @@ static void fbcon_set_palette(struct vc_data *vc, const unsigned char *table)
- int i, j, k, depth;
- u8 val;
-
-- if (fbcon_is_inactive(vc, info))
-+ if (fbcon_is_inactive(vc, info)
-+#ifdef CONFIG_FB_CON_DECOR
-+ || vc->vc_num != fg_console
-+#endif
-+ )
- return;
-
- if (!con_is_visible(vc))
-@@ -2730,7 +2806,47 @@ static void fbcon_set_palette(struct vc_data *vc, const unsigned char *table)
- } else
- fb_copy_cmap(fb_default_cmap(1 << depth), &palette_cmap);
-
-- fb_set_cmap(&palette_cmap, info);
-+ if (fbcon_decor_active(info, vc_cons[fg_console].d) &&
-+ info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
-+
-+ u16 *red, *green, *blue;
-+ int minlen = min(min(info->var.red.length, info->var.green.length),
-+ info->var.blue.length);
-+
-+ struct fb_cmap cmap = {
-+ .start = 0,
-+ .len = (1 << minlen),
-+ .red = NULL,
-+ .green = NULL,
-+ .blue = NULL,
-+ .transp = NULL
-+ };
-+
-+ red = kmalloc(256 * sizeof(u16) * 3, GFP_KERNEL);
-+
-+ if (!red)
-+ goto out;
-+
-+ green = red + 256;
-+ blue = green + 256;
-+ cmap.red = red;
-+ cmap.green = green;
-+ cmap.blue = blue;
-+
-+ for (i = 0; i < cmap.len; i++)
-+ red[i] = green[i] = blue[i] = (0xffff * i)/(cmap.len-1);
-+
-+ fb_set_cmap(&cmap, info);
-+ fbcon_decor_fix_pseudo_pal(info, vc_cons[fg_console].d);
-+ kfree(red);
-+
-+ return;
-+
-+ } else if (fbcon_decor_active(info, vc_cons[fg_console].d) &&
-+ info->var.bits_per_pixel == 8 && info->bgdecor.cmap.red != NULL)
-+ fb_set_cmap(&info->bgdecor.cmap, info);
-+
-+out: fb_set_cmap(&palette_cmap, info);
- }
-
- static u16 *fbcon_screen_pos(struct vc_data *vc, int offset)
-@@ -2955,7 +3071,14 @@ static void fbcon_modechanged(struct fb_info *info)
- rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
- cols /= vc->vc_font.width;
- rows /= vc->vc_font.height;
-- vc_resize(vc, cols, rows);
-+
-+ if (!fbcon_decor_active_nores(info, vc)) {
-+ vc_resize(vc, cols, rows);
-+ } else {
-+ fbcon_decor_disable(vc, 0);
-+ fbcon_decor_call_helper("modechange", vc->vc_num);
-+ }
-+
- updatescrollmode(p, info, vc);
- scrollback_max = 0;
- scrollback_current = 0;
-@@ -3000,7 +3123,8 @@ static void fbcon_set_all_vcs(struct fb_info *info)
- rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
- cols /= vc->vc_font.width;
- rows /= vc->vc_font.height;
-- vc_resize(vc, cols, rows);
-+ if (!fbcon_decor_active_nores(info, vc))
-+ vc_resize(vc, cols, rows);
- }
-
- if (fg != -1)
-@@ -3708,6 +3832,7 @@ static void fbcon_exit(void)
- }
- }
-
-+ fbcon_decor_exit();
- fbcon_has_exited = 1;
- }
-
-diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
-index c48f083d522a..39de63aedf83 100644
---- a/drivers/video/fbdev/core/fbmem.c
-+++ b/drivers/video/fbdev/core/fbmem.c
-@@ -1248,15 +1248,6 @@ struct fb_fix_screeninfo32 {
- u16 reserved[3];
- };
-
--struct fb_cmap32 {
-- u32 start;
-- u32 len;
-- compat_caddr_t red;
-- compat_caddr_t green;
-- compat_caddr_t blue;
-- compat_caddr_t transp;
--};
--
- static int fb_getput_cmap(struct fb_info *info, unsigned int cmd,
- unsigned long arg)
- {
-diff --git a/include/linux/console_decor.h b/include/linux/console_decor.h
-new file mode 100644
-index 000000000000..15143556c2aa
---- /dev/null
-+++ b/include/linux/console_decor.h
-@@ -0,0 +1,46 @@
-+#ifndef _LINUX_CONSOLE_DECOR_H_
-+#define _LINUX_CONSOLE_DECOR_H_ 1
-+
-+/* A structure used by the framebuffer console decorations (drivers/video/console/fbcondecor.c) */
-+struct vc_decor {
-+ __u8 bg_color; /* The color that is to be treated as transparent */
-+ __u8 state; /* Current decor state: 0 = off, 1 = on */
-+ __u16 tx, ty; /* Top left corner coordinates of the text field */
-+ __u16 twidth, theight; /* Width and height of the text field */
-+ char *theme;
-+};
-+
-+#ifdef __KERNEL__
-+#ifdef CONFIG_COMPAT
-+#include <linux/compat.h>
-+
-+struct vc_decor32 {
-+ __u8 bg_color; /* The color that is to be treated as transparent */
-+ __u8 state; /* Current decor state: 0 = off, 1 = on */
-+ __u16 tx, ty; /* Top left corner coordinates of the text field */
-+ __u16 twidth, theight; /* Width and height of the text field */
-+ compat_uptr_t theme;
-+};
-+
-+#define vc_decor_from_compat(to, from) \
-+ (to).bg_color = (from).bg_color; \
-+ (to).state = (from).state; \
-+ (to).tx = (from).tx; \
-+ (to).ty = (from).ty; \
-+ (to).twidth = (from).twidth; \
-+ (to).theight = (from).theight; \
-+ (to).theme = compat_ptr((from).theme)
-+
-+#define vc_decor_to_compat(to, from) \
-+ (to).bg_color = (from).bg_color; \
-+ (to).state = (from).state; \
-+ (to).tx = (from).tx; \
-+ (to).ty = (from).ty; \
-+ (to).twidth = (from).twidth; \
-+ (to).theight = (from).theight; \
-+ (to).theme = ptr_to_compat((from).theme)
-+
-+#endif /* CONFIG_COMPAT */
-+#endif /* __KERNEL__ */
-+
-+#endif
-diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h
-index fea64f2692a0..13ccf7cf8368 100644
---- a/include/linux/console_struct.h
-+++ b/include/linux/console_struct.h
-@@ -21,6 +21,7 @@ struct uni_pagedir;
- struct uni_screen;
-
- #define NPAR 16
-+#include <linux/console_decor.h>
-
- /*
- * Example: vc_data of a console that was scrolled 3 lines down.
-@@ -142,6 +143,8 @@ struct vc_data {
- struct uni_pagedir **vc_uni_pagedir_loc; /* [!] Location of uni_pagedir variable for this console */
- struct uni_screen *vc_uni_screen; /* unicode screen content */
- bool vc_panic_force_write; /* when oops/panic this VC can accept forced output/blanking */
-+
-+ struct vc_decor vc_decor;
- /* additional information is in vt_kern.h */
- };
-
-diff --git a/include/linux/fb.h b/include/linux/fb.h
-index 3e7e75383d32..be35708b3ef0 100644
---- a/include/linux/fb.h
-+++ b/include/linux/fb.h
-@@ -239,6 +239,34 @@ struct fb_deferred_io {
- };
- #endif
-
-+#ifdef __KERNEL__
-+#ifdef CONFIG_COMPAT
-+struct fb_image32 {
-+ __u32 dx; /* Where to place image */
-+ __u32 dy;
-+ __u32 width; /* Size of image */
-+ __u32 height;
-+ __u32 fg_color; /* Only used when a mono bitmap */
-+ __u32 bg_color;
-+ __u8 depth; /* Depth of the image */
-+ const compat_uptr_t data; /* Pointer to image data */
-+ struct fb_cmap32 cmap; /* color map info */
-+};
-+
-+#define fb_image_from_compat(to, from) \
-+ (to).dx = (from).dx; \
-+ (to).dy = (from).dy; \
-+ (to).width = (from).width; \
-+ (to).height = (from).height; \
-+ (to).fg_color = (from).fg_color; \
-+ (to).bg_color = (from).bg_color; \
-+ (to).depth = (from).depth; \
-+ (to).data = compat_ptr((from).data); \
-+ fb_cmap_from_compat((to).cmap, (from).cmap)
-+
-+#endif /* CONFIG_COMPAT */
-+#endif /* __KERNEL__ */
-+
- /*
- * Frame buffer operations
- *
-@@ -514,6 +542,9 @@ struct fb_info {
- #define FBINFO_STATE_SUSPENDED 1
- u32 state; /* Hardware state i.e suspend */
- void *fbcon_par; /* fbcon use-only private area */
-+
-+ struct fb_image bgdecor;
-+
- /* From here on everything is device dependent */
- void *par;
- /* we need the PCI or similar aperture base/size not
-diff --git a/include/uapi/linux/fb.h b/include/uapi/linux/fb.h
-index 6cd9b198b7c6..a228440649fa 100644
---- a/include/uapi/linux/fb.h
-+++ b/include/uapi/linux/fb.h
-@@ -9,6 +9,23 @@
-
- #define FB_MAX 32 /* sufficient for now */
-
-+struct fbcon_decor_iowrapper {
-+ unsigned short vc; /* Virtual console */
-+ unsigned char origin; /* Point of origin of the request */
-+ void *data;
-+};
-+
-+#ifdef __KERNEL__
-+#ifdef CONFIG_COMPAT
-+#include <linux/compat.h>
-+struct fbcon_decor_iowrapper32 {
-+ unsigned short vc; /* Virtual console */
-+ unsigned char origin; /* Point of origin of the request */
-+ compat_uptr_t data;
-+};
-+#endif /* CONFIG_COMPAT */
-+#endif /* __KERNEL__ */
-+
- /* ioctls
- 0x46 is 'F' */
- #define FBIOGET_VSCREENINFO 0x4600
-@@ -36,6 +53,25 @@
- #define FBIOGET_DISPINFO 0x4618
- #define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
-
-+#define FBIOCONDECOR_SETCFG _IOWR('F', 0x19, struct fbcon_decor_iowrapper)
-+#define FBIOCONDECOR_GETCFG _IOR('F', 0x1A, struct fbcon_decor_iowrapper)
-+#define FBIOCONDECOR_SETSTATE _IOWR('F', 0x1B, struct fbcon_decor_iowrapper)
-+#define FBIOCONDECOR_GETSTATE _IOR('F', 0x1C, struct fbcon_decor_iowrapper)
-+#define FBIOCONDECOR_SETPIC _IOWR('F', 0x1D, struct fbcon_decor_iowrapper)
-+#ifdef __KERNEL__
-+#ifdef CONFIG_COMPAT
-+#define FBIOCONDECOR_SETCFG32 _IOWR('F', 0x19, struct fbcon_decor_iowrapper32)
-+#define FBIOCONDECOR_GETCFG32 _IOR('F', 0x1A, struct fbcon_decor_iowrapper32)
-+#define FBIOCONDECOR_SETSTATE32 _IOWR('F', 0x1B, struct fbcon_decor_iowrapper32)
-+#define FBIOCONDECOR_GETSTATE32 _IOR('F', 0x1C, struct fbcon_decor_iowrapper32)
-+#define FBIOCONDECOR_SETPIC32 _IOWR('F', 0x1D, struct fbcon_decor_iowrapper32)
-+#endif /* CONFIG_COMPAT */
-+#endif /* __KERNEL__ */
-+
-+#define FBCON_DECOR_THEME_LEN 128 /* Maximum length of a theme name */
-+#define FBCON_DECOR_IO_ORIG_KERNEL 0 /* Kernel ioctl origin */
-+#define FBCON_DECOR_IO_ORIG_USER 1 /* User ioctl origin */
-+
- #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */
- #define FB_TYPE_PLANES 1 /* Non interleaved planes */
- #define FB_TYPE_INTERLEAVED_PLANES 2 /* Interleaved planes */
-@@ -278,6 +314,29 @@ struct fb_var_screeninfo {
- __u32 reserved[4]; /* Reserved for future compatibility */
- };
-
-+#ifdef __KERNEL__
-+#ifdef CONFIG_COMPAT
-+struct fb_cmap32 {
-+ __u32 start;
-+ __u32 len; /* Number of entries */
-+ compat_uptr_t red; /* Red values */
-+ compat_uptr_t green;
-+ compat_uptr_t blue;
-+ compat_uptr_t transp; /* transparency, can be NULL */
-+};
-+
-+#define fb_cmap_from_compat(to, from) \
-+ (to).start = (from).start; \
-+ (to).len = (from).len; \
-+ (to).red = compat_ptr((from).red); \
-+ (to).green = compat_ptr((from).green); \
-+ (to).blue = compat_ptr((from).blue); \
-+ (to).transp = compat_ptr((from).transp)
-+
-+#endif /* CONFIG_COMPAT */
-+#endif /* __KERNEL__ */
-+
-+
- struct fb_cmap {
- __u32 start; /* First entry */
- __u32 len; /* Number of entries */
-diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index 9a85c7ae7362..9722dbea3675 100644
---- a/kernel/sysctl.c
-+++ b/kernel/sysctl.c
-@@ -155,6 +155,10 @@ static const int cap_last_cap = CAP_LAST_CAP;
- static unsigned long hung_task_timeout_max = (LONG_MAX/HZ);
- #endif
-
-+#ifdef CONFIG_FB_CON_DECOR
-+extern char fbcon_decor_path[];
-+#endif
-+
- #ifdef CONFIG_INOTIFY_USER
- #include <linux/inotify.h>
- #endif
-@@ -294,6 +298,15 @@ static struct ctl_table sysctl_base_table[] = {
- .mode = 0555,
- .child = dev_table,
- },
-+#ifdef CONFIG_FB_CON_DECOR
-+ {
-+ .procname = "fbcondecor",
-+ .data = &fbcon_decor_path,
-+ .maxlen = KMOD_PATH_LEN,
-+ .mode = 0644,
-+ .proc_handler = &proc_dostring,
-+ },
-+#endif
- { }
- };
-
diff --git a/sys-kernel/boest-v4.19.37/0012-4.19-4400_alpha-sysctl-uac.patch.patch b/sys-kernel/boest-v4.19.37/0012-4.19-4400_alpha-sysctl-uac.patch.patch
deleted file mode 100644
index e34cdb47..00000000
--- a/sys-kernel/boest-v4.19.37/0012-4.19-4400_alpha-sysctl-uac.patch.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 5a5482b09ddf32789590945aca850d4b37db7f7a Mon Sep 17 00:00:00 2001
-From: Mike Pagano <mpagano@gentoo.org>
-Date: Fri, 28 Sep 2018 08:20:14 -0400
-Subject: [PATCH 12/14] 4.19:4400_alpha-sysctl-uac.patch
-
----
- arch/alpha/Kconfig | 27 +++++++++++++++++++++
- arch/alpha/kernel/traps.c | 51 +++++++++++++++++++++++++++++++++++++++
- kernel/sysctl.c | 12 +++++++++
- 3 files changed, 90 insertions(+)
-
-diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
-index 5b4f88363453..47268c1353de 100644
---- a/arch/alpha/Kconfig
-+++ b/arch/alpha/Kconfig
-@@ -681,6 +681,33 @@ config HZ
- default 1200 if HZ_1200
- default 1024
-
-+config ALPHA_UAC_SYSCTL
-+ bool "Configure UAC policy via sysctl"
-+ depends on SYSCTL
-+ default y
-+ ---help---
-+ Configuring the UAC (unaligned access control) policy on a Linux
-+ system usually involves setting a compile time define. If you say
-+ Y here, you will be able to modify the UAC policy at runtime using
-+ the /proc interface.
-+
-+ The UAC policy defines the action Linux should take when an
-+ unaligned memory access occurs. The action can include printing a
-+ warning message (NOPRINT), sending a signal to the offending
-+ program to help developers debug their applications (SIGBUS), or
-+ disabling the transparent fixing (NOFIX).
-+
-+ The sysctls will be initialized to the compile-time defined UAC
-+ policy. You can change these manually, or with the sysctl(8)
-+ userspace utility.
-+
-+ To disable the warning messages at runtime, you would use
-+
-+ echo 1 > /proc/sys/kernel/uac/noprint
-+
-+ This is pretty harmless. Say Y if you're not sure.
-+
-+
- source "drivers/pci/Kconfig"
- source "drivers/eisa/Kconfig"
-
-diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c
-index bc9627698796..170a397b1183 100644
---- a/arch/alpha/kernel/traps.c
-+++ b/arch/alpha/kernel/traps.c
-@@ -105,6 +105,49 @@ static char * ireg_name[] = {"v0", "t0", "t1", "t2", "t3", "t4", "t5", "t6",
- "t10", "t11", "ra", "pv", "at", "gp", "sp", "zero"};
- #endif
-
-+#ifdef CONFIG_ALPHA_UAC_SYSCTL
-+
-+#include <linux/sysctl.h>
-+-+
-+static int enabled_noprint = 0;
-+static int enabled_sigbus = 0;
-+static int enabled_nofix = 0;
-+-+
-+struct ctl_table uac_table[] = {
-+ {
-+ .procname = "noprint",
-+ .data = &enabled_noprint,
-+ .maxlen = sizeof (int),
-+ .mode = 0644,
-+ .proc_handler = &proc_dointvec,
-+ },
-+ {
-+ .procname = "sigbus",
-+ .data = &enabled_sigbus,
-+ .maxlen = sizeof (int),
-+ .mode = 0644,
-+ .proc_handler = &proc_dointvec,
-+ },
-+ {
-+ .procname = "nofix",
-+ .data = &enabled_nofix,
-+ .maxlen = sizeof (int),
-+ .mode = 0644,
-+ .proc_handler = &proc_dointvec,
-+ },
-+ { }
-+};
-+
-+static int __init init_uac_sysctl(void)
-+{
-+ /* Initialize sysctls with the #defined UAC policy */
-+ enabled_noprint = (test_thread_flag (TS_UAC_NOPRINT)) ? 1 : 0;
-+ enabled_sigbus = (test_thread_flag (TS_UAC_SIGBUS)) ? 1 : 0;
-+ enabled_nofix = (test_thread_flag (TS_UAC_NOFIX)) ? 1 : 0;
-+ return 0;
-+}
-+#endif
-+
- static void
- dik_show_code(unsigned int *pc)
- {
-@@ -732,7 +775,12 @@ do_entUnaUser(void __user * va, unsigned long opcode,
- /* Check the UAC bits to decide what the user wants us to do
- with the unaliged access. */
-
-+#ifndef CONFIG_ALPHA_UAC_SYSCTL
- if (!(current_thread_info()->status & TS_UAC_NOPRINT)) {
-+#else /* CONFIG_ALPHA_UAC_SYSCTL */
-+ if (!(current_thread_info()->status & TS_UAC_NOPRINT) &&
-+ !(enabled_noprint)) {
-+#endif /* CONFIG_ALPHA_UAC_SYSCTL */
- if (__ratelimit(&ratelimit)) {
- printk("%s(%d): unaligned trap at %016lx: %p %lx %ld\n",
- current->comm, task_pid_nr(current),
-@@ -992,3 +1040,6 @@ trap_init(void)
- wrent(entSys, 5);
- wrent(entDbg, 6);
- }
-+#ifdef CONFIG_ALPHA_UAC_SYSCTL
-+ __initcall(init_uac_sysctl);
-+#endif
-diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index 9722dbea3675..739fc0f46f40 100644
---- a/kernel/sysctl.c
-+++ b/kernel/sysctl.c
-@@ -162,6 +162,11 @@ extern char fbcon_decor_path[];
- #ifdef CONFIG_INOTIFY_USER
- #include <linux/inotify.h>
- #endif
-+
-+#ifdef CONFIG_ALPHA_UAC_SYSCTL
-+extern struct ctl_table uac_table[];
-+#endif
-+
- #ifdef CONFIG_SPARC
- #endif
-
-@@ -1911,6 +1916,13 @@ static struct ctl_table debug_table[] = {
- .extra2 = &one,
- },
- #endif
-+#ifdef CONFIG_ALPHA_UAC_SYSCTL
-+ {
-+ .procname = "uac",
-+ .mode = 0555,
-+ .child = uac_table,
-+ },
-+#endif /* CONFIG_ALPHA_UAC_SYSCTL */
- { }
- };
-
diff --git a/sys-kernel/boest-v4.19.37/0013-4.19-4567_distro-Gentoo-Kconfig.patch.patch b/sys-kernel/boest-v4.19.37/0013-4.19-4567_distro-Gentoo-Kconfig.patch.patch
deleted file mode 100644
index 70bb6856..00000000
--- a/sys-kernel/boest-v4.19.37/0013-4.19-4567_distro-Gentoo-Kconfig.patch.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-From 4e342e2ba1c9e65a0cbb971593e221de72af0dc2 Mon Sep 17 00:00:00 2001
-From: Mike Pagano <mpagano@gentoo.org>
-Date: Fri, 28 Dec 2018 20:07:38 -0500
-Subject: [PATCH 13/14] 4.19:4567_distro-Gentoo-Kconfig.patch
-
----
- Kconfig | 2 +
- distro/Kconfig | 147 +++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 149 insertions(+)
-
-diff --git a/Kconfig b/Kconfig
-index 48a80beab685..a5ad73c66099 100644
---- a/Kconfig
-+++ b/Kconfig
-@@ -30,3 +30,5 @@ source "crypto/Kconfig"
- source "lib/Kconfig"
-
- source "lib/Kconfig.debug"
-+
-+source "distro/Kconfig"
-diff --git a/distro/Kconfig b/distro/Kconfig
-new file mode 100644
-index 000000000000..57379b7720de
---- /dev/null
-+++ b/distro/Kconfig
-@@ -0,0 +1,147 @@
-+menu "Gentoo Linux"
-+
-+config GENTOO_LINUX
-+ bool "Gentoo Linux support"
-+
-+ default y
-+
-+ help
-+ In order to boot Gentoo Linux a minimal set of config settings needs to
-+ be enabled in the kernel; to avoid the users from having to enable them
-+ manually as part of a Gentoo Linux installation or a new clean config,
-+ we enable these config settings by default for convenience.
-+
-+ See the settings that become available for more details and fine-tuning.
-+
-+config GENTOO_LINUX_UDEV
-+ bool "Linux dynamic and persistent device naming (userspace devfs) support"
-+
-+ depends on GENTOO_LINUX
-+ default y if GENTOO_LINUX
-+
-+ select DEVTMPFS
-+ select TMPFS
-+ select UNIX
-+
-+ select MMU
-+ select SHMEM
-+
-+ help
-+ In order to boot Gentoo Linux a minimal set of config settings needs to
-+ be enabled in the kernel; to avoid the users from having to enable them
-+ manually as part of a Gentoo Linux installation or a new clean config,
-+ we enable these config settings by default for convenience.
-+
-+ Currently this only selects TMPFS, DEVTMPFS and their dependencies.
-+ TMPFS is enabled to maintain a tmpfs file system at /dev/shm, /run and
-+ /sys/fs/cgroup; DEVTMPFS to maintain a devtmpfs file system at /dev.
-+
-+ Some of these are critical files that need to be available early in the
-+ boot process; if not available, it causes sysfs and udev to malfunction.
-+
-+ To ensure Gentoo Linux boots, it is best to leave this setting enabled;
-+ if you run a custom setup, you could consider whether to disable this.
-+
-+config GENTOO_LINUX_PORTAGE
-+ bool "Select options required by Portage features"
-+
-+ depends on GENTOO_LINUX
-+ default y if GENTOO_LINUX
-+
-+ select CGROUPS
-+ select NAMESPACES
-+ select IPC_NS
-+ select NET_NS
-+ select PID_NS
-+ select SYSVIPC
-+
-+ help
-+ This enables options required by various Portage FEATURES.
-+ Currently this selects:
-+
-+ CGROUPS (required for FEATURES=cgroup)
-+ IPC_NS (required for FEATURES=ipc-sandbox)
-+ NET_NS (required for FEATURES=network-sandbox)
-+ PID_NS (required for FEATURES=pid-sandbox)
-+ SYSVIPC (required by IPC_NS)
-+
-+
-+ It is highly recommended that you leave this enabled as these FEATURES
-+ are, or will soon be, enabled by default.
-+
-+menu "Support for init systems, system and service managers"
-+ visible if GENTOO_LINUX
-+
-+config GENTOO_LINUX_INIT_SCRIPT
-+ bool "OpenRC, runit and other script based systems and managers"
-+
-+ default y if GENTOO_LINUX
-+
-+ depends on GENTOO_LINUX
-+
-+ select BINFMT_SCRIPT
-+
-+ help
-+ The init system is the first thing that loads after the kernel booted.
-+
-+ These config settings allow you to select which init systems to support;
-+ instead of having to select all the individual settings all over the
-+ place, these settings allows you to select all the settings at once.
-+
-+ This particular setting enables all the known requirements for OpenRC,
-+ runit and similar script based systems and managers.
-+
-+ If you are unsure about this, it is best to leave this setting enabled.
-+
-+config GENTOO_LINUX_INIT_SYSTEMD
-+ bool "systemd"
-+
-+ default n
-+
-+ depends on GENTOO_LINUX && GENTOO_LINUX_UDEV
-+
-+ select AUTOFS4_FS
-+ select BLK_DEV_BSG
-+ select CGROUPS
-+ select CHECKPOINT_RESTORE
-+ select CRYPTO_HMAC
-+ select CRYPTO_SHA256
-+ select CRYPTO_USER_API_HASH
-+ select DEVPTS_MULTIPLE_INSTANCES
-+ select DMIID if X86_32 || X86_64 || X86
-+ select EPOLL
-+ select FANOTIFY
-+ select FHANDLE
-+ select INOTIFY_USER
-+ select IPV6
-+ select NET
-+ select NET_NS
-+ select PROC_FS
-+ select SECCOMP
-+ select SECCOMP_FILTER
-+ select SIGNALFD
-+ select SYSFS
-+ select TIMERFD
-+ select TMPFS_POSIX_ACL
-+ select TMPFS_XATTR
-+
-+ select ANON_INODES
-+ select BLOCK
-+ select EVENTFD
-+ select FSNOTIFY
-+ select INET
-+ select NLATTR
-+
-+ help
-+ The init system is the first thing that loads after the kernel booted.
-+
-+ These config settings allow you to select which init systems to support;
-+ instead of having to select all the individual settings all over the
-+ place, these settings allows you to select all the settings at once.
-+
-+ This particular setting enables all the known requirements for systemd;
-+ it also enables suggested optional settings, as the package suggests to.
-+
-+endmenu
-+
-+endmenu
diff --git a/sys-kernel/boest-v4.19.37/0014-WARNING.patch b/sys-kernel/boest-v4.19.37/0014-WARNING.patch
deleted file mode 100644
index dd308398..00000000
--- a/sys-kernel/boest-v4.19.37/0014-WARNING.patch
+++ /dev/null
@@ -1,565 +0,0 @@
-From 84d442b409839fff2ab8bd4b529cccc25d276bdf Mon Sep 17 00:00:00 2001
-From: Mike Pagano <mpagano@gentoo.org>
-Date: Fri, 15 Feb 2019 19:42:32 -0500
-Subject: [PATCH 14/14] WARNING This patch works with gcc versions 4.9+ and
- with kernel version 4.13+ and should NOT be applied when compiling on older
- versions of gcc due to key name changes of the march flags introduced with
- the version 4.9 release of gcc.[1]
-
-Use the older version of this patch hosted on the same github for older
-versions of gcc.
-
-FEATURES
-This patch adds additional CPU options to the Linux kernel accessible under:
- Processor type and features --->
- Processor family --->
-
-The expanded microarchitectures include:
-* AMD Improved K8-family
-* AMD K10-family
-* AMD Family 10h (Barcelona)
-* AMD Family 14h (Bobcat)
-* AMD Family 16h (Jaguar)
-* AMD Family 15h (Bulldozer)
-* AMD Family 15h (Piledriver)
-* AMD Family 15h (Steamroller)
-* AMD Family 15h (Excavator)
-* AMD Family 17h (Zen)
-* Intel Silvermont low-power processors
-* Intel 1st Gen Core i3/i5/i7 (Nehalem)
-* Intel 1.5 Gen Core i3/i5/i7 (Westmere)
-* Intel 2nd Gen Core i3/i5/i7 (Sandybridge)
-* Intel 3rd Gen Core i3/i5/i7 (Ivybridge)
-* Intel 4th Gen Core i3/i5/i7 (Haswell)
-* Intel 5th Gen Core i3/i5/i7 (Broadwell)
-* Intel 6th Gen Core i3/i5/i7 (Skylake)
-* Intel 6th Gen Core i7/i9 (Skylake X)
-
-It also offers to compile passing the 'native' option which, "selects the CPU
-to generate code for at compilation time by determining the processor type of
-the compiling machine. Using -march=native enables all instruction subsets
-supported by the local machine and will produce code optimized for the local
-machine under the constraints of the selected instruction set."[3]
-
-MINOR NOTES
-This patch also changes 'atom' to 'bonnell' in accordance with the gcc v4.9
-changes. Note that upstream is using the deprecated 'match=atom' flags when I
-believe it should use the newer 'march=bonnell' flag for atom processors.[2]
-
-It is not recommended to compile on Atom-CPUs with the 'native' option.[4] The
-recommendation is to use the 'atom' option instead.
-
-BENEFITS
-Small but real speed increases are measurable using a make endpoint comparing
-a generic kernel to one built with one of the respective microarchs.
-
-See the following experimental evidence supporting this statement:
-https://github.com/graysky2/kernel_gcc_patch
-
-REQUIREMENTS
-linux version >=4.13
-gcc version >=4.9
-
-ACKNOWLEDGMENTS
-This patch builds on the seminal work by Jeroen.[5]
-
-REFERENCES
-1. https://gcc.gnu.org/gcc-4.9/changes.html
-2. https://bugzilla.kernel.org/show_bug.cgi?id=77461
-3. https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
-4. https://github.com/graysky2/kernel_gcc_patch/issues/15
-5. http://www.linuxforge.net/docs/linux/linux-gcc.php
----
- arch/x86/Kconfig.cpu | 235 +++++++++++++++++++++++++++++-----
- arch/x86/Makefile | 35 ++++-
- arch/x86/Makefile_32.cpu | 24 +++-
- arch/x86/include/asm/module.h | 40 ++++++
- 4 files changed, 297 insertions(+), 37 deletions(-)
-
-diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
-index 638411f22267..1bbe88a2bfba 100644
---- a/arch/x86/Kconfig.cpu
-+++ b/arch/x86/Kconfig.cpu
-@@ -116,6 +116,7 @@ config MPENTIUMM
- config MPENTIUM4
- bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon"
- depends on X86_32
-+ select X86_P6_NOP
- ---help---
- Select this for Intel Pentium 4 chips. This includes the
- Pentium 4, Pentium D, P4-based Celeron and Xeon, and
-@@ -148,9 +149,8 @@ config MPENTIUM4
- -Paxville
- -Dempsey
-
--
- config MK6
-- bool "K6/K6-II/K6-III"
-+ bool "AMD K6/K6-II/K6-III"
- depends on X86_32
- ---help---
- Select this for an AMD K6-family processor. Enables use of
-@@ -158,7 +158,7 @@ config MK6
- flags to GCC.
-
- config MK7
-- bool "Athlon/Duron/K7"
-+ bool "AMD Athlon/Duron/K7"
- depends on X86_32
- ---help---
- Select this for an AMD Athlon K7-family processor. Enables use of
-@@ -166,12 +166,83 @@ config MK7
- flags to GCC.
-
- config MK8
-- bool "Opteron/Athlon64/Hammer/K8"
-+ bool "AMD Opteron/Athlon64/Hammer/K8"
- ---help---
- Select this for an AMD Opteron or Athlon64 Hammer-family processor.
- Enables use of some extended instructions, and passes appropriate
- optimization flags to GCC.
-
-+config MK8SSE3
-+ bool "AMD Opteron/Athlon64/Hammer/K8 with SSE3"
-+ ---help---
-+ Select this for improved AMD Opteron or Athlon64 Hammer-family processors.
-+ Enables use of some extended instructions, and passes appropriate
-+ optimization flags to GCC.
-+
-+config MK10
-+ bool "AMD 61xx/7x50/PhenomX3/X4/II/K10"
-+ ---help---
-+ Select this for an AMD 61xx Eight-Core Magny-Cours, Athlon X2 7x50,
-+ Phenom X3/X4/II, Athlon II X2/X3/X4, or Turion II-family processor.
-+ Enables use of some extended instructions, and passes appropriate
-+ optimization flags to GCC.
-+
-+config MBARCELONA
-+ bool "AMD Barcelona"
-+ ---help---
-+ Select this for AMD Family 10h Barcelona processors.
-+
-+ Enables -march=barcelona
-+
-+config MBOBCAT
-+ bool "AMD Bobcat"
-+ ---help---
-+ Select this for AMD Family 14h Bobcat processors.
-+
-+ Enables -march=btver1
-+
-+config MJAGUAR
-+ bool "AMD Jaguar"
-+ ---help---
-+ Select this for AMD Family 16h Jaguar processors.
-+
-+ Enables -march=btver2
-+
-+config MBULLDOZER
-+ bool "AMD Bulldozer"
-+ ---help---
-+ Select this for AMD Family 15h Bulldozer processors.
-+
-+ Enables -march=bdver1
-+
-+config MPILEDRIVER
-+ bool "AMD Piledriver"
-+ ---help---
-+ Select this for AMD Family 15h Piledriver processors.
-+
-+ Enables -march=bdver2
-+
-+config MSTEAMROLLER
-+ bool "AMD Steamroller"
-+ ---help---
-+ Select this for AMD Family 15h Steamroller processors.
-+
-+ Enables -march=bdver3
-+
-+config MEXCAVATOR
-+ bool "AMD Excavator"
-+ ---help---
-+ Select this for AMD Family 15h Excavator processors.
-+
-+ Enables -march=bdver4
-+
-+config MZEN
-+ bool "AMD Zen"
-+ ---help---
-+ Select this for AMD Family 17h Zen processors.
-+
-+ Enables -march=znver1
-+
- config MCRUSOE
- bool "Crusoe"
- depends on X86_32
-@@ -253,6 +324,7 @@ config MVIAC7
-
- config MPSC
- bool "Intel P4 / older Netburst based Xeon"
-+ select X86_P6_NOP
- depends on X86_64
- ---help---
- Optimize for Intel Pentium 4, Pentium D and older Nocona/Dempsey
-@@ -262,17 +334,9 @@ config MPSC
- using the cpu family field
- in /proc/cpuinfo. Family 15 is an older Xeon, Family 6 a newer one.
-
--config MCORE2
-- bool "Core 2/newer Xeon"
-- ---help---
--
-- Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
-- 53xx) CPUs. You can distinguish newer from older Xeons by the CPU
-- family in /proc/cpuinfo. Newer ones have 6 and older ones 15
-- (not a typo)
--
- config MATOM
- bool "Intel Atom"
-+ select X86_P6_NOP
- ---help---
-
- Select this for the Intel Atom platform. Intel Atom CPUs have an
-@@ -280,6 +344,99 @@ config MATOM
- accordingly optimized code. Use a recent GCC with specific Atom
- support in order to fully benefit from selecting this option.
-
-+config MCORE2
-+ bool "Intel Core 2"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
-+ 53xx) CPUs. You can distinguish newer from older Xeons by the CPU
-+ family in /proc/cpuinfo. Newer ones have 6 and older ones 15
-+ (not a typo)
-+
-+ Enables -march=core2
-+
-+config MNEHALEM
-+ bool "Intel Nehalem"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 1st Gen Core processors in the Nehalem family.
-+
-+ Enables -march=nehalem
-+
-+config MWESTMERE
-+ bool "Intel Westmere"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for the Intel Westmere formerly Nehalem-C family.
-+
-+ Enables -march=westmere
-+
-+config MSILVERMONT
-+ bool "Intel Silvermont"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for the Intel Silvermont platform.
-+
-+ Enables -march=silvermont
-+
-+config MSANDYBRIDGE
-+ bool "Intel Sandy Bridge"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 2nd Gen Core processors in the Sandy Bridge family.
-+
-+ Enables -march=sandybridge
-+
-+config MIVYBRIDGE
-+ bool "Intel Ivy Bridge"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 3rd Gen Core processors in the Ivy Bridge family.
-+
-+ Enables -march=ivybridge
-+
-+config MHASWELL
-+ bool "Intel Haswell"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 4th Gen Core processors in the Haswell family.
-+
-+ Enables -march=haswell
-+
-+config MBROADWELL
-+ bool "Intel Broadwell"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 5th Gen Core processors in the Broadwell family.
-+
-+ Enables -march=broadwell
-+
-+config MSKYLAKE
-+ bool "Intel Skylake"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 6th Gen Core processors in the Skylake family.
-+
-+ Enables -march=skylake
-+
-+config MSKYLAKEX
-+ bool "Intel Skylake X"
-+ select X86_P6_NOP
-+ ---help---
-+
-+ Select this for 6th Gen Core processors in the Skylake X family.
-+
-+ Enables -march=skylake-avx512
-+
- config GENERIC_CPU
- bool "Generic-x86-64"
- depends on X86_64
-@@ -287,6 +444,19 @@ config GENERIC_CPU
- Generic x86-64 CPU.
- Run equally well on all x86-64 CPUs.
-
-+config MNATIVE
-+ bool "Native optimizations autodetected by GCC"
-+ ---help---
-+
-+ GCC 4.2 and above support -march=native, which automatically detects
-+ the optimum settings to use based on your processor. -march=native
-+ also detects and applies additional settings beyond -march specific
-+ to your CPU, (eg. -msse4). Unless you have a specific reason not to
-+ (e.g. distcc cross-compiling), you should probably be using
-+ -march=native rather than anything listed below.
-+
-+ Enables -march=native
-+
- endchoice
-
- config X86_GENERIC
-@@ -311,7 +481,7 @@ config X86_INTERNODE_CACHE_SHIFT
- config X86_L1_CACHE_SHIFT
- int
- default "7" if MPENTIUM4 || MPSC
-- default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
-+ default "6" if MK7 || MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MEXCAVATOR || MZEN || MJAGUAR || MPENTIUMM || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
- default "4" if MELAN || M486 || MGEODEGX1
- default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
-
-@@ -329,35 +499,36 @@ config X86_ALIGNMENT_16
-
- config X86_INTEL_USERCOPY
- def_bool y
-- depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON || MCORE2
-+ depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK8SSE3 || MK7 || MEFFICEON || MCORE2 || MK10 || MBARCELONA || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE
-
- config X86_USE_PPRO_CHECKSUM
- def_bool y
-- depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MATOM
-+ depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MK10 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MATOM || MNATIVE
-
- config X86_USE_3DNOW
- def_bool y
- depends on (MCYRIXIII || MK7 || MGEODE_LX) && !UML
-
--#
--# P6_NOPs are a relatively minor optimization that require a family >=
--# 6 processor, except that it is broken on certain VIA chips.
--# Furthermore, AMD chips prefer a totally different sequence of NOPs
--# (which work on all CPUs). In addition, it looks like Virtual PC
--# does not understand them.
--#
--# As a result, disallow these if we're not compiling for X86_64 (these
--# NOPs do work on all x86-64 capable chips); the list of processors in
--# the right-hand clause are the cores that benefit from this optimization.
--#
- config X86_P6_NOP
-- def_bool y
-- depends on X86_64
-- depends on (MCORE2 || MPENTIUM4 || MPSC)
-+ default n
-+ bool "Support for P6_NOPs on Intel chips"
-+ depends on (MCORE2 || MPENTIUM4 || MPSC || MATOM || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE)
-+ ---help---
-+ P6_NOPs are a relatively minor optimization that require a family >=
-+ 6 processor, except that it is broken on certain VIA chips.
-+ Furthermore, AMD chips prefer a totally different sequence of NOPs
-+ (which work on all CPUs). In addition, it looks like Virtual PC
-+ does not understand them.
-+
-+ As a result, disallow these if we're not compiling for X86_64 (these
-+ NOPs do work on all x86-64 capable chips); the list of processors in
-+ the right-hand clause are the cores that benefit from this optimization.
-+
-+ Say Y if you have Intel CPU newer than Pentium Pro, N otherwise.
-
- config X86_TSC
- def_bool y
-- depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MATOM) || X86_64
-+ depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE || MATOM) || X86_64
-
- config X86_CMPXCHG64
- def_bool y
-@@ -367,7 +538,7 @@ config X86_CMPXCHG64
- # generates cmov.
- config X86_CMOV
- def_bool y
-- depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
-+ depends on (MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MEXCAVATOR || MZEN || MJAGUAR || MK7 || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MNATIVE || MATOM || MGEODE_LX)
-
- config X86_MINIMUM_CPU_FAMILY
- int
-diff --git a/arch/x86/Makefile b/arch/x86/Makefile
-index b84f61bc5e7a..2d6da67c7b23 100644
---- a/arch/x86/Makefile
-+++ b/arch/x86/Makefile
-@@ -118,13 +118,42 @@ else
- KBUILD_CFLAGS += $(call cc-option,-mskip-rax-setup)
-
- # FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
-+ cflags-$(CONFIG_MNATIVE) += $(call cc-option,-march=native)
- cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8)
-+ cflags-$(CONFIG_MK8SSE3) += $(call cc-option,-march=k8-sse3,-mtune=k8)
-+ cflags-$(CONFIG_MK10) += $(call cc-option,-march=amdfam10)
-+ cflags-$(CONFIG_MBARCELONA) += $(call cc-option,-march=barcelona)
-+ cflags-$(CONFIG_MBOBCAT) += $(call cc-option,-march=btver1)
-+ cflags-$(CONFIG_MJAGUAR) += $(call cc-option,-march=btver2)
-+ cflags-$(CONFIG_MBULLDOZER) += $(call cc-option,-march=bdver1)
-+ cflags-$(CONFIG_MPILEDRIVER) += $(call cc-option,-march=bdver2)
-+ cflags-$(CONFIG_MSTEAMROLLER) += $(call cc-option,-march=bdver3)
-+ cflags-$(CONFIG_MEXCAVATOR) += $(call cc-option,-march=bdver4)
-+ cflags-$(CONFIG_MZEN) += $(call cc-option,-march=znver1)
- cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)
-
- cflags-$(CONFIG_MCORE2) += \
-- $(call cc-option,-march=core2,$(call cc-option,-mtune=generic))
-- cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom) \
-- $(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
-+ $(call cc-option,-march=core2,$(call cc-option,-mtune=core2))
-+ cflags-$(CONFIG_MNEHALEM) += \
-+ $(call cc-option,-march=nehalem,$(call cc-option,-mtune=nehalem))
-+ cflags-$(CONFIG_MWESTMERE) += \
-+ $(call cc-option,-march=westmere,$(call cc-option,-mtune=westmere))
-+ cflags-$(CONFIG_MSILVERMONT) += \
-+ $(call cc-option,-march=silvermont,$(call cc-option,-mtune=silvermont))
-+ cflags-$(CONFIG_MSANDYBRIDGE) += \
-+ $(call cc-option,-march=sandybridge,$(call cc-option,-mtune=sandybridge))
-+ cflags-$(CONFIG_MIVYBRIDGE) += \
-+ $(call cc-option,-march=ivybridge,$(call cc-option,-mtune=ivybridge))
-+ cflags-$(CONFIG_MHASWELL) += \
-+ $(call cc-option,-march=haswell,$(call cc-option,-mtune=haswell))
-+ cflags-$(CONFIG_MBROADWELL) += \
-+ $(call cc-option,-march=broadwell,$(call cc-option,-mtune=broadwell))
-+ cflags-$(CONFIG_MSKYLAKE) += \
-+ $(call cc-option,-march=skylake,$(call cc-option,-mtune=skylake))
-+ cflags-$(CONFIG_MSKYLAKEX) += \
-+ $(call cc-option,-march=skylake-avx512,$(call cc-option,-mtune=skylake-avx512))
-+ cflags-$(CONFIG_MATOM) += $(call cc-option,-march=bonnell) \
-+ $(call cc-option,-mtune=bonnell,$(call cc-option,-mtune=generic))
- cflags-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=generic)
- KBUILD_CFLAGS += $(cflags-y)
-
-diff --git a/arch/x86/Makefile_32.cpu b/arch/x86/Makefile_32.cpu
-index 1f5faf8606b4..4a3a27cedc75 100644
---- a/arch/x86/Makefile_32.cpu
-+++ b/arch/x86/Makefile_32.cpu
-@@ -23,7 +23,18 @@ cflags-$(CONFIG_MK6) += -march=k6
- # Please note, that patches that add -march=athlon-xp and friends are pointless.
- # They make zero difference whatsosever to performance at this time.
- cflags-$(CONFIG_MK7) += -march=athlon
-+cflags-$(CONFIG_MNATIVE) += $(call cc-option,-march=native)
- cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,-march=athlon)
-+cflags-$(CONFIG_MK8SSE3) += $(call cc-option,-march=k8-sse3,-march=athlon)
-+cflags-$(CONFIG_MK10) += $(call cc-option,-march=amdfam10,-march=athlon)
-+cflags-$(CONFIG_MBARCELONA) += $(call cc-option,-march=barcelona,-march=athlon)
-+cflags-$(CONFIG_MBOBCAT) += $(call cc-option,-march=btver1,-march=athlon)
-+cflags-$(CONFIG_MJAGUAR) += $(call cc-option,-march=btver2,-march=athlon)
-+cflags-$(CONFIG_MBULLDOZER) += $(call cc-option,-march=bdver1,-march=athlon)
-+cflags-$(CONFIG_MPILEDRIVER) += $(call cc-option,-march=bdver2,-march=athlon)
-+cflags-$(CONFIG_MSTEAMROLLER) += $(call cc-option,-march=bdver3,-march=athlon)
-+cflags-$(CONFIG_MEXCAVATOR) += $(call cc-option,-march=bdver4,-march=athlon)
-+cflags-$(CONFIG_MZEN) += $(call cc-option,-march=znver1,-march=athlon)
- cflags-$(CONFIG_MCRUSOE) += -march=i686 -falign-functions=0 -falign-jumps=0 -falign-loops=0
- cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call tune,pentium3) -falign-functions=0 -falign-jumps=0 -falign-loops=0
- cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586)
-@@ -32,8 +43,17 @@ cflags-$(CONFIG_MCYRIXIII) += $(call cc-option,-march=c3,-march=i486) -falign-fu
- cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686)
- cflags-$(CONFIG_MVIAC7) += -march=i686
- cflags-$(CONFIG_MCORE2) += -march=i686 $(call tune,core2)
--cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom,$(call cc-option,-march=core2,-march=i686)) \
-- $(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
-+cflags-$(CONFIG_MNEHALEM) += -march=i686 $(call tune,nehalem)
-+cflags-$(CONFIG_MWESTMERE) += -march=i686 $(call tune,westmere)
-+cflags-$(CONFIG_MSILVERMONT) += -march=i686 $(call tune,silvermont)
-+cflags-$(CONFIG_MSANDYBRIDGE) += -march=i686 $(call tune,sandybridge)
-+cflags-$(CONFIG_MIVYBRIDGE) += -march=i686 $(call tune,ivybridge)
-+cflags-$(CONFIG_MHASWELL) += -march=i686 $(call tune,haswell)
-+cflags-$(CONFIG_MBROADWELL) += -march=i686 $(call tune,broadwell)
-+cflags-$(CONFIG_MSKYLAKE) += -march=i686 $(call tune,skylake)
-+cflags-$(CONFIG_MSKYLAKEX) += -march=i686 $(call tune,skylake-avx512)
-+cflags-$(CONFIG_MATOM) += $(call cc-option,-march=bonnell,$(call cc-option,-march=core2,-march=i686)) \
-+ $(call cc-option,-mtune=bonnell,$(call cc-option,-mtune=generic))
-
- # AMD Elan support
- cflags-$(CONFIG_MELAN) += -march=i486
-diff --git a/arch/x86/include/asm/module.h b/arch/x86/include/asm/module.h
-index 7948a17febb4..22c53c8b844b 100644
---- a/arch/x86/include/asm/module.h
-+++ b/arch/x86/include/asm/module.h
-@@ -25,6 +25,26 @@ struct mod_arch_specific {
- #define MODULE_PROC_FAMILY "586MMX "
- #elif defined CONFIG_MCORE2
- #define MODULE_PROC_FAMILY "CORE2 "
-+#elif defined CONFIG_MNATIVE
-+#define MODULE_PROC_FAMILY "NATIVE "
-+#elif defined CONFIG_MNEHALEM
-+#define MODULE_PROC_FAMILY "NEHALEM "
-+#elif defined CONFIG_MWESTMERE
-+#define MODULE_PROC_FAMILY "WESTMERE "
-+#elif defined CONFIG_MSILVERMONT
-+#define MODULE_PROC_FAMILY "SILVERMONT "
-+#elif defined CONFIG_MSANDYBRIDGE
-+#define MODULE_PROC_FAMILY "SANDYBRIDGE "
-+#elif defined CONFIG_MIVYBRIDGE
-+#define MODULE_PROC_FAMILY "IVYBRIDGE "
-+#elif defined CONFIG_MHASWELL
-+#define MODULE_PROC_FAMILY "HASWELL "
-+#elif defined CONFIG_MBROADWELL
-+#define MODULE_PROC_FAMILY "BROADWELL "
-+#elif defined CONFIG_MSKYLAKE
-+#define MODULE_PROC_FAMILY "SKYLAKE "
-+#elif defined CONFIG_MSKYLAKEX
-+#define MODULE_PROC_FAMILY "SKYLAKEX "
- #elif defined CONFIG_MATOM
- #define MODULE_PROC_FAMILY "ATOM "
- #elif defined CONFIG_M686
-@@ -43,6 +63,26 @@ struct mod_arch_specific {
- #define MODULE_PROC_FAMILY "K7 "
- #elif defined CONFIG_MK8
- #define MODULE_PROC_FAMILY "K8 "
-+#elif defined CONFIG_MK8SSE3
-+#define MODULE_PROC_FAMILY "K8SSE3 "
-+#elif defined CONFIG_MK10
-+#define MODULE_PROC_FAMILY "K10 "
-+#elif defined CONFIG_MBARCELONA
-+#define MODULE_PROC_FAMILY "BARCELONA "
-+#elif defined CONFIG_MBOBCAT
-+#define MODULE_PROC_FAMILY "BOBCAT "
-+#elif defined CONFIG_MBULLDOZER
-+#define MODULE_PROC_FAMILY "BULLDOZER "
-+#elif defined CONFIG_MPILEDRIVER
-+#define MODULE_PROC_FAMILY "PILEDRIVER "
-+#elif defined CONFIG_MSTEAMROLLER
-+#define MODULE_PROC_FAMILY "STEAMROLLER "
-+#elif defined CONFIG_MJAGUAR
-+#define MODULE_PROC_FAMILY "JAGUAR "
-+#elif defined CONFIG_MEXCAVATOR
-+#define MODULE_PROC_FAMILY "EXCAVATOR "
-+#elif defined CONFIG_MZEN
-+#define MODULE_PROC_FAMILY "ZEN "
- #elif defined CONFIG_MELAN
- #define MODULE_PROC_FAMILY "ELAN "
- #elif defined CONFIG_MCRUSOE
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch
deleted file mode 100644
index dfe1591e..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0001-arm-partially-revert-702b94bff3c50542a6e4ab9a4f4cef0.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 224fdd45085d494f6ae4875b36d2c1eb749894d4 Mon Sep 17 00:00:00 2001
-From: Dan Pasanen <dan.pasanen@gmail.com>
-Date: Thu, 21 Sep 2017 09:55:42 -0500
-Subject: [PATCH 001/493] arm: partially revert
- 702b94bff3c50542a6e4ab9a4f4cef093262fe65
-
-* Re-expose some dmi APIs for use in VCSM
----
- arch/arm/include/asm/cacheflush.h | 21 +++++++++++++++++++++
- arch/arm/include/asm/glue-cache.h | 2 ++
- arch/arm/mm/proc-macros.S | 2 ++
- arch/arm/mm/proc-syms.c | 3 +++
- 4 files changed, 28 insertions(+)
-
-diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
-index ec1a5fd0d294..dc0a32fdde43 100644
---- a/arch/arm/include/asm/cacheflush.h
-+++ b/arch/arm/include/asm/cacheflush.h
-@@ -94,6 +94,21 @@
- * DMA Cache Coherency
- * ===================
- *
-+ * dma_inv_range(start, end)
-+ *
-+ * Invalidate (discard) the specified virtual address range.
-+ * May not write back any entries. If 'start' or 'end'
-+ * are not cache line aligned, those lines must be written
-+ * back.
-+ * - start - virtual start address
-+ * - end - virtual end address
-+ *
-+ * dma_clean_range(start, end)
-+ *
-+ * Clean (write back) the specified virtual address range.
-+ * - start - virtual start address
-+ * - end - virtual end address
-+ *
- * dma_flush_range(start, end)
- *
- * Clean and invalidate the specified virtual address range.
-@@ -115,6 +130,8 @@ struct cpu_cache_fns {
- void (*dma_map_area)(const void *, size_t, int);
- void (*dma_unmap_area)(const void *, size_t, int);
-
-+ void (*dma_inv_range)(const void *, const void *);
-+ void (*dma_clean_range)(const void *, const void *);
- void (*dma_flush_range)(const void *, const void *);
- } __no_randomize_layout;
-
-@@ -140,6 +157,8 @@ extern struct cpu_cache_fns cpu_cache;
- * is visible to DMA, or data written by DMA to system memory is
- * visible to the CPU.
- */
-+#define dmac_inv_range cpu_cache.dma_inv_range
-+#define dmac_clean_range cpu_cache.dma_clean_range
- #define dmac_flush_range cpu_cache.dma_flush_range
-
- #else
-@@ -159,6 +178,8 @@ extern void __cpuc_flush_dcache_area(void *, size_t);
- * is visible to DMA, or data written by DMA to system memory is
- * visible to the CPU.
- */
-+extern void dmac_inv_range(const void *, const void *);
-+extern void dmac_clean_range(const void *, const void *);
- extern void dmac_flush_range(const void *, const void *);
-
- #endif
-diff --git a/arch/arm/include/asm/glue-cache.h b/arch/arm/include/asm/glue-cache.h
-index 8d1f498e5dd8..0050d2246da8 100644
---- a/arch/arm/include/asm/glue-cache.h
-+++ b/arch/arm/include/asm/glue-cache.h
-@@ -158,6 +158,8 @@ static inline void nop_dma_unmap_area(const void *s, size_t l, int f) { }
- #define __cpuc_coherent_user_range __glue(_CACHE,_coherent_user_range)
- #define __cpuc_flush_dcache_area __glue(_CACHE,_flush_kern_dcache_area)
-
-+#define dmac_inv_range __glue(_CACHE,_dma_inv_range)
-+#define dmac_clean_range __glue(_CACHE,_dma_clean_range)
- #define dmac_flush_range __glue(_CACHE,_dma_flush_range)
- #endif
-
-diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S
-index 5461d589a1e2..8d1d479a86fa 100644
---- a/arch/arm/mm/proc-macros.S
-+++ b/arch/arm/mm/proc-macros.S
-@@ -335,6 +335,8 @@ ENTRY(\name\()_cache_fns)
- .long \name\()_flush_kern_dcache_area
- .long \name\()_dma_map_area
- .long \name\()_dma_unmap_area
-+ .long \name\()_dma_inv_range
-+ .long \name\()_dma_clean_range
- .long \name\()_dma_flush_range
- .size \name\()_cache_fns, . - \name\()_cache_fns
- .endm
-diff --git a/arch/arm/mm/proc-syms.c b/arch/arm/mm/proc-syms.c
-index 054b491ff764..70e8b7d34434 100644
---- a/arch/arm/mm/proc-syms.c
-+++ b/arch/arm/mm/proc-syms.c
-@@ -30,6 +30,9 @@ EXPORT_SYMBOL(__cpuc_flush_user_all);
- EXPORT_SYMBOL(__cpuc_flush_user_range);
- EXPORT_SYMBOL(__cpuc_coherent_kern_range);
- EXPORT_SYMBOL(__cpuc_flush_dcache_area);
-+EXPORT_SYMBOL(dmac_inv_range);
-+EXPORT_SYMBOL(dmac_clean_range);
-+EXPORT_SYMBOL(dmac_flush_range);
- #else
- EXPORT_SYMBOL(cpu_cache);
- #endif
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0002-smsx95xx-fix-crimes-against-truesize.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0002-smsx95xx-fix-crimes-against-truesize.patch
deleted file mode 100644
index efa7f716..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0002-smsx95xx-fix-crimes-against-truesize.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 38d81195946d66868723d1a99e25c92d9219427a Mon Sep 17 00:00:00 2001
-From: Steve Glendinning <steve.glendinning@smsc.com>
-Date: Thu, 19 Feb 2015 18:47:12 +0000
-Subject: [PATCH 002/493] smsx95xx: fix crimes against truesize
-
-smsc95xx is adjusting truesize when it shouldn't, and following a recent patch from Eric this is now triggering warnings.
-
-This patch stops smsc95xx from changing truesize.
-
-Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
----
- drivers/net/usb/smsc95xx.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
-index 6e971628bb50..9f94e343e21c 100644
---- a/drivers/net/usb/smsc95xx.c
-+++ b/drivers/net/usb/smsc95xx.c
-@@ -82,6 +82,10 @@ static bool turbo_mode = true;
- module_param(turbo_mode, bool, 0644);
- MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
-
-+static bool truesize_mode = false;
-+module_param(truesize_mode, bool, 0644);
-+MODULE_PARM_DESC(truesize_mode, "Report larger truesize value");
-+
- static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
- u32 *data, int in_pm)
- {
-@@ -1972,7 +1976,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
- if (dev->net->features & NETIF_F_RXCSUM)
- smsc95xx_rx_csum_offload(skb);
- skb_trim(skb, skb->len - 4); /* remove fcs */
-- skb->truesize = size + sizeof(struct sk_buff);
-+ if (truesize_mode)
-+ skb->truesize = size + sizeof(struct sk_buff);
-
- return 1;
- }
-@@ -1990,7 +1995,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
- if (dev->net->features & NETIF_F_RXCSUM)
- smsc95xx_rx_csum_offload(ax_skb);
- skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
-- ax_skb->truesize = size + sizeof(struct sk_buff);
-+ if (truesize_mode)
-+ ax_skb->truesize = size + sizeof(struct sk_buff);
-
- usbnet_skb_return(dev, ax_skb);
- }
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0003-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0003-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch
deleted file mode 100644
index ab8e891b..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0003-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From c418b96583cce4fa1816cb954b7ee0f6d2ff1810 Mon Sep 17 00:00:00 2001
-From: Sam Nazarko <email@samnazarko.co.uk>
-Date: Fri, 1 Apr 2016 17:27:21 +0100
-Subject: [PATCH 003/493] smsc95xx: Experimental: Enable turbo_mode and
- packetsize=2560 by default
-
-See: http://forum.kodi.tv/showthread.php?tid=285288
----
- drivers/net/usb/smsc95xx.c | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
-index 9f94e343e21c..6429252d4f51 100644
---- a/drivers/net/usb/smsc95xx.c
-+++ b/drivers/net/usb/smsc95xx.c
-@@ -86,6 +86,10 @@ static bool truesize_mode = false;
- module_param(truesize_mode, bool, 0644);
- MODULE_PARM_DESC(truesize_mode, "Report larger truesize value");
-
-+static int packetsize = 2560;
-+module_param(packetsize, int, 0644);
-+MODULE_PARM_DESC(packetsize, "Override the RX URB packet size");
-+
- static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
- u32 *data, int in_pm)
- {
-@@ -1109,13 +1113,13 @@ static int smsc95xx_reset(struct usbnet *dev)
-
- if (!turbo_mode) {
- burst_cap = 0;
-- dev->rx_urb_size = MAX_SINGLE_PACKET_SIZE;
-+ dev->rx_urb_size = packetsize ? packetsize : MAX_SINGLE_PACKET_SIZE;
- } else if (dev->udev->speed == USB_SPEED_HIGH) {
-- burst_cap = DEFAULT_HS_BURST_CAP_SIZE / HS_USB_PKT_SIZE;
-- dev->rx_urb_size = DEFAULT_HS_BURST_CAP_SIZE;
-+ dev->rx_urb_size = packetsize ? packetsize : DEFAULT_HS_BURST_CAP_SIZE;
-+ burst_cap = dev->rx_urb_size / HS_USB_PKT_SIZE;
- } else {
-- burst_cap = DEFAULT_FS_BURST_CAP_SIZE / FS_USB_PKT_SIZE;
-- dev->rx_urb_size = DEFAULT_FS_BURST_CAP_SIZE;
-+ dev->rx_urb_size = packetsize ? packetsize : DEFAULT_FS_BURST_CAP_SIZE;
-+ burst_cap = dev->rx_urb_size / FS_USB_PKT_SIZE;
- }
-
- netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n",
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0004-Allow-mac-address-to-be-set-in-smsc95xx.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0004-Allow-mac-address-to-be-set-in-smsc95xx.patch
deleted file mode 100644
index f7646df5..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0004-Allow-mac-address-to-be-set-in-smsc95xx.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 40d860463f257509230c237271ec355189182230 Mon Sep 17 00:00:00 2001
-From: popcornmix <popcornmix@gmail.com>
-Date: Tue, 26 Mar 2013 17:26:38 +0000
-Subject: [PATCH 004/493] Allow mac address to be set in smsc95xx
-
-Signed-off-by: popcornmix <popcornmix@gmail.com>
----
- drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++
- 1 file changed, 56 insertions(+)
-
-diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
-index 6429252d4f51..a5bbec75f22d 100644
---- a/drivers/net/usb/smsc95xx.c
-+++ b/drivers/net/usb/smsc95xx.c
-@@ -60,6 +60,7 @@
- #define SUSPEND_SUSPEND3 (0x08)
- #define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \
- SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3)
-+#define MAC_ADDR_LEN (6)
-
- #define CARRIER_CHECK_DELAY (2 * HZ)
-
-@@ -90,6 +91,10 @@ static int packetsize = 2560;
- module_param(packetsize, int, 0644);
- MODULE_PARM_DESC(packetsize, "Override the RX URB packet size");
-
-+static char *macaddr = ":";
-+module_param(macaddr, charp, 0);
-+MODULE_PARM_DESC(macaddr, "MAC address");
-+
- static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
- u32 *data, int in_pm)
- {
-@@ -921,6 +926,53 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
- return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
- }
-
-+/* Check the macaddr module parameter for a MAC address */
-+static int smsc95xx_is_macaddr_param(struct usbnet *dev, u8 *dev_mac)
-+{
-+ int i, j, got_num, num;
-+ u8 mtbl[MAC_ADDR_LEN];
-+
-+ if (macaddr[0] == ':')
-+ return 0;
-+
-+ i = 0;
-+ j = 0;
-+ num = 0;
-+ got_num = 0;
-+ while (j < MAC_ADDR_LEN) {
-+ if (macaddr[i] && macaddr[i] != ':') {
-+ got_num++;
-+ if ('0' <= macaddr[i] && macaddr[i] <= '9')
-+ num = num * 16 + macaddr[i] - '0';
-+ else if ('A' <= macaddr[i] && macaddr[i] <= 'F')
-+ num = num * 16 + 10 + macaddr[i] - 'A';
-+ else if ('a' <= macaddr[i] && macaddr[i] <= 'f')
-+ num = num * 16 + 10 + macaddr[i] - 'a';
-+ else
-+ break;
-+ i++;
-+ } else if (got_num == 2) {
-+ mtbl[j++] = (u8) num;
-+ num = 0;
-+ got_num = 0;
-+ i++;
-+ } else {
-+ break;
-+ }
-+ }
-+-+
-+ if (j == MAC_ADDR_LEN) {
-+ netif_dbg(dev, ifup, dev->net, "Overriding MAC address with: "
-+ "%02x:%02x:%02x:%02x:%02x:%02x\n", mtbl[0], mtbl[1], mtbl[2],
-+ mtbl[3], mtbl[4], mtbl[5]);
-+ for (i = 0; i < MAC_ADDR_LEN; i++)
-+ dev_mac[i] = mtbl[i];
-+ return 1;
-+ } else {
-+ return 0;
-+ }
-+}
-+-+
- static void smsc95xx_init_mac_address(struct usbnet *dev)
- {
- const u8 *mac_addr;
-@@ -942,6 +994,10 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
- }
- }
-
-+ /* Check module parameters */
-+ if (smsc95xx_is_macaddr_param(dev, dev->net->dev_addr))
-+ return;
-+
- /* no useful static MAC address found. generate a random one */
- eth_hw_addr_random(dev->net);
- netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n");
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0005-Protect-__release_resource-against-resources-without.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0005-Protect-__release_resource-against-resources-without.patch
deleted file mode 100644
index 30060f75..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0005-Protect-__release_resource-against-resources-without.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 8d9f68761fa2612717a458d9f6cffb983828f16c Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Fri, 13 Mar 2015 12:43:36 +0000
-Subject: [PATCH 005/493] Protect __release_resource against resources without
- parents
-
-Without this patch, removing a device tree overlay can crash here.
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- kernel/resource.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/kernel/resource.c b/kernel/resource.c
-index 30e1bc68503b..fd0f8be84ccc 100644
---- a/kernel/resource.c
-+++ b/kernel/resource.c
-@@ -213,6 +213,12 @@ static int __release_resource(struct resource *old, bool release_child)
- {
- struct resource *tmp, **p, *chd;
-
-+ if (!old->parent) {
-+ WARN(old->sibling, "sibling but no parent");
-+ if (old->sibling)
-+ return -EINVAL;
-+ return 0;
-+ }
- p = &old->parent->child;
- for (;;) {
- tmp = *p;
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0006-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0006-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch
deleted file mode 100644
index 5bc4831c..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0006-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From cc09d5c2440f38aa4842b2b71f1fc5c480a78f38 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Fri, 4 Dec 2015 17:41:50 +0000
-Subject: [PATCH 006/493] irq-bcm2836: Prevent spurious interrupts, and trap
- them early
-
-The old arch-specific IRQ macros included a dsb to ensure the
-write to clear the mailbox interrupt completed before returning
-from the interrupt. The BCM2836 irqchip driver needs the same
-precaution to avoid spurious interrupts.
-
-Spurious interrupts are still possible for other reasons,
-though, so trap them early.
----
- drivers/irqchip/irq-bcm2836.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
-index dfe4a460340b..5f881829615c 100644
---- a/drivers/irqchip/irq-bcm2836.c
-+++ b/drivers/irqchip/irq-bcm2836.c
-@@ -144,6 +144,7 @@ __exception_irq_entry bcm2836_arm_irqchip_handle_irq(struct pt_regs *regs)
- u32 ipi = ffs(mbox_val) - 1;
-
- writel(1 << ipi, mailbox0);
-+ dsb(sy);
- handle_IPI(ipi, regs);
- #endif
- } else if (stat) {
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0007-irq-bcm2836-Avoid-Invalid-trigger-warning.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0007-irq-bcm2836-Avoid-Invalid-trigger-warning.patch
deleted file mode 100644
index e5810ab5..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0007-irq-bcm2836-Avoid-Invalid-trigger-warning.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 864e12b44e1b241f106c19fb000904b2a6a7fcc7 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Thu, 9 Feb 2017 14:33:30 +0000
-Subject: [PATCH 007/493] irq-bcm2836: Avoid "Invalid trigger warning"
-
-Initialise the level for each IRQ to avoid a warning from the
-arm arch timer code.
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- drivers/irqchip/irq-bcm2836.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
-index 5f881829615c..9d0f221a1daa 100644
---- a/drivers/irqchip/irq-bcm2836.c
-+++ b/drivers/irqchip/irq-bcm2836.c
-@@ -124,7 +124,7 @@ static int bcm2836_map(struct irq_domain *d, unsigned int irq,
- irq_set_percpu_devid(irq);
- irq_domain_set_info(d, irq, hw, chip, d->host_data,
- handle_percpu_devid_irq, NULL, NULL);
-- irq_set_status_flags(irq, IRQ_NOAUTOEN);
-+ irq_set_status_flags(irq, IRQ_NOAUTOEN | IRQ_TYPE_LEVEL_LOW);
-
- return 0;
- }
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0008-irqchip-bcm2835-Add-FIQ-support.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0008-irqchip-bcm2835-Add-FIQ-support.patch
deleted file mode 100644
index d95ce1a0..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0008-irqchip-bcm2835-Add-FIQ-support.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 1aa0de89d200d1fb3851bc4f0ea5bf90b8925e2f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
-Date: Fri, 12 Jun 2015 19:01:05 +0200
-Subject: [PATCH 008/493] irqchip: bcm2835: Add FIQ support
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Add a duplicate irq range with an offset on the hwirq's so the
-driver can detect that enable_fiq() is used.
-Tested with downstream dwc_otg USB controller driver.
-
-Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
-Reviewed-by: Eric Anholt <eric@anholt.net>
-Acked-by: Stephen Warren <swarren@wwwdotorg.org>
----
- arch/arm/mach-bcm/Kconfig | 1 +
- drivers/irqchip/irq-bcm2835.c | 51 +++++++++++++++++++++++++++++++----
- 2 files changed, 47 insertions(+), 5 deletions(-)
-
-diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
-index 25aac6ee2ab1..4686dccb91d5 100644
---- a/arch/arm/mach-bcm/Kconfig
-+++ b/arch/arm/mach-bcm/Kconfig
-@@ -165,6 +165,7 @@ config ARCH_BCM2835
- select HAVE_ARM_ARCH_TIMER if ARCH_MULTI_V7
- select TIMER_OF
- select BCM2835_TIMER
-+ select FIQ
- select PINCTRL
- select PINCTRL_BCM2835
- help
-diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
-index d2da8a1e6b1b..c4903360eabc 100644
---- a/drivers/irqchip/irq-bcm2835.c
-+++ b/drivers/irqchip/irq-bcm2835.c
-@@ -54,7 +54,7 @@
- #include <asm/exception.h>
-
- /* Put the bank and irq (32 bits) into the hwirq */
--#define MAKE_HWIRQ(b, n) ((b << 5) | (n))
-+#define MAKE_HWIRQ(b, n) (((b) << 5) | (n))
- #define HWIRQ_BANK(i) (i >> 5)
- #define HWIRQ_BIT(i) BIT(i & 0x1f)
-
-@@ -70,9 +70,13 @@
- | SHORTCUT1_MASK | SHORTCUT2_MASK)
-
- #define REG_FIQ_CONTROL 0x0c
-+#define REG_FIQ_ENABLE 0x80
-+#define REG_FIQ_DISABLE 0
-
- #define NR_BANKS 3
- #define IRQS_PER_BANK 32
-+#define NUMBER_IRQS MAKE_HWIRQ(NR_BANKS, 0)
-+#define FIQ_START (NR_IRQS_BANK0 + MAKE_HWIRQ(NR_BANKS - 1, 0))
-
- static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 };
- static const int reg_enable[] __initconst = { 0x18, 0x10, 0x14 };
-@@ -97,14 +101,38 @@ static void __exception_irq_entry bcm2835_handle_irq(
- struct pt_regs *regs);
- static void bcm2836_chained_handle_irq(struct irq_desc *desc);
-
-+static inline unsigned int hwirq_to_fiq(unsigned long hwirq)
-+{
-+ hwirq -= NUMBER_IRQS;
-+ /*
-+ * The hwirq numbering used in this driver is:
-+ * BASE (0-7) GPU1 (32-63) GPU2 (64-95).
-+ * This differ from the one used in the FIQ register:
-+ * GPU1 (0-31) GPU2 (32-63) BASE (64-71)
-+ */
-+ if (hwirq >= 32)
-+ return hwirq - 32;
-+
-+ return hwirq + 64;
-+}
-+
- static void armctrl_mask_irq(struct irq_data *d)
- {
-- writel_relaxed(HWIRQ_BIT(d->hwirq), intc.disable[HWIRQ_BANK(d->hwirq)]);
-+ if (d->hwirq >= NUMBER_IRQS)
-+ writel_relaxed(REG_FIQ_DISABLE, intc.base + REG_FIQ_CONTROL);
-+ else
-+ writel_relaxed(HWIRQ_BIT(d->hwirq),
-+ intc.disable[HWIRQ_BANK(d->hwirq)]);
- }
-
- static void armctrl_unmask_irq(struct irq_data *d)
- {
-- writel_relaxed(HWIRQ_BIT(d->hwirq), intc.enable[HWIRQ_BANK(d->hwirq)]);
-+ if (d->hwirq >= NUMBER_IRQS)
-+ writel_relaxed(REG_FIQ_ENABLE | hwirq_to_fiq(d->hwirq),
-+ intc.base + REG_FIQ_CONTROL);
-+ else
-+ writel_relaxed(HWIRQ_BIT(d->hwirq),
-+ intc.enable[HWIRQ_BANK(d->hwirq)]);
- }
-
- static struct irq_chip armctrl_chip = {
-@@ -149,8 +177,9 @@ static int __init armctrl_of_init(struct device_node *node,
- if (!base)
- panic("%pOF: unable to map IC registers\n", node);
-
-- intc.domain = irq_domain_add_linear(node, MAKE_HWIRQ(NR_BANKS, 0),
-- &armctrl_ops, NULL);
-+ intc.base = base;
-+ intc.domain = irq_domain_add_linear(node, NUMBER_IRQS * 2,
-+ &armctrl_ops, NULL);
- if (!intc.domain)
- panic("%pOF: unable to create IRQ domain\n", node);
-
-@@ -180,6 +209,18 @@ static int __init armctrl_of_init(struct device_node *node,
- set_handle_irq(bcm2835_handle_irq);
- }
-
-+ /* Make a duplicate irq range which is used to enable FIQ */
-+ for (b = 0; b < NR_BANKS; b++) {
-+ for (i = 0; i < bank_irqs[b]; i++) {
-+ irq = irq_create_mapping(intc.domain,
-+ MAKE_HWIRQ(b, i) + NUMBER_IRQS);
-+ BUG_ON(irq <= 0);
-+ irq_set_chip(irq, &armctrl_chip);
-+ set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
-+ }
-+ }
-+ init_FIQ(FIQ_START);
-+
- return 0;
- }
-
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0009-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0009-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch
deleted file mode 100644
index 39e24f7c..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0009-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 7b14640042eb3b12251172c1cc6357e2195943ab Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
-Date: Fri, 23 Oct 2015 16:26:55 +0200
-Subject: [PATCH 009/493] irqchip: irq-bcm2835: Add 2836 FIQ support
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
----
- drivers/irqchip/irq-bcm2835.c | 43 +++++++++++++++++++++++++++++++++--
- 1 file changed, 41 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
-index c4903360eabc..13356d3b7bcd 100644
---- a/drivers/irqchip/irq-bcm2835.c
-+++ b/drivers/irqchip/irq-bcm2835.c
-@@ -50,8 +50,11 @@
- #include <linux/of_irq.h>
- #include <linux/irqchip.h>
- #include <linux/irqdomain.h>
-+#include <linux/mfd/syscon.h>
-+#include <linux/regmap.h>
-
- #include <asm/exception.h>
-+#include <asm/mach/irq.h>
-
- /* Put the bank and irq (32 bits) into the hwirq */
- #define MAKE_HWIRQ(b, n) (((b) << 5) | (n))
-@@ -69,6 +72,9 @@
- #define BANK0_VALID_MASK (BANK0_HWIRQ_MASK | BANK1_HWIRQ | BANK2_HWIRQ \
- | SHORTCUT1_MASK | SHORTCUT2_MASK)
-
-+#undef ARM_LOCAL_GPU_INT_ROUTING
-+#define ARM_LOCAL_GPU_INT_ROUTING 0x0c
-+
- #define REG_FIQ_CONTROL 0x0c
- #define REG_FIQ_ENABLE 0x80
- #define REG_FIQ_DISABLE 0
-@@ -94,6 +100,7 @@ struct armctrl_ic {
- void __iomem *enable[NR_BANKS];
- void __iomem *disable[NR_BANKS];
- struct irq_domain *domain;
-+ struct regmap *local_regmap;
- };
-
- static struct armctrl_ic intc __read_mostly;
-@@ -127,12 +134,35 @@ static void armctrl_mask_irq(struct irq_data *d)
-
- static void armctrl_unmask_irq(struct irq_data *d)
- {
-- if (d->hwirq >= NUMBER_IRQS)
-+ if (d->hwirq >= NUMBER_IRQS) {
-+ if (num_online_cpus() > 1) {
-+ unsigned int data;
-+ int ret;
-+
-+ if (!intc.local_regmap) {
-+ pr_err("FIQ is disabled due to missing regmap\n");
-+ return;
-+ }
-+
-+ ret = regmap_read(intc.local_regmap,
-+ ARM_LOCAL_GPU_INT_ROUTING, &data);
-+ if (ret) {
-+ pr_err("Failed to read int routing %d\n", ret);
-+ return;
-+ }
-+
-+ data &= ~0xc;
-+ data |= (1 << 2);
-+ regmap_write(intc.local_regmap,
-+ ARM_LOCAL_GPU_INT_ROUTING, data);
-+ }
-+
- writel_relaxed(REG_FIQ_ENABLE | hwirq_to_fiq(d->hwirq),
- intc.base + REG_FIQ_CONTROL);
-- else
-+ } else {
- writel_relaxed(HWIRQ_BIT(d->hwirq),
- intc.enable[HWIRQ_BANK(d->hwirq)]);
-+ }
- }
-
- static struct irq_chip armctrl_chip = {
-@@ -209,6 +239,15 @@ static int __init armctrl_of_init(struct device_node *node,
- set_handle_irq(bcm2835_handle_irq);
- }
-
-+ if (is_2836) {
-+ intc.local_regmap =
-+ syscon_regmap_lookup_by_compatible("brcm,bcm2836-arm-local");
-+ if (IS_ERR(intc.local_regmap)) {
-+ pr_err("Failed to get local register map. FIQ is disabled for cpus > 1\n");
-+ intc.local_regmap = NULL;
-+ }
-+ }
-+
- /* Make a duplicate irq range which is used to enable FIQ */
- for (b = 0; b < NR_BANKS; b++) {
- for (i = 0; i < bank_irqs[b]; i++) {
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0010-spidev-Add-spidev-compatible-string-to-silence-warni.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0010-spidev-Add-spidev-compatible-string-to-silence-warni.patch
deleted file mode 100644
index f3321680..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0010-spidev-Add-spidev-compatible-string-to-silence-warni.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 13846eca2c4c76b1bb9d48f1c6f2abca1afc2b23 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Tue, 14 Jul 2015 10:26:09 +0100
-Subject: [PATCH 010/493] spidev: Add "spidev" compatible string to silence
- warning
-
-See: https://github.com/raspberrypi/linux/issues/1054
----
- drivers/spi/spidev.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
-index cda10719d1d1..4f3779d3aa09 100644
---- a/drivers/spi/spidev.c
-+++ b/drivers/spi/spidev.c
-@@ -669,6 +669,7 @@ static const struct of_device_id spidev_dt_ids[] = {
- { .compatible = "lineartechnology,ltc2488" },
- { .compatible = "ge,achc" },
- { .compatible = "semtech,sx1301" },
-+ { .compatible = "spidev" },
- {},
- };
- MODULE_DEVICE_TABLE(of, spidev_dt_ids);
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0011-spi-bcm2835-Support-pin-groups-other-than-7-11.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0011-spi-bcm2835-Support-pin-groups-other-than-7-11.patch
deleted file mode 100644
index fa96f5a6..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0011-spi-bcm2835-Support-pin-groups-other-than-7-11.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 3ff42f0c69dbf8a3efbdb4805c3a8dd53294f63d Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Wed, 24 Jun 2015 14:10:44 +0100
-Subject: [PATCH 011/493] spi-bcm2835: Support pin groups other than 7-11
-
-The spi-bcm2835 driver automatically uses GPIO chip-selects due to
-some unreliability of the native ones. In doing so it chooses the
-same pins as the native chip-selects would use, but the existing
-code always uses pins 7 and 8, wherever the SPI function is mapped.
-
-Search the pinctrl group assigned to the driver for pins that
-correspond to native chip-selects, and use those for GPIO chip-
-selects.
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- drivers/spi/spi-bcm2835.c | 43 ++++++++++++++++++++++++++++++++-------
- 1 file changed, 36 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
-index 25abf2d1732a..23ec074b1fb6 100644
---- a/drivers/spi/spi-bcm2835.c
-+++ b/drivers/spi/spi-bcm2835.c
-@@ -686,6 +686,8 @@ static int bcm2835_spi_setup(struct spi_device *spi)
- {
- int err;
- struct gpio_chip *chip;
-+ struct device_node *pins;
-+ u32 pingroup_index;
- /*
- * sanity checking the native-chipselects
- */
-@@ -702,15 +704,42 @@ static int bcm2835_spi_setup(struct spi_device *spi)
- "setup: only two native chip-selects are supported\n");
- return -EINVAL;
- }
-+
- /* now translate native cs to GPIO */
-+ /* first look for chip select pins in the devices pin groups */
-+ for (pingroup_index = 0;
-+ (pins = of_parse_phandle(spi->master->dev.of_node,
-+ "pinctrl-0",
-+ pingroup_index)) != 0;
-+ pingroup_index++) {
-+ u32 pin;
-+ u32 pin_index;
-+ for (pin_index = 0;
-+ of_property_read_u32_index(pins,
-+ "brcm,pins",
-+ pin_index,
-+ &pin) == 0;
-+ pin_index++) {
-+ if (((spi->chip_select == 0) &&
-+ ((pin == 8) || (pin == 36) || (pin == 46))) ||
-+ ((spi->chip_select == 1) &&
-+ ((pin == 7) || (pin == 35)))) {
-+ spi->cs_gpio = pin;
-+ break;
-+ }
-+ }
-+ of_node_put(pins);
-+ }
-+ /* if that fails, assume GPIOs 7-11 are used */
-+ if (!gpio_is_valid(spi->cs_gpio) ) {
-+ /* get the gpio chip for the base */
-+ chip = gpiochip_find("pinctrl-bcm2835", chip_match_name);
-+ if (!chip)
-+ return 0;
-
-- /* get the gpio chip for the base */
-- chip = gpiochip_find("pinctrl-bcm2835", chip_match_name);
-- if (!chip)
-- return 0;
--
-- /* and calculate the real CS */
-- spi->cs_gpio = chip->base + 8 - spi->chip_select;
-+ /* and calculate the real CS */
-+ spi->cs_gpio = chip->base + 8 - spi->chip_select;
-+ }
-
- /* and set up the "mode" and level */
- dev_info(&spi->dev, "setting up native-CS%i as GPIO %i\n",
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0012-spi-bcm2835-Disable-forced-software-CS.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0012-spi-bcm2835-Disable-forced-software-CS.patch
deleted file mode 100644
index 3643d6f1..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0012-spi-bcm2835-Disable-forced-software-CS.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 9e95c66347872ad10b2b0bb0e849d3a00dddeb78 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Fri, 1 Jul 2016 22:09:24 +0100
-Subject: [PATCH 012/493] spi-bcm2835: Disable forced software CS
-
-Select software CS in bcm2708_common.dtsi, and disable the automatic
-conversion in the driver to allow hardware CS to be re-enabled with an
-overlay.
-
-See: https://github.com/raspberrypi/linux/issues/1547
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- drivers/spi/spi-bcm2835.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
-index 23ec074b1fb6..f9f9bf7d0df8 100644
---- a/drivers/spi/spi-bcm2835.c
-+++ b/drivers/spi/spi-bcm2835.c
-@@ -705,6 +705,7 @@ static int bcm2835_spi_setup(struct spi_device *spi)
- return -EINVAL;
- }
-
-+#if 0
- /* now translate native cs to GPIO */
- /* first look for chip select pins in the devices pin groups */
- for (pingroup_index = 0;
-@@ -754,6 +755,7 @@ static int bcm2835_spi_setup(struct spi_device *spi)
- spi->chip_select, spi->cs_gpio, err);
- return err;
- }
-+#endif
-
- return 0;
- }
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0013-spi-bcm2835-Remove-unused-code.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0013-spi-bcm2835-Remove-unused-code.patch
deleted file mode 100644
index 854d5b8b..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0013-spi-bcm2835-Remove-unused-code.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 475232386b586e34758c9a253a5a435a067ff129 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Tue, 8 Nov 2016 21:35:38 +0000
-Subject: [PATCH 013/493] spi-bcm2835: Remove unused code
-
----
- drivers/spi/spi-bcm2835.c | 61 ---------------------------------------
- 1 file changed, 61 deletions(-)
-
-diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
-index f9f9bf7d0df8..5816bae19d58 100644
---- a/drivers/spi/spi-bcm2835.c
-+++ b/drivers/spi/spi-bcm2835.c
-@@ -677,17 +677,8 @@ static void bcm2835_spi_set_cs(struct spi_device *spi, bool gpio_level)
- bcm2835_wr(bs, BCM2835_SPI_CS, cs);
- }
-
--static int chip_match_name(struct gpio_chip *chip, void *data)
--{
-- return !strcmp(chip->label, data);
--}
--
- static int bcm2835_spi_setup(struct spi_device *spi)
- {
-- int err;
-- struct gpio_chip *chip;
-- struct device_node *pins;
-- u32 pingroup_index;
- /*
- * sanity checking the native-chipselects
- */
-@@ -705,58 +696,6 @@ static int bcm2835_spi_setup(struct spi_device *spi)
- return -EINVAL;
- }
-
--#if 0
-- /* now translate native cs to GPIO */
-- /* first look for chip select pins in the devices pin groups */
-- for (pingroup_index = 0;
-- (pins = of_parse_phandle(spi->master->dev.of_node,
-- "pinctrl-0",
-- pingroup_index)) != 0;
-- pingroup_index++) {
-- u32 pin;
-- u32 pin_index;
-- for (pin_index = 0;
-- of_property_read_u32_index(pins,
-- "brcm,pins",
-- pin_index,
-- &pin) == 0;
-- pin_index++) {
-- if (((spi->chip_select == 0) &&
-- ((pin == 8) || (pin == 36) || (pin == 46))) ||
-- ((spi->chip_select == 1) &&
-- ((pin == 7) || (pin == 35)))) {
-- spi->cs_gpio = pin;
-- break;
-- }
-- }
-- of_node_put(pins);
-- }
-- /* if that fails, assume GPIOs 7-11 are used */
-- if (!gpio_is_valid(spi->cs_gpio) ) {
-- /* get the gpio chip for the base */
-- chip = gpiochip_find("pinctrl-bcm2835", chip_match_name);
-- if (!chip)
-- return 0;
--
-- /* and calculate the real CS */
-- spi->cs_gpio = chip->base + 8 - spi->chip_select;
-- }
--
-- /* and set up the "mode" and level */
-- dev_info(&spi->dev, "setting up native-CS%i as GPIO %i\n",
-- spi->chip_select, spi->cs_gpio);
--
-- /* set up GPIO as output and pull to the correct level */
-- err = gpio_direction_output(spi->cs_gpio,
-- (spi->mode & SPI_CS_HIGH) ? 0 : 1);
-- if (err) {
-- dev_err(&spi->dev,
-- "could not set CS%i gpio %i as output: %i",
-- spi->chip_select, spi->cs_gpio, err);
-- return err;
-- }
--#endif
--
- return 0;
- }
-
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0014-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0014-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
deleted file mode 100644
index a3e69913..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0014-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From ac5dea1114b8b3ec69eb67f56b9dd638f7d1b8ae Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
-Date: Sat, 3 Oct 2015 22:22:55 +0200
-Subject: [PATCH 014/493] dmaengine: bcm2835: Load driver early and support
- legacy API
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Load driver early since at least bcm2708_fb doesn't support deferred
-probing and even if it did, we don't want the video driver deferred.
-Support the legacy DMA API which is needed by bcm2708_fb.
-Don't mask out channel 2.
-
-Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
----
- drivers/dma/Kconfig | 2 +-
- drivers/dma/bcm2835-dma.c | 26 +++++++++++++++++++++++++-
- 2 files changed, 26 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
-index dacf3f42426d..a4697f1d6ee5 100644
---- a/drivers/dma/Kconfig
-+++ b/drivers/dma/Kconfig
-@@ -131,7 +131,7 @@ config COH901318
-
- config DMA_BCM2835
- tristate "BCM2835 DMA engine support"
-- depends on ARCH_BCM2835
-+ depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709
- select DMA_ENGINE
- select DMA_VIRTUAL_CHANNELS
-
-diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
-index 2b11d967acd0..b676908ef5fa 100644
---- a/drivers/dma/bcm2835-dma.c
-+++ b/drivers/dma/bcm2835-dma.c
-@@ -37,6 +37,7 @@
- #include <linux/interrupt.h>
- #include <linux/list.h>
- #include <linux/module.h>
-+#include <linux/platform_data/dma-bcm2708.h>
- #include <linux/platform_device.h>
- #include <linux/slab.h>
- #include <linux/io.h>
-@@ -48,6 +49,7 @@
-
- #define BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED 14
- #define BCM2835_DMA_CHAN_NAME_SIZE 8
-+#define BCM2835_DMA_BULK_MASK BIT(0)
-
- struct bcm2835_dmadev {
- struct dma_device ddev;
-@@ -912,6 +914,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
- base = devm_ioremap_resource(&pdev->dev, res);
- if (IS_ERR(base))
- return PTR_ERR(base);
-+ rc = bcm_dmaman_probe(pdev, base, BCM2835_DMA_BULK_MASK);
-+ if (rc)
-+ dev_err(&pdev->dev, "Failed to initialize the legacy API\n");
-
- od->base = base;
-
-@@ -950,6 +955,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
- goto err_no_dma;
- }
-
-+ /* Channel 0 is used by the legacy API */
-+ chans_available &= ~BCM2835_DMA_BULK_MASK;
-+
- /* get irqs for each channel that we support */
- for (i = 0; i <= BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED; i++) {
- /* skip masked out channels */
-@@ -1024,6 +1032,7 @@ static int bcm2835_dma_remove(struct platform_device *pdev)
- {
- struct bcm2835_dmadev *od = platform_get_drvdata(pdev);
-
-+ bcm_dmaman_remove(pdev);
- dma_async_device_unregister(&od->ddev);
- bcm2835_dma_free(od);
-
-@@ -1039,7 +1048,22 @@ static struct platform_driver bcm2835_dma_driver = {
- },
- };
-
--module_platform_driver(bcm2835_dma_driver);
-+static int bcm2835_dma_init(void)
-+{
-+ return platform_driver_register(&bcm2835_dma_driver);
-+}
-+
-+static void bcm2835_dma_exit(void)
-+{
-+ platform_driver_unregister(&bcm2835_dma_driver);
-+}
-+
-+/*
-+ * Load after serial driver (arch_initcall) so we see the messages if it fails,
-+ * but before drivers (module_init) that need a DMA channel.
-+ */
-+subsys_initcall(bcm2835_dma_init);
-+module_exit(bcm2835_dma_exit);
-
- MODULE_ALIAS("platform:bcm2835-dma");
- MODULE_DESCRIPTION("BCM2835 DMA engine driver");
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0015-firmware-Updated-mailbox-header.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0015-firmware-Updated-mailbox-header.patch
deleted file mode 100644
index f91016ca..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0015-firmware-Updated-mailbox-header.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 4e045894d1dda230246f31da96a41efb916d1afd Mon Sep 17 00:00:00 2001
-From: popcornmix <popcornmix@gmail.com>
-Date: Mon, 25 Jan 2016 17:25:12 +0000
-Subject: [PATCH 015/493] firmware: Updated mailbox header
-
----
- include/soc/bcm2835/raspberrypi-firmware.h | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h
-index c4a5c9e9fb47..5a77cb921cf4 100644
---- a/include/soc/bcm2835/raspberrypi-firmware.h
-+++ b/include/soc/bcm2835/raspberrypi-firmware.h
-@@ -12,6 +12,8 @@
- #include <linux/types.h>
- #include <linux/of_device.h>
-
-+#define RPI_FIRMWARE_CHAN_FB 1
-+
- struct rpi_firmware;
-
- enum rpi_firmware_property_status {
-@@ -76,6 +78,8 @@ enum rpi_firmware_property_tag {
- RPI_FIRMWARE_GET_CUSTOMER_OTP = 0x00030021,
- RPI_FIRMWARE_GET_DOMAIN_STATE = 0x00030030,
- RPI_FIRMWARE_GET_THROTTLED = 0x00030046,
-+ RPI_FIRMWARE_GET_CLOCK_MEASURED = 0x00030047,
-+ RPI_FIRMWARE_NOTIFY_REBOOT = 0x00030048,
- RPI_FIRMWARE_SET_CLOCK_STATE = 0x00038001,
- RPI_FIRMWARE_SET_CLOCK_RATE = 0x00038002,
- RPI_FIRMWARE_SET_VOLTAGE = 0x00038003,
-@@ -158,5 +162,6 @@ static inline struct rpi_firmware *rpi_firmware_get(struct device_node *firmware
- return NULL;
- }
- #endif
-+int rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data);
-
- #endif /* __SOC_RASPBERRY_FIRMWARE_H__ */
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0016-rtc-Add-SPI-alias-for-pcf2123-driver.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0016-rtc-Add-SPI-alias-for-pcf2123-driver.patch
deleted file mode 100644
index 3b30b1e3..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0016-rtc-Add-SPI-alias-for-pcf2123-driver.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From d49b9b0cea5651326ecee2d590f90b9ec6214016 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Wed, 15 Jun 2016 16:48:41 +0100
-Subject: [PATCH 016/493] rtc: Add SPI alias for pcf2123 driver
-
-Without this alias, Device Tree won't cause the driver
-to be loaded.
-
-See: https://github.com/raspberrypi/linux/pull/1510
----
- drivers/rtc/rtc-pcf2123.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c
-index e5222c5d8223..f97ee62f8e10 100644
---- a/drivers/rtc/rtc-pcf2123.c
-+++ b/drivers/rtc/rtc-pcf2123.c
-@@ -472,3 +472,4 @@ module_spi_driver(pcf2123_driver);
- MODULE_AUTHOR("Chris Verges <chrisv@cyberswitching.com>");
- MODULE_DESCRIPTION("NXP PCF2123 RTC driver");
- MODULE_LICENSE("GPL");
-+MODULE_ALIAS("spi:rtc-pcf2123");
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0017-watchdog-bcm2835-Support-setting-reboot-partition.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0017-watchdog-bcm2835-Support-setting-reboot-partition.patch
deleted file mode 100644
index 3fb2408e..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0017-watchdog-bcm2835-Support-setting-reboot-partition.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 684af7e15b503e3bf2bc90f0951addf1f35d29dd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
-Date: Fri, 7 Oct 2016 16:50:59 +0200
-Subject: [PATCH 017/493] watchdog: bcm2835: Support setting reboot partition
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The Raspberry Pi firmware looks at the RSTS register to know which
-partition to boot from. The reboot syscall command
-LINUX_REBOOT_CMD_RESTART2 supports passing in a string argument.
-
-Add support for passing in a partition number 0..63 to boot from.
-Partition 63 is a special partiton indicating halt.
-If the partition doesn't exist, the firmware falls back to partition 0.
-
-Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
----
- drivers/watchdog/bcm2835_wdt.c | 49 +++++++++++++++++++---------------
- 1 file changed, 27 insertions(+), 22 deletions(-)
-
-diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c
-index ed05514cc2dc..9699e07119a7 100644
---- a/drivers/watchdog/bcm2835_wdt.c
-+++ b/drivers/watchdog/bcm2835_wdt.c
-@@ -31,13 +31,7 @@
- #define PM_RSTC_WRCFG_SET 0x00000030
- #define PM_RSTC_WRCFG_FULL_RESET 0x00000020
- #define PM_RSTC_RESET 0x00000102
--
--/*
-- * The Raspberry Pi firmware uses the RSTS register to know which partition
-- * to boot from. The partition value is spread into bits 0, 2, 4, 6, 8, 10.
-- * Partition 63 is a special partition used by the firmware to indicate halt.
-- */
--#define PM_RSTS_RASPBERRYPI_HALT 0x555
-+#define PM_RSTS_PARTITION_CLR 0xfffffaaa
-
- #define SECS_TO_WDOG_TICKS(x) ((x) << 16)
- #define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
-@@ -94,9 +88,24 @@ static unsigned int bcm2835_wdt_get_timeleft(struct watchdog_device *wdog)
- return WDOG_TICKS_TO_SECS(ret & PM_WDOG_TIME_SET);
- }
-
--static void __bcm2835_restart(struct bcm2835_wdt *wdt)
-+/*
-+ * The Raspberry Pi firmware uses the RSTS register to know which partiton
-+ * to boot from. The partiton value is spread into bits 0, 2, 4, 6, 8, 10.
-+ * Partiton 63 is a special partition used by the firmware to indicate halt.
-+ */
-+
-+static void __bcm2835_restart(struct bcm2835_wdt *wdt, u8 partition)
- {
-- u32 val;
-+ u32 val, rsts;
-+
-+ rsts = (partition & BIT(0)) | ((partition & BIT(1)) << 1) |
-+ ((partition & BIT(2)) << 2) | ((partition & BIT(3)) << 3) |
-+ ((partition & BIT(4)) << 4) | ((partition & BIT(5)) << 5);
-+
-+ val = readl_relaxed(wdt->base + PM_RSTS);
-+ val &= PM_RSTS_PARTITION_CLR;
-+ val |= PM_PASSWORD | rsts;
-+ writel_relaxed(val, wdt->base + PM_RSTS);
-
- /* use a timeout of 10 ticks (~150us) */
- writel_relaxed(10 | PM_PASSWORD, wdt->base + PM_WDOG);
-@@ -114,7 +123,13 @@ static int bcm2835_restart(struct watchdog_device *wdog,
- {
- struct bcm2835_wdt *wdt = watchdog_get_drvdata(wdog);
-
-- __bcm2835_restart(wdt);
-+ unsigned long long val;
-+ u8 partition = 0;
-+
-+ if (data && !kstrtoull(data, 0, &val) && val <= 63)
-+ partition = val;
-+
-+ __bcm2835_restart(wdt, partition);
-
- return 0;
- }
-@@ -152,19 +167,9 @@ static void bcm2835_power_off(void)
- of_find_compatible_node(NULL, NULL, "brcm,bcm2835-pm-wdt");
- struct platform_device *pdev = of_find_device_by_node(np);
- struct bcm2835_wdt *wdt = platform_get_drvdata(pdev);
-- u32 val;
-
-- /*
-- * We set the watchdog hard reset bit here to distinguish this reset
-- * from the normal (full) reset. bootcode.bin will not reboot after a
-- * hard reset.
-- */
-- val = readl_relaxed(wdt->base + PM_RSTS);
-- val |= PM_PASSWORD | PM_RSTS_RASPBERRYPI_HALT;
-- writel_relaxed(val, wdt->base + PM_RSTS);
--
-- /* Continue with normal reset mechanism */
-- __bcm2835_restart(wdt);
-+ /* Partition 63 tells the firmware that this is a halt */
-+ __bcm2835_restart(wdt, 63);
- }
-
- static int bcm2835_wdt_probe(struct platform_device *pdev)
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0018-reboot-Use-power-off-rather-than-busy-spinning-when-.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0018-reboot-Use-power-off-rather-than-busy-spinning-when-.patch
deleted file mode 100644
index 77df7410..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0018-reboot-Use-power-off-rather-than-busy-spinning-when-.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 90f73e8119b334d0b657b3a7bf0c3b018d5621c3 Mon Sep 17 00:00:00 2001
-From: popcornmix <popcornmix@gmail.com>
-Date: Tue, 5 Apr 2016 19:40:12 +0100
-Subject: [PATCH 018/493] reboot: Use power off rather than busy spinning when
- halt is requested
-
----
- arch/arm/kernel/reboot.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/arch/arm/kernel/reboot.c b/arch/arm/kernel/reboot.c
-index 3b2aa9a9fe26..0180d89a34af 100644
---- a/arch/arm/kernel/reboot.c
-+++ b/arch/arm/kernel/reboot.c
-@@ -105,9 +105,7 @@ void machine_shutdown(void)
- */
- void machine_halt(void)
- {
-- local_irq_disable();
-- smp_send_stop();
-- while (1);
-+ machine_power_off();
- }
-
- /*
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0019-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0019-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch
deleted file mode 100644
index 5abb28ee..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0019-bcm-Make-RASPBERRYPI_POWER-depend-on-PM.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From e64316413ee05fc02ac90f83e0aa8956ad2b54b7 Mon Sep 17 00:00:00 2001
-From: popcornmix <popcornmix@gmail.com>
-Date: Wed, 9 Nov 2016 13:02:52 +0000
-Subject: [PATCH 019/493] bcm: Make RASPBERRYPI_POWER depend on PM
-
----
- drivers/soc/bcm/Kconfig | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/soc/bcm/Kconfig b/drivers/soc/bcm/Kconfig
-index 055a845ed979..587c61998b72 100644
---- a/drivers/soc/bcm/Kconfig
-+++ b/drivers/soc/bcm/Kconfig
-@@ -4,6 +4,7 @@ config RASPBERRYPI_POWER
- bool "Raspberry Pi power domain driver"
- depends on ARCH_BCM2835 || (COMPILE_TEST && OF)
- depends on RASPBERRYPI_FIRMWARE=y
-+ depends on PM
- select PM_GENERIC_DOMAINS if PM
- help
- This enables support for the RPi power domains which can be enabled
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0020-Register-the-clocks-early-during-the-boot-process-so.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0020-Register-the-clocks-early-during-the-boot-process-so.patch
deleted file mode 100644
index b0d1ab08..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0020-Register-the-clocks-early-during-the-boot-process-so.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 2dbbbdf268225a1ce31271f07299bcb99fd9fb78 Mon Sep 17 00:00:00 2001
-From: Martin Sperl <kernel@martin.sperl.org>
-Date: Fri, 2 Sep 2016 16:45:27 +0100
-Subject: [PATCH 020/493] Register the clocks early during the boot process, so
- that special/critical clocks can get enabled early on in the boot process
- avoiding the risk of disabling a clock, pll_divider or pll when a claiming
- driver fails to install propperly - maybe it needs to defer.
-
-Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
----
- drivers/clk/bcm/clk-bcm2835.c | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 7bef0666ae7e..6c2eac8deafd 100644
---- a/drivers/clk/bcm/clk-bcm2835.c
-+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -2184,8 +2184,15 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
- if (ret)
- return ret;
-
-- return of_clk_add_hw_provider(dev->of_node, of_clk_hw_onecell_get,
-+ ret = of_clk_add_hw_provider(dev->of_node, of_clk_hw_onecell_get,
- &cprman->onecell);
-+ if (ret)
-+ return ret;
-+
-+ /* note that we have registered all the clocks */
-+ dev_dbg(dev, "registered %d clocks\n", asize);
-+
-+ return 0;
- }
-
- static const struct of_device_id bcm2835_clk_of_match[] = {
-@@ -2202,7 +2209,11 @@ static struct platform_driver bcm2835_clk_driver = {
- .probe = bcm2835_clk_probe,
- };
-
--builtin_platform_driver(bcm2835_clk_driver);
-+static int __init __bcm2835_clk_driver_init(void)
-+{
-+ return platform_driver_register(&bcm2835_clk_driver);
-+}
-+core_initcall(__bcm2835_clk_driver_init);
-
- MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
- MODULE_DESCRIPTION("BCM2835 clock driver");
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0021-bcm2835-rng-Avoid-initialising-if-already-enabled.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0021-bcm2835-rng-Avoid-initialising-if-already-enabled.patch
deleted file mode 100644
index c673b513..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0021-bcm2835-rng-Avoid-initialising-if-already-enabled.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 83518b959ce04e27741fee2316531071598d868e Mon Sep 17 00:00:00 2001
-From: popcornmix <popcornmix@gmail.com>
-Date: Tue, 6 Dec 2016 17:05:39 +0000
-Subject: [PATCH 021/493] bcm2835-rng: Avoid initialising if already enabled
-
-Avoids the 0x40000 cycles of warmup again if firmware has already used it
----
- drivers/char/hw_random/bcm2835-rng.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/char/hw_random/bcm2835-rng.c b/drivers/char/hw_random/bcm2835-rng.c
-index 6767d965c36c..186fe2fcfeac 100644
---- a/drivers/char/hw_random/bcm2835-rng.c
-+++ b/drivers/char/hw_random/bcm2835-rng.c
-@@ -105,8 +105,10 @@ static int bcm2835_rng_init(struct hwrng *rng)
- }
-
- /* set warm-up count & enable */
-- rng_writel(priv, RNG_WARMUP_COUNT, RNG_STATUS);
-- rng_writel(priv, RNG_RBGEN, RNG_CTRL);
-+ if (!(rng_readl(priv, RNG_CTRL) & RNG_RBGEN)) {
-+ rng_writel(priv, RNG_WARMUP_COUNT, RNG_STATUS);
-+ rng_writel(priv, RNG_RBGEN, RNG_CTRL);
-+ }
-
- return ret;
- }
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0022-kbuild-Ignore-dtco-targets-when-filtering-symbols.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0022-kbuild-Ignore-dtco-targets-when-filtering-symbols.patch
deleted file mode 100644
index 820e1bc3..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0022-kbuild-Ignore-dtco-targets-when-filtering-symbols.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From c211011b6ab0bcc73f2c846ea0c12a8b3ca705da Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Wed, 24 Aug 2016 16:28:44 +0100
-Subject: [PATCH 022/493] kbuild: Ignore dtco targets when filtering symbols
-
----
- scripts/Kbuild.include | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
-index ce53639a864a..6d9e4233e66a 100644
---- a/scripts/Kbuild.include
-+++ b/scripts/Kbuild.include
-@@ -287,7 +287,7 @@ ksym_dep_filter = \
- $(CPP) $(call flags_nodeps,c_flags) -D__KSYM_DEPS__ $< ;; \
- as_*_S|cpp_s_S) \
- $(CPP) $(call flags_nodeps,a_flags) -D__KSYM_DEPS__ $< ;; \
-- boot*|build*|cpp_its_S|*cpp_lds_S|dtc|host*|vdso*) : ;; \
-+ boot*|build*|cpp_its_S|*cpp_lds_S|dtc*|host*|vdso*) : ;; \
- *) echo "Don't know how to preprocess $(1)" >&2; false ;; \
- esac | tr ";" "\n" | sed -n 's/^.*=== __KSYM_\(.*\) ===.*$$/_\1/p'
-
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0023-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0023-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch
deleted file mode 100644
index 219051b4..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0023-clk-bcm2835-Mark-used-PLLs-and-dividers-CRITICAL.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From e7615950384db0a73bdb67231f5258f68ba7cbd1 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Mon, 13 Feb 2017 17:20:08 +0000
-Subject: [PATCH 023/493] clk-bcm2835: Mark used PLLs and dividers CRITICAL
-
-The VPU configures and relies on several PLLs and dividers. Mark all
-enabled dividers and their PLLs as CRITICAL to prevent the kernel from
-switching them off.
--
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- drivers/clk/bcm/clk-bcm2835.c | 5 +++++
- 1 file changed, 5 insertions(+)
--
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 6c2eac8deafd..841e2525ed53 100644
---- a/drivers/clk/bcm/clk-bcm2835.c
-+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1362,6 +1362,11 @@ bcm2835_register_pll_divider(struct bcm2835_cprman *cprman,
- divider->div.hw.init = &init;
- divider->div.table = NULL;
- -
-+ if (!(cprman_read(cprman, data->cm_reg) & data->hold_mask)) {
-+ init.flags |= CLK_IS_CRITICAL;
-+ divider->div.flags |= CLK_IS_CRITICAL;
-+ }
-+-+
- divider->cprman = cprman;
- divider->data = data;
- -
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0024-clk-bcm2835-Add-claim-clocks-property.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0024-clk-bcm2835-Add-claim-clocks-property.patch
deleted file mode 100644
index 0aa6cb8a..00000000
--- a/'>sys-kernel/boest-v4.19.37/raspberrypi/0024-clk-bcm2835-Add-claim-clocks-property.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 6e9675838026aecca625ce40b6ba2303f9458c9e Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Mon, 13 Feb 2017 17:20:08 +0000
-Subject: [PATCH 024/493] clk-bcm2835: Add claim-clocks property
-
-The claim-clocks property can be used to prevent PLLs and dividers
-from being marked as critical. It contains a vector of clock IDs,
-as defined by dt-bindings/clock/bcm2835.h.
-
-Use this mechanism to claim PLLD_DSI0, PLLD_DSI1, PLLH_AUX and
-PLLH_PIX for the vc4_kms_v3d driver.
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- drivers/clk/bcm/clk-bcm2835.c | 34 ++++++++++++++++++++++++++++++++--
- 1 file changed, 32 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 841e2525ed53..985792400853 100644
---- a/drivers/clk/bcm/clk-bcm2835.c
-+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1294,6 +1294,8 @@ static const struct clk_ops bcm2835_vpu_clock_clk_ops = {
- .debug_init = bcm2835_clock_debug_init,
- };
-
-+static bool bcm2835_clk_is_claimed(const char *name);
-+
- static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
- const struct bcm2835_pll_data *data)
- {
-@@ -1310,6 +1312,9 @@ static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
- init.ops = &bcm2835_pll_clk_ops;
- init.flags = CLK_IGNORE_UNUSED;
-
-+ if (!bcm2835_clk_is_claimed(data->name))
-+ init.flags |= CLK_IS_CRITICAL;
-+
- pll = kzalloc(sizeof(*pll), GFP_KERNEL);
- if (!pll)
- return NULL;
-@@ -1363,8 +1368,10 @@ bcm2835_register_pll_divider(struct bcm2835_cprman *cprman,
- divider->div.table = NULL;
-
- if (!(cprman_read(cprman, data->cm_reg) & data->hold_mask)) {
-- init.flags |= CLK_IS_CRITICAL;
-- divider->div.flags |= CLK_IS_CRITICAL;
-+ if (!bcm2835_clk_is_claimed(data->source_pll))
-+ init.flags |= CLK_IS_CRITICAL;
-+ if (!bcm2835_clk_is_claimed(data->name))
-+ divider->div.flags |= CLK_IS_CRITICAL;
- }
-
- divider->cprman = cprman;
-@@ -2116,6 +2123,8 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
- .ctl_reg = CM_PERIICTL),
- };
-
-+static bool bcm2835_clk_claimed[ARRAY_SIZE(clk_desc_array)];
-+
- /*
- * Permanently take a reference on the parent of the SDRAM clock.
- *
-@@ -2135,6 +2144,19 @@ static int bcm2835_mark_sdc_parent_critical(struct clk *sdc)
- return clk_prepare_enable(parent);
- }
-
-+static bool bcm2835_clk_is_claimed(const char *name)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(clk_desc_array); i++) {
-+ const char *clk_name = *(const char **)(clk_desc_array[i].data);
-+ if (!strcmp(name, clk_name))
-+ return bcm2835_clk_claimed[i];
-+ }
-+
-+ return false;
-+}
-+
- static int bcm2835_clk_probe(struct platform_device *pdev)
- {
- struct device *dev = &pdev->dev;
-@@ -2144,6 +2166,7 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
- const struct bcm2835_clk_desc *desc;
- const size_t asize = ARRAY_SIZE(clk_desc_array);
- size_t i;
-+ u32 clk_id;
- int ret;
-
- cprman = devm_kzalloc(dev,
-@@ -2159,6 +2182,13 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
- if (IS_ERR(cprman->regs))
- return PTR_ERR(cprman->regs);
-
-+ memset(bcm2835_clk_claimed, 0, sizeof(bcm2835_clk_claimed));
-+ for (i = 0;
-+ !of_property_read_u32_index(pdev->dev.of_node, "claim-clocks",
-+ i, &clk_id);
-+ i++)
-+ bcm2835_clk_claimed[clk_id]= true;
-+
- memcpy(cprman->real_parent_names, cprman_parent_names,
- sizeof(cprman_parent_names));
- of_clk_parent_fill(dev->of_node, cprman->real_parent_names,
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0025-clk-bcm2835-Read-max-core-clock-from-firmware.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0025-clk-bcm2835-Read-max-core-clock-from-firmware.patch
deleted file mode 100644
index 10c902a8..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0025-clk-bcm2835-Read-max-core-clock-from-firmware.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From 7cf4a2a4b0dc15be89e77b3ad94c7458daec88b4 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Mon, 6 Mar 2017 09:06:18 +0000
-Subject: [PATCH 025/493] clk-bcm2835: Read max core clock from firmware
-
-The VPU is responsible for managing the core clock, usually under
-direction from the bcm2835-cpufreq driver but not via the clk-bcm2835
-driver. Since the core frequency can change without warning, it is
-safer to report the maximum clock rate to users of the core clock -
-I2C, SPI and the mini UART - to err on the safe side when calculating
-clock divisors.
-
-If the DT node for the clock driver includes a reference to the
-firmware node, use the firmware API to query the maximum core clock
-instead of reading the divider registers.
-
-Prior to this patch, a "100KHz" I2C bus was sometimes clocked at about
-160KHz. In particular, switching to the 4.9 kernel was likely to break
-SenseHAT usage on a Pi3.
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- drivers/clk/bcm/clk-bcm2835.c | 39 ++++++++++++++++++++++++++++++++++-
- 1 file changed, 38 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 985792400853..12dd417457ac 100644
---- a/drivers/clk/bcm/clk-bcm2835.c
-+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -44,6 +44,7 @@
- #include <linux/platform_device.h>
- #include <linux/slab.h>
- #include <dt-bindings/clock/bcm2835.h>
-+#include <soc/bcm2835/raspberrypi-firmware.h>
-
- #define CM_PASSWORD 0x5a000000
-
-@@ -298,6 +299,8 @@
- #define LOCK_TIMEOUT_NS 100000000
- #define BCM2835_MAX_FB_RATE 1750000000u
-
-+#define VCMSG_ID_CORE_CLOCK 4
-+
- /*
- * Names of clocks used within the driver that need to be replaced
- * with an external parent's name. This array is in the order that
-@@ -316,6 +319,7 @@ static const char *const cprman_parent_names[] = {
- struct bcm2835_cprman {
- struct device *dev;
- void __iomem *regs;
-+ struct rpi_firmware *fw;
- spinlock_t regs_lock; /* spinlock for all clocks */
-
- /*
-@@ -998,6 +1002,30 @@ static unsigned long bcm2835_clock_get_rate(struct clk_hw *hw,
- return bcm2835_clock_rate_from_divisor(clock, parent_rate, div);
- }
-
-+static unsigned long bcm2835_clock_get_rate_vpu(struct clk_hw *hw,
-+ unsigned long parent_rate)
-+{
-+ struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
-+ struct bcm2835_cprman *cprman = clock->cprman;
-+
-+ if (cprman->fw) {
-+ struct {
-+ u32 id;
-+ u32 val;
-+ } packet;
-+
-+ packet.id = VCMSG_ID_CORE_CLOCK;
-+ packet.val = 0;
-+
-+ if (!rpi_firmware_property(cprman->fw,
-+ RPI_FIRMWARE_GET_MAX_CLOCK_RATE,
-+ &packet, sizeof(packet)))
-+ return packet.val;
-+ }
-+
-+ return bcm2835_clock_get_rate(hw, parent_rate);
-+}
-+
- static void bcm2835_clock_wait_busy(struct bcm2835_clock *clock)
- {
- struct bcm2835_cprman *cprman = clock->cprman;
-@@ -1286,7 +1314,7 @@ static int bcm2835_vpu_clock_is_on(struct clk_hw *hw)
- */
- static const struct clk_ops bcm2835_vpu_clock_clk_ops = {
- .is_prepared = bcm2835_vpu_clock_is_on,
-- .recalc_rate = bcm2835_clock_get_rate,
-+ .recalc_rate = bcm2835_clock_get_rate_vpu,
- .set_rate = bcm2835_clock_set_rate,
- .determine_rate = bcm2835_clock_determine_rate,
- .set_parent = bcm2835_clock_set_parent,
-@@ -2165,6 +2193,7 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
- struct resource *res;
- const struct bcm2835_clk_desc *desc;
- const size_t asize = ARRAY_SIZE(clk_desc_array);
-+ struct device_node *fw_node;
- size_t i;
- u32 clk_id;
- int ret;
-@@ -2182,6 +2211,14 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
- if (IS_ERR(cprman->regs))
- return PTR_ERR(cprman->regs);
-
-+ fw_node = of_parse_phandle(dev->of_node, "firmware", 0);
-+ if (fw_node) {
-+ struct rpi_firmware *fw = rpi_firmware_get(NULL);
-+ if (!fw)
-+ return -EPROBE_DEFER;
-+ cprman->fw = fw;
-+ }
-+
- memset(bcm2835_clk_claimed, 0, sizeof(bcm2835_clk_claimed));
- for (i = 0;
- !of_property_read_u32_index(pdev->dev.of_node, "claim-clocks",
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0026-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0026-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
deleted file mode 100644
index 6240e048..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0026-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From d9585ccd432806f08b78a99c074b91c54f28e8c0 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Mon, 9 May 2016 17:28:18 -0700
-Subject: [PATCH 026/493] clk: bcm2835: Mark GPIO clocks enabled at boot as
- critical.
-
-These divide off of PLLD_PER and are used for the ethernet and wifi
-PHYs source PLLs. Neither of them is currently represented by a phy
-device that would grab the clock for us.
-
-This keeps other drivers from killing the networking PHYs when they
-disable their own clocks and trigger PLLD_PER's refcount going to 0.
-
-v2: Skip marking as critical if they aren't on at boot.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
----
- drivers/clk/bcm/clk-bcm2835.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 12dd417457ac..a142253afdff 100644
---- a/drivers/clk/bcm/clk-bcm2835.c
-+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1453,6 +1453,15 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,
- init.name = data->name;
- init.flags = data->flags | CLK_IGNORE_UNUSED;
-
-+ /*
-+ * Some GPIO clocks for ethernet/wifi PLLs are marked as
-+ * critical (since some platforms use them), but if the
-+ * firmware didn't have them turned on then they clearly
-+ * aren't actually critical.
-+ */
-+ if ((cprman_read(cprman, data->ctl_reg) & CM_ENABLE) == 0)
-+ init.flags &= ~CLK_IS_CRITICAL;
-+
- /*
- * Pass the CLK_SET_RATE_PARENT flag if we are allowed to propagate
- * rate changes on at least of the parents.
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0027-sound-Demote-deferral-errors-to-INFO-level.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0027-sound-Demote-deferral-errors-to-INFO-level.patch
deleted file mode 100644
index 712ee1cf..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0027-sound-Demote-deferral-errors-to-INFO-level.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 5d9a6c6f20ae7c50f00628a5292adc359dd9670f Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Thu, 9 Feb 2017 14:36:44 +0000
-Subject: [PATCH 027/493] sound: Demote deferral errors to INFO level
-
-At present there is no mechanism to specify driver load order,
-which can lead to deferrals and repeated retries until successful.
-Since this situation is expected, reduce the dmesg level to
-INFO and mention that the operation will be retried.
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- sound/soc/soc-core.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
-index 62aa320c2070..058e038df9ee 100644
---- a/sound/soc/soc-core.c
-+++ b/sound/soc/soc-core.c
-@@ -868,8 +868,8 @@ static int soc_bind_dai_link(struct snd_soc_card *card,
- cpu_dai_component.dai_name = dai_link->cpu_dai_name;
- rtd->cpu_dai = snd_soc_find_dai(&cpu_dai_component);
- if (!rtd->cpu_dai) {
-- dev_info(card->dev, "ASoC: CPU DAI %s not registered\n",
-- dai_link->cpu_dai_name);
-+ dev_info(card->dev, "ASoC: CPU DAI %s not registered - will retry\n",
-+ dai_link->cpu_dai_name);
- goto _err_defer;
- }
- snd_soc_rtdcom_add(rtd, rtd->cpu_dai->component);
-@@ -881,7 +881,7 @@ static int soc_bind_dai_link(struct snd_soc_card *card,
- for (i = 0; i < rtd->num_codecs; i++) {
- codec_dais[i] = snd_soc_find_dai(&codecs[i]);
- if (!codec_dais[i]) {
-- dev_err(card->dev, "ASoC: CODEC DAI %s not registered\n",
-+ dev_info(card->dev, "ASoC: CODEC DAI %s not registered - will retry\n",
- codecs[i].dai_name);
- goto _err_defer;
- }
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0028-Update-vfpmodule.c.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0028-Update-vfpmodule.c.patch
deleted file mode 100644
index e9788b22..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0028-Update-vfpmodule.c.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From 0bd46a09ea827dc613472f95b68adbec55e67516 Mon Sep 17 00:00:00 2001
-From: Claggy3 <stephen.maclagan@hotmail.com>
-Date: Sat, 11 Feb 2017 14:00:30 +0000
-Subject: [PATCH 028/493] Update vfpmodule.c
-
-Christopher Alexander Tobias Schulze - May 2, 2015, 11:57 a.m.
-This patch fixes a problem with VFP state save and restore related
-to exception handling (panic with message "BUG: unsupported FP
-instruction in kernel mode") present on VFP11 floating point units
-(as used with ARM1176JZF-S CPUs, e.g. on first generation Raspberry
-Pi boards). This patch was developed and discussed on
-
- https://github.com/raspberrypi/linux/issues/859
-
-A precondition to see the crashes is that floating point exception
-traps are enabled. In this case, the VFP11 might determine that a FPU
-operation needs to trap at a point in time when it is not possible to
-signal this to the ARM11 core any more. The VFP11 will then set the
-FPEXC.EX bit and store the trapped opcode in FPINST. (In some cases,
-a second opcode might have been accepted by the VFP11 before the
-exception was detected and could be reported to the ARM11 - in this
-case, the VFP11 also sets FPEXC.FP2V and stores the second opcode in
-FPINST2.)
-
-If FPEXC.EX is set, the VFP11 will "bounce" the next FPU opcode issued
-by the ARM11 CPU, which will be seen by the ARM11 as an undefined opcode
-trap. The VFP support code examines the FPEXC.EX and FPEXC.FP2V bits
-to decide what actions to take, i.e., whether to emulate the opcodes
-found in FPINST and FPINST2, and whether to retry the bounced instruction.
-
-If a user space application has left the VFP11 in this "pending trap"
-state, the next FPU opcode issued to the VFP11 might actually be the
-VSTMIA operation vfp_save_state() uses to store the FPU registers
-to memory (in our test cases, when building the signal stack frame).
-In this case, the kernel crashes as described above.
-
-This patch fixes the problem by making sure that vfp_save_state() is
-always entered with FPEXC.EX cleared. (The current value of FPEXC has
-already been saved, so this does not corrupt the context. Clearing
-FPEXC.EX has no effects on FPINST or FPINST2. Also note that many
-callers already modify FPEXC by setting FPEXC.EN before invoking
-vfp_save_state().)
-
-This patch also addresses a second problem related to FPEXC.EX: After
-returning from signal handling, the kernel reloads the VFP context
-from the user mode stack. However, the current code explicitly clears
-both FPEXC.EX and FPEXC.FP2V during reload. As VFP11 requires these
-bits to be preserved, this patch disables clearing them for VFP
-implementations belonging to architecture 1. There should be no
-negative side effects: the user can set both bits by executing FPU
-opcodes anyway, and while user code may now place arbitrary values
-into FPINST and FPINST2 (e.g., non-VFP ARM opcodes) the VFP support
-code knows which instructions can be emulated, and rejects other
-opcodes with "unhandled bounce" messages, so there should be no
-security impact from allowing reloading FPEXC.EX and FPEXC.FP2V.
-
-Signed-off-by: Christopher Alexander Tobias Schulze <cat.schulze@alice-dsl.net>
----
- arch/arm/vfp/vfpmodule.c | 25 +++++++++++++++++++------
- 1 file changed, 19 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
-index 66c5e693428a..e0ece0372d8d 100644
---- a/arch/arm/vfp/vfpmodule.c
-+++ b/arch/arm/vfp/vfpmodule.c
-@@ -179,8 +179,11 @@ static int vfp_notifier(struct notifier_block *self, unsigned long cmd, void *v)
- * case the thread migrates to a different CPU. The
- * restoring is done lazily.
- */
-- if ((fpexc & FPEXC_EN) && vfp_current_hw_state[cpu])
-+ if ((fpexc & FPEXC_EN) && vfp_current_hw_state[cpu]) {
-+ /* vfp_save_state oopses on VFP11 if EX bit set */
-+ fmxr(FPEXC, fpexc & ~FPEXC_EX);
- vfp_save_state(vfp_current_hw_state[cpu], fpexc);
-+ }
- #endif
-
- /*
-@@ -462,13 +465,16 @@ static int vfp_pm_suspend(void)
- /* if vfp is on, then save state for resumption */
- if (fpexc & FPEXC_EN) {
- pr_debug("%s: saving vfp state\n", __func__);
-+ /* vfp_save_state oopses on VFP11 if EX bit set */
-+ fmxr(FPEXC, fpexc & ~FPEXC_EX);
- vfp_save_state(&ti->vfpstate, fpexc);
-
- /* disable, just in case */
- fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN);
- } else if (vfp_current_hw_state[ti->cpu]) {
- #ifndef CONFIG_SMP
-- fmxr(FPEXC, fpexc | FPEXC_EN);
-+ /* vfp_save_state oopses on VFP11 if EX bit set */
-+ fmxr(FPEXC, (fpexc & ~FPEXC_EX) | FPEXC_EN);
- vfp_save_state(vfp_current_hw_state[ti->cpu], fpexc);
- fmxr(FPEXC, fpexc);
- #endif
-@@ -531,7 +537,8 @@ void vfp_sync_hwstate(struct thread_info *thread)
- /*
- * Save the last VFP state on this CPU.
- */
-- fmxr(FPEXC, fpexc | FPEXC_EN);
-+ /* vfp_save_state oopses on VFP11 if EX bit set */
-+ fmxr(FPEXC, (fpexc & ~FPEXC_EX) | FPEXC_EN);
- vfp_save_state(&thread->vfpstate, fpexc | FPEXC_EN);
- fmxr(FPEXC, fpexc);
- }
-@@ -597,6 +604,7 @@ int vfp_restore_user_hwstate(struct user_vfp *ufp, struct user_vfp_exc *ufp_exc)
- struct thread_info *thread = current_thread_info();
- struct vfp_hard_struct *hwstate = &thread->vfpstate.hard;
- unsigned long fpexc;
-+ u32 fpsid = fmrx(FPSID);
-
- /* Disable VFP to avoid corrupting the new thread state. */
- vfp_flush_hwstate(thread);
-@@ -619,8 +627,12 @@ int vfp_restore_user_hwstate(struct user_vfp *ufp, struct user_vfp_exc *ufp_exc)
- /* Ensure the VFP is enabled. */
- fpexc |= FPEXC_EN;
-
-- /* Ensure FPINST2 is invalid and the exception flag is cleared. */
-- fpexc &= ~(FPEXC_EX | FPEXC_FP2V);
-+ /* Mask FPXEC_EX and FPEXC_FP2V if not required by VFP arch */
-+ if ((fpsid & FPSID_ARCH_MASK) != (1 << FPSID_ARCH_BIT)) {
-+ /* Ensure FPINST2 is invalid and the exception flag is cleared. */
-+ fpexc &= ~(FPEXC_EX | FPEXC_FP2V);
-+ }
-+
- hwstate->fpexc = fpexc;
-
- hwstate->fpinst = ufp_exc->fpinst;
-@@ -690,7 +702,8 @@ void kernel_neon_begin(void)
- cpu = get_cpu();
-
- fpexc = fmrx(FPEXC) | FPEXC_EN;
-- fmxr(FPEXC, fpexc);
-+ /* vfp_save_state oopses on VFP11 if EX bit set */
-+ fmxr(FPEXC, fpexc & ~FPEXC_EX);
-
- /*
- * Save the userland NEON/VFP state. Under UP,
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0029-i2c-bcm2835-Add-debug-support.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0029-i2c-bcm2835-Add-debug-support.patch
deleted file mode 100644
index 5c4c8c02..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0029-i2c-bcm2835-Add-debug-support.patch
+++ /dev/null
@@ -1,191 +0,0 @@
-From cfb3d6f34da538933d985ca8879866cb5ec0448e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
-Date: Tue, 1 Nov 2016 15:15:41 +0100
-Subject: [PATCH 029/493] i2c: bcm2835: Add debug support
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This adds a debug module parameter to aid in debugging transfer issues
-by printing info to the kernel log. When enabled, status values are
-collected in the interrupt routine and msg info in
-bcm2835_i2c_start_transfer(). This is done in a way that tries to avoid
-affecting timing. Having printk in the isr can mask issues.
-
-debug values (additive):
-1: Print info on error
-2: Print info on all transfers
-3: Print messages before transfer is started
-
-The value can be changed at runtime:
-/sys/module/i2c_bcm2835/parameters/debug
-
-Example output, debug=3:
-[ 747.114448] bcm2835_i2c_xfer: msg(1/2) write addr=0x54, len=2 flags= [i2c1]
-[ 747.114463] bcm2835_i2c_xfer: msg(2/2) read addr=0x54, len=32 flags= [i2c1]
-[ 747.117809] start_transfer: msg(1/2) write addr=0x54, len=2 flags= [i2c1]
-[ 747.117825] isr: remain=2, status=0x30000055 : TA TXW TXD TXE [i2c1]
-[ 747.117839] start_transfer: msg(2/2) read addr=0x54, len=32 flags= [i2c1]
-[ 747.117849] isr: remain=32, status=0xd0000039 : TA RXR TXD RXD [i2c1]
-[ 747.117861] isr: remain=20, status=0xd0000039 : TA RXR TXD RXD [i2c1]
-[ 747.117870] isr: remain=8, status=0x32 : DONE TXD RXD [i2c1]
-
-Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
----
- drivers/i2c/busses/i2c-bcm2835.c | 99 +++++++++++++++++++++++++++++++-
- 1 file changed, 98 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
-index 4d19254f78c8..1426dab2670b 100644
---- a/drivers/i2c/busses/i2c-bcm2835.c
-+++ b/drivers/i2c/busses/i2c-bcm2835.c
-@@ -56,6 +56,18 @@
- #define BCM2835_I2C_CDIV_MIN 0x0002
- #define BCM2835_I2C_CDIV_MAX 0xFFFE
-
-+static unsigned int debug;
-+module_param(debug, uint, 0644);
-+MODULE_PARM_DESC(debug, "1=err, 2=isr, 3=xfer");
-+
-+#define BCM2835_DEBUG_MAX 512
-+struct bcm2835_debug {
-+ struct i2c_msg *msg;
-+ int msg_idx;
-+ size_t remain;
-+ u32 status;
-+};
-+
- struct bcm2835_i2c_dev {
- struct device *dev;
- void __iomem *regs;
-@@ -69,8 +81,78 @@ struct bcm2835_i2c_dev {
- u32 msg_err;
- u8 *msg_buf;
- size_t msg_buf_remaining;
-+ struct bcm2835_debug debug[BCM2835_DEBUG_MAX];
-+ unsigned int debug_num;
-+ unsigned int debug_num_msgs;
- };
-
-+static inline void bcm2835_debug_add(struct bcm2835_i2c_dev *i2c_dev, u32 s)
-+{
-+ if (!i2c_dev->debug_num_msgs || i2c_dev->debug_num >= BCM2835_DEBUG_MAX)
-+ return;
-+
-+ i2c_dev->debug[i2c_dev->debug_num].msg = i2c_dev->curr_msg;
-+ i2c_dev->debug[i2c_dev->debug_num].msg_idx =
-+ i2c_dev->debug_num_msgs - i2c_dev->num_msgs;
-+ i2c_dev->debug[i2c_dev->debug_num].remain = i2c_dev->msg_buf_remaining;
-+ i2c_dev->debug[i2c_dev->debug_num].status = s;
-+ i2c_dev->debug_num++;
-+}
-+
-+static void bcm2835_debug_print_status(struct bcm2835_i2c_dev *i2c_dev,
-+ struct bcm2835_debug *d)
-+{
-+ u32 s = d->status;
-+
-+ pr_info("isr: remain=%zu, status=0x%x : %s%s%s%s%s%s%s%s%s%s [i2c%d]\n",
-+ d->remain, s,
-+ s & BCM2835_I2C_S_TA ? "TA " : "",
-+ s & BCM2835_I2C_S_DONE ? "DONE " : "",
-+ s & BCM2835_I2C_S_TXW ? "TXW " : "",
-+ s & BCM2835_I2C_S_RXR ? "RXR " : "",
-+ s & BCM2835_I2C_S_TXD ? "TXD " : "",
-+ s & BCM2835_I2C_S_RXD ? "RXD " : "",
-+ s & BCM2835_I2C_S_TXE ? "TXE " : "",
-+ s & BCM2835_I2C_S_RXF ? "RXF " : "",
-+ s & BCM2835_I2C_S_ERR ? "ERR " : "",
-+ s & BCM2835_I2C_S_CLKT ? "CLKT " : "",
-+ i2c_dev->adapter.nr);
-+}
-+
-+static void bcm2835_debug_print_msg(struct bcm2835_i2c_dev *i2c_dev,
-+ struct i2c_msg *msg, int i, int total,
-+ const char *fname)
-+{
-+ pr_info("%s: msg(%d/%d) %s addr=0x%02x, len=%u flags=%s%s%s%s%s%s%s [i2c%d]\n",
-+ fname, i, total,
-+ msg->flags & I2C_M_RD ? "read" : "write", msg->addr, msg->len,
-+ msg->flags & I2C_M_TEN ? "TEN" : "",
-+ msg->flags & I2C_M_RECV_LEN ? "RECV_LEN" : "",
-+ msg->flags & I2C_M_NO_RD_ACK ? "NO_RD_ACK" : "",
-+ msg->flags & I2C_M_IGNORE_NAK ? "IGNORE_NAK" : "",
-+ msg->flags & I2C_M_REV_DIR_ADDR ? "REV_DIR_ADDR" : "",
-+ msg->flags & I2C_M_NOSTART ? "NOSTART" : "",
-+ msg->flags & I2C_M_STOP ? "STOP" : "",
-+ i2c_dev->adapter.nr);
-+}
-+
-+static void bcm2835_debug_print(struct bcm2835_i2c_dev *i2c_dev)
-+{
-+ struct bcm2835_debug *d;
-+ unsigned int i;
-+
-+ for (i = 0; i < i2c_dev->debug_num; i++) {
-+ d = &i2c_dev->debug[i];
-+ if (d->status == ~0)
-+ bcm2835_debug_print_msg(i2c_dev, d->msg, d->msg_idx,
-+ i2c_dev->debug_num_msgs, "start_transfer");
-+ else
-+ bcm2835_debug_print_status(i2c_dev, d);
-+ }
-+ if (i2c_dev->debug_num >= BCM2835_DEBUG_MAX)
-+ pr_info("BCM2835_DEBUG_MAX reached\n");
-+}
-+
- static inline void bcm2835_i2c_writel(struct bcm2835_i2c_dev *i2c_dev,
- u32 reg, u32 val)
- {
-@@ -189,6 +271,7 @@ static void bcm2835_i2c_start_transfer(struct bcm2835_i2c_dev *i2c_dev)
- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_A, msg->addr);
- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DLEN, msg->len);
- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, c);
-+ bcm2835_debug_add(i2c_dev, ~0);
- }
-
- static void bcm2835_i2c_finish_transfer(struct bcm2835_i2c_dev *i2c_dev)
-@@ -215,6 +298,7 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
- u32 val, err;
-
- val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S);
-+ bcm2835_debug_add(i2c_dev, val);
-
- err = val & (BCM2835_I2C_S_CLKT | BCM2835_I2C_S_ERR);
- if (err) {
-@@ -281,6 +365,13 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
- unsigned long time_left;
- int i, ret;
-
-+ if (debug)
-+ i2c_dev->debug_num_msgs = num;
-+
-+ if (debug > 2)
-+ for (i = 0; i < num; i++)
-+ bcm2835_debug_print_msg(i2c_dev, &msgs[i], i + 1, num, __func__);
-+
- for (i = 0; i < (num - 1); i++)
- if (msgs[i].flags & I2C_M_RD) {
- dev_warn_once(i2c_dev->dev,
-@@ -303,6 +394,10 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
-
- bcm2835_i2c_finish_transfer(i2c_dev);
-
-+ if (debug > 1 || (debug && (!time_left || i2c_dev->msg_err)))
-+ bcm2835_debug_print(i2c_dev);
-+ i2c_dev->debug_num_msgs = 0;
-+ i2c_dev->debug_num = 0;
- if (!time_left) {
- bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C,
- BCM2835_I2C_C_CLEAR);
-@@ -313,7 +408,9 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
- if (!i2c_dev->msg_err)
- return num;
-
-- dev_dbg(i2c_dev->dev, "i2c transfer failed: %x\n", i2c_dev->msg_err);
-+ if (debug)
-+ dev_err(i2c_dev->dev, "i2c transfer failed: %x\n",
-+ i2c_dev->msg_err);
-
- if (i2c_dev->msg_err & BCM2835_I2C_S_ERR)
- return -EREMOTEIO;
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0030-mm-Remove-the-PFN-busy-warning.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0030-mm-Remove-the-PFN-busy-warning.patch
deleted file mode 100644
index 31dcb82a..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0030-mm-Remove-the-PFN-busy-warning.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From c863c15d507b03892560f629cb7862c00e157f7f Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Thu, 18 Dec 2014 16:07:15 -0800
-Subject: [PATCH 030/493] mm: Remove the PFN busy warning
-
-See commit dae803e165a11bc88ca8dbc07a11077caf97bbcb -- the warning is
-expected sometimes when using CMA. However, that commit still spams
-my kernel log with these warnings.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
----
- mm/page_alloc.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 8e6932a140b8..aa38fdb8ca53 100644
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
-@@ -7970,8 +7970,6 @@ int alloc_contig_range(unsigned long start, unsigned long end,
-
- /* Make sure the range is really isolated. */
- if (test_pages_isolated(outer_start, end, false)) {
-- pr_info_ratelimited("%s: [%lx, %lx) PFNs busy\n",
-- __func__, outer_start, end);
- ret = -EBUSY;
- goto done;
- }
diff --git a/sys-kernel/boest-v4.19.37/raspberrypi/0031-ASoC-Add-prompt-for-ICS43432-codec.patch b/sys-kernel/boest-v4.19.37/raspberrypi/0031-ASoC-Add-prompt-for-ICS43432-codec.patch
deleted file mode 100644
index 71cd1301..00000000
--- a/sys-kernel/boest-v4.19.37/raspberrypi/0031-ASoC-Add-prompt-for-ICS43432-codec.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 76537c47cac26f78bcacfe4f56eb5ccd209e42ad Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Thu, 23 Mar 2017 10:06:56 +0000
-Subject: [PATCH 031/493] ASoC: Add prompt for ICS43432 codec
-
-Without a prompt string, a config setting can't be included in a
-defconfig. Give CONFIG_SND_SOC_ICS43432 a prompt so that Pi soundcards
-can use the driver.
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- sound/soc/codecs/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
-index efb095dbcd71..7956d964fe5f 100644
---- a/sound/soc/codecs/Kconfig
-+++ b/sound/soc/codecs/Kconfig
-@@ -616,7 +616,7 @@ config SND_SOC_HDAC_HDMI
- select HDMI
-
- config SND_SOC_ICS43432
-- tristate
-+ tristate "InvenSense ICS43432 I2S microphone codec"
-
- config SND_SOC_IN