kernel: update to 5.10.5

todo: add armv5tel and aarch64 config and rootfiles.

Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
Arne Fitzenreiter
2021-01-07 23:22:08 +01:00
parent 696cd0cc6d
commit c062c7700f
13 changed files with 12654 additions and 7868 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,7 @@
#usr/include/asm-generic
#usr/include/asm-generic/auxvec.h
#usr/include/asm-generic/bitsperlong.h
#usr/include/asm-generic/bpf_perf_event.h
#usr/include/asm-generic/errno-base.h
#usr/include/asm-generic/errno.h
#usr/include/asm-generic/fcntl.h
@@ -22,7 +23,6 @@
#usr/include/asm-generic/sembuf.h
#usr/include/asm-generic/setup.h
#usr/include/asm-generic/shmbuf.h
#usr/include/asm-generic/shmparam.h
#usr/include/asm-generic/siginfo.h
#usr/include/asm-generic/signal-defs.h
#usr/include/asm-generic/signal.h
@@ -41,6 +41,7 @@
#usr/include/asm/bitsperlong.h
#usr/include/asm/boot.h
#usr/include/asm/bootparam.h
#usr/include/asm/bpf_perf_event.h
#usr/include/asm/byteorder.h
#usr/include/asm/debugreg.h
#usr/include/asm/e820.h
@@ -48,7 +49,6 @@
#usr/include/asm/fcntl.h
#usr/include/asm/hw_breakpoint.h
#usr/include/asm/hwcap2.h
#usr/include/asm/hyperv.h
#usr/include/asm/ioctl.h
#usr/include/asm/ioctls.h
#usr/include/asm/ipcbuf.h
@@ -109,16 +109,19 @@
#usr/include/drm/exynos_drm.h
#usr/include/drm/i810_drm.h
#usr/include/drm/i915_drm.h
#usr/include/drm/lima_drm.h
#usr/include/drm/mga_drm.h
#usr/include/drm/msm_drm.h
#usr/include/drm/nouveau_drm.h
#usr/include/drm/omap_drm.h
#usr/include/drm/panfrost_drm.h
#usr/include/drm/qxl_drm.h
#usr/include/drm/r128_drm.h
#usr/include/drm/radeon_drm.h
#usr/include/drm/savage_drm.h
#usr/include/drm/sis_drm.h
#usr/include/drm/tegra_drm.h
#usr/include/drm/v3d_drm.h
#usr/include/drm/vc4_drm.h
#usr/include/drm/vgem_drm.h
#usr/include/drm/via_drm.h
@@ -135,9 +138,12 @@
#usr/include/linux/am437x-vpfe.h
#usr/include/linux/android
#usr/include/linux/android/binder.h
#usr/include/linux/android/binderfs.h
#usr/include/linux/apm_bios.h
#usr/include/linux/arcfb.h
#usr/include/linux/arm_sdei.h
#usr/include/linux/aspeed-lpc-ctrl.h
#usr/include/linux/aspeed-p2a-ctrl.h
#usr/include/linux/atalk.h
#usr/include/linux/atm.h
#usr/include/linux/atm_eni.h
@@ -163,7 +169,7 @@
#usr/include/linux/auto_fs4.h
#usr/include/linux/auxvec.h
#usr/include/linux/ax25.h
#usr/include/linux/b1lli.h
#usr/include/linux/batadv_packet.h
#usr/include/linux/batman_adv.h
#usr/include/linux/baycom.h
#usr/include/linux/bcache.h
@@ -176,9 +182,11 @@
#usr/include/linux/bpf.h
#usr/include/linux/bpf_common.h
#usr/include/linux/bpf_perf_event.h
#usr/include/linux/bpfilter.h
#usr/include/linux/bpqether.h
#usr/include/linux/bsg.h
#usr/include/linux/bt-bmc.h
#usr/include/linux/btf.h
#usr/include/linux/btrfs.h
#usr/include/linux/btrfs_tree.h
#usr/include/linux/byteorder
@@ -192,6 +200,8 @@
#usr/include/linux/can/bcm.h
#usr/include/linux/can/error.h
#usr/include/linux/can/gw.h
#usr/include/linux/can/isotp.h
#usr/include/linux/can/j1939.h
#usr/include/linux/can/netlink.h
#usr/include/linux/can/raw.h
#usr/include/linux/can/vxcan.h
@@ -206,10 +216,10 @@
#usr/include/linux/chio.h
#usr/include/linux/cifs
#usr/include/linux/cifs/cifs_mount.h
#usr/include/linux/close_range.h
#usr/include/linux/cm4000_cs.h
#usr/include/linux/cn_proc.h
#usr/include/linux/coda.h
#usr/include/linux/coda_psdev.h
#usr/include/linux/coff.h
#usr/include/linux/connector.h
#usr/include/linux/const.h
@@ -230,7 +240,9 @@
#usr/include/linux/dm-ioctl.h
#usr/include/linux/dm-log-userspace.h
#usr/include/linux/dma-buf.h
#usr/include/linux/dma-heap.h
#usr/include/linux/dn.h
#usr/include/linux/dns_resolver.h
#usr/include/linux/dqblk_xfs.h
#usr/include/linux/dvb
#usr/include/linux/dvb/audio.h
@@ -246,10 +258,11 @@
#usr/include/linux/elf-em.h
#usr/include/linux/elf-fdpic.h
#usr/include/linux/elf.h
#usr/include/linux/elfcore.h
#usr/include/linux/errno.h
#usr/include/linux/errqueue.h
#usr/include/linux/erspan.h
#usr/include/linux/ethtool.h
#usr/include/linux/ethtool_netlink.h
#usr/include/linux/eventpoll.h
#usr/include/linux/fadvise.h
#usr/include/linux/falloc.h
@@ -263,11 +276,14 @@
#usr/include/linux/filter.h
#usr/include/linux/firewire-cdev.h
#usr/include/linux/firewire-constants.h
#usr/include/linux/flat.h
#usr/include/linux/fou.h
#usr/include/linux/fpga-dfl.h
#usr/include/linux/fs.h
#usr/include/linux/fscrypt.h
#usr/include/linux/fsi.h
#usr/include/linux/fsl_hypervisor.h
#usr/include/linux/fsmap.h
#usr/include/linux/fsverity.h
#usr/include/linux/fuse.h
#usr/include/linux/futex.h
#usr/include/linux/gameport.h
@@ -276,7 +292,6 @@
#usr/include/linux/genwqe
#usr/include/linux/genwqe/genwqe_card.h
#usr/include/linux/gfs2_ondisk.h
#usr/include/linux/gigaset_dev.h
#usr/include/linux/gpio.h
#usr/include/linux/gsmmux.h
#usr/include/linux/gtp.h
@@ -296,13 +311,13 @@
#usr/include/linux/hsr_netlink.h
#usr/include/linux/hw_breakpoint.h
#usr/include/linux/hyperv.h
#usr/include/linux/hysdn_if.h
#usr/include/linux/i2c-dev.h
#usr/include/linux/i2c.h
#usr/include/linux/i2o-dev.h
#usr/include/linux/i8k.h
#usr/include/linux/icmp.h
#usr/include/linux/icmpv6.h
#usr/include/linux/idxd.h
#usr/include/linux/if.h
#usr/include/linux/if_addr.h
#usr/include/linux/if_addrlabel.h
@@ -334,6 +349,7 @@
#usr/include/linux/if_tunnel.h
#usr/include/linux/if_vlan.h
#usr/include/linux/if_x25.h
#usr/include/linux/if_xdp.h
#usr/include/linux/ife.h
#usr/include/linux/igmp.h
#usr/include/linux/iio
@@ -347,29 +363,27 @@
#usr/include/linux/inotify.h
#usr/include/linux/input-event-codes.h
#usr/include/linux/input.h
#usr/include/linux/io_uring.h
#usr/include/linux/ioctl.h
#usr/include/linux/iommu.h
#usr/include/linux/ip.h
#usr/include/linux/ip6_tunnel.h
#usr/include/linux/ip_vs.h
#usr/include/linux/ipc.h
#usr/include/linux/ipmi.h
#usr/include/linux/ipmi_bmc.h
#usr/include/linux/ipmi_msgdefs.h
#usr/include/linux/ipsec.h
#usr/include/linux/ipv6.h
#usr/include/linux/ipv6_route.h
#usr/include/linux/ipx.h
#usr/include/linux/irda.h
#usr/include/linux/irqnr.h
#usr/include/linux/isdn
#usr/include/linux/isdn.h
#usr/include/linux/isdn/capicmd.h
#usr/include/linux/isdn_divertif.h
#usr/include/linux/isdn_ppp.h
#usr/include/linux/isdnif.h
#usr/include/linux/iso_fs.h
#usr/include/linux/isst_if.h
#usr/include/linux/ivtv.h
#usr/include/linux/ivtvfb.h
#usr/include/linux/ixjuser.h
#usr/include/linux/jffs2.h
#usr/include/linux/joystick.h
#usr/include/linux/kcm.h
@@ -408,8 +422,6 @@
#usr/include/linux/memfd.h
#usr/include/linux/mempolicy.h
#usr/include/linux/meye.h
#usr/include/linux/mic_common.h
#usr/include/linux/mic_ioctl.h
#usr/include/linux/mii.h
#usr/include/linux/minix_fs.h
#usr/include/linux/mman.h
@@ -417,21 +429,20 @@
#usr/include/linux/mmc/ioctl.h
#usr/include/linux/mmtimer.h
#usr/include/linux/module.h
#usr/include/linux/mount.h
#usr/include/linux/mpls.h
#usr/include/linux/mpls_iptunnel.h
#usr/include/linux/mptcp.h
#usr/include/linux/mqueue.h
#usr/include/linux/mroute.h
#usr/include/linux/mroute6.h
#usr/include/linux/mrp_bridge.h
#usr/include/linux/msdos_fs.h
#usr/include/linux/msg.h
#usr/include/linux/mtio.h
#usr/include/linux/n_r3964.h
#usr/include/linux/nbd-netlink.h
#usr/include/linux/nbd.h
#usr/include/linux/ncp.h
#usr/include/linux/ncp_fs.h
#usr/include/linux/ncp_mount.h
#usr/include/linux/ncp_no.h
#usr/include/linux/ncsi.h
#usr/include/linux/ndctl.h
#usr/include/linux/neighbour.h
@@ -455,6 +466,7 @@
#usr/include/linux/netfilter/nf_conntrack_tuple_common.h
#usr/include/linux/netfilter/nf_log.h
#usr/include/linux/netfilter/nf_nat.h
#usr/include/linux/netfilter/nf_synproxy.h
#usr/include/linux/netfilter/nf_tables.h
#usr/include/linux/netfilter/nf_tables_compat.h
#usr/include/linux/netfilter/nfnetlink.h
@@ -464,6 +476,7 @@
#usr/include/linux/netfilter/nfnetlink_cthelper.h
#usr/include/linux/netfilter/nfnetlink_cttimeout.h
#usr/include/linux/netfilter/nfnetlink_log.h
#usr/include/linux/netfilter/nfnetlink_osf.h
#usr/include/linux/netfilter/nfnetlink_queue.h
#usr/include/linux/netfilter/x_tables.h
#usr/include/linux/netfilter/xt_AUDIT.h
@@ -585,9 +598,11 @@
#usr/include/linux/netfilter_ipv6/ip6t_mh.h
#usr/include/linux/netfilter_ipv6/ip6t_opts.h
#usr/include/linux/netfilter_ipv6/ip6t_rt.h
#usr/include/linux/netfilter_ipv6/ip6t_srh.h
#usr/include/linux/netlink.h
#usr/include/linux/netlink_diag.h
#usr/include/linux/netrom.h
#usr/include/linux/nexthop.h
#usr/include/linux/nfc.h
#usr/include/linux/nfs.h
#usr/include/linux/nfs2.h
@@ -606,6 +621,7 @@
#usr/include/linux/nfsd/stats.h
#usr/include/linux/nilfs2_api.h
#usr/include/linux/nilfs2_ondisk.h
#usr/include/linux/nitro_enclaves.h
#usr/include/linux/nl80211.h
#usr/include/linux/nsfs.h
#usr/include/linux/nubus.h
@@ -614,6 +630,7 @@
#usr/include/linux/omap3isp.h
#usr/include/linux/omapfb.h
#usr/include/linux/oom.h
#usr/include/linux/openat2.h
#usr/include/linux/openvswitch.h
#usr/include/linux/packet_diag.h
#usr/include/linux/param.h
@@ -628,6 +645,7 @@
#usr/include/linux/pg.h
#usr/include/linux/phantom.h
#usr/include/linux/phonet.h
#usr/include/linux/pidfd.h
#usr/include/linux/pkt_cls.h
#usr/include/linux/pkt_sched.h
#usr/include/linux/pktcdvd.h
@@ -645,8 +663,10 @@
#usr/include/linux/prctl.h
#usr/include/linux/psample.h
#usr/include/linux/psci.h
#usr/include/linux/psp-sev.h
#usr/include/linux/ptp_clock.h
#usr/include/linux/ptrace.h
#usr/include/linux/qemu_fw_cfg.h
#usr/include/linux/qnx4_fs.h
#usr/include/linux/qnxtypes.h
#usr/include/linux/qrtr.h
@@ -661,6 +681,7 @@
#usr/include/linux/reboot.h
#usr/include/linux/reiserfs_fs.h
#usr/include/linux/reiserfs_xattr.h
#usr/include/linux/remoteproc_cdev.h
#usr/include/linux/resource.h
#usr/include/linux/rfkill.h
#usr/include/linux/rio_cm_cdev.h
@@ -668,7 +689,10 @@
#usr/include/linux/romfs_fs.h
#usr/include/linux/rose.h
#usr/include/linux/route.h
#usr/include/linux/rpl.h
#usr/include/linux/rpl_iptunnel.h
#usr/include/linux/rpmsg.h
#usr/include/linux/rseq.h
#usr/include/linux/rtc.h
#usr/include/linux/rtnetlink.h
#usr/include/linux/rxrpc.h
@@ -729,11 +753,15 @@
#usr/include/linux/tc_act/tc_bpf.h
#usr/include/linux/tc_act/tc_connmark.h
#usr/include/linux/tc_act/tc_csum.h
#usr/include/linux/tc_act/tc_ct.h
#usr/include/linux/tc_act/tc_ctinfo.h
#usr/include/linux/tc_act/tc_defact.h
#usr/include/linux/tc_act/tc_gact.h
#usr/include/linux/tc_act/tc_gate.h
#usr/include/linux/tc_act/tc_ife.h
#usr/include/linux/tc_act/tc_ipt.h
#usr/include/linux/tc_act/tc_mirred.h
#usr/include/linux/tc_act/tc_mpls.h
#usr/include/linux/tc_act/tc_nat.h
#usr/include/linux/tc_act/tc_pedit.h
#usr/include/linux/tc_act/tc_sample.h
@@ -743,16 +771,17 @@
#usr/include/linux/tc_act/tc_vlan.h
#usr/include/linux/tc_ematch
#usr/include/linux/tc_ematch/tc_em_cmp.h
#usr/include/linux/tc_ematch/tc_em_ipt.h
#usr/include/linux/tc_ematch/tc_em_meta.h
#usr/include/linux/tc_ematch/tc_em_nbyte.h
#usr/include/linux/tc_ematch/tc_em_text.h
#usr/include/linux/tcp.h
#usr/include/linux/tcp_metrics.h
#usr/include/linux/tee.h
#usr/include/linux/telephony.h
#usr/include/linux/termios.h
#usr/include/linux/thermal.h
#usr/include/linux/time.h
#usr/include/linux/time_types.h
#usr/include/linux/timerfd.h
#usr/include/linux/times.h
#usr/include/linux/timex.h
@@ -760,18 +789,21 @@
#usr/include/linux/tipc.h
#usr/include/linux/tipc_config.h
#usr/include/linux/tipc_netlink.h
#usr/include/linux/tipc_sockets_diag.h
#usr/include/linux/tls.h
#usr/include/linux/toshiba.h
#usr/include/linux/tty.h
#usr/include/linux/tty_flags.h
#usr/include/linux/types.h
#usr/include/linux/udf_fs_i.h
#usr/include/linux/udmabuf.h
#usr/include/linux/udp.h
#usr/include/linux/uhid.h
#usr/include/linux/uinput.h
#usr/include/linux/uio.h
#usr/include/linux/uleds.h
#usr/include/linux/ultrasound.h
#usr/include/linux/um_timetravel.h
#usr/include/linux/un.h
#usr/include/linux/unistd.h
#usr/include/linux/unix_diag.h
@@ -784,8 +816,10 @@
#usr/include/linux/usb/charger.h
#usr/include/linux/usb/functionfs.h
#usr/include/linux/usb/g_printer.h
#usr/include/linux/usb/g_uvc.h
#usr/include/linux/usb/gadgetfs.h
#usr/include/linux/usb/midi.h
#usr/include/linux/usb/raw_gadget.h
#usr/include/linux/usb/tmc.h
#usr/include/linux/usb/video.h
#usr/include/linux/usbdevice_fs.h
@@ -801,11 +835,16 @@
#usr/include/linux/v4l2-dv-timings.h
#usr/include/linux/v4l2-mediabus.h
#usr/include/linux/v4l2-subdev.h
#usr/include/linux/vbox_err.h
#usr/include/linux/vbox_vmmdev_types.h
#usr/include/linux/vboxguest.h
#usr/include/linux/version.h
#usr/include/linux/veth.h
#usr/include/linux/vfio.h
#usr/include/linux/vfio_ccw.h
#usr/include/linux/vfio_zdev.h
#usr/include/linux/vhost.h
#usr/include/linux/vhost_types.h
#usr/include/linux/videodev2.h
#usr/include/linux/virtio_9p.h
#usr/include/linux/virtio_balloon.h
@@ -813,36 +852,53 @@
#usr/include/linux/virtio_config.h
#usr/include/linux/virtio_console.h
#usr/include/linux/virtio_crypto.h
#usr/include/linux/virtio_fs.h
#usr/include/linux/virtio_gpu.h
#usr/include/linux/virtio_ids.h
#usr/include/linux/virtio_input.h
#usr/include/linux/virtio_iommu.h
#usr/include/linux/virtio_mem.h
#usr/include/linux/virtio_mmio.h
#usr/include/linux/virtio_net.h
#usr/include/linux/virtio_pci.h
#usr/include/linux/virtio_pmem.h
#usr/include/linux/virtio_ring.h
#usr/include/linux/virtio_rng.h
#usr/include/linux/virtio_scsi.h
#usr/include/linux/virtio_types.h
#usr/include/linux/virtio_vsock.h
#usr/include/linux/vm_sockets.h
#usr/include/linux/vm_sockets_diag.h
#usr/include/linux/vmcore.h
#usr/include/linux/vsockmon.h
#usr/include/linux/vt.h
#usr/include/linux/vtpm_proxy.h
#usr/include/linux/wait.h
#usr/include/linux/wanrouter.h
#usr/include/linux/watch_queue.h
#usr/include/linux/watchdog.h
#usr/include/linux/wimax
#usr/include/linux/wimax.h
#usr/include/linux/wimax/i2400m.h
#usr/include/linux/wireguard.h
#usr/include/linux/wireless.h
#usr/include/linux/wmi.h
#usr/include/linux/x25.h
#usr/include/linux/xattr.h
#usr/include/linux/xdp_diag.h
#usr/include/linux/xfrm.h
#usr/include/linux/xilinx-v4l2-controls.h
#usr/include/linux/zorro.h
#usr/include/linux/zorro_ids.h
#usr/include/misc
#usr/include/misc/cxl.h
#usr/include/misc/fastrpc.h
#usr/include/misc/habanalabs.h
#usr/include/misc/ocxl.h
#usr/include/misc/pvpanic.h
#usr/include/misc/uacce
#usr/include/misc/uacce/hisi_qm.h
#usr/include/misc/uacce/uacce.h
#usr/include/misc/xilinx_sdfec.h
#usr/include/mtd
#usr/include/mtd/inftl-user.h
#usr/include/mtd/mtd-abi.h
@@ -851,27 +907,32 @@
#usr/include/mtd/ubi-user.h
#usr/include/rdma
#usr/include/rdma/bnxt_re-abi.h
#usr/include/rdma/cxgb3-abi.h
#usr/include/rdma/cxgb4-abi.h
#usr/include/rdma/efa-abi.h
#usr/include/rdma/hfi
#usr/include/rdma/hfi/hfi1_ioctl.h
#usr/include/rdma/hfi/hfi1_user.h
#usr/include/rdma/hns-abi.h
#usr/include/rdma/ib_user_cm.h
#usr/include/rdma/i40iw-abi.h
#usr/include/rdma/ib_user_ioctl_cmds.h
#usr/include/rdma/ib_user_ioctl_verbs.h
#usr/include/rdma/ib_user_mad.h
#usr/include/rdma/ib_user_sa.h
#usr/include/rdma/ib_user_verbs.h
#usr/include/rdma/mlx4-abi.h
#usr/include/rdma/mlx5-abi.h
#usr/include/rdma/mlx5_user_ioctl_cmds.h
#usr/include/rdma/mlx5_user_ioctl_verbs.h
#usr/include/rdma/mthca-abi.h
#usr/include/rdma/nes-abi.h
#usr/include/rdma/ocrdma-abi.h
#usr/include/rdma/qedr-abi.h
#usr/include/rdma/rdma_netlink.h
#usr/include/rdma/rdma_user_cm.h
#usr/include/rdma/rdma_user_ioctl.h
#usr/include/rdma/rdma_user_ioctl_cmds.h
#usr/include/rdma/rdma_user_rxe.h
#usr/include/rdma/rvt-abi.h
#usr/include/rdma/siw-abi.h
#usr/include/rdma/vmw_pvrdma-abi.h
#usr/include/scsi
#usr/include/scsi/cxlflash_ioctl.h
@@ -881,6 +942,7 @@
#usr/include/scsi/fc/fc_gs.h
#usr/include/scsi/fc/fc_ns.h
#usr/include/scsi/scsi_bsg_fc.h
#usr/include/scsi/scsi_bsg_ufs.h
#usr/include/scsi/scsi_netlink.h
#usr/include/scsi/scsi_netlink_fc.h
#usr/include/sound
@@ -896,7 +958,13 @@
#usr/include/sound/hdspm.h
#usr/include/sound/sb16_csp.h
#usr/include/sound/sfnt_info.h
#usr/include/sound/skl-tplg-interface.h
#usr/include/sound/snd_sst_tokens.h
#usr/include/sound/sof
#usr/include/sound/sof/abi.h
#usr/include/sound/sof/fw.h
#usr/include/sound/sof/header.h
#usr/include/sound/sof/tokens.h
#usr/include/sound/tlv.h
#usr/include/sound/usb_stream.h
#usr/include/video

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,7 @@
#usr/include/asm-generic
#usr/include/asm-generic/auxvec.h
#usr/include/asm-generic/bitsperlong.h
#usr/include/asm-generic/bpf_perf_event.h
#usr/include/asm-generic/errno-base.h
#usr/include/asm-generic/errno.h
#usr/include/asm-generic/fcntl.h
@@ -22,7 +23,6 @@
#usr/include/asm-generic/sembuf.h
#usr/include/asm-generic/setup.h
#usr/include/asm-generic/shmbuf.h
#usr/include/asm-generic/shmparam.h
#usr/include/asm-generic/siginfo.h
#usr/include/asm-generic/signal-defs.h
#usr/include/asm-generic/signal.h
@@ -41,6 +41,7 @@
#usr/include/asm/bitsperlong.h
#usr/include/asm/boot.h
#usr/include/asm/bootparam.h
#usr/include/asm/bpf_perf_event.h
#usr/include/asm/byteorder.h
#usr/include/asm/debugreg.h
#usr/include/asm/e820.h
@@ -48,7 +49,6 @@
#usr/include/asm/fcntl.h
#usr/include/asm/hw_breakpoint.h
#usr/include/asm/hwcap2.h
#usr/include/asm/hyperv.h
#usr/include/asm/ioctl.h
#usr/include/asm/ioctls.h
#usr/include/asm/ipcbuf.h
@@ -109,16 +109,19 @@
#usr/include/drm/exynos_drm.h
#usr/include/drm/i810_drm.h
#usr/include/drm/i915_drm.h
#usr/include/drm/lima_drm.h
#usr/include/drm/mga_drm.h
#usr/include/drm/msm_drm.h
#usr/include/drm/nouveau_drm.h
#usr/include/drm/omap_drm.h
#usr/include/drm/panfrost_drm.h
#usr/include/drm/qxl_drm.h
#usr/include/drm/r128_drm.h
#usr/include/drm/radeon_drm.h
#usr/include/drm/savage_drm.h
#usr/include/drm/sis_drm.h
#usr/include/drm/tegra_drm.h
#usr/include/drm/v3d_drm.h
#usr/include/drm/vc4_drm.h
#usr/include/drm/vgem_drm.h
#usr/include/drm/via_drm.h
@@ -135,9 +138,12 @@
#usr/include/linux/am437x-vpfe.h
#usr/include/linux/android
#usr/include/linux/android/binder.h
#usr/include/linux/android/binderfs.h
#usr/include/linux/apm_bios.h
#usr/include/linux/arcfb.h
#usr/include/linux/arm_sdei.h
#usr/include/linux/aspeed-lpc-ctrl.h
#usr/include/linux/aspeed-p2a-ctrl.h
#usr/include/linux/atalk.h
#usr/include/linux/atm.h
#usr/include/linux/atm_eni.h
@@ -163,7 +169,7 @@
#usr/include/linux/auto_fs4.h
#usr/include/linux/auxvec.h
#usr/include/linux/ax25.h
#usr/include/linux/b1lli.h
#usr/include/linux/batadv_packet.h
#usr/include/linux/batman_adv.h
#usr/include/linux/baycom.h
#usr/include/linux/bcache.h
@@ -176,9 +182,11 @@
#usr/include/linux/bpf.h
#usr/include/linux/bpf_common.h
#usr/include/linux/bpf_perf_event.h
#usr/include/linux/bpfilter.h
#usr/include/linux/bpqether.h
#usr/include/linux/bsg.h
#usr/include/linux/bt-bmc.h
#usr/include/linux/btf.h
#usr/include/linux/btrfs.h
#usr/include/linux/btrfs_tree.h
#usr/include/linux/byteorder
@@ -192,6 +200,8 @@
#usr/include/linux/can/bcm.h
#usr/include/linux/can/error.h
#usr/include/linux/can/gw.h
#usr/include/linux/can/isotp.h
#usr/include/linux/can/j1939.h
#usr/include/linux/can/netlink.h
#usr/include/linux/can/raw.h
#usr/include/linux/can/vxcan.h
@@ -206,10 +216,10 @@
#usr/include/linux/chio.h
#usr/include/linux/cifs
#usr/include/linux/cifs/cifs_mount.h
#usr/include/linux/close_range.h
#usr/include/linux/cm4000_cs.h
#usr/include/linux/cn_proc.h
#usr/include/linux/coda.h
#usr/include/linux/coda_psdev.h
#usr/include/linux/coff.h
#usr/include/linux/connector.h
#usr/include/linux/const.h
@@ -230,7 +240,9 @@
#usr/include/linux/dm-ioctl.h
#usr/include/linux/dm-log-userspace.h
#usr/include/linux/dma-buf.h
#usr/include/linux/dma-heap.h
#usr/include/linux/dn.h
#usr/include/linux/dns_resolver.h
#usr/include/linux/dqblk_xfs.h
#usr/include/linux/dvb
#usr/include/linux/dvb/audio.h
@@ -246,10 +258,11 @@
#usr/include/linux/elf-em.h
#usr/include/linux/elf-fdpic.h
#usr/include/linux/elf.h
#usr/include/linux/elfcore.h
#usr/include/linux/errno.h
#usr/include/linux/errqueue.h
#usr/include/linux/erspan.h
#usr/include/linux/ethtool.h
#usr/include/linux/ethtool_netlink.h
#usr/include/linux/eventpoll.h
#usr/include/linux/fadvise.h
#usr/include/linux/falloc.h
@@ -263,11 +276,14 @@
#usr/include/linux/filter.h
#usr/include/linux/firewire-cdev.h
#usr/include/linux/firewire-constants.h
#usr/include/linux/flat.h
#usr/include/linux/fou.h
#usr/include/linux/fpga-dfl.h
#usr/include/linux/fs.h
#usr/include/linux/fscrypt.h
#usr/include/linux/fsi.h
#usr/include/linux/fsl_hypervisor.h
#usr/include/linux/fsmap.h
#usr/include/linux/fsverity.h
#usr/include/linux/fuse.h
#usr/include/linux/futex.h
#usr/include/linux/gameport.h
@@ -276,7 +292,6 @@
#usr/include/linux/genwqe
#usr/include/linux/genwqe/genwqe_card.h
#usr/include/linux/gfs2_ondisk.h
#usr/include/linux/gigaset_dev.h
#usr/include/linux/gpio.h
#usr/include/linux/gsmmux.h
#usr/include/linux/gtp.h
@@ -296,13 +311,13 @@
#usr/include/linux/hsr_netlink.h
#usr/include/linux/hw_breakpoint.h
#usr/include/linux/hyperv.h
#usr/include/linux/hysdn_if.h
#usr/include/linux/i2c-dev.h
#usr/include/linux/i2c.h
#usr/include/linux/i2o-dev.h
#usr/include/linux/i8k.h
#usr/include/linux/icmp.h
#usr/include/linux/icmpv6.h
#usr/include/linux/idxd.h
#usr/include/linux/if.h
#usr/include/linux/if_addr.h
#usr/include/linux/if_addrlabel.h
@@ -334,6 +349,7 @@
#usr/include/linux/if_tunnel.h
#usr/include/linux/if_vlan.h
#usr/include/linux/if_x25.h
#usr/include/linux/if_xdp.h
#usr/include/linux/ife.h
#usr/include/linux/igmp.h
#usr/include/linux/iio
@@ -347,29 +363,27 @@
#usr/include/linux/inotify.h
#usr/include/linux/input-event-codes.h
#usr/include/linux/input.h
#usr/include/linux/io_uring.h
#usr/include/linux/ioctl.h
#usr/include/linux/iommu.h
#usr/include/linux/ip.h
#usr/include/linux/ip6_tunnel.h
#usr/include/linux/ip_vs.h
#usr/include/linux/ipc.h
#usr/include/linux/ipmi.h
#usr/include/linux/ipmi_bmc.h
#usr/include/linux/ipmi_msgdefs.h
#usr/include/linux/ipsec.h
#usr/include/linux/ipv6.h
#usr/include/linux/ipv6_route.h
#usr/include/linux/ipx.h
#usr/include/linux/irda.h
#usr/include/linux/irqnr.h
#usr/include/linux/isdn
#usr/include/linux/isdn.h
#usr/include/linux/isdn/capicmd.h
#usr/include/linux/isdn_divertif.h
#usr/include/linux/isdn_ppp.h
#usr/include/linux/isdnif.h
#usr/include/linux/iso_fs.h
#usr/include/linux/isst_if.h
#usr/include/linux/ivtv.h
#usr/include/linux/ivtvfb.h
#usr/include/linux/ixjuser.h
#usr/include/linux/jffs2.h
#usr/include/linux/joystick.h
#usr/include/linux/kcm.h
@@ -408,8 +422,6 @@
#usr/include/linux/memfd.h
#usr/include/linux/mempolicy.h
#usr/include/linux/meye.h
#usr/include/linux/mic_common.h
#usr/include/linux/mic_ioctl.h
#usr/include/linux/mii.h
#usr/include/linux/minix_fs.h
#usr/include/linux/mman.h
@@ -417,21 +429,20 @@
#usr/include/linux/mmc/ioctl.h
#usr/include/linux/mmtimer.h
#usr/include/linux/module.h
#usr/include/linux/mount.h
#usr/include/linux/mpls.h
#usr/include/linux/mpls_iptunnel.h
#usr/include/linux/mptcp.h
#usr/include/linux/mqueue.h
#usr/include/linux/mroute.h
#usr/include/linux/mroute6.h
#usr/include/linux/mrp_bridge.h
#usr/include/linux/msdos_fs.h
#usr/include/linux/msg.h
#usr/include/linux/mtio.h
#usr/include/linux/n_r3964.h
#usr/include/linux/nbd-netlink.h
#usr/include/linux/nbd.h
#usr/include/linux/ncp.h
#usr/include/linux/ncp_fs.h
#usr/include/linux/ncp_mount.h
#usr/include/linux/ncp_no.h
#usr/include/linux/ncsi.h
#usr/include/linux/ndctl.h
#usr/include/linux/neighbour.h
@@ -455,6 +466,7 @@
#usr/include/linux/netfilter/nf_conntrack_tuple_common.h
#usr/include/linux/netfilter/nf_log.h
#usr/include/linux/netfilter/nf_nat.h
#usr/include/linux/netfilter/nf_synproxy.h
#usr/include/linux/netfilter/nf_tables.h
#usr/include/linux/netfilter/nf_tables_compat.h
#usr/include/linux/netfilter/nfnetlink.h
@@ -464,6 +476,7 @@
#usr/include/linux/netfilter/nfnetlink_cthelper.h
#usr/include/linux/netfilter/nfnetlink_cttimeout.h
#usr/include/linux/netfilter/nfnetlink_log.h
#usr/include/linux/netfilter/nfnetlink_osf.h
#usr/include/linux/netfilter/nfnetlink_queue.h
#usr/include/linux/netfilter/x_tables.h
#usr/include/linux/netfilter/xt_AUDIT.h
@@ -585,9 +598,11 @@
#usr/include/linux/netfilter_ipv6/ip6t_mh.h
#usr/include/linux/netfilter_ipv6/ip6t_opts.h
#usr/include/linux/netfilter_ipv6/ip6t_rt.h
#usr/include/linux/netfilter_ipv6/ip6t_srh.h
#usr/include/linux/netlink.h
#usr/include/linux/netlink_diag.h
#usr/include/linux/netrom.h
#usr/include/linux/nexthop.h
#usr/include/linux/nfc.h
#usr/include/linux/nfs.h
#usr/include/linux/nfs2.h
@@ -606,6 +621,7 @@
#usr/include/linux/nfsd/stats.h
#usr/include/linux/nilfs2_api.h
#usr/include/linux/nilfs2_ondisk.h
#usr/include/linux/nitro_enclaves.h
#usr/include/linux/nl80211.h
#usr/include/linux/nsfs.h
#usr/include/linux/nubus.h
@@ -614,6 +630,7 @@
#usr/include/linux/omap3isp.h
#usr/include/linux/omapfb.h
#usr/include/linux/oom.h
#usr/include/linux/openat2.h
#usr/include/linux/openvswitch.h
#usr/include/linux/packet_diag.h
#usr/include/linux/param.h
@@ -628,6 +645,7 @@
#usr/include/linux/pg.h
#usr/include/linux/phantom.h
#usr/include/linux/phonet.h
#usr/include/linux/pidfd.h
#usr/include/linux/pkt_cls.h
#usr/include/linux/pkt_sched.h
#usr/include/linux/pktcdvd.h
@@ -645,8 +663,10 @@
#usr/include/linux/prctl.h
#usr/include/linux/psample.h
#usr/include/linux/psci.h
#usr/include/linux/psp-sev.h
#usr/include/linux/ptp_clock.h
#usr/include/linux/ptrace.h
#usr/include/linux/qemu_fw_cfg.h
#usr/include/linux/qnx4_fs.h
#usr/include/linux/qnxtypes.h
#usr/include/linux/qrtr.h
@@ -661,6 +681,7 @@
#usr/include/linux/reboot.h
#usr/include/linux/reiserfs_fs.h
#usr/include/linux/reiserfs_xattr.h
#usr/include/linux/remoteproc_cdev.h
#usr/include/linux/resource.h
#usr/include/linux/rfkill.h
#usr/include/linux/rio_cm_cdev.h
@@ -668,7 +689,10 @@
#usr/include/linux/romfs_fs.h
#usr/include/linux/rose.h
#usr/include/linux/route.h
#usr/include/linux/rpl.h
#usr/include/linux/rpl_iptunnel.h
#usr/include/linux/rpmsg.h
#usr/include/linux/rseq.h
#usr/include/linux/rtc.h
#usr/include/linux/rtnetlink.h
#usr/include/linux/rxrpc.h
@@ -729,11 +753,15 @@
#usr/include/linux/tc_act/tc_bpf.h
#usr/include/linux/tc_act/tc_connmark.h
#usr/include/linux/tc_act/tc_csum.h
#usr/include/linux/tc_act/tc_ct.h
#usr/include/linux/tc_act/tc_ctinfo.h
#usr/include/linux/tc_act/tc_defact.h
#usr/include/linux/tc_act/tc_gact.h
#usr/include/linux/tc_act/tc_gate.h
#usr/include/linux/tc_act/tc_ife.h
#usr/include/linux/tc_act/tc_ipt.h
#usr/include/linux/tc_act/tc_mirred.h
#usr/include/linux/tc_act/tc_mpls.h
#usr/include/linux/tc_act/tc_nat.h
#usr/include/linux/tc_act/tc_pedit.h
#usr/include/linux/tc_act/tc_sample.h
@@ -743,16 +771,17 @@
#usr/include/linux/tc_act/tc_vlan.h
#usr/include/linux/tc_ematch
#usr/include/linux/tc_ematch/tc_em_cmp.h
#usr/include/linux/tc_ematch/tc_em_ipt.h
#usr/include/linux/tc_ematch/tc_em_meta.h
#usr/include/linux/tc_ematch/tc_em_nbyte.h
#usr/include/linux/tc_ematch/tc_em_text.h
#usr/include/linux/tcp.h
#usr/include/linux/tcp_metrics.h
#usr/include/linux/tee.h
#usr/include/linux/telephony.h
#usr/include/linux/termios.h
#usr/include/linux/thermal.h
#usr/include/linux/time.h
#usr/include/linux/time_types.h
#usr/include/linux/timerfd.h
#usr/include/linux/times.h
#usr/include/linux/timex.h
@@ -760,18 +789,21 @@
#usr/include/linux/tipc.h
#usr/include/linux/tipc_config.h
#usr/include/linux/tipc_netlink.h
#usr/include/linux/tipc_sockets_diag.h
#usr/include/linux/tls.h
#usr/include/linux/toshiba.h
#usr/include/linux/tty.h
#usr/include/linux/tty_flags.h
#usr/include/linux/types.h
#usr/include/linux/udf_fs_i.h
#usr/include/linux/udmabuf.h
#usr/include/linux/udp.h
#usr/include/linux/uhid.h
#usr/include/linux/uinput.h
#usr/include/linux/uio.h
#usr/include/linux/uleds.h
#usr/include/linux/ultrasound.h
#usr/include/linux/um_timetravel.h
#usr/include/linux/un.h
#usr/include/linux/unistd.h
#usr/include/linux/unix_diag.h
@@ -784,8 +816,10 @@
#usr/include/linux/usb/charger.h
#usr/include/linux/usb/functionfs.h
#usr/include/linux/usb/g_printer.h
#usr/include/linux/usb/g_uvc.h
#usr/include/linux/usb/gadgetfs.h
#usr/include/linux/usb/midi.h
#usr/include/linux/usb/raw_gadget.h
#usr/include/linux/usb/tmc.h
#usr/include/linux/usb/video.h
#usr/include/linux/usbdevice_fs.h
@@ -801,11 +835,16 @@
#usr/include/linux/v4l2-dv-timings.h
#usr/include/linux/v4l2-mediabus.h
#usr/include/linux/v4l2-subdev.h
#usr/include/linux/vbox_err.h
#usr/include/linux/vbox_vmmdev_types.h
#usr/include/linux/vboxguest.h
#usr/include/linux/version.h
#usr/include/linux/veth.h
#usr/include/linux/vfio.h
#usr/include/linux/vfio_ccw.h
#usr/include/linux/vfio_zdev.h
#usr/include/linux/vhost.h
#usr/include/linux/vhost_types.h
#usr/include/linux/videodev2.h
#usr/include/linux/virtio_9p.h
#usr/include/linux/virtio_balloon.h
@@ -813,36 +852,53 @@
#usr/include/linux/virtio_config.h
#usr/include/linux/virtio_console.h
#usr/include/linux/virtio_crypto.h
#usr/include/linux/virtio_fs.h
#usr/include/linux/virtio_gpu.h
#usr/include/linux/virtio_ids.h
#usr/include/linux/virtio_input.h
#usr/include/linux/virtio_iommu.h
#usr/include/linux/virtio_mem.h
#usr/include/linux/virtio_mmio.h
#usr/include/linux/virtio_net.h
#usr/include/linux/virtio_pci.h
#usr/include/linux/virtio_pmem.h
#usr/include/linux/virtio_ring.h
#usr/include/linux/virtio_rng.h
#usr/include/linux/virtio_scsi.h
#usr/include/linux/virtio_types.h
#usr/include/linux/virtio_vsock.h
#usr/include/linux/vm_sockets.h
#usr/include/linux/vm_sockets_diag.h
#usr/include/linux/vmcore.h
#usr/include/linux/vsockmon.h
#usr/include/linux/vt.h
#usr/include/linux/vtpm_proxy.h
#usr/include/linux/wait.h
#usr/include/linux/wanrouter.h
#usr/include/linux/watch_queue.h
#usr/include/linux/watchdog.h
#usr/include/linux/wimax
#usr/include/linux/wimax.h
#usr/include/linux/wimax/i2400m.h
#usr/include/linux/wireguard.h
#usr/include/linux/wireless.h
#usr/include/linux/wmi.h
#usr/include/linux/x25.h
#usr/include/linux/xattr.h
#usr/include/linux/xdp_diag.h
#usr/include/linux/xfrm.h
#usr/include/linux/xilinx-v4l2-controls.h
#usr/include/linux/zorro.h
#usr/include/linux/zorro_ids.h
#usr/include/misc
#usr/include/misc/cxl.h
#usr/include/misc/fastrpc.h
#usr/include/misc/habanalabs.h
#usr/include/misc/ocxl.h
#usr/include/misc/pvpanic.h
#usr/include/misc/uacce
#usr/include/misc/uacce/hisi_qm.h
#usr/include/misc/uacce/uacce.h
#usr/include/misc/xilinx_sdfec.h
#usr/include/mtd
#usr/include/mtd/inftl-user.h
#usr/include/mtd/mtd-abi.h
@@ -851,27 +907,32 @@
#usr/include/mtd/ubi-user.h
#usr/include/rdma
#usr/include/rdma/bnxt_re-abi.h
#usr/include/rdma/cxgb3-abi.h
#usr/include/rdma/cxgb4-abi.h
#usr/include/rdma/efa-abi.h
#usr/include/rdma/hfi
#usr/include/rdma/hfi/hfi1_ioctl.h
#usr/include/rdma/hfi/hfi1_user.h
#usr/include/rdma/hns-abi.h
#usr/include/rdma/ib_user_cm.h
#usr/include/rdma/i40iw-abi.h
#usr/include/rdma/ib_user_ioctl_cmds.h
#usr/include/rdma/ib_user_ioctl_verbs.h
#usr/include/rdma/ib_user_mad.h
#usr/include/rdma/ib_user_sa.h
#usr/include/rdma/ib_user_verbs.h
#usr/include/rdma/mlx4-abi.h
#usr/include/rdma/mlx5-abi.h
#usr/include/rdma/mlx5_user_ioctl_cmds.h
#usr/include/rdma/mlx5_user_ioctl_verbs.h
#usr/include/rdma/mthca-abi.h
#usr/include/rdma/nes-abi.h
#usr/include/rdma/ocrdma-abi.h
#usr/include/rdma/qedr-abi.h
#usr/include/rdma/rdma_netlink.h
#usr/include/rdma/rdma_user_cm.h
#usr/include/rdma/rdma_user_ioctl.h
#usr/include/rdma/rdma_user_ioctl_cmds.h
#usr/include/rdma/rdma_user_rxe.h
#usr/include/rdma/rvt-abi.h
#usr/include/rdma/siw-abi.h
#usr/include/rdma/vmw_pvrdma-abi.h
#usr/include/scsi
#usr/include/scsi/cxlflash_ioctl.h
@@ -881,6 +942,7 @@
#usr/include/scsi/fc/fc_gs.h
#usr/include/scsi/fc/fc_ns.h
#usr/include/scsi/scsi_bsg_fc.h
#usr/include/scsi/scsi_bsg_ufs.h
#usr/include/scsi/scsi_netlink.h
#usr/include/scsi/scsi_netlink_fc.h
#usr/include/sound
@@ -896,7 +958,13 @@
#usr/include/sound/hdspm.h
#usr/include/sound/sb16_csp.h
#usr/include/sound/sfnt_info.h
#usr/include/sound/skl-tplg-interface.h
#usr/include/sound/snd_sst_tokens.h
#usr/include/sound/sof
#usr/include/sound/sof/abi.h
#usr/include/sound/sof/fw.h
#usr/include/sound/sof/header.h
#usr/include/sound/sof/tokens.h
#usr/include/sound/tlv.h
#usr/include/sound/usb_stream.h
#usr/include/video

View File

@@ -24,8 +24,8 @@
include Config
VER = 4.14.232
ARM_PATCHES = 4.14.232-ipfire0
VER = 5.10.5
ARM_PATCHES = 4.14.212-ipfire0
THISAPP = linux-$(VER)
DL_FILE = linux-$(VER).tar.xz
@@ -79,8 +79,8 @@ objects =$(DL_FILE) \
$(DL_FILE) = $(URL_IPFIRE)/$(DL_FILE)
arm-multi-patches-$(ARM_PATCHES).patch.xz = $(URL_IPFIRE)/arm-multi-patches-$(ARM_PATCHES).patch.xz
$(DL_FILE)_MD5 = f9dbc2f2656f30aef8394ac9d4ee88b3
arm-multi-patches-$(ARM_PATCHES).patch.xz_MD5 = a04b842733999abb818cabb0388572b8
$(DL_FILE)_MD5 = 077bb985404662b0a5f432e62efb25af
arm-multi-patches-$(ARM_PATCHES).patch.xz_MD5 = 2b0e8e3ebe9827b2bfed7397b043dbc5
install : $(TARGET)
@@ -116,7 +116,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
ln -svf linux-$(VER) $(DIR_SRC)/linux
# Layer7-patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.14-layer7.patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-5.10-layer7.patch
# DVB Patches
cd $(DIR_APP) && patch -Np2 < $(DIR_SRC)/src/patches/v4l-dvb_fix_tua6034_pll.patch
@@ -125,41 +125,35 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.14_ath_user_regd.patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8-iwlwifi-noibss_only_on_radar_chan.patch
# Add LED trigger
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.16-ledtrig_netdev.patch
# Fix igb and e1000e crash
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.14.1-igb-e1000e_fix_lock_at_update_stats.patch
# cs5535audio spams syslog if no ac97 was present (geos router)
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8_cs5535audio_fix_logspam_on_geos.patch
# Add PC Engines APU led support
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.14-apu_leds.patch
# Fix uevent PHYSDEVDRIVER
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-2.6.32.27_mcs7830-fix-driver-name.patch
# Active try to add entropy if the kernel wait for it
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-random_try_to_actively_add_entropy.patch
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.14.x-add_timer_setup_on_stack.patch
# fix Boot with enabled usercopy hardening
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-5.9-crypto_testmgr_allocate_buffers_with____GFP_COMP.patch
ifeq "$(KCFG)" "-multi"
# Apply Arm-multiarch kernel patches.
cd $(DIR_APP) && xzcat $(DIR_DL)/arm-multi-patches-$(ARM_PATCHES).patch.xz | patch -Np1
# cd $(DIR_APP) && xzcat $(DIR_DL)/arm-multi-patches-$(ARM_PATCHES).patch.xz | patch -Np1
endif
ifeq "$(BUILD_ARCH)" "aarch64"
# Apply Arm-multiarch kernel patches.
cd $(DIR_APP) && xzcat $(DIR_DL)/arm-multi-patches-$(ARM_PATCHES).patch.xz | patch -Np1
# cd $(DIR_APP) && xzcat $(DIR_DL)/arm-multi-patches-$(ARM_PATCHES).patch.xz | patch -Np1
endif
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-3.14.79-amba-fix.patch
ifeq "$(KCFG)" "-headers"
# Install the header files
cd $(DIR_APP) && make ARCH=$(HEADERS_ARCH) INSTALL_HDR_PATH=dest headers_install
cd $(DIR_APP) && make ARCH=$(HEADERS_ARCH) headers
-mkdir -pv $(BUILDROOT)/$(HEADERS_PREFIX)/include
cd $(DIR_APP) && find dest/include \( -name .install -o -name ..install.cmd \) -delete
cd $(DIR_APP) && cp -rv dest/include/* $(BUILDROOT)/$(HEADERS_PREFIX)/include
cd $(DIR_APP) && find usr/include -name '.*' -delete
cd $(DIR_APP) && rm usr/include/Makefile
cd $(DIR_APP) && cp -rv usr/include/* $(BUILDROOT)/$(HEADERS_PREFIX)/include
else
# Install ipfire logo

View File

@@ -1,422 +0,0 @@
diff -Naur linux-4.14.102.org/arch/x86/Kconfig linux-4.14.102/arch/x86/Kconfig
--- linux-4.14.102.org/arch/x86/Kconfig 2019-02-20 10:20:56.000000000 +0100
+++ linux-4.14.102/arch/x86/Kconfig 2019-02-22 17:56:37.185202293 +0100
@@ -2715,6 +2715,7 @@
- AC adapter status updates
- Battery status updates
+
config ALIX
bool "PCEngines ALIX System Support (LED setup)"
select GPIOLIB
@@ -2753,6 +2754,18 @@
endif # X86_32
+config APULED
+ bool "PCEngines APU Led Support"
+ depends on DMI
+ ---help---
+ This option enables system support for the PCEngines APU1.
+
+config APU2LED
+ bool "PCEngines APU2/3/4 Led Support"
+ depends on DMI
+ ---help---
+ This option enables system support for the PCEngines APU2/3/4.
+
config AMD_NB
def_bool y
depends on CPU_SUP_AMD && PCI
diff -Naur linux-4.14.102.org/arch/x86/platform/apu/apu2-led.c linux-4.14.102/arch/x86/platform/apu/apu2-led.c
--- linux-4.14.102.org/arch/x86/platform/apu/apu2-led.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-4.14.102/arch/x86/platform/apu/apu2-led.c 2019-02-22 17:58:52.795665744 +0100
@@ -0,0 +1,185 @@
+/*
+ * LEDs driver for PCEngines apu2/3/4
+ *
+ * this basic driver only set the output, configuration
+ * has already done by bios/coreboot.
+ * suspend/resume was not tested because IPFire not use it.
+ *
+ * Copyright (C) 2016 Arne Fitzenreiter <arne_f@ipfire.org> ,
+ * based on Christian Herzog's apu_led.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/err.h>
+#include <asm/io.h>
+#include <linux/dmi.h>
+
+#define DRVNAME "apu2-led"
+#define BASEADDR (0xFED81610)
+
+static struct platform_device *pdev;
+unsigned int *apu2_led_p1;
+unsigned int *apu2_led_p2;
+unsigned int *apu2_led_p3;
+
+static void apu2_led_set_1(struct led_classdev *led_cdev,
+ enum led_brightness value) {
+ if (value)
+ iowrite32((ioread32(apu2_led_p1)&~BIT(22)), apu2_led_p1);
+ else
+ iowrite32((ioread32(apu2_led_p1)|BIT(22)), apu2_led_p1);
+}
+
+static void apu2_led_set_2(struct led_classdev *led_cdev,
+ enum led_brightness value) {
+ if (value)
+ iowrite32((ioread32(apu2_led_p2)&~BIT(22)), apu2_led_p2);
+ else
+ iowrite32((ioread32(apu2_led_p2)|BIT(22)), apu2_led_p2);
+}
+
+static void apu2_led_set_3(struct led_classdev *led_cdev,
+ enum led_brightness value) {
+ if (value)
+ iowrite32((ioread32(apu2_led_p3)&~BIT(22)), apu2_led_p3);
+ else
+ iowrite32((ioread32(apu2_led_p3)|BIT(22)), apu2_led_p3);
+}
+
+static struct led_classdev apu2_led_1 = {
+ .name = "apu:1",
+ .brightness_set = apu2_led_set_1,
+};
+
+static struct led_classdev apu2_led_2 = {
+ .name = "apu:2",
+ .brightness_set = apu2_led_set_2,
+};
+
+static struct led_classdev apu2_led_3 = {
+ .name = "apu:3",
+ .brightness_set = apu2_led_set_3,
+};
+
+
+#ifdef CONFIG_PM
+static int apu2_led_suspend(struct platform_device *dev,
+ pm_message_t state)
+{
+ led_classdev_suspend(&apu2_led_1);
+ led_classdev_suspend(&apu2_led_2);
+ led_classdev_suspend(&apu2_led_3);
+ return 0;
+}
+
+static int apu2_led_resume(struct platform_device *dev)
+{
+ led_classdev_resume(&apu2_led_1);
+ led_classdev_resume(&apu2_led_2);
+ led_classdev_resume(&apu2_led_3);
+ return 0;
+}
+#else
+#define apu2_led_suspend NULL
+#define apu2_led_resume NULL
+#endif
+
+static int apu2_led_probe(struct platform_device *pdev)
+{
+ int ret;
+
+ ret = led_classdev_register(&pdev->dev, &apu2_led_1);
+ if (ret == 0)
+ {
+ ret = led_classdev_register(&pdev->dev, &apu2_led_2);
+ if (ret >= 0)
+ {
+ ret = led_classdev_register(&pdev->dev, &apu2_led_3);
+ if (ret < 0)
+ led_classdev_unregister(&apu2_led_2);
+ }
+ if (ret < 0)
+ led_classdev_unregister(&apu2_led_1);
+ }
+ return ret;
+}
+
+static int apu2_led_remove(struct platform_device *pdev)
+{
+ led_classdev_unregister(&apu2_led_1);
+ led_classdev_unregister(&apu2_led_2);
+ led_classdev_unregister(&apu2_led_3);
+ return 0;
+}
+
+static struct platform_driver apu2_led_driver = {
+ .probe = apu2_led_probe,
+ .remove = apu2_led_remove,
+ .suspend = apu2_led_suspend,
+ .resume = apu2_led_resume,
+ .driver = {
+ .name = DRVNAME,
+ .owner = THIS_MODULE,
+ },
+};
+
+static int __init apu2_led_init(void)
+{
+ int ret=0;
+ const char *vendor, *product;
+
+ vendor = dmi_get_system_info(DMI_SYS_VENDOR);
+ if (!vendor || strcmp(vendor, "PC Engines"))
+ goto out;
+
+ product = dmi_get_system_info(DMI_PRODUCT_NAME);
+ if (!product || ( strcmp(product, "PC Engines apu2") &&
+ strcmp(product, "PC Engines apu3") &&
+ strcmp(product, "PC Engines apu4") &&
+ strcmp(product, "apu2") &&
+ strcmp(product, "apu3") &&
+ strcmp(product, "apu4") ) )
+ goto out;
+
+ printk(KERN_INFO "%s: system is recognized as \"%s %s\"\n",
+ KBUILD_MODNAME, vendor, product);
+
+ ret = platform_driver_register(&apu2_led_driver);
+ if (ret < 0)
+ goto out;
+
+ pdev = platform_device_register_simple(DRVNAME, -1, NULL, 0);
+ if (IS_ERR(pdev)) {
+ ret = PTR_ERR(pdev);
+ platform_driver_unregister(&apu2_led_driver);
+ goto out;
+ }
+
+ apu2_led_p1 = ioremap(BASEADDR, 4);
+ apu2_led_p2 = ioremap(BASEADDR+4, 4);
+ apu2_led_p3 = ioremap(BASEADDR+8, 4);
+
+out:
+ return ret;
+}
+
+static void __exit apu2_led_exit(void)
+{
+ platform_device_unregister(pdev);
+ platform_driver_unregister(&apu2_led_driver);
+}
+
+module_init(apu2_led_init);
+module_exit(apu2_led_exit);
+
+MODULE_AUTHOR("Arne Fitzenreiter");
+MODULE_DESCRIPTION("PCEngines apu2/3/4 LED driver");
+MODULE_LICENSE("GPL");
diff -Naur linux-4.14.102.org/arch/x86/platform/apu/apu-led.c linux-4.14.102/arch/x86/platform/apu/apu-led.c
--- linux-4.14.102.org/arch/x86/platform/apu/apu-led.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-4.14.102/arch/x86/platform/apu/apu-led.c 2019-02-22 17:57:45.062504777 +0100
@@ -0,0 +1,183 @@
+/*
+ * LEDs driver for PCEngines apu
+ *
+ * Copyright (C) 2013 Christian Herzog <daduke@daduke.org>, based on
+ * Petr Leibman's leds-alix
+ * Hardware presence check added by Arne Fitzenreiter <arne_f@ipfire.org>
+ * Based on leds-wrap.c
+ * Hardware info taken from http://www.dpie.com/manuals/miniboards/kontron/KTD-S0043-0_KTA55_SoftwareGuide.pdf
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/leds.h>
+#include <linux/err.h>
+#include <asm/io.h>
+#include <linux/dmi.h>
+
+#define DRVNAME "apu-led"
+#define BASEADDR (0xFED801BD)
+#define LEDON (0x8)
+#define LEDOFF (0xC8)
+
+static struct platform_device *pdev;
+unsigned int *apu_led_p1;
+unsigned int *apu_led_p2;
+unsigned int *apu_led_p3;
+
+static void apu_led_set_1(struct led_classdev *led_cdev,
+ enum led_brightness value) {
+ if (value)
+ iowrite8(LEDON, apu_led_p1);
+ else
+ iowrite8(LEDOFF, apu_led_p1);
+}
+
+static void apu_led_set_2(struct led_classdev *led_cdev,
+ enum led_brightness value) {
+ if (value)
+ iowrite8(LEDON, apu_led_p2);
+ else
+ iowrite8(LEDOFF, apu_led_p2);
+}
+
+static void apu_led_set_3(struct led_classdev *led_cdev,
+ enum led_brightness value) {
+ if (value)
+ iowrite8(LEDON, apu_led_p3);
+ else
+ iowrite8(LEDOFF, apu_led_p3);
+}
+
+static struct led_classdev apu_led_1 = {
+ .name = "apu:1",
+ .brightness_set = apu_led_set_1,
+};
+
+static struct led_classdev apu_led_2 = {
+ .name = "apu:2",
+ .brightness_set = apu_led_set_2,
+};
+
+static struct led_classdev apu_led_3 = {
+ .name = "apu:3",
+ .brightness_set = apu_led_set_3,
+};
+
+
+#ifdef CONFIG_PM
+static int apu_led_suspend(struct platform_device *dev,
+ pm_message_t state)
+{
+ led_classdev_suspend(&apu_led_1);
+ led_classdev_suspend(&apu_led_2);
+ led_classdev_suspend(&apu_led_3);
+ return 0;
+}
+
+static int apu_led_resume(struct platform_device *dev)
+{
+ led_classdev_resume(&apu_led_1);
+ led_classdev_resume(&apu_led_2);
+ led_classdev_resume(&apu_led_3);
+ return 0;
+}
+#else
+#define apu_led_suspend NULL
+#define apu_led_resume NULL
+#endif
+
+static int apu_led_probe(struct platform_device *pdev)
+{
+ int ret;
+
+ ret = led_classdev_register(&pdev->dev, &apu_led_1);
+ if (ret == 0)
+ {
+ ret = led_classdev_register(&pdev->dev, &apu_led_2);
+ if (ret >= 0)
+ {
+ ret = led_classdev_register(&pdev->dev, &apu_led_3);
+ if (ret < 0)
+ led_classdev_unregister(&apu_led_2);
+ }
+ if (ret < 0)
+ led_classdev_unregister(&apu_led_1);
+ }
+ return ret;
+}
+
+static int apu_led_remove(struct platform_device *pdev)
+{
+ led_classdev_unregister(&apu_led_1);
+ led_classdev_unregister(&apu_led_2);
+ led_classdev_unregister(&apu_led_3);
+ return 0;
+}
+
+static struct platform_driver apu_led_driver = {
+ .probe = apu_led_probe,
+ .remove = apu_led_remove,
+ .suspend = apu_led_suspend,
+ .resume = apu_led_resume,
+ .driver = {
+ .name = DRVNAME,
+ .owner = THIS_MODULE,
+ },
+};
+
+static int __init apu_led_init(void)
+{
+ int ret=0;
+ const char *vendor, *product;
+
+ vendor = dmi_get_system_info(DMI_SYS_VENDOR);
+ if (!vendor || strcmp(vendor, "PC Engines"))
+ goto out;
+
+ product = dmi_get_system_info(DMI_PRODUCT_NAME);
+ if (!product || ( strcmp(product, "APU") &&
+ strcmp(product, "apu1") &&
+ strcmp(product, "PC Engines apu1") ))
+ goto out;
+
+ printk(KERN_INFO "%s: system is recognized as \"%s %s\"\n",
+ KBUILD_MODNAME, vendor, product);
+
+ ret = platform_driver_register(&apu_led_driver);
+ if (ret < 0)
+ goto out;
+
+ pdev = platform_device_register_simple(DRVNAME, -1, NULL, 0);
+ if (IS_ERR(pdev)) {
+ ret = PTR_ERR(pdev);
+ platform_driver_unregister(&apu_led_driver);
+ goto out;
+ }
+
+ apu_led_p1 = ioremap(BASEADDR, 1);
+ apu_led_p2 = ioremap(BASEADDR+1, 1);
+ apu_led_p3 = ioremap(BASEADDR+2, 1);
+
+out:
+ return ret;
+}
+
+static void __exit apu_led_exit(void)
+{
+ platform_device_unregister(pdev);
+ platform_driver_unregister(&apu_led_driver);
+}
+
+module_init(apu_led_init);
+module_exit(apu_led_exit);
+
+MODULE_AUTHOR("Christian Herzog");
+MODULE_DESCRIPTION("PCEngines apu LED driver");
+MODULE_LICENSE("GPL");
diff -Naur linux-4.14.102.org/arch/x86/platform/apu/Makefile linux-4.14.102/arch/x86/platform/apu/Makefile
--- linux-4.14.102.org/arch/x86/platform/apu/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ linux-4.14.102/arch/x86/platform/apu/Makefile 2019-02-22 17:56:37.185202293 +0100
@@ -0,0 +1,2 @@
+obj-$(CONFIG_APULED) += apu-led.o
+obj-$(CONFIG_APU2LED) += apu2-led.o
diff -Naur linux-4.14.102.org/arch/x86/platform/Makefile linux-4.14.102/arch/x86/platform/Makefile
--- linux-4.14.102.org/arch/x86/platform/Makefile 2019-02-20 10:20:56.000000000 +0100
+++ linux-4.14.102/arch/x86/platform/Makefile 2019-02-22 17:56:37.185202293 +0100
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
# Platform specific code goes here
+obj-y += apu/
obj-y += atom/
obj-y += ce4100/
obj-y += efi/

View File

@@ -1,18 +0,0 @@
diff -Naur linux-4.14.173.org/include/linux/timer.h linux-4.14.173/include/linux/timer.h
--- linux-4.14.173.org/include/linux/timer.h 2020-03-11 18:03:09.000000000 +0100
+++ linux-4.14.173/include/linux/timer.h 2020-04-30 19:30:13.956596003 +0200
@@ -180,6 +180,14 @@
(TIMER_DATA_TYPE)timer, flags);
}
+static inline void timer_setup_on_stack(struct timer_list *timer,
+ void (*callback)(struct timer_list *),
+ unsigned int flags)
+{
+ __setup_timer_on_stack(timer, (TIMER_FUNC_TYPE)callback,
+ (TIMER_DATA_TYPE)timer, flags);
+}
+
#define from_timer(var, callback_timer, timer_fieldname) \
container_of(callback_timer, typeof(*var), timer_fieldname)

View File

@@ -1,471 +0,0 @@
diff -Naur linux-4.9.16.org/drivers/leds/trigger/Kconfig linux-4.9.16/drivers/leds/trigger/Kconfig
--- linux-4.9.16.org/drivers/leds/trigger/Kconfig 2017-03-18 12:15:30.000000000 +0100
+++ linux-4.9.16/drivers/leds/trigger/Kconfig 2017-03-18 16:53:42.290859631 +0100
@@ -126,4 +126,11 @@
a different trigger.
If unsure, say Y.
+config LEDS_TRIGGER_NETDEV
+ tristate "LED Netdev Trigger"
+ depends on NET && LEDS_TRIGGERS
+ help
+ This allows LEDs to be controlled by network device activity.
+ If unsure, say Y.
+
endif # LEDS_TRIGGERS
diff -Naur linux-4.9.16.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.16/drivers/leds/trigger/ledtrig-netdev.c
--- linux-4.9.16.org/drivers/leds/trigger/ledtrig-netdev.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-4.9.16/drivers/leds/trigger/ledtrig-netdev.c 2017-03-18 16:53:44.280859607 +0100
@@ -0,0 +1,444 @@
+/*
+ * LED Kernel Netdev Trigger
+ *
+ * Toggles the LED to reflect the link and traffic state of a named net device
+ *
+ * Copyright 2007 Oliver Jowett <oliver@opencloud.com>
+ *
+ * Derived from ledtrig-timer.c which is:
+ * Copyright 2005-2006 Openedhand Ltd.
+ * Author: Richard Purdie <rpurdie@openedhand.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/jiffies.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/list.h>
+#include <linux/spinlock.h>
+#include <linux/device.h>
+#include <linux/netdevice.h>
+#include <linux/timer.h>
+#include <linux/ctype.h>
+#include <linux/leds.h>
+
+#include "../leds.h"
+
+/*
+ * Configurable sysfs attributes:
+ *
+ * device_name - network device name to monitor
+ *
+ * interval - duration of LED blink, in milliseconds
+ *
+ * mode - either "none" (LED is off) or a space separated list of one or more of:
+ * link: LED's normal state reflects whether the link is up (has carrier) or not
+ * tx: LED blinks on transmitted data
+ * rx: LED blinks on receive data
+ *
+ * Some suggestions:
+ *
+ * Simple link status LED:
+ * $ echo netdev >someled/trigger
+ * $ echo eth0 >someled/device_name
+ * $ echo link >someled/mode
+ *
+ * Ethernet-style link/activity LED:
+ * $ echo netdev >someled/trigger
+ * $ echo eth0 >someled/device_name
+ * $ echo "link tx rx" >someled/mode
+ *
+ * Modem-style tx/rx LEDs:
+ * $ echo netdev >led1/trigger
+ * $ echo ppp0 >led1/device_name
+ * $ echo tx >led1/mode
+ * $ echo netdev >led2/trigger
+ * $ echo ppp0 >led2/device_name
+ * $ echo rx >led2/mode
+ *
+ */
+
+#define MODE_LINK 1
+#define MODE_TX 2
+#define MODE_RX 4
+
+struct led_netdev_data {
+ spinlock_t lock;
+
+ struct timer_list timer;
+ struct notifier_block notifier;
+
+ struct led_classdev *led_cdev;
+ struct net_device *net_dev;
+
+ char device_name[IFNAMSIZ];
+ unsigned interval;
+ unsigned mode;
+ unsigned link_up;
+ unsigned last_activity;
+};
+
+static void set_baseline_state(struct led_netdev_data *trigger_data)
+{
+ if ((trigger_data->mode & MODE_LINK) != 0 && trigger_data->link_up)
+ led_set_brightness(trigger_data->led_cdev, LED_FULL);
+ else
+ led_set_brightness(trigger_data->led_cdev, LED_OFF);
+
+ if ((trigger_data->mode & (MODE_TX | MODE_RX)) != 0 && trigger_data->link_up)
+ mod_timer(&trigger_data->timer, jiffies + trigger_data->interval);
+}
+
+static ssize_t led_device_name_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
+
+ spin_lock_bh(&trigger_data->lock);
+ sprintf(buf, "%s\n", trigger_data->device_name);
+ spin_unlock_bh(&trigger_data->lock);
+
+ return strlen(buf) + 1;
+}
+
+static ssize_t led_device_name_store(struct device *dev,
+ struct device_attribute *attr, const char *buf, size_t size)
+{
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
+
+ if (size < 0 || size >= IFNAMSIZ)
+ return -EINVAL;
+
+ spin_lock_bh(&trigger_data->lock);
+ del_timer_sync(&trigger_data->timer);
+
+ strcpy(trigger_data->device_name, buf);
+ if (size > 0 && trigger_data->device_name[size-1] == '\n')
+ trigger_data->device_name[size-1] = 0;
+ trigger_data->link_up = 0;
+ trigger_data->last_activity = 0;
+
+ if (trigger_data->device_name[0] != 0) {
+ /* check for existing device to update from */
+ trigger_data->net_dev = dev_get_by_name(&init_net, trigger_data->device_name);
+ if (trigger_data->net_dev != NULL)
+ trigger_data->link_up = (dev_get_flags(trigger_data->net_dev) & IFF_LOWER_UP) != 0;
+ }
+
+ set_baseline_state(trigger_data);
+ spin_unlock_bh(&trigger_data->lock);
+
+ return size;
+}
+
+static DEVICE_ATTR(device_name, 0644, led_device_name_show, led_device_name_store);
+
+static ssize_t led_mode_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
+
+ spin_lock_bh(&trigger_data->lock);
+
+ if (trigger_data->mode == 0) {
+ strcpy(buf, "none\n");
+ } else {
+ if (trigger_data->mode & MODE_LINK)
+ strcat(buf, "link ");
+ if (trigger_data->mode & MODE_TX)
+ strcat(buf, "tx ");
+ if (trigger_data->mode & MODE_RX)
+ strcat(buf, "rx ");
+ strcat(buf, "\n");
+ }
+
+ spin_unlock_bh(&trigger_data->lock);
+
+ return strlen(buf)+1;
+}
+
+static ssize_t led_mode_store(struct device *dev,
+ struct device_attribute *attr, const char *buf, size_t size)
+{
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
+ char copybuf[128];
+ int new_mode = -1;
+ char *p, *token;
+
+ /* take a copy since we don't want to trash the inbound buffer when using strsep */
+ strncpy(copybuf, buf, sizeof(copybuf));
+ copybuf[sizeof(copybuf) - 1] = 0;
+ p = copybuf;
+
+ while ((token = strsep(&p, " \t\n")) != NULL) {
+ if (!*token)
+ continue;
+
+ if (new_mode == -1)
+ new_mode = 0;
+
+ if (!strcmp(token, "none"))
+ new_mode = 0;
+ else if (!strcmp(token, "tx"))
+ new_mode |= MODE_TX;
+ else if (!strcmp(token, "rx"))
+ new_mode |= MODE_RX;
+ else if (!strcmp(token, "link"))
+ new_mode |= MODE_LINK;
+ else
+ return -EINVAL;
+ }
+
+ if (new_mode == -1)
+ return -EINVAL;
+
+ spin_lock_bh(&trigger_data->lock);
+ del_timer_sync(&trigger_data->timer);
+
+ trigger_data->mode = new_mode;
+
+ set_baseline_state(trigger_data);
+ spin_unlock_bh(&trigger_data->lock);
+
+ return size;
+}
+
+static DEVICE_ATTR(mode, 0644, led_mode_show, led_mode_store);
+
+static ssize_t led_interval_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
+
+ spin_lock_bh(&trigger_data->lock);
+ sprintf(buf, "%u\n", jiffies_to_msecs(trigger_data->interval));
+ spin_unlock_bh(&trigger_data->lock);
+
+ return strlen(buf) + 1;
+}
+
+static ssize_t led_interval_store(struct device *dev,
+ struct device_attribute *attr, const char *buf, size_t size)
+{
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
+ int ret = -EINVAL;
+ char *after;
+ unsigned long value = simple_strtoul(buf, &after, 10);
+ size_t count = after - buf;
+
+ if (isspace(*after))
+ count++;
+
+ /* impose some basic bounds on the timer interval */
+ if (count == size && value >= 5 && value <= 10000) {
+ spin_lock_bh(&trigger_data->lock);
+ del_timer_sync(&trigger_data->timer);
+
+ trigger_data->interval = msecs_to_jiffies(value);
+
+ set_baseline_state(trigger_data); /* resets timer */
+ spin_unlock_bh(&trigger_data->lock);
+
+ ret = count;
+ }
+
+ return ret;
+}
+
+static DEVICE_ATTR(interval, 0644, led_interval_show, led_interval_store);
+
+static int netdev_trig_notify(struct notifier_block *nb,
+ unsigned long evt,
+ void *dv)
+{
+ struct net_device *dev = netdev_notifier_info_to_dev((struct netdev_notifier_info *) dv);
+ struct led_netdev_data *trigger_data = container_of(nb, struct led_netdev_data, notifier);
+
+ if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER && evt != NETDEV_CHANGENAME)
+ return NOTIFY_DONE;
+
+ spin_lock_bh(&trigger_data->lock);
+
+ if (strcmp(dev->name, trigger_data->device_name))
+ goto done;
+
+ del_timer_sync(&trigger_data->timer);
+
+ if (evt == NETDEV_REGISTER || evt == NETDEV_CHANGENAME) {
+ if (trigger_data->net_dev != NULL)
+ dev_put(trigger_data->net_dev);
+
+ dev_hold(dev);
+ trigger_data->net_dev = dev;
+ trigger_data->link_up = 0;
+ goto done;
+ }
+
+ if (evt == NETDEV_UNREGISTER && trigger_data->net_dev != NULL) {
+ dev_put(trigger_data->net_dev);
+ trigger_data->net_dev = NULL;
+ goto done;
+ }
+
+ /* UP / DOWN / CHANGE */
+
+ trigger_data->link_up = (evt != NETDEV_DOWN && netif_carrier_ok(dev));
+ set_baseline_state(trigger_data);
+
+done:
+ spin_unlock_bh(&trigger_data->lock);
+ return NOTIFY_DONE;
+}
+
+/* here's the real work! */
+static void netdev_trig_timer(unsigned long arg)
+{
+ struct led_netdev_data *trigger_data = (struct led_netdev_data *)arg;
+ struct rtnl_link_stats64 *dev_stats;
+ unsigned new_activity;
+ struct rtnl_link_stats64 temp;
+
+ if (!trigger_data->link_up || !trigger_data->net_dev || (trigger_data->mode & (MODE_TX | MODE_RX)) == 0) {
+ /* we don't need to do timer work, just reflect link state. */
+ led_set_brightness(trigger_data->led_cdev, ((trigger_data->mode & MODE_LINK) != 0 && trigger_data->link_up) ? LED_FULL : LED_OFF);
+ return;
+ }
+
+ dev_stats = dev_get_stats(trigger_data->net_dev, &temp);
+ new_activity =
+ ((trigger_data->mode & MODE_TX) ? dev_stats->tx_packets : 0) +
+ ((trigger_data->mode & MODE_RX) ? dev_stats->rx_packets : 0);
+
+ if (trigger_data->mode & MODE_LINK) {
+ /* base state is ON (link present) */
+ /* if there's no link, we don't get this far and the LED is off */
+
+ /* OFF -> ON always */
+ /* ON -> OFF on activity */
+ if (trigger_data->led_cdev->brightness == LED_OFF) {
+ led_set_brightness(trigger_data->led_cdev, LED_FULL);
+ } else if (trigger_data->last_activity != new_activity) {
+ led_set_brightness(trigger_data->led_cdev, LED_OFF);
+ }
+ } else {
+ /* base state is OFF */
+ /* ON -> OFF always */
+ /* OFF -> ON on activity */
+ if (trigger_data->led_cdev->brightness == LED_FULL) {
+ led_set_brightness(trigger_data->led_cdev, LED_OFF);
+ } else if (trigger_data->last_activity != new_activity) {
+ led_set_brightness(trigger_data->led_cdev, LED_FULL);
+ }
+ }
+
+ trigger_data->last_activity = new_activity;
+ mod_timer(&trigger_data->timer, jiffies + trigger_data->interval);
+}
+
+static void netdev_trig_activate(struct led_classdev *led_cdev)
+{
+ struct led_netdev_data *trigger_data;
+ int rc;
+
+ trigger_data = kzalloc(sizeof(struct led_netdev_data), GFP_KERNEL);
+ if (!trigger_data)
+ return;
+
+ spin_lock_init(&trigger_data->lock);
+
+ trigger_data->notifier.notifier_call = netdev_trig_notify;
+ trigger_data->notifier.priority = 10;
+
+ setup_timer(&trigger_data->timer, netdev_trig_timer, (unsigned long) trigger_data);
+
+ trigger_data->led_cdev = led_cdev;
+ trigger_data->net_dev = NULL;
+ trigger_data->device_name[0] = 0;
+
+ trigger_data->mode = 0;
+ trigger_data->interval = msecs_to_jiffies(50);
+ trigger_data->link_up = 0;
+ trigger_data->last_activity = 0;
+
+ led_cdev->trigger_data = trigger_data;
+
+ rc = device_create_file(led_cdev->dev, &dev_attr_device_name);
+ if (rc)
+ goto err_out;
+ rc = device_create_file(led_cdev->dev, &dev_attr_mode);
+ if (rc)
+ goto err_out_device_name;
+ rc = device_create_file(led_cdev->dev, &dev_attr_interval);
+ if (rc)
+ goto err_out_mode;
+
+ register_netdevice_notifier(&trigger_data->notifier);
+ return;
+
+err_out_mode:
+ device_remove_file(led_cdev->dev, &dev_attr_mode);
+err_out_device_name:
+ device_remove_file(led_cdev->dev, &dev_attr_device_name);
+err_out:
+ led_cdev->trigger_data = NULL;
+ kfree(trigger_data);
+}
+
+static void netdev_trig_deactivate(struct led_classdev *led_cdev)
+{
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
+
+ if (trigger_data) {
+ unregister_netdevice_notifier(&trigger_data->notifier);
+
+ device_remove_file(led_cdev->dev, &dev_attr_device_name);
+ device_remove_file(led_cdev->dev, &dev_attr_mode);
+ device_remove_file(led_cdev->dev, &dev_attr_interval);
+
+ spin_lock_bh(&trigger_data->lock);
+ del_timer_sync(&trigger_data->timer);
+
+ if (trigger_data->net_dev) {
+ dev_put(trigger_data->net_dev);
+ trigger_data->net_dev = NULL;
+ }
+
+ spin_unlock_bh(&trigger_data->lock);
+
+ kfree(trigger_data);
+ }
+}
+
+static struct led_trigger netdev_led_trigger = {
+ .name = "netdev",
+ .activate = netdev_trig_activate,
+ .deactivate = netdev_trig_deactivate,
+};
+
+static int __init netdev_trig_init(void)
+{
+ return led_trigger_register(&netdev_led_trigger);
+}
+
+static void __exit netdev_trig_exit(void)
+{
+ led_trigger_unregister(&netdev_led_trigger);
+}
+
+module_init(netdev_trig_init);
+module_exit(netdev_trig_exit);
+
+MODULE_AUTHOR("Oliver Jowett <oliver@opencloud.com>");
+MODULE_DESCRIPTION("Netdev LED trigger");
+MODULE_LICENSE("GPL");
diff -Naur linux-4.9.16.org/drivers/leds/trigger/Makefile linux-4.9.16/drivers/leds/trigger/Makefile
--- linux-4.9.16.org/drivers/leds/trigger/Makefile 2017-03-18 12:15:30.000000000 +0100
+++ linux-4.9.16/drivers/leds/trigger/Makefile 2017-03-18 16:53:44.280859607 +0100
@@ -10,3 +10,4 @@
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o
obj-$(CONFIG_LEDS_TRIGGER_PANIC) += ledtrig-panic.o
+obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o

View File

@@ -1,22 +1,22 @@
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 3172e14..798b8c9 100644
index a828cf99c521..6d97e4d8623f 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -700,6 +700,9 @@ struct sk_buff {
@@ -757,6 +757,9 @@ struct sk_buff {
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
unsigned long _nfct;
#endif
+#endif
+#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
+ char layer7_flags[1];
+#endif
#if IS_ENABLED(CONFIG_BRIDGE_NETFILTER)
struct nf_bridge_info *nf_bridge;
#endif
unsigned int len,
data_len;
diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h
index 792c3f6..f24a6ac 100644
index 439379ca9ffa..9cab502ff226 100644
--- a/include/net/netfilter/nf_conntrack.h
+++ b/include/net/netfilter/nf_conntrack.h
@@ -96,6 +96,23 @@ struct nf_conn {
@@ -103,6 +103,23 @@ struct nf_conn {
/* Extensions */
struct nf_ct_ext *ext;
@@ -42,7 +42,7 @@ index 792c3f6..f24a6ac 100644
};
diff --git a/include/uapi/linux/netfilter/xt_layer7.h b/include/uapi/linux/netfilter/xt_layer7.h
new file mode 100644
index 0000000..147cd64
index 000000000000..147cd6477858
--- /dev/null
+++ b/include/uapi/linux/netfilter/xt_layer7.h
@@ -0,0 +1,13 @@
@@ -60,10 +60,10 @@ index 0000000..147cd64
+
+#endif /* _XT_LAYER7_H */
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
index e4a13cc..0b0f501 100644
index 52370211e46b..734b4d641469 100644
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -1282,6 +1282,26 @@ config NETFILTER_XT_MATCH_L2TP
@@ -1355,6 +1355,26 @@ config NETFILTER_XT_MATCH_L2TP
To compile it as a module, choose M here. If unsure, say N.
@@ -91,10 +91,10 @@ index e4a13cc..0b0f501 100644
tristate '"length" match support'
depends on NETFILTER_ADVANCED
diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile
index f78ed24..268b7e7 100644
index 0e0ded87e27b..6c383006af4e 100644
--- a/net/netfilter/Makefile
+++ b/net/netfilter/Makefile
@@ -180,6 +180,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT) += xt_recent.o
@@ -203,6 +203,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT) += xt_recent.o
obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
@@ -103,10 +103,10 @@ index f78ed24..268b7e7 100644
obj-$(CONFIG_NETFILTER_XT_MATCH_STRING) += xt_string.o
obj-$(CONFIG_NETFILTER_XT_MATCH_TCPMSS) += xt_tcpmss.o
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index 06520bf..0109de4 100644
index 234b7cab37c3..05731ba4f5ff 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -427,6 +427,11 @@ destroy_conntrack(struct nf_conntrack *nfct)
@@ -617,6 +617,11 @@ destroy_conntrack(struct nf_conntrack *nfct)
*/
nf_ct_remove_expectations(ct);
@@ -119,10 +119,10 @@ index 06520bf..0109de4 100644
local_bh_enable();
diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c
index 5a101ca..88830c7 100644
index 46c5557c1fec..6ef99967ae05 100644
--- a/net/netfilter/nf_conntrack_standalone.c
+++ b/net/netfilter/nf_conntrack_standalone.c
@@ -353,6 +353,11 @@ static int ct_seq_show(struct seq_file *s, void *v)
@@ -366,6 +366,11 @@ static int ct_seq_show(struct seq_file *s, void *v)
ct_show_zone(s, ct, NF_CT_DEFAULT_ZONE_DIR);
ct_show_delta_time(s, ct);
@@ -136,7 +136,7 @@ index 5a101ca..88830c7 100644
if (seq_has_overflowed(s))
diff --git a/net/netfilter/regexp/regexp.c b/net/netfilter/regexp/regexp.c
new file mode 100644
index 0000000..9006988
index 000000000000..900698886531
--- /dev/null
+++ b/net/netfilter/regexp/regexp.c
@@ -0,0 +1,1197 @@
@@ -1339,7 +1339,7 @@ index 0000000..9006988
+
diff --git a/net/netfilter/regexp/regexp.h b/net/netfilter/regexp/regexp.h
new file mode 100644
index 0000000..a72eba7
index 000000000000..a72eba71fb61
--- /dev/null
+++ b/net/netfilter/regexp/regexp.h
@@ -0,0 +1,41 @@
@@ -1386,7 +1386,7 @@ index 0000000..a72eba7
+#endif
diff --git a/net/netfilter/regexp/regmagic.h b/net/netfilter/regexp/regmagic.h
new file mode 100644
index 0000000..5acf447
index 000000000000..5acf4478ff71
--- /dev/null
+++ b/net/netfilter/regexp/regmagic.h
@@ -0,0 +1,5 @@
@@ -1397,7 +1397,7 @@ index 0000000..5acf447
+#define MAGIC 0234
diff --git a/net/netfilter/regexp/regsub.c b/net/netfilter/regexp/regsub.c
new file mode 100644
index 0000000..339631f
index 000000000000..339631f06f00
--- /dev/null
+++ b/net/netfilter/regexp/regsub.c
@@ -0,0 +1,95 @@
@@ -1498,10 +1498,10 @@ index 0000000..339631f
+}
diff --git a/net/netfilter/xt_layer7.c b/net/netfilter/xt_layer7.c
new file mode 100644
index 0000000..db7d061
index 000000000000..a7eb760123bf
--- /dev/null
+++ b/net/netfilter/xt_layer7.c
@@ -0,0 +1,665 @@
@@ -0,0 +1,666 @@
+/*
+ Kernel module to match application layer (OSI layer 7) data in connections.
+
@@ -2068,6 +2068,7 @@ index 0000000..db7d061
+ return (pattern_result ^ info->invert);
+}
+
+/*
+// load nf_conntrack_ipv4
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
+static int
@@ -2112,31 +2113,31 @@ index 0000000..db7d061
+ nf_ct_l3proto_module_put(match->family);
+ }
+#endif
+*/
+
+static struct xt_match xt_layer7_match[] __read_mostly = {
+{
+ .name = "layer7",
+ .family = NFPROTO_IPV4,
+ .checkentry = check,
+// .checkentry = check,
+ .match = match,
+ .destroy = destroy,
+// .destroy = destroy,
+ .matchsize = sizeof(struct xt_layer7_info),
+ .me = THIS_MODULE
+}
+};
+
+static const struct file_operations layer7_numpackets_proc_fops = {
+ .owner = THIS_MODULE,
+ .open = layer7_numpackets_proc_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+ .write = layer7_numpackets_write_proc,
+static const struct proc_ops layer7_numpackets_proc_fops = {
+ .proc_open = layer7_numpackets_proc_open,
+ .proc_read = seq_read,
+ .proc_lseek = seq_lseek,
+ .proc_release = single_release,
+ .proc_write = layer7_numpackets_write_proc,
+};
+
+static int __init xt_layer7_init(void)
+{
+ need_conntrack();
+// need_conntrack();
+
+ // Register proc interface
+ proc_create_data("layer7_numpackets", 0644,

View File

@@ -0,0 +1,43 @@
From: Eric Biggers <ebiggers@kernel.org>
To: linux-crypto@vger.kernel.org, Herbert Xu <herbert@gondor.apana.org.au>
Cc: Kees Cook <keescook@chromium.org>,
Dmitry Vyukov <dvyukov@google.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
linux-security-module <linux-security-module@vger.kernel.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Laura Abbott <labbott@redhat.com>,
Rik van Riel <riel@surriel.com>
Subject: [PATCH] crypto: testmgr - allocate buffers with __GFP_COMP
Date: Thu, 11 Apr 2019 12:28:27 -0700
Message-ID: <20190411192827.72551-1-ebiggers@kernel.org> (raw)
In-Reply-To: <20190411192607.GD225654@gmail.com>
From: Eric Biggers <ebiggers@google.com>
This is needed so that CONFIG_HARDENED_USERCOPY_PAGESPAN=y doesn't
incorrectly report a buffer overflow when the destination of
copy_from_iter() spans the page boundary in the 2-page buffer.
Fixes: 3f47a03df6e8 ("crypto: testmgr - add testvec_config struct and helper functions")
Signed-off-by: Eric Biggers <ebiggers@google.com>
---
crypto/testmgr.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 0f6bfb6ce6a46..3522c0bed2492 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -156,7 +156,8 @@ static int __testmgr_alloc_buf(char *buf[XBUFSIZE], int order)
int i;
for (i = 0; i < XBUFSIZE; i++) {
- buf[i] = (char *)__get_free_pages(GFP_KERNEL, order);
+ buf[i] = (char *)__get_free_pages(GFP_KERNEL | __GFP_COMP,
+ order);
if (!buf[i])
goto err_free_buf;
}
--
2.21.0.392.gf8f6787159e-goog

View File

@@ -1,146 +0,0 @@
From 50ee7529ec4500c88f8664560770a7a1b65db72b Mon Sep 17 00:00:00 2001
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Sat, 28 Sep 2019 16:53:52 -0700
Subject: random: try to actively add entropy rather than passively wait for it
For 5.3 we had to revert a nice ext4 IO pattern improvement, because it
caused a bootup regression due to lack of entropy at bootup together
with arguably broken user space that was asking for secure random
numbers when it really didn't need to.
See commit 72dbcf721566 (Revert "ext4: make __ext4_get_inode_loc plug").
This aims to solve the issue by actively generating entropy noise using
the CPU cycle counter when waiting for the random number generator to
initialize. This only works when you have a high-frequency time stamp
counter available, but that's the case on all modern x86 CPU's, and on
most other modern CPU's too.
What we do is to generate jitter entropy from the CPU cycle counter
under a somewhat complex load: calling the scheduler while also
guaranteeing a certain amount of timing noise by also triggering a
timer.
I'm sure we can tweak this, and that people will want to look at other
alternatives, but there's been a number of papers written on jitter
entropy, and this should really be fairly conservative by crediting one
bit of entropy for every timer-induced jump in the cycle counter. Not
because the timer itself would be all that unpredictable, but because
the interaction between the timer and the loop is going to be.
Even if (and perhaps particularly if) the timer actually happens on
another CPU, the cacheline interaction between the loop that reads the
cycle counter and the timer itself firing is going to add perturbations
to the cycle counter values that get mixed into the entropy pool.
As Thomas pointed out, with a modern out-of-order CPU, even quite simple
loops show a fair amount of hard-to-predict timing variability even in
the absense of external interrupts. But this tries to take that further
by actually having a fairly complex interaction.
This is not going to solve the entropy issue for architectures that have
no CPU cycle counter, but it's not clear how (and if) that is solvable,
and the hardware in question is largely starting to be irrelevant. And
by doing this we can at least avoid some of the even more contentious
approaches (like making the entropy waiting time out in order to avoid
the possibly unbounded waiting).
Cc: Ahmed Darwish <darwish.07@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Theodore Ts'o <tytso@mit.edu>
Cc: Nicholas Mc Guire <hofrat@opentech.at>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Willy Tarreau <w@1wt.eu>
Cc: Alexander E. Patrakov <patrakov@gmail.com>
Cc: Lennart Poettering <mzxreary@0pointer.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
drivers/char/random.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 61 insertions(+), 1 deletion(-)
(limited to 'drivers/char/random.c')
diff --git a/drivers/char/random.c b/drivers/char/random.c
index 5d5ea4ce1442..2fda6166c1dd 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1731,6 +1731,56 @@ void get_random_bytes(void *buf, int nbytes)
}
EXPORT_SYMBOL(get_random_bytes);
+
+/*
+ * Each time the timer fires, we expect that we got an unpredictable
+ * jump in the cycle counter. Even if the timer is running on another
+ * CPU, the timer activity will be touching the stack of the CPU that is
+ * generating entropy..
+ *
+ * Note that we don't re-arm the timer in the timer itself - we are
+ * happy to be scheduled away, since that just makes the load more
+ * complex, but we do not want the timer to keep ticking unless the
+ * entropy loop is running.
+ *
+ * So the re-arming always happens in the entropy loop itself.
+ */
+static void entropy_timer(struct timer_list *t)
+{
+ credit_entropy_bits(&input_pool, 1);
+}
+
+/*
+ * If we have an actual cycle counter, see if we can
+ * generate enough entropy with timing noise
+ */
+static void try_to_generate_entropy(void)
+{
+ struct {
+ unsigned long now;
+ struct timer_list timer;
+ } stack;
+
+ stack.now = random_get_entropy();
+
+ /* Slow counter - or none. Don't even bother */
+ if (stack.now == random_get_entropy())
+ return;
+
+ timer_setup_on_stack(&stack.timer, entropy_timer, 0);
+ while (!crng_ready()) {
+ if (!timer_pending(&stack.timer))
+ mod_timer(&stack.timer, jiffies+1);
+ mix_pool_bytes(&input_pool, &stack.now, sizeof(stack.now));
+ schedule();
+ stack.now = random_get_entropy();
+ }
+
+ del_timer_sync(&stack.timer);
+ destroy_timer_on_stack(&stack.timer);
+ mix_pool_bytes(&input_pool, &stack.now, sizeof(stack.now));
+}
+
/*
* Wait for the urandom pool to be seeded and thus guaranteed to supply
* cryptographically secure random numbers. This applies to: the /dev/urandom
@@ -1745,7 +1795,17 @@ int wait_for_random_bytes(void)
{
if (likely(crng_ready()))
return 0;
- return wait_event_interruptible(crng_init_wait, crng_ready());
+
+ do {
+ int ret;
+ ret = wait_event_interruptible_timeout(crng_init_wait, crng_ready(), HZ);
+ if (ret)
+ return ret > 0 ? 0 : ret;
+
+ try_to_generate_entropy();
+ } while (!crng_ready());
+
+ return 0;
}
EXPORT_SYMBOL(wait_for_random_bytes);
--
cgit 1.2-0.3.lf.el7