Merge tag 'android11-5.4.249_r00' into android11-5.4
This is the merge of the upstream LTS release of 5.4.249 into the android11-5.4 branch. It contains the following commits: *874e208e9bMerge branch 'android11-5.4' into android11-5.4-lts *c7f89f1b6bMerge 5.4.249 into android11-5.4-lts |\ | *b30db4f7e4Linux 5.4.249 | *c874390551xfs: verify buffer contents when we skip log replay | *72ab3d39b4mm: make wait_on_page_writeback() wait for multiple pending writebacks | *9ea42ba3e6mm: fix VM_BUG_ON(PageTail) and BUG_ON(PageWriteback) | *dffd25725ei2c: imx-lpi2c: fix type char overflow issue when calculating the clock cycle | *f89bcf03e9x86/apic: Fix kernel panic when booting with intremap=off and x2apic_phys | *a43c763f9cdrm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl | *45f574d8dfdrm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl | *c81a542e45drm/exynos: vidi: fix a wrong error return | *948b8b5fd0ARM: dts: Fix erroneous ADS touchscreen polarities | *8d6f9f5f3bASoC: nau8824: Add quirk to active-high jack-detect | *d6fd1b3f76s390/cio: unregister device when the only path is gone | *0de32d3dd3usb: gadget: udc: fix NULL dereference in remove() | *823dd7de82nfcsim.c: Fix error checking for debugfs_create_dir | *c32b39d070media: cec: core: don't set last_initiator if tx in progress | *a69a15a1e7arm64: Add missing Set/Way CMO encodings | *99de9a18e6HID: wacom: Add error check to wacom_parse_and_register() | *2af8d96372scsi: target: iscsi: Prevent login threads from racing between each other | *321a81d26csch_netem: acquire qdisc lock in netem_change() | *91274bbe78Revert "net: phy: dp83867: perform soft reset and retain established link" | *25c8d38c75netfilter: nfnetlink_osf: fix module autoload | *476c617e4dnetfilter: nf_tables: disallow element updates of bound anonymous sets | *d3b110395fbe2net: Extend xmit workaround to BE3 chip | *789d528606net: dsa: mt7530: fix trapping frames on non-MT7621 SoC MT7530 switch | *35373d602bipvs: align inner_mac_header for encapsulation | *ee155675bdmmc: usdhi60rol0: fix deferred probing | *0bd483fb95mmc: sh_mmcif: fix deferred probing | *6160d37db1mmc: sdhci-acpi: fix deferred probing | *b25875cf5emmc: omap_hsmmc: fix deferred probing | *cbb0118f8ammc: omap: fix deferred probing | *e0d5053569mmc: mvsdio: fix deferred probing | *c2e675509fmmc: mvsdio: convert to devm_platform_ioremap_resource | *3ef787d619mmc: mtk-sd: fix deferred probing | *3c01d64996net: qca_spi: Avoid high load if QCA7000 is not available | *bf7a4fd336xfrm: Linearize the skb after offloading if needed. | *d0fe8a733fieee802154: hwsim: Fix possible memory leaks | *dfcac203a3rcu: Upgrade rcu_swap_protected() to rcu_replace_pointer() | *94199d4727x86/mm: Avoid using set_pgd() outside of real PGD pages | *be178a5eaecifs: Fix potential deadlock when updating vol in cifs_reconnect() | *8a5aaa4562cifs: Merge is_path_valid() into get_normalized_path() | *339134c15ccifs: Introduce helpers for finding TCP connection | *cf8c7aa906cifs: Get rid of kstrdup_const()'d paths | *3fa4c08104cifs: Clean up DFS referral cache | *b73539b887nilfs2: prevent general protection fault in nilfs_clear_dirty_page() | *1cc7dcfdebwriteback: fix dereferencing NULL mapping->host on writeback_page_template | *18a0202becip_tunnels: allow VXLAN/GENEVE to inherit TOS/TTL from VLAN | *ab530c9becmmc: meson-gx: remove redundant mmc_request_done() call from irq context | *88b373d1c5cgroup: Do not corrupt task iteration when rebinding subsystem | *c06c568e43PCI: hv: Fix a race condition bug in hv_pci_query_relations() | *f02a676907Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs | *966708ed9dnilfs2: fix buffer corruption due to concurrent device reads | *a93ae93e9fmedia: dvb-core: Fix use-after-free due to race at dvb_register_device() | *225bd8cc9cmedia: dvbdev: fix error logic at dvb_register_device() | *5bc971f043media: dvbdev: Fix memleak in dvb_register_device | *40d7530bc7tick/common: Align tick period during sched_timer setup | *b9b61fd1f7x86/purgatory: remove PGO flags | *4d02a166cbtracing: Add tracing_reset_all_online_cpus_unlocked() function | *e14e9cc588epoll: ep_autoremove_wake_function should use list_del_init_careful | *e77e5481d5list: add "list_del_init_careful()" to go with "list_empty_careful()" | *c32ab1c195mm: rewrite wait_on_page_bit_common() logic | *559cefc7c2nilfs2: reject devices with insufficient block count * |f4bff64ed2Merge 5.4.248 into android11-5.4-lts |\| | *f2b499c27aLinux 5.4.248 | *1cdc48aaffmmc: block: ensure error propagation for non-blk | *de517032eedrm/nouveau/kms: Fix NULL pointer dereference in nouveau_connector_detect_depth | *d3f7f557d8neighbour: delete neigh_lookup_nodev as not used | *a433b85d17net: Remove unused inline function dst_hold_and_use() | *fbc0209ae3neighbour: Remove unused inline function neigh_key_eq16() | *bc1ea55bf1afs: Fix vlserver probe RTT handling | *98acd5f0ceselftests/ptp: Fix timestamp printf format for PTP_SYS_OFFSET | *1140f8bc29net: tipc: resize nlattr array to correct size | *b83f86ba41net: lapbether: only support ethernet devices | *ec694ad393net/sched: cls_api: Fix lockup on flushing explicitly created chain | *0456f470fadrm/nouveau: add nv_encoder pointer check for NULL | *b1d76d16afdrm/nouveau/kms: Don't change EDID when it hasn't actually changed | *f654b8a132drm/nouveau/dp: check for NULL nv_connector->native_mode | *2ac7be7718igb: fix nvm.ops.read() error handling | *44008337f8sctp: fix an error code in sctp_sf_eat_auth() | *edd3d3dc48ipvlan: fix bound dev checking for IPv6 l3s mode | *6718478c18IB/isert: Fix incorrect release of isert connection | *f8a91a024aIB/isert: Fix possible list corruption in CMA handler | *8a867ab713IB/isert: Fix dead lock in ib_isert | *22125be516IB/uverbs: Fix to consider event queue closing also upon non-blocking mode | *ea4cf04d3fiavf: remove mask from iavf_irq_enable_queues() | *19a500f530RDMA/rxe: Fix the use-before-initialization error of resp_pkts | *42ab735345RDMA/rxe: Removed unused name from rxe_task struct | *f99b6de58bRDMA/rxe: Remove the unused variable obj | *46305daf80net/sched: cls_u32: Fix reference counter leak leading to overflow | *88d6c1958bping6: Fix send to link-local addresses with VRF. | *474e0adf29netfilter: nfnetlink: skip error delivery on batch in case of ENOMEM | *67cafcd3e6spi: fsl-dspi: avoid SCK glitches with continuous transfers | *8231594e21spi: spi-fsl-dspi: Remove unused chip->void_write_data | *9d8b388a24usb: dwc3: gadget: Reset num TRBs before giving back the request | *94e52fac15serial: lantiq: add missing interrupt ack | *b577b74f8fUSB: serial: option: add Quectel EM061KGL series | *6b1203ae83Remove DECnet support from kernel | *aad6addc17ALSA: hda/realtek: Add a quirk for Compaq N14JP6 | *def7e17c98net: usb: qmi_wwan: add support for Compal RXM-G1 | *74bd537373RDMA/uverbs: Restrict usage of privileged QKEYs | *a8997ffad3nouveau: fix client work fence deletion race | *01fd784b07powerpc/purgatory: remove PGO flags | *b16bf76b38kexec: support purgatories with .text.hot sections | *b27a5fbe3cnilfs2: fix possible out-of-bounds segment allocation in resize ioctl | *0dd2d8331enilfs2: fix incomplete buffer cleanup in nilfs_btnode_abort_change_key() | *e1fb47f139nios2: dts: Fix tse_mac "max-frame-size" property | *5e531f448eocfs2: check new file size on fallocate call | *f6878da39focfs2: fix use-after-free when unmounting read-only filesystem | *82173fde61drm:amd:amdgpu: Fix missing buffer object unlock in failure path | *63afd76621xen/blkfront: Only check REQ_FUA for writes | *27447dada0mips: Move initrd_start check after initrd address sanitisation. | *a365600bbaMIPS: Alchemy: fix dbdma2 | *6b39b06b8dparisc: Flush gatt writes and adjust gatt mask in parisc_agp_mask_memory() | *de873bce06parisc: Improve cache flushing for PCXL in arch_sync_dma_for_cpu() | *28850d25a6btrfs: handle memory allocation failure in btrfs_csum_one_bio | *b31586747bpower: supply: Fix logic checking if system is running from battery | *dd8804117dirqchip/meson-gpio: Mark OF related data as maybe unused | *30ade27dberegulator: Fix error checking for debugfs_create_dir | *a12155f0b1platform/x86: asus-wmi: Ignore WMI events with codes 0x7B, 0xC0 | *d26edc403cpower: supply: Ratelimit no data debug output | *af44b2ddfcARM: dts: vexpress: add missing cache properties | *bd725832ebpower: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + schedule() | *82bfd14f13power: supply: sc27xx: Fix external_power_changed race | *66d5882dccpower: supply: ab8500: Fix external_power_changed race | *a8f286bfbcs390/dasd: Use correct lock while counting channel queue length | *d60be47f43dasd: refactor dasd_ioctl_information | *7f3bb75a04KEYS: asymmetric: Copy sig and digest in public_key_verify_signature() | *75d9e00f65test_firmware: fix a memory leak with reqs buffer * |3032bd084aRevert "neighbour: Replace zero-length array with flexible-array member" * |6635f9a873Revert "neighbour: fix unaligned access to pneigh_entry" * |477bb53b3aMerge 5.4.247 into android11-5.4-lts |\| | *61a2f83e47Linux 5.4.247 | *4b0199bc81Revert "staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE" | *85258ae307mtd: spinand: macronix: Add support for MX35LFxGE4AD | *8e54667403btrfs: unset reloc control if transaction commit fails in prepare_to_relocate() | *4223d91ca1btrfs: check return value of btrfs_commit_transaction in relocation | *a35d89d360rbd: get snapshot context after exclusive lock is ensured to be held | *52a40eaa55drm/atomic: Don't pollute crtc_state->mode_blob with error pointers | *2cc5d40e4dcifs: handle empty list of targets in cifs_reconnect() | *307ffb7162cifs: get rid of unused parameter in reconn_setup_dfs_targets() | *73ed7996bbext4: only check dquot_initialize_needed() when debugging | *7d0a29c74aeeprom: at24: also select REGMAP | *0360652bf6i2c: sprd: Delete i2c adapter in .remove's error path | *c73f1c2f68bonding (gcc13): synchronize bond_{a,t}lb_xmit() types | *ec94689803usb: usbfs: Use consistent mmap functions | *0147952d15usb: usbfs: Enforce page requirements for mmap | *090878903dpinctrl: meson-axg: add missing GPIOA_18 gpio group | *c6e8425550rbd: move RBD_OBJ_FLAG_COPYUP_ENABLED flag setting | *69653f9416Bluetooth: Fix use-after-free in hci_remove_ltk/hci_remove_irk | *953335a377ceph: fix use-after-free bug for inodes when flushing capsnaps | *2416bac0e7can: j1939: avoid possible use-after-free when j1939_can_rx_register fails | *bf0245bd44can: j1939: change j1939_netdev_lock type to mutex | *9eed68d62ecan: j1939: j1939_sk_send_loop_abort(): improved error queue handling in J1939 Socket | *2fc62d51d3drm/amdgpu: fix xclk freq on CHIP_STONEY | *e752bb1c03ALSA: hda/realtek: Add Lenovo P3 Tower platform | *ca599db7a5ALSA: hda/realtek: Add a quirk for HP Slim Desktop S01 | *d5ca4799e6Input: psmouse - fix OOB access in Elantech protocol | *282a96e3f8Input: xpad - delete a Razer DeathAdder mouse VID/PID entry | *a3a99a069ebatman-adv: Broken sync while rescheduling delayed work | *df7044fc09bnxt_en: Query default VLAN before VNIC setup on a VF | *a6ca812973lib: cpu_rmap: Fix potential use-after-free in irq_cpu_rmap_release() | *198da74a4enet: sched: fix possible refcount leak in tc_chain_tmplt_add() | *8f7cbd6d5enet: sched: move rtm_tca_policy declaration to include file | *b8b90f9244rfs: annotate lockless accesses to RFS sock flow table | *28ac3cf2acrfs: annotate lockless accesses to sk->sk_rxhash | *a4c72805fdnetfilter: ipset: Add schedule point in call_ad(). | *0b705ed9d4netfilter: conntrack: fix NULL pointer dereference in nf_confirm_cthelper | *c2c6133eebBluetooth: L2CAP: Add missing checks for invalid DCID | *0f841f8039Bluetooth: Fix l2cap_disconnect_req deadlock | *b0b1b97702net: dsa: lan9303: allow vid != 0 in port_fdb_{add|del} methods | *7e0da73ce5neighbour: fix unaligned access to pneigh_entry | *314713ff4cneighbour: Replace zero-length array with flexible-array member | *e96f52705aspi: qup: Request DMA before enabling clocks | *1cc6435cd7i40e: fix build warnings in i40e_alloc.h | *fc75b8973di40iw: fix build warning in i40iw_manage_apbvt() | *c425e71826block/blk-iocost (gcc13): keep large values in a new enum | *ec97af8e8ablk-iocost: avoid 64-bit division in ioc_timer_fn * |de0a430e6cRevert "tcp: deny tcp_disconnect() when threads are waiting" * |6d6982b563Merge 5.4.246 into android11-5.4-lts |\| | *f568a20f05Linux 5.4.246 | *6c0fc4725fdrm/edid: fix objtool warning in drm_cvt_modes() | *914bf541c3wifi: rtlwifi: 8192de: correct checking of IQK reload | *58bc9baaefdrm/edid: Fix uninitialized variable in drm_cvt_modes() | *77e442733fRDMA/bnxt_re: Remove the qp from list only if the qp destroy succeeds | *a616aa258eRDMA/bnxt_re: Remove set but not used variable 'dev_attr' | *4ffad598bfscsi: dpt_i2o: Do not process completions with invalid addresses | *e2897f133ascsi: dpt_i2o: Remove broken pass-through ioctl (I2OUSERCMD) | *56a4a9dc5eregmap: Account for register length when chunking | *94f3bc7e84test_firmware: fix the memory leak of the allocated firmware buffer | *fb7dce686ffbcon: Fix null-ptr-deref in soft_cursor | *5ea6122cafext4: add lockdep annotations for i_data_sem for ea_inode's | *b06346ef57ext4: disallow ea_inodes with extended attributes | *ec2a04f8fcext4: set lockdep subclass for the ea_inode in ext4_xattr_inode_cache_find() | *2e636c0c93ext4: add EA_INODE checking to ext4_iget() | *d9de088797tracing/probe: trace_probe_primary_from_call(): checked list_first_entry | *7df474125cselinux: don't use make's grouped targets feature yet | *b18bc3c9c2tty: serial: fsl_lpuart: use UARTCTRL_TXINV to send break instead of UARTCTRL_SBK | *ae7fb0c8bfmmc: vub300: fix invalid response handling | *9d8f5797d7wifi: rtlwifi: remove always-true condition pointed out by GCC 12 | *843f517667lib/dynamic_debug.c: use address-of operator on section symbols | *0638dcc7e7treewide: Remove uninitialized_var() usage | *1eb88dccb8kernel/extable.c: use address-of operator on section symbols | *d069c7ce39eth: sun: cassini: remove dead code | *d04adc383fgcc-12: disable '-Wdangling-pointer' warning for now | *253d702325ACPI: thermal: drop an always true check | *a010f8e646x86/boot: Wrap literal addresses in absolute_pointer() | *f0bb513555flow_dissector: work around stack frame size warning | *cd943425c6ata: libata-scsi: Use correct device no in ata_find_dev() | *76c67ff783scsi: stex: Fix gcc 13 warnings | *cd91ead608misc: fastrpc: reject new invocations during device removal | *bf1d0b84dfmisc: fastrpc: return -EPIPE to invocations on device removal | *d5f1838815usb: gadget: f_fs: Add unbind event before functionfs_unbind | *ac388cbbd9net: usb: qmi_wwan: Set DTR quirk for BroadMobi BM818 | *e101e8160ciio: dac: build ad5758 driver when AD5758 is selected | *a87236446aiio: dac: mcp4725: Fix i2c_master_send() return value handling | *c3b25245e3iio: light: vcnl4035: fixed chip ID check | *711049e31eHID: wacom: avoid integer overflow in wacom_intuos_inout() | *4251ff7fd4HID: google: add jewel USB id | *f3b4e2a636iio: adc: mxs-lradc: fix the order of two cleanup operations | *030ca3f7b0mailbox: mailbox-test: fix a locking issue in mbox_test_message_write() | *11b0844120atm: hide unused procfs functions | *cea581b385ALSA: oss: avoid missing-prototype warnings | *384fd08858netfilter: conntrack: define variables exp_nat_nla_policy and any_addr with CONFIG_NF_NAT | *f7e62f1b72wifi: b43: fix incorrect __packed annotation | *8a90351102scsi: core: Decrease scsi_device's iorequest_cnt if dispatch failed | *f1e6a10971arm64/mm: mark private VM_FAULT_X defines as vm_fault_t | *c87334f4e7ARM: dts: stm32: add pin map for CAN controller on stm32f7 | *a39f24357fwifi: rtl8xxxu: fix authentication timeout due to incorrect RCR value | *353fd22693media: dvb-core: Fix use-after-free due to race condition at dvb_ca_en50221 | *66a6d704c2media: dvb-core: Fix kernel WARNING for blocking operation in wait_event*() | *ed47886a73media: dvb-core: Fix use-after-free due on race condition at dvb_net | *e9033a425amedia: mn88443x: fix !CONFIG_OF error by drop of_match_ptr from ID table | *08b20cb8e5media: ttusb-dec: fix memory leak in ttusb_dec_exit_dvb() | *46e8b0fe53media: dvb_ca_en50221: fix a size write bug | *b66849f354media: netup_unidvb: fix irq init by register it at the end of probe | *88aef84eefmedia: dvb-usb: dw2102: fix uninit-value in su3000_read_mac_address | *6b9a534ec5media: dvb-usb: digitv: fix null-ptr-deref in digitv_i2c_xfer() | *f3c8ed7366media: dvb-usb-v2: rtl28xxu: fix null-ptr-deref in rtl28xxu_i2c_xfer | *65033ab2f9media: dvb-usb-v2: ce6230: fix null-ptr-deref in ce6230_i2c_master_xfer() | *37e36b4261media: dvb-usb-v2: ec168: fix null-ptr-deref in ec168_i2c_xfer() | *64f1b8296bmedia: dvb-usb: az6027: fix three null-ptr-deref in az6027_i2c_xfer() | *d16f5dc3aamedia: dvb_demux: fix a bug for the continuity counter | *a7c87057f2ASoC: ssm2602: Add workaround for playback distortions | *619f008df1xfrm: Check if_id in inbound policy/secpath match | *21ca817046ASoC: dwc: limit the number of overrun messages | *acd5f476c1nbd: Fix debugfs_create_dir error checking | *19ce1e1f34fbdev: stifb: Fix info entry in sti_struct on error path | *aa32f2fadbfbdev: modedb: Add 1920x1080 at 60 Hz video mode | *199f9c5430media: rcar-vin: Select correct interrupt mode for V4L2_FIELD_ALTERNATE | *b950966b44ARM: 9295/1: unwind:fix unwind abort for uleb128 case | *a823d8e0bbmailbox: mailbox-test: Fix potential double-free in mbox_test_message_write() | *29bfbc8a63watchdog: menz069_wdt: fix watchdog initialisation | *0018639be2mtd: rawnand: marvell: don't set the NAND frequency select | *5f0043efdcmtd: rawnand: marvell: ensure timing values are written | *6c0aacf1b4net: dsa: mv88e6xxx: Increase wait after reset deactivation | *94a00f1142net/sched: flower: fix possible OOB write in fl_set_geneve_opt() | *dd4b5a204dudp6: Fix race condition in udp6_sendmsg & connect | *cd4a37f0dcnet/netlink: fix NETLINK_LIST_MEMBERSHIPS length report | *cec562fbf8ocfs2/dlm: move BITS_TO_BYTES() to bitops.h for wider use | *9e6bb63e5enet: sched: fix NULL pointer dereference in mq_attach | *2188c0f095net/sched: Prohibit regrafting ingress or clsact Qdiscs | *80b20d528anet/sched: Reserve TC_H_INGRESS (TC_H_CLSACT) for ingress (clsact) Qdiscs | *321f383755net/sched: sch_clsact: Only create under TC_H_CLSACT | *5f67d33c01net/sched: sch_ingress: Only create under TC_H_INGRESS | *381a703220tcp: Return user_mss for TCP_MAXSEG in CLOSE/LISTEN state if user_mss set | *32e9a9ee28tcp: deny tcp_disconnect() when threads are waiting | *26e830858aaf_packet: do not use READ_ONCE() in packet_bind() | *43f1402dc2mtd: rawnand: ingenic: fix empty stub helper definitions | *dd3773e8c8amd-xgbe: fix the false linkup in xgbe_phy_status | *603eec060daf_packet: Fix data-races of pkt_sk(sk)->num. | *bab2f42d8dnetrom: fix info-leak in nr_write_internal() | *d7aeb591b1net/mlx5: fw_tracer, Fix event handling | *c7ac3ebf41dmaengine: pl330: rename _start to prevent build error | *17d70de572iommu/amd: Don't block updates to GATag if guest mode is on | *fa961ad9efiommu/rockchip: Fix unwind goto issue | *5abb81b4d7RDMA/bnxt_re: Fix return value of bnxt_re_process_raw_qp_pkt_rx | *2bafc7f22dRDMA/bnxt_re: Refactor queue pair creation code | *56446791bcRDMA/bnxt_re: Enable SRIOV VF support on Broadcom's 57500 adapter series | *cc5a673d85RDMA/efa: Fix unsupported page sizes in device * |acebb4758aMerge 5.4.245 into android11-5.4-lts |\| | *cf0b1e5482Linux 5.4.245 | *ec14c6e0a2netfilter: ctnetlink: Support offloaded conntrack entry deletion | *5b7d4d91c0ipv{4,6}/raw: fix output xfrm lookup wrt protocol | *6c88024cabbinder: fix UAF caused by faulty buffer cleanup | *e6183912eebluetooth: Add cmd validity checks at the start of hci_sock_ioctl() | *9ba28194eaio_uring: have io_kill_timeout() honor the request references | *6de3014d4bio_uring: don't drop completion lock before timer is fully initialized | *b0bfceaa8cio_uring: always grab lock in io_cancel_async_work() | *00395fd7f9cdc_ncm: Fix the build warning | *672e59995enet/mlx5: Devcom, serialize devcom registration | *f42feb29banet/mlx5: devcom only supports 2 ports | *67637a7ee6fs: fix undefined behavior in bit shift for SB_NOUSER | *02281c23d0power: supply: bq24190: Call power_supply_changed() after updating input current | *f6518954c1power: supply: core: Refactor power_supply_set_input_current_limit_from_supplier() | *db00ef8fd6power: supply: bq27xxx: After charger plug in/out wait 0.5s for things to stabilize | *ff484163dfnet: cdc_ncm: Deal with too low values of dwNtbOutMaxSize | *a270ca35a9cdc_ncm: Implement the 32-bit version of NCM Transfer Block * |b5d7df0c66Revert "firmware: arm_sdei: Fix sleep from invalid context BUG" * |fb4bb5a5f3Merge 5.4.244 into android11-5.4-lts |\| | *51d0ac4577Linux 5.4.244 | *edec0d39993c589_cs: Fix an error handling path in tc589_probe() | *3dfc1004d9net/mlx5: Devcom, fix error flow in mlx5_devcom_register_device | *c59106f8bcnet/mlx5: Fix error message when failing to allocate device memory | *8680d838c9forcedeth: Fix an error handling path in nv_probe() | *b8db4a4e20ASoC: Intel: Skylake: Fix declaration of enum skl_ch_cfg | *0099a29bc5x86/show_trace_log_lvl: Ensure stack pointer is aligned, again | *c60f38c9bdxen/pvcalls-back: fix double frees with pvcalls_new_active_socket() | *9b13972e4fcoresight: Fix signedness bug in tmc_etr_buf_insert_barrier_packet() | *f6b610730epower: supply: sbs-charger: Fix INHIBITED bit for Status reg | *0c5f4cec75power: supply: bq27xxx: Fix poll_interval handling and races on remove | *dafe9136bepower: supply: bq27xxx: Fix I2C IRQ race on remove | *7b3b119649power: supply: bq27xxx: Fix bq27xxx_battery_update() race condition | *96bfafbc7dpower: supply: leds: Fix blink to LED on transition | *011f47c8b8ipv6: Fix out-of-bounds access in ipv6_find_tlv() | *120cdad8b2bpf: Fix mask generation for 32-bit narrow loads of 64-bit fields | *9928ce5225selftests: fib_tests: mute cleanup error message | *58766252f6net: fix skb leak in __skb_tstamp_tx() | *2b580d0f03media: radio-shark: Add endpoint checks | *a730feb672USB: sisusbvga: Add endpoint checks | *80100e0863USB: core: Add routines for endpoint checks in old drivers | *7e3ae83371udplite: Fix NULL pointer dereference in __sk_mem_raise_allocated(). | *9ea0c5f90anet: fix stack overflow when LRO is disabled for virtual interfaces | *1522dc58bffbdev: udlfb: Fix endpoint check | *be646802b3debugobjects: Don't wake up kswapd from fill_pool() | *4e5a7181a6x86/topology: Fix erroneous smp_num_siblings on Intel Hybrid platforms | *6d091e0ddcparisc: Fix flush_dcache_page() for usage from irq context | *b556618bacselftests/memfd: Fix unknown type name build failure | *04aee084a3x86/mm: Avoid incomplete Global INVLPG flushes | *a9f5423460btrfs: use nofs when cleaning up aborted transactions | *4f92934d80gpio: mockup: Fix mode of debugfs files | *da8adda579parisc: Allow to reboot machine after system halt | *43ffe982a3parisc: Handle kgdb breakpoints only in kernel context | *f7d19a366cm68k: Move signal frame following exception on 68020/030 | *8facb9cc16ALSA: hda/realtek: Enable headset onLenovo M70/M90 | *5cc3e698c2ALSA: hda/ca0132: add quirk for EVGA X299 DARK | *68e4c39017mt76: mt7615: Fix build with older compilers | *b558275c1bspi: fsl-cpm: Use 16 bit mode for large transfers with even size | *d64a45c019spi: fsl-spi: Re-organise transfer bits_per_word adaptation | *aabe8ca791watchdog: sp5100_tco: Immediately trigger upon starting. | *aeff9e7e87s390/qdio: fix do_sqbs() inline assembly constraint | *ab196fe70as390/qdio: get rid of register asm | *a4e3c4c65avc_screen: reload load of struct vc_data pointer in vcs_write() to avoid UAF | *74e644795dvc_screen: rewrite vcs_size to accept vc, not inode | *e9399d4ea5usb: gadget: u_ether: Fix host MAC address case | *939cafcdf7usb: gadget: u_ether: Convert prints to device prints | *c8489e0fablib/string_helpers: Introduce string_upper() and string_lower() helpers | *7e15602c50HID: wacom: add three styli to wacom_intuos_get_tool_type | *2a12339ce3HID: wacom: Add new Intuos Pro Small (PTH-460) device IDs | *b5185f1b11HID: wacom: Force pen out of prox if no events have been received in a while | *e0c1b35239netfilter: nf_tables: hold mutex on netns pre_exit path | *6236af6936netfilter: nf_tables: validate NFTA_SET_ELEM_OBJREF based on NFT_SET_OBJECT flag | *05b4105e68netfilter: nf_tables: stricter validation of element data | *e832e4bae5netfilter: nf_tables: allow up to 64 bytes in the set element data area | *28fe10236anetfilter: nf_tables: add nft_setelem_parse_key() | *eb5b579bd6netfilter: nf_tables: validate registers coming from userspace. | *cfe1b9719cnetfilter: nftables: statify nft_parse_register() | *7c788393d4netfilter: nftables: add nft_parse_register_store() and use it | *25336cd96bnetfilter: nftables: add nft_parse_register_load() and use it | *116d53f09fnilfs2: fix use-after-free bug of nilfs_root in nilfs_evict_inode() | *df89b1753epowerpc/64s/radix: Fix soft dirty tracking | *60b9a9c8f3tpm/tpm_tis: Disable interrupts for more Lenovo devices | *a33c172c1eceph: force updating the msg pointer in non-split case | *6eb9ed0ab7serial: Add support for Advantech PCI-1611U card | *21f107a959statfs: enforce statfs[64] structure initialization | *1eb3e32de7KVM: x86: do not report a vCPU as preempted outside instruction boundaries | *a88638a954can: kvaser_pciefd: Disable interrupts in probe error path | *4579e25567can: kvaser_pciefd: Do not send EFLUSH command on TFD interrupt | *33d5a0a498can: kvaser_pciefd: Clear listen-only bit if not explicitly requested | *e5ac4f1207can: kvaser_pciefd: Empty SRB buffer in probe | *c0e9fb21b6can: kvaser_pciefd: Call request_irq() before enabling interrupts | *36cd7601e6can: kvaser_pciefd: Set CAN_STATE_STOPPED in kvaser_pciefd_stop() | *e658112893can: j1939: recvmsg(): allow MSG_CMSG_COMPAT flag | *8804825251ALSA: hda/realtek: Add quirk for 2nd ASUS GU603 | *57fd0d122eALSA: hda/realtek: Add a quirk for HP EliteDesk 805 | *739056188aALSA: hda: Add NVIDIA codec IDs a3 through a7 to patch table | *4ef155ddf9ALSA: hda: Fix Oops by 9.1 surround channel names | *4f9c0a7c27usb: typec: altmodes/displayport: fix pin_assignment_show | *33b6648d27usb: dwc3: debugfs: Resume dwc3 before accessing registers | *241491524aUSB: UHCI: adjust zhaoxin UHCI controllers OverCurrent bit value | *1f36dc4161usb-storage: fix deadlock when a scsi command timeouts more than once | *7cef7681aaUSB: usbtmc: Fix direction for 0-length ioctl control messages | *f662f856acvlan: fix a potential uninit-value in vlan_dev_hard_start_xmit() | *53bf7cda16igb: fix bit_shift to be in [1..8] range | *e20105d967cassini: Fix a memory leak in the error handling path of cas_init_one() | *e519a404a5wifi: iwlwifi: mvm: don't trust firmware n_channels | *d0baaadd1cnet: bcmgenet: Restore phy_stop() depending upon suspend/close | *2cca63d5bcnet: bcmgenet: Remove phy_stop() from bcmgenet_netif_stop() | *435855b083net: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment() | *ed50fcab14drm/exynos: fix g2d_open/close helper function definitions | *1550bcf298media: netup_unidvb: fix use-after-free at del_timer() | *69055f9990net: hns3: fix reset delay time to avoid configuration timeout | *304e5cb77enet: hns3: fix sending pfc frames after reset issue | *d1bcc60687erspan: get the proto with the md version for collect_md | *f185ede016ip_gre, ip6_gre: Fix race condition on o_seqno in collect_md mode | *0eb3ec0a35ip6_gre: Make o_seqno start from 0 in native mode | *3040962413ip6_gre: Fix skb_under_panic in __gre6_xmit() | *7525aa2117serial: arc_uart: fix of_iomap leak in `arc_serial_probe` | *5a90309002vsock: avoid to close connected socket after the timeout | *5009aead17ALSA: firewire-digi00x: prevent potential use after free | *b22b514209net: fec: Better handle pm_runtime_get() failing in .remove() | *033297ef3baf_key: Reject optional tunnel/BEET mode templates in outbound policies | *912a6cff0dcpupower: Make TSC read per CPU for Mperf monitor | *131eb9c9b1ASoC: fsl_micfil: register platform component before registering cpu dai | *a3714a47b4btrfs: fix space cache inconsistency after error loading it from disk | *5968983037btrfs: replace calls to btrfs_find_free_ino with btrfs_find_free_objectid | *1e453cb550mfd: dln2: Fix memory leak in dln2_probe() | *bdc33478d5phy: st: miphy28lp: use _poll_timeout functions for waits | *e6e917e82dInput: xpad - add constants for GIP interface numbers | *9fcef1e37diommu/arm-smmu-v3: Acknowledge pri/event queue overflow if any | *4461f41ececlk: tegra20: fix gcc-7 constant overflow warning | *c23e6383d7RDMA/core: Fix multiple -Warray-bounds warnings | *3ed95a6f6crecordmcount: Fix memory leaks in the uwrite function | *38a118fd54sched: Fix KCSAN noinstr violation | *cbe3063a9bmcb-pci: Reallocate memory region to avoid memory overlapping | *d5cd2928d3serial: 8250: Reinit port->pm on port specific driver unbind | *ccb12585a7usb: typec: tcpm: fix multiple times discover svids error | *c5405c7671HID: wacom: generic: Set battery quirk only when we see battery data | *d3f32dc2ccspi: spi-imx: fix MX51_ECSPI_* macros when cs > 3 | *bf80dbd528HID: logitech-hidpp: Reconcile USB and Unifying serials | *e28f9de2d4HID: logitech-hidpp: Don't use the USB serial for USB devices | *8a65476dd1staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE | *2112c4c47dBluetooth: L2CAP: fix "bad unlock balance" in l2cap_disconnect_rsp | *fa57021262wifi: iwlwifi: dvm: Fix memcpy: detected field-spanning write backtrace | *0ad8dd870awifi: iwlwifi: pcie: Fix integer overflow in iwl_write_to_user_buf | *f6f2d16c77wifi: iwlwifi: pcie: fix possible NULL pointer dereference | *a7ec2f424fsamples/bpf: Fix fout leak in hbm's run_bpf_prog | *4ceedc2f8bf2fs: fix to drop all dirty pages during umount() if cp_error is set | *8659c5f4ffext4: Fix best extent lstart adjustment logic in ext4_mb_new_inode_pa() | *cee78217a7ext4: set goal start correctly in ext4_mb_normalize_request | *d43b1bdb10gfs2: Fix inode height consistency check | *410e610a96scsi: message: mptlan: Fix use after free bug in mptlan_remove() due to race condition | *cc2d2b3dbflib: cpu_rmap: Avoid use after free on rmap->obj array entries | *89f5055f9bscsi: target: iscsit: Free cmds before session free | *67236cf14dnet: Catch invalid index in XPS mapping | *92af9cb86anet: pasemi: Fix return type of pasemi_mac_start_tx() | *644a9d5e22scsi: lpfc: Prevent lpfc_debugfs_lockstat_write() buffer overflow | *c4813f858eext2: Check block size validity during mount | *56c7e9c39bwifi: brcmfmac: cfg80211: Pass the PMK in binary instead of hex | *c409eb45f5ACPICA: ACPICA: check null return of ACPI_ALLOCATE_ZEROED in acpi_db_display_objects | *710e09fd11ACPICA: Avoid undefined behavior: applying zero offset to null pointer | *99c8f2e6f3drm/tegra: Avoid potential 32-bit integer overflow | *ccae2233e9ACPI: EC: Fix oops when removing custom query handlers | *48ac727ea4firmware: arm_sdei: Fix sleep from invalid context BUG | *a2a5d3a584memstick: r592: Fix UAF bug in r592_remove due to race condition | *d73e8c4767regmap: cache: Return error in cache sync operations for REGCACHE_NONE | *9b72cb394fdrm/amd/display: Use DC_LOG_DC in the trasform pixel function | *a75d9211a0fs: hfsplus: remove WARN_ON() from hfsplus_cat_{read,write}_inode() | *196528ad48af_unix: Fix data races around sk->sk_shutdown. | *7d17bc2d4eaf_unix: Fix a data race of sk->sk_receive_queue->qlen. | *699c9e7c9fnet: datagram: fix data-races in datagram_poll() | *1aa872e967ipvlan:Fix out-of-bounds caused by unclear skb->cb | *4188c52694net: add vlan_get_protocol_and_depth() helper | *57a269d82fnet: tap: check vlan with eth_type_vlan() method | *1747aa98abnet: annotate sk->sk_err write from do_recvmmsg() | *a507022c86netlink: annotate accesses to nlk->cb_running | *b47aae7038netfilter: conntrack: fix possible bug_on with enable_hooks=1 | *d7343f8de0net: Fix load-tearing on sk->sk_stamp in sock_recv_cmsgs(). | *42e1dafa65linux/dim: Do nothing if no time delta between samples | *7460ac5a66ARM: 9296/1: HP Jornada 7XX: fix kernel-doc warnings | *22b8ac608adrm/mipi-dsi: Set the fwnode for mipi_dsi_device | *d4992b2b5cdriver core: add a helper to setup both the of_node and fwnode of a device * |4c85910ff8Revert "PM: domains: Fix up terminology with parent/child" * |cba632cb06Revert "PM: domains: Restore comment indentation for generic_pm_domain.child_links" * |92cfb88602Revert "scripts/gdb: bail early if there are no generic PD" * |2bd517d6bcRevert "uapi/linux/const.h: prefer ISO-friendly __typeof__" * |673a774ad6Revert "netfilter: nf_tables: don't write table validation state without mutex" * |88ac2d9193Merge 5.4.243 into android11-5.4-lts |\| | *f53660ec66Linux 5.4.243 | *d60f15682adrm/amd/display: Fix hang when skipping modeset | *93ca0d7b88mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock | *3f231e30cddrm/exynos: move to use request_irq by IRQF_NO_AUTOEN flag | *65a8b6d129drm/msm/adreno: Fix null ptr access in adreno_gpu_cleanup() | *62ac943eb2firmware: raspberrypi: fix possible memory leak in rpi_firmware_probe() | *a781ea3437drm/msm: Fix double pm_runtime_disable() call | *e4e88f74ebPM: domains: Restore comment indentation for generic_pm_domain.child_links | *ddcca7299dprintk: declare printk_deferred_{enter,safe}() in include/linux/printk.h | *c2c3ffc798PCI: pciehp: Fix AB-BA deadlock between reset_lock and device_lock | *6a24285f64PCI: pciehp: Use down_read/write_nested(reset_lock) to fix lockdep errors | *dde34ef0bcdrbd: correctly submit flush bio on barrier | *373720b928serial: 8250: Fix serial8250_tx_empty() race with DMA Tx | *f2a1071100tty: Prevent writing chars during tcsetattr TCSADRAIN/FLUSH | *ba04d6af5aext4: fix invalid free tracking in ext4_xattr_move_to_block() | *185062a219ext4: remove a BUG_ON in ext4_mb_release_group_pa() | *d7ff83a71dext4: bail out of ext4_xattr_ibody_get() fails for any reason | *486efbbc94ext4: add bounds checking in get_max_inline_xattr_value_size() | *b4fa4768c9ext4: fix deadlock when converting an inline directory in nojournal mode | *2dda202906ext4: improve error recovery code paths in __ext4_remount() | *525c802de3ext4: fix data races when using cached status extents | *4f4fd982d9ext4: avoid a potential slab-out-of-bounds in ext4_group_desc_csum | *1b90fbc759ext4: fix WARNING in mb_find_extent | *f9e27d4bdbHID: wacom: insert timestamp to packed Bluetooth (BT) events | *d8b609e662HID: wacom: Set a default resolution for older tablets | *3decf3a750drm/amdgpu: disable sdma ecc irq only when sdma RAS is enabled in suspend | *625d4112eadrm/amdgpu/gfx: disable gfx9 cp_ecc_error_irq only when enabling legacy gfx ras | *b1fabc3794drm/amdgpu: fix an amdgpu_irq_put() issue in gmc_v9_0_hw_fini() | *c6bb596624drm/panel: otm8009a: Set backlight parent to panel device | *3e77036246f2fs: fix potential corruption when moving a directory | *dafc5a5c8fARM: dts: s5pv210: correct MIPI CSIS clock name | *ad751b896eARM: dts: exynos: fix WM8960 clock name in Itop Elite | *8234964707remoteproc: st: Call of_node_put() on iteration error | *a1366ecb09remoteproc: stm32: Call of_node_put() on iteration error | *f16bc5111csh: nmi_debug: fix return value of __setup handler | *c9871a47f4sh: init: use OF_EARLY_FLATTREE for early init | *111b08116dsh: math-emu: fix macro redefined warning | *8fb33166aeinotify: Avoid reporting event with invalid wd | *0ccea97abeplatform/x86: touchscreen_dmi: Add info for the Dexp Ursus KX210i | *871641c7ebcifs: fix pcchunk length type in smb2_copychunk_range | *3e2b4bceaabtrfs: print-tree: parent bytenr must be aligned to sector size | *1e05bf5e80btrfs: don't free qgroup space unless specified | *b232f5e8cfbtrfs: fix btrfs_prev_leaf() to not return the same key twice | *96f71f669bperf symbols: Fix return incorrect build_id size in elf_read_build_id() | *78190a6ebeperf map: Delete two variable initialisations before null pointer checks in sort__sym_from_cmp() | *ffec80cc67perf vendor events power9: Remove UTF-8 characters from JSON files | *62f1ebfe9avirtio_net: suppress cpu stall when free_unused_bufs | *1dc5faf30avirtio_net: split free_unused_bufs() | *b15637e717net: dsa: mt7530: fix corrupt frames using trgmii on 40 MHz XTAL MT7621 | *544b0de2d7ALSA: caiaq: input: Add error handling for unsupported input methods in `snd_usb_caiaq_input_init` | *35f2642f4adrm/amdgpu: add a missing lock for AMDGPU_SCHED | *5cfe3f910faf_packet: Don't send zero-byte data in packet_sendmsg_spkt(). | *fbcfa00386ionic: remove noise from ethtool rxnfc error msg | *4a56f1f6ferxrpc: Fix hard call timeout units | *dfa36eb380net/sched: act_mirred: Add carrier check | *cc5ccfb7c0writeback: fix call of incorrect macro | *9c1fcb97f9net: dsa: mv88e6xxx: add mv88e6321 rsvd2cpu | *e804124390sit: update dev->needed_headroom in ipip6_tunnel_bind_dev() | *cc5fe387c6net/sched: cls_api: remove block_cb from driver_list before freeing | *8acd3a2887net/ncsi: clear Tx enable mode when handling a Config required AEN | *bc0905a765relayfs: fix out-of-bounds access in relay_file_read | *c038ae623akernel/relay.c: fix read_pos error when multiple readers | *4f4de392f4crypto: safexcel - Cleanup ring IRQ workqueues on load failure | *b9878f485dcrypto: inside-secure - irq balance | *439d3a7056dm verity: fix error handling for check_at_most_once on FEC | *0156f7dbd8dm verity: skip redundant verity_handle_err() on I/O errors | *e4875d6e05mailbox: zynqmp: Fix counts of child nodes | *ff0d64f512mailbox: zynq: Switch to flexible array to simplify code | *352b152905tick/nohz: Fix cpu_is_hotpluggable() by checking with nohz subsystem | *9b2ed14431nohz: Add TICK_DEP_BIT_RCU | *c8b6063f13netfilter: nf_tables: deactivate anonymous set from preparation phase | *29fb2a1a5fdebugobject: Ensure pool refill (again) | *cef1b8a4dfperf intel-pt: Fix CYC timestamps after standalone CBR | *5ead86d575perf auxtrace: Fix address filter entire kernel size | *29a1ef57c3dm ioctl: fix nested locking in table_clear() to remove deadlock concern | *337b7af273dm flakey: fix a crash with invalid table line | *6d126899b0dm integrity: call kmem_cache_destroy() in dm_integrity_init() error path | *cbe0a7ec67dm clone: call kmem_cache_destroy() in dm_clone_init() error path | *d8f66a19f8s390/dasd: fix hanging blockdevice after request requeue | *5492d40812btrfs: scrub: reject unsupported scrub flags | *946e067b4cscripts/gdb: fix lx-timerlist for Python3 | *7cf5ce2857clk: rockchip: rk3399: allow clk_cifout to force clk_cifout_src to reparent | *4379d5ce92wifi: rtl8xxxu: RTL8192EU always needs full init | *ecdcefd312mailbox: zynqmp: Fix typo in IPI documentation | *38afc633d3mailbox: zynqmp: Fix IPI isr handling | *14964127bemd/raid10: fix null-ptr-deref in raid10_sync_request | *fe1cbbcb1anilfs2: fix infinite loop in nilfs_mdt_get_block() | *4569a292a8nilfs2: do not write dirty data after degenerating to read-only | *fd37a5c699parisc: Fix argument pointer in real64_call_asm() | *736aeb17b6afs: Fix updating of i_size with dv jump from server | *27263ff397dmaengine: at_xdmac: do not enable all cyclic channels | *8c821199bcdmaengine: dw-edma: Fix to enable to issue dma request on DMA processing | *24c9c4ad23dmaengine: dw-edma: Fix to change for continuous transfer | *2e900f3631phy: tegra: xusb: Add missing tegra_xusb_port_unregister for usb2_port and ulpi_port | *58e0264658pwm: mtk-disp: Disable shadow registers before setting backlight values | *33f00f0a73pwm: mtk-disp: Adjust the clocks to avoid them mismatch | *e5e9e59c45pwm: mtk-disp: Don't check the return code of pwmchip_remove() | *8e238e8882dmaengine: mv_xor_v2: Fix an error code. | *026df12f3cleds: TI_LMU_COMMON: select REGMAP instead of depending on it | *a34f6dcb78ext4: fix use-after-free read in ext4_find_extent for bigalloc + inline | *6dfd85ada8openrisc: Properly store r31 to pt_regs on unhandled exceptions | *2fd44d2bdeclocksource/drivers/davinci: Fix memory leak in davinci_timer_register when init fails | *f2aaf41988clocksource: davinci: axe a pointless __GFP_NOFAIL | *fc051820d6clocksource/drivers/davinci: Avoid trailing '\n' hidden in pr_fmt() | *945e989862RDMA/mlx5: Use correct device num_ports when modify DC | *9bf843683aSUNRPC: remove the maximum number of retries in call_bind_status | *1dfa3c9dd2Input: raspberrypi-ts - fix refcount leak in rpi_ts_probe | *ce6c42f0b6input: raspberrypi-ts: Release firmware handle when not needed | *de85be00a8firmware: raspberrypi: Introduce devm_rpi_firmware_get() | *d537afa08efirmware: raspberrypi: Keep count of all consumers | *919f470337NFSv4.1: Always send a RECLAIM_COMPLETE after establishing lease | *fe60c3af70IB/hfi1: Fix SDMA mmu_rb_node not being evicted in LRU order | *b4f12e2402RDMA/siw: Remove namespace check from siw_netdev_event() | *795d11e8ffclk: add missing of_node_put() in "assigned-clocks" property parsing | *0c770f95a2power: supply: generic-adc-battery: fix unit scaling | *31ca78dc1frtc: meson-vrtc: Use ktime_get_real_ts64() to get the current time | *8feca62590RDMA/mlx4: Prevent shift wrapping in set_user_sq_size() | *683cd87041rtc: omap: include header for omap_rtc_power_off_program prototype | *a48403e8c3RDMA/rdmavt: Delete unnecessary NULL check | *b24e0e4612RDMA/siw: Fix potential page_array out of range access | *318bc22decperf/core: Fix hardlockup failure caused by perf throttle | *ff3edfb3c8powerpc/rtas: use memmove for potentially overlapping buffer copy | *333a2a9846macintosh: via-pmu-led: requires ATA to be set | *e2dd8bbab7powerpc/sysdev/tsi108: fix resource printk format warnings | *770d583cd5powerpc/wii: fix resource printk format warnings | *f60c8d7c16powerpc/mpc512x: fix resource printk format warning | *97cd970f8amacintosh/windfarm_smu_sat: Add missing of_node_put() | *54dda73222spmi: Add a check for remove callback when removing a SPMI driver | *af9bfe1c0astaging: rtl8192e: Fix W_DISABLE# does not work after stop/start | *572d48361aserial: 8250: Add missing wakeup event reporting | *488baa8038tty: serial: fsl_lpuart: adjust buffer length to the intended size | *8fa80b452bfirmware: stratix10-svc: Fix an NULL vs IS_ERR() bug in probe | *26ca30516busb: mtu3: fix kernel panic at qmu transfer done irq handler | *bd7a3e6416usb: chipidea: fix missing goto in `ci_hdrc_probe` | *f9e2abb6dfsh: sq: Fix incorrect element size for allocating bitmap buffer | *e1431faa89uapi/linux/const.h: prefer ISO-friendly __typeof__ | *6716203844spi: cadence-quadspi: fix suspend-resume implementations | *caaefbf823mtd: spi-nor: cadence-quadspi: Handle probe deferral while requesting DMA channel | *ee5ffe4cdfmtd: spi-nor: cadence-quadspi: Don't initialize rx_dma_complete on failure | *7c69aeca59mtd: spi-nor: cadence-quadspi: Provide a way to disable DAC mode | *df9708297bmtd: spi-nor: cadence-quadspi: Make driver independent of flash geometry | *30ac77e995scripts/gdb: bail early if there are no generic PD | *35a2681e99PM: domains: Fix up terminology with parent/child | *0fbc62db7escripts/gdb: bail early if there are no clocks | *0988baae39ia64: salinfo: placate defined-but-not-used warning | *d6cb7b6868ia64: mm/contig: fix section mismatch warning/error | *d3c6d52148of: Fix modalias string generation | *ca0f4ad2b7vmci_host: fix a race condition in vmci_host_poll() causing GPF | *170e223240spi: fsl-spi: Fix CPM/QE mode Litte Endian | *8632384337spi: qup: Don't skip cleanup in remove's error path | *814a9a6de1linux/vt_buffer.h: allow either builtin or modular for macros | *3547e5bd0dASoC: es8316: Handle optional IRQ assignment | *9650d5a1e7ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ | *f5ce428e3egenirq: Add IRQF_NO_AUTOEN for request_irq/nmi() | *0f31993721PCI: imx6: Install the fault handler only on compatible match | *0fee5030c0usb: gadget: udc: renesas_usb3: Fix use after free bug in renesas_usb3_remove due to race condition | *7d2bc728cciio: light: max44009: add missing OF device matching | *ee0e2f7af0fpga: bridge: fix kernel-doc parameter description | *3fb02404c1usb: host: xhci-rcar: remove leftover quirk handling | *36fb7843f1pstore: Revert pmsg_lock back to a normal mutex | *602fa8af44tcp/udp: Fix memleaks of sk and zerocopy skbs with TX timestamp. | *638810f5d0net: amd: Fix link leak when verifying config failed | *9ef809945enetlink: Use copy_to_user() for optval in netlink_getsockopt(). | *de0ffb5145Revert "Bluetooth: btsdio: fix use after free bug in btsdio_remove due to unfinished work" | *27c468ec1aipv4: Fix potential uninit variable access bug in __ip_make_skb() | *3b9960e21enetfilter: nf_tables: don't write table validation state without mutex | *64d2c1cfd0bpf: Don't EFAULT for getsockopt with optval=NULL | *3bf918f90fixgbe: Enable setting RSS table to default values | *053b36c50bixgbe: Allow flow hash to be set via ethtool | *ae23fc2b23wifi: iwlwifi: mvm: check firmware response size | *ffdfaf27ebwifi: iwlwifi: make the loop for card preparation effective | *3725b35fc0md/raid10: fix memleak of md thread | *fb3f2f2fa0md: update the optimal I/O size on reshape | *b6460f68c1md/raid10: fix memleak for 'conf->bio_split' | *8c5d5d7ffdmd/raid10: fix leak of 'r10bio->remaining' for recovery | *1fee7e391dbpf, sockmap: Revert buggy deadlock fix in the sockhash and sockmap | *d5fdcd2384nvme-fcloop: fix "inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage" | *b1e6b3fd11nvme: fix async event trace event | *eaaa0c6b05nvme: handle the persistent internal error AER | *c229821510bpf, sockmap: fix deadlocks in the sockhash and sockmap | *74d90f92eascsi: lpfc: Fix ioremap issues in lpfc_sli4_pci_mem_setup() | *01993768b3crypto: drbg - Only fail when jent is unavailable in FIPS mode | *b21c7e28e8crypto: drbg - make drbg_prepare_hrng() handle jent instantiation errors | *14efbe2499bpftool: Fix bug for long instructions in program CFG dumps | *3e3533c56cwifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_reg() | *03109f1870wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_rfreg() | *e163e64227rtlwifi: Replace RT_TRACE with rtl_dbg | *faec6b8654rtlwifi: Start changing RT_TRACE into rtl_dbg | *7c5e804b6df2fs: handle dqget error in f2fs_transfer_project_quota() | *7a2ae008a5scsi: megaraid: Fix mega_cmd_done() CMDID_INT_CMDS | *a4245323d2scsi: target: iscsit: Fix TAS handling during conn cleanup | *8e402d5198net/packet: convert po->auxdata to an atomic flag | *f3ac72c7abnet/packet: convert po->origdev to an atomic flag | *4760229b82net/packet: annotate accesses to po->xmit | *47464e0c65vlan: partially enable SIOCSHWTSTAMP in container | *8f851a75bbscm: fix MSG_CTRUNC setting condition for SO_PASSSEC | *7160c6940awifi: rtw88: mac: Return the original error from rtw_mac_power_switch() | *743ae09b28wifi: rtw88: mac: Return the original error from rtw_pwr_seq_parser() | *72d5edceb2tools: bpftool: Remove invalid \' json escape | *0d1792c983wifi: ath6kl: reduce WARN to dev_dbg() in callback | *8d17563174wifi: ath5k: fix an off by one check in ath5k_eeprom_read_freq_list() | *d989931866wifi: ath9k: hif_usb: fix memory leak of remain_skbs | *1286c4ce1fwifi: ath6kl: minor fix for allocation size | *a3e7a3d472tick/common: Align tick period with the HZ tick. | *04be737176tick: Get rid of tick_period | *3df29117d8tick/sched: Optimize tick_do_update_jiffies64() further | *b6fe34d936tick/sched: Reduce seqcount held scope in tick_do_update_jiffies64() | *746eac77e0tick/sched: Use tick_next_period for lockless quick check | *a23607579ftimekeeping: Split jiffies seqlock | *22d7ec50ffdebugobject: Prevent init race with static objects | *a687da5004arm64: kgdb: Set PSTATE.SS to 1 to re-enable single-step | *442470948cx86/ioapic: Don't return 0 from arch_dynirq_lower_bound() | *824683dbecregulator: stm32-pwr: fix of_iomap leak | *53adb408b1media: rc: gpio-ir-recv: Fix support for wake-up | *9df630dafamedia: rcar_fdp1: Fix refcount leak in probe and remove function | *6fd6e2f29cmedia: rcar_fdp1: Fix the correct variable assignments | *75b55a3cbbmedia: rcar_fdp1: Make use of the helper function devm_platform_ioremap_resource() | *03d2344592media: rcar_fdp1: fix pm_runtime_get_sync() usage count | *aebe8e43d8media: rcar_fdp1: simplify error check logic at fdp_open() | *a4b6ab360fmedia: saa7134: fix use after free bug in saa7134_finidev due to race condition | *cd1583caedmedia: dm1105: Fix use after free bug in dm1105_remove due to race condition | *0c61a6897cx86/apic: Fix atomic update of offset in reserve_eilvt_offset() | *5224ea5751regulator: core: Avoid lockdep reports when resolving supplies | *73b262115fregulator: core: Consistently set mutex_owner when using ww_mutex_lock_slow() | *9b53238b3bdrm/lima/lima_drv: Add missing unwind goto in lima_pdev_probe() | *0a6d476d9cmmc: sdhci-of-esdhc: fix quirk to ignore command inhibit for data | *f79421c360drm/msm/adreno: drop bogus pm_runtime_set_active() | *438d00b18ddrm/msm/adreno: Defer enabling runpm until hw_init() | *594726c938drm/msm: fix unbalanced pm_runtime_enable in adreno_gpu_{init, cleanup} | *37c8085cf9firmware: qcom_scm: Clear download bit during reboot | *620b983589media: av7110: prevent underflow in write_ts_to_decoder() | *1205c52cf2media: uapi: add MEDIA_BUS_FMT_METADATA_FIXED media bus format. | *c6a315f0b1media: bdisp: Add missing check for create_workqueue | *1a057b6895ARM: dts: qcom: ipq8064: Fix the PCI I/O port range | *699bf5a793ARM: dts: qcom: ipq8064: reduce pci IO size to 64K | *1d207fcdf6ARM: dts: qcom: ipq4019: Fix the PCI I/O port range | *e0162c9297EDAC/skx: Fix overflows on the DRAM row address mapping arrays | *acb6f45775arm64: dts: renesas: r8a774c0: Remove bogus voltages from OPP table | *0524eb6882arm64: dts: renesas: r8a77990: Remove bogus voltages from OPP table | *a535b5d4a2drm/probe-helper: Cancel previous job before starting new one | *4223f98d4ddrm/vgem: add missing mutex_destroy | *8747cd580bdrm/rockchip: Drop unbalanced obj unref | *9773c58594erofs: fix potential overflow calculating xattr_isize | *880c79bdb0erofs: stop parsing non-compact HEAD index if clusterofs is invalid | *e998107daatpm, tpm_tis: Do not skip reset of original interrupt vector | *1c131a32a9selinux: ensure av_permissions.h is built when needed | *11458692ebselinux: fix Makefile dependencies of flask.h | *823f554747ubifs: Free memory for tmpfile name | *d3f1b113a5ubi: Fix return value overwrite issue in try_write_vid_and_data() | *6f2eee5457ubifs: Fix memleak when insert_old_idx() failed | *2c2a76b7c4Revert "ubifs: dirty_cow_znode: Fix memleak in error handling path" | *5d1f14beabi2c: omap: Fix standard mode false ACK readings | *d482617fa6KVM: nVMX: Emulate NOPs in L2, and PAUSE if it's not intercepted | *67d33b8c56reiserfs: Add security prefix to xattr name in reiserfs_security_write() | *2399b1fda0ring-buffer: Sync IRQ works before buffer destruction | *a7fa8c9dc8pwm: meson: Fix g12a ao clk81 name | *a3e0d3430fpwm: meson: Fix axg ao mux parents | *719459877dkheaders: Use array declaration instead of char | *4ec3be7003ipmi: fix SSIF not responding under certain cond. | *bead854bccipmi:ssif: Add send_retries increment | *0f91290774MIPS: fw: Allow firmware to pass a empty env | *3092933b26xhci: fix debugfs register accesses while suspended | *3c5a28658ddebugfs: regset32: Add Runtime PM support | *2298b30010staging: iio: resolver: ads1210: fix config mode | *fbd11f086bperf sched: Cast PTHREAD_STACK_MIN to int as it may turn into sysconf(__SC_THREAD_STACK_MIN_VALUE) | *6525d2fd6fUSB: dwc3: fix runtime pm imbalance on unbind | *2d5844aa6eUSB: dwc3: fix runtime pm imbalance on probe errors | *0804f3715casm-generic/io.h: suppress endianness warnings for readq() and writeq() | *944ff47a19ASoC: Intel: bytcr_rt5640: Add quirk for the Acer Iconia One 7 B1-750 | *f00e4bfd7fiio: adc: palmas_gpadc: fix NULL dereference on rmmod | *85ed09c330USB: serial: option: add UNISOC vendor and TOZED LT70C product | *48cdcb40d5bluetooth: Perform careful capability checks in hci_sock_ioctl() | *c8258fc827drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var | *425eea395fwifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies() | *3b7509b6f5counter: 104-quad-8: Fix race condition between FLAG and CNTR reads *05fe88d1c8Merge "Merge tag 'android11-5.4.242_r00' into android11-5.4" into android11-5.4-lts Change-Id: Ib877c272d1132e485256d651e8cd58b2e67a32c4 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
commit
ef9d9e2c44
857 changed files with 7056 additions and 16354 deletions
|
|
@ -825,10 +825,6 @@
|
|||
|
||||
debugpat [X86] Enable PAT debugging
|
||||
|
||||
decnet.addr= [HW,NET]
|
||||
Format: <area>[,<node>]
|
||||
See also Documentation/networking/decnet.txt.
|
||||
|
||||
default_hugepagesz=
|
||||
[same as hugepagesz=] The size of the default
|
||||
HugeTLB page size. This is the size represented by
|
||||
|
|
|
|||
|
|
@ -34,13 +34,14 @@ Table : Subdirectories in /proc/sys/net
|
|||
========= =================== = ========== ==================
|
||||
Directory Content Directory Content
|
||||
========= =================== = ========== ==================
|
||||
core General parameter appletalk Appletalk protocol
|
||||
unix Unix domain sockets netrom NET/ROM
|
||||
802 E802 protocol ax25 AX25
|
||||
ethernet Ethernet protocol rose X.25 PLP layer
|
||||
ipv4 IP version 4 x25 X.25 protocol
|
||||
bridge Bridging decnet DEC net
|
||||
ipv6 IP version 6 tipc TIPC
|
||||
802 E802 protocol mptcp Multipath TCP
|
||||
appletalk Appletalk protocol netfilter Network Filter
|
||||
ax25 AX25 netrom NET/ROM
|
||||
bridge Bridging rose X.25 PLP layer
|
||||
core General parameter tipc TIPC
|
||||
ethernet Ethernet protocol unix Unix domain sockets
|
||||
ipv4 IP version 4 x25 X.25 protocol
|
||||
ipv6 IP version 6
|
||||
========= =================== = ========== ==================
|
||||
|
||||
1. /proc/sys/net/core - Network core options
|
||||
|
|
|
|||
|
|
@ -302,7 +302,6 @@ Code Seq# Include File Comments
|
|||
0x89 00-06 arch/x86/include/asm/sockios.h
|
||||
0x89 0B-DF linux/sockios.h
|
||||
0x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range
|
||||
0x89 E0-EF linux/dn.h PROTOPRIVATE range
|
||||
0x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range
|
||||
0x8B all linux/wireless.h
|
||||
0x8C 00-3F WiNRADiO driver
|
||||
|
|
|
|||
|
|
@ -7794,3 +7794,30 @@ formats.
|
|||
- 0x5001
|
||||
- Interleaved raw UYVY and JPEG image format with embedded meta-data
|
||||
used by Samsung S3C73MX camera sensors.
|
||||
|
||||
.. _v4l2-mbus-metadata-fmts:
|
||||
|
||||
Metadata Formats
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This section lists all metadata formats.
|
||||
|
||||
The following table lists the existing metadata formats.
|
||||
|
||||
.. tabularcolumns:: |p{8.0cm}|p{1.4cm}|p{7.7cm}|
|
||||
|
||||
.. flat-table:: Metadata formats
|
||||
:header-rows: 1
|
||||
:stub-columns: 0
|
||||
|
||||
* - Identifier
|
||||
- Code
|
||||
- Comments
|
||||
* .. _MEDIA-BUS-FMT-METADATA-FIXED:
|
||||
|
||||
- MEDIA_BUS_FMT_METADATA_FIXED
|
||||
- 0x7001
|
||||
- This format should be used when the same driver handles
|
||||
both sides of the link and the bus format is a fixed
|
||||
metadata format that is not configurable from userspace.
|
||||
Width and height will be set to 0 for this format.
|
||||
|
|
|
|||
|
|
@ -1,230 +0,0 @@
|
|||
Linux DECnet Networking Layer Information
|
||||
===========================================
|
||||
|
||||
1) Other documentation....
|
||||
|
||||
o Project Home Pages
|
||||
http://www.chygwyn.com/ - Kernel info
|
||||
http://linux-decnet.sourceforge.net/ - Userland tools
|
||||
http://www.sourceforge.net/projects/linux-decnet/ - Status page
|
||||
|
||||
2) Configuring the kernel
|
||||
|
||||
Be sure to turn on the following options:
|
||||
|
||||
CONFIG_DECNET (obviously)
|
||||
CONFIG_PROC_FS (to see what's going on)
|
||||
CONFIG_SYSCTL (for easy configuration)
|
||||
|
||||
if you want to try out router support (not properly debugged yet)
|
||||
you'll need the following options as well...
|
||||
|
||||
CONFIG_DECNET_ROUTER (to be able to add/delete routes)
|
||||
CONFIG_NETFILTER (will be required for the DECnet routing daemon)
|
||||
|
||||
Don't turn on SIOCGIFCONF support for DECnet unless you are really sure
|
||||
that you need it, in general you won't and it can cause ifconfig to
|
||||
malfunction.
|
||||
|
||||
Run time configuration has changed slightly from the 2.4 system. If you
|
||||
want to configure an endnode, then the simplified procedure is as follows:
|
||||
|
||||
o Set the MAC address on your ethernet card before starting _any_ other
|
||||
network protocols.
|
||||
|
||||
As soon as your network card is brought into the UP state, DECnet should
|
||||
start working. If you need something more complicated or are unsure how
|
||||
to set the MAC address, see the next section. Also all configurations which
|
||||
worked with 2.4 will work under 2.5 with no change.
|
||||
|
||||
3) Command line options
|
||||
|
||||
You can set a DECnet address on the kernel command line for compatibility
|
||||
with the 2.4 configuration procedure, but in general it's not needed any more.
|
||||
If you do st a DECnet address on the command line, it has only one purpose
|
||||
which is that its added to the addresses on the loopback device.
|
||||
|
||||
With 2.4 kernels, DECnet would only recognise addresses as local if they
|
||||
were added to the loopback device. In 2.5, any local interface address
|
||||
can be used to loop back to the local machine. Of course this does not
|
||||
prevent you adding further addresses to the loopback device if you
|
||||
want to.
|
||||
|
||||
N.B. Since the address list of an interface determines the addresses for
|
||||
which "hello" messages are sent, if you don't set an address on the loopback
|
||||
interface then you won't see any entries in /proc/net/neigh for the local
|
||||
host until such time as you start a connection. This doesn't affect the
|
||||
operation of the local communications in any other way though.
|
||||
|
||||
The kernel command line takes options looking like the following:
|
||||
|
||||
decnet.addr=1,2
|
||||
|
||||
the two numbers are the node address 1,2 = 1.2 For 2.2.xx kernels
|
||||
and early 2.3.xx kernels, you must use a comma when specifying the
|
||||
DECnet address like this. For more recent 2.3.xx kernels, you may
|
||||
use almost any character except space, although a `.` would be the most
|
||||
obvious choice :-)
|
||||
|
||||
There used to be a third number specifying the node type. This option
|
||||
has gone away in favour of a per interface node type. This is now set
|
||||
using /proc/sys/net/decnet/conf/<dev>/forwarding. This file can be
|
||||
set with a single digit, 0=EndNode, 1=L1 Router and 2=L2 Router.
|
||||
|
||||
There are also equivalent options for modules. The node address can
|
||||
also be set through the /proc/sys/net/decnet/ files, as can other system
|
||||
parameters.
|
||||
|
||||
Currently the only supported devices are ethernet and ip_gre. The
|
||||
ethernet address of your ethernet card has to be set according to the DECnet
|
||||
address of the node in order for it to be autoconfigured (and then appear in
|
||||
/proc/net/decnet_dev). There is a utility available at the above
|
||||
FTP sites called dn2ethaddr which can compute the correct ethernet
|
||||
address to use. The address can be set by ifconfig either before or
|
||||
at the time the device is brought up. If you are using RedHat you can
|
||||
add the line:
|
||||
|
||||
MACADDR=AA:00:04:00:03:04
|
||||
|
||||
or something similar, to /etc/sysconfig/network-scripts/ifcfg-eth0 or
|
||||
wherever your network card's configuration lives. Setting the MAC address
|
||||
of your ethernet card to an address starting with "hi-ord" will cause a
|
||||
DECnet address which matches to be added to the interface (which you can
|
||||
verify with iproute2).
|
||||
|
||||
The default device for routing can be set through the /proc filesystem
|
||||
by setting /proc/sys/net/decnet/default_device to the
|
||||
device you want DECnet to route packets out of when no specific route
|
||||
is available. Usually this will be eth0, for example:
|
||||
|
||||
echo -n "eth0" >/proc/sys/net/decnet/default_device
|
||||
|
||||
If you don't set the default device, then it will default to the first
|
||||
ethernet card which has been autoconfigured as described above. You can
|
||||
confirm that by looking in the default_device file of course.
|
||||
|
||||
There is a list of what the other files under /proc/sys/net/decnet/ do
|
||||
on the kernel patch web site (shown above).
|
||||
|
||||
4) Run time kernel configuration
|
||||
|
||||
This is either done through the sysctl/proc interface (see the kernel web
|
||||
pages for details on what the various options do) or through the iproute2
|
||||
package in the same way as IPv4/6 configuration is performed.
|
||||
|
||||
Documentation for iproute2 is included with the package, although there is
|
||||
as yet no specific section on DECnet, most of the features apply to both
|
||||
IP and DECnet, albeit with DECnet addresses instead of IP addresses and
|
||||
a reduced functionality.
|
||||
|
||||
If you want to configure a DECnet router you'll need the iproute2 package
|
||||
since its the _only_ way to add and delete routes currently. Eventually
|
||||
there will be a routing daemon to send and receive routing messages for
|
||||
each interface and update the kernel routing tables accordingly. The
|
||||
routing daemon will use netfilter to listen to routing packets, and
|
||||
rtnetlink to update the kernels routing tables.
|
||||
|
||||
The DECnet raw socket layer has been removed since it was there purely
|
||||
for use by the routing daemon which will now use netfilter (a much cleaner
|
||||
and more generic solution) instead.
|
||||
|
||||
5) How can I tell if its working ?
|
||||
|
||||
Here is a quick guide of what to look for in order to know if your DECnet
|
||||
kernel subsystem is working.
|
||||
|
||||
- Is the node address set (see /proc/sys/net/decnet/node_address)
|
||||
- Is the node of the correct type
|
||||
(see /proc/sys/net/decnet/conf/<dev>/forwarding)
|
||||
- Is the Ethernet MAC address of each Ethernet card set to match
|
||||
the DECnet address. If in doubt use the dn2ethaddr utility available
|
||||
at the ftp archive.
|
||||
- If the previous two steps are satisfied, and the Ethernet card is up,
|
||||
you should find that it is listed in /proc/net/decnet_dev and also
|
||||
that it appears as a directory in /proc/sys/net/decnet/conf/. The
|
||||
loopback device (lo) should also appear and is required to communicate
|
||||
within a node.
|
||||
- If you have any DECnet routers on your network, they should appear
|
||||
in /proc/net/decnet_neigh, otherwise this file will only contain the
|
||||
entry for the node itself (if it doesn't check to see if lo is up).
|
||||
- If you want to send to any node which is not listed in the
|
||||
/proc/net/decnet_neigh file, you'll need to set the default device
|
||||
to point to an Ethernet card with connection to a router. This is
|
||||
again done with the /proc/sys/net/decnet/default_device file.
|
||||
- Try starting a simple server and client, like the dnping/dnmirror
|
||||
over the loopback interface. With luck they should communicate.
|
||||
For this step and those after, you'll need the DECnet library
|
||||
which can be obtained from the above ftp sites as well as the
|
||||
actual utilities themselves.
|
||||
- If this seems to work, then try talking to a node on your local
|
||||
network, and see if you can obtain the same results.
|
||||
- At this point you are on your own... :-)
|
||||
|
||||
6) How to send a bug report
|
||||
|
||||
If you've found a bug and want to report it, then there are several things
|
||||
you can do to help me work out exactly what it is that is wrong. Useful
|
||||
information (_most_ of which _is_ _essential_) includes:
|
||||
|
||||
- What kernel version are you running ?
|
||||
- What version of the patch are you running ?
|
||||
- How far though the above set of tests can you get ?
|
||||
- What is in the /proc/decnet* files and /proc/sys/net/decnet/* files ?
|
||||
- Which services are you running ?
|
||||
- Which client caused the problem ?
|
||||
- How much data was being transferred ?
|
||||
- Was the network congested ?
|
||||
- How can the problem be reproduced ?
|
||||
- Can you use tcpdump to get a trace ? (N.B. Most (all?) versions of
|
||||
tcpdump don't understand how to dump DECnet properly, so including
|
||||
the hex listing of the packet contents is _essential_, usually the -x flag.
|
||||
You may also need to increase the length grabbed with the -s flag. The
|
||||
-e flag also provides very useful information (ethernet MAC addresses))
|
||||
|
||||
7) MAC FAQ
|
||||
|
||||
A quick FAQ on ethernet MAC addresses to explain how Linux and DECnet
|
||||
interact and how to get the best performance from your hardware.
|
||||
|
||||
Ethernet cards are designed to normally only pass received network frames
|
||||
to a host computer when they are addressed to it, or to the broadcast address.
|
||||
|
||||
Linux has an interface which allows the setting of extra addresses for
|
||||
an ethernet card to listen to. If the ethernet card supports it, the
|
||||
filtering operation will be done in hardware, if not the extra unwanted packets
|
||||
received will be discarded by the host computer. In the latter case,
|
||||
significant processor time and bus bandwidth can be used up on a busy
|
||||
network (see the NAPI documentation for a longer explanation of these
|
||||
effects).
|
||||
|
||||
DECnet makes use of this interface to allow running DECnet on an ethernet
|
||||
card which has already been configured using TCP/IP (presumably using the
|
||||
built in MAC address of the card, as usual) and/or to allow multiple DECnet
|
||||
addresses on each physical interface. If you do this, be aware that if your
|
||||
ethernet card doesn't support perfect hashing in its MAC address filter
|
||||
then your computer will be doing more work than required. Some cards
|
||||
will simply set themselves into promiscuous mode in order to receive
|
||||
packets from the DECnet specified addresses. So if you have one of these
|
||||
cards its better to set the MAC address of the card as described above
|
||||
to gain the best efficiency. Better still is to use a card which supports
|
||||
NAPI as well.
|
||||
|
||||
|
||||
8) Mailing list
|
||||
|
||||
If you are keen to get involved in development, or want to ask questions
|
||||
about configuration, or even just report bugs, then there is a mailing
|
||||
list that you can join, details are at:
|
||||
|
||||
http://sourceforge.net/mail/?group_id=4993
|
||||
|
||||
9) Legal Info
|
||||
|
||||
The Linux DECnet project team have placed their code under the GPL. The
|
||||
software is provided "as is" and without warranty express or implied.
|
||||
DECnet is a trademark of Compaq. This software is not a product of
|
||||
Compaq. We acknowledge the help of people at Compaq in providing extra
|
||||
documentation above and beyond what was previously publicly available.
|
||||
|
||||
Steve Whitehouse <SteveW@ACM.org>
|
||||
|
||||
|
|
@ -4617,13 +4617,6 @@ F: include/uapi/linux/dccp.h
|
|||
F: include/linux/tfrc.h
|
||||
F: net/dccp/
|
||||
|
||||
DECnet NETWORK LAYER
|
||||
W: http://linux-decnet.sourceforge.net
|
||||
L: linux-decnet-user@lists.sourceforge.net
|
||||
S: Orphan
|
||||
F: Documentation/networking/decnet.txt
|
||||
F: net/decnet/
|
||||
|
||||
DECSTATION PLATFORM SUPPORT
|
||||
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
||||
L: linux-mips@vger.kernel.org
|
||||
|
|
|
|||
6
Makefile
6
Makefile
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 4
|
||||
SUBLEVEL = 242
|
||||
SUBLEVEL = 249
|
||||
EXTRAVERSION =
|
||||
NAME = Kleptomaniac Octopus
|
||||
|
||||
|
|
@ -797,6 +797,10 @@ endif
|
|||
KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
|
||||
|
||||
KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
|
||||
|
||||
# These result in bogus false positives
|
||||
KBUILD_CFLAGS += $(call cc-disable-warning, dangling-pointer)
|
||||
|
||||
ifdef CONFIG_FRAME_POINTER
|
||||
KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
||||
else
|
||||
|
|
|
|||
|
|
@ -527,7 +527,7 @@
|
|||
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <31 0>;
|
||||
pendown-gpio = <&gpio1 31 0>;
|
||||
pendown-gpio = <&gpio1 31 GPIO_ACTIVE_LOW>;
|
||||
|
||||
|
||||
ti,x-min = /bits/ 16 <0x0>;
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@
|
|||
compatible = "ti,ads7843";
|
||||
interrupts-extended = <&pioC 2 IRQ_TYPE_EDGE_BOTH>;
|
||||
spi-max-frequency = <3000000>;
|
||||
pendown-gpio = <&pioC 2 GPIO_ACTIVE_HIGH>;
|
||||
pendown-gpio = <&pioC 2 GPIO_ACTIVE_LOW>;
|
||||
|
||||
ti,x-min = /bits/ 16 <150>;
|
||||
ti,x-max = /bits/ 16 <3830>;
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@
|
|||
compatible = "wlf,wm8960";
|
||||
reg = <0x1a>;
|
||||
clocks = <&pmu_system_controller 0>;
|
||||
clock-names = "MCLK1";
|
||||
clock-names = "mclk";
|
||||
wlf,shared-lrclk;
|
||||
#sound-dai-cells = <0>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <7 0>;
|
||||
spi-max-frequency = <1000000>;
|
||||
pendown-gpio = <&gpio2 7 0>;
|
||||
pendown-gpio = <&gpio2 7 GPIO_ACTIVE_LOW>;
|
||||
vcc-supply = <®_3p3v>;
|
||||
ti,x-min = /bits/ 16 <0>;
|
||||
ti,x-max = /bits/ 16 <4095>;
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@
|
|||
pinctrl-0 = <&pinctrl_tsc2046_pendown>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <29 0>;
|
||||
pendown-gpio = <&gpio2 29 GPIO_ACTIVE_HIGH>;
|
||||
pendown-gpio = <&gpio2 29 GPIO_ACTIVE_LOW>;
|
||||
touchscreen-max-pressure = <255>;
|
||||
wakeup-source;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@
|
|||
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <25 0>; /* gpio_57 */
|
||||
pendown-gpio = <&gpio2 25 GPIO_ACTIVE_HIGH>;
|
||||
pendown-gpio = <&gpio2 25 GPIO_ACTIVE_LOW>;
|
||||
|
||||
ti,x-min = /bits/ 16 <0x0>;
|
||||
ti,x-max = /bits/ 16 <0x0fff>;
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <27 0>; /* gpio_27 */
|
||||
pendown-gpio = <&gpio1 27 GPIO_ACTIVE_HIGH>;
|
||||
pendown-gpio = <&gpio1 27 GPIO_ACTIVE_LOW>;
|
||||
|
||||
ti,x-min = /bits/ 16 <0x0>;
|
||||
ti,x-max = /bits/ 16 <0x0fff>;
|
||||
|
|
|
|||
|
|
@ -311,7 +311,7 @@
|
|||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <8 0>; /* boot6 / gpio_8 */
|
||||
spi-max-frequency = <1000000>;
|
||||
pendown-gpio = <&gpio1 8 GPIO_ACTIVE_HIGH>;
|
||||
pendown-gpio = <&gpio1 8 GPIO_ACTIVE_LOW>;
|
||||
vcc-supply = <®_vcc3>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&tsc2048_pins>;
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@
|
|||
|
||||
interrupt-parent = <&gpio4>;
|
||||
interrupts = <18 0>; /* gpio_114 */
|
||||
pendown-gpio = <&gpio4 18 GPIO_ACTIVE_HIGH>;
|
||||
pendown-gpio = <&gpio4 18 GPIO_ACTIVE_LOW>;
|
||||
|
||||
ti,x-min = /bits/ 16 <0x0>;
|
||||
ti,x-max = /bits/ 16 <0x0fff>;
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@
|
|||
|
||||
interrupt-parent = <&gpio4>;
|
||||
interrupts = <18 0>; /* gpio_114 */
|
||||
pendown-gpio = <&gpio4 18 GPIO_ACTIVE_HIGH>;
|
||||
pendown-gpio = <&gpio4 18 GPIO_ACTIVE_LOW>;
|
||||
|
||||
ti,x-min = /bits/ 16 <0x0>;
|
||||
ti,x-max = /bits/ 16 <0x0fff>;
|
||||
|
|
|
|||
|
|
@ -651,7 +651,7 @@
|
|||
pinctrl-0 = <&penirq_pins>;
|
||||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <30 IRQ_TYPE_NONE>; /* GPIO_94 */
|
||||
pendown-gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;
|
||||
pendown-gpio = <&gpio3 30 GPIO_ACTIVE_LOW>;
|
||||
vcc-supply = <&vaux4>;
|
||||
|
||||
ti,x-min = /bits/ 16 <0>;
|
||||
|
|
|
|||
|
|
@ -354,7 +354,7 @@
|
|||
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <15 0>; /* gpio1_wk15 */
|
||||
pendown-gpio = <&gpio1 15 GPIO_ACTIVE_HIGH>;
|
||||
pendown-gpio = <&gpio1 15 GPIO_ACTIVE_LOW>;
|
||||
|
||||
|
||||
ti,x-min = /bits/ 16 <0x0>;
|
||||
|
|
|
|||
|
|
@ -393,8 +393,8 @@
|
|||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000>,
|
||||
<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>;
|
||||
ranges = <0x81000000 0x0 0x00000000 0x40200000 0x0 0x00100000>,
|
||||
<0x82000000 0x0 0x40300000 0x40300000 0x0 0x00d00000>;
|
||||
|
||||
interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "msi";
|
||||
|
|
|
|||
|
|
@ -451,8 +451,8 @@
|
|||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
ranges = <0x81000000 0 0x0fe00000 0x0fe00000 0 0x00100000 /* downstream I/O */
|
||||
0x82000000 0 0x08000000 0x08000000 0 0x07e00000>; /* non-prefetchable memory */
|
||||
ranges = <0x81000000 0x0 0x00000000 0x0fe00000 0x0 0x00010000 /* I/O */
|
||||
0x82000000 0x0 0x08000000 0x08000000 0x0 0x07e00000>; /* MEM */
|
||||
|
||||
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "msi";
|
||||
|
|
@ -502,8 +502,8 @@
|
|||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
ranges = <0x81000000 0 0x31e00000 0x31e00000 0 0x00100000 /* downstream I/O */
|
||||
0x82000000 0 0x2e000000 0x2e000000 0 0x03e00000>; /* non-prefetchable memory */
|
||||
ranges = <0x81000000 0x0 0x00000000 0x31e00000 0x0 0x00010000 /* I/O */
|
||||
0x82000000 0x0 0x2e000000 0x2e000000 0x0 0x03e00000>; /* MEM */
|
||||
|
||||
interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "msi";
|
||||
|
|
@ -553,8 +553,8 @@
|
|||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
ranges = <0x81000000 0 0x35e00000 0x35e00000 0 0x00100000 /* downstream I/O */
|
||||
0x82000000 0 0x32000000 0x32000000 0 0x03e00000>; /* non-prefetchable memory */
|
||||
ranges = <0x81000000 0x0 0x00000000 0x35e00000 0x0 0x00010000 /* I/O */
|
||||
0x82000000 0x0 0x32000000 0x32000000 0x0 0x03e00000>; /* MEM */
|
||||
|
||||
interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "msi";
|
||||
|
|
|
|||
|
|
@ -571,7 +571,7 @@
|
|||
interrupts = <29>;
|
||||
clocks = <&clocks CLK_CSIS>,
|
||||
<&clocks SCLK_CSIS>;
|
||||
clock-names = "clk_csis",
|
||||
clock-names = "csis",
|
||||
"sclk_csis";
|
||||
bus-width = <4>;
|
||||
status = "disabled";
|
||||
|
|
|
|||
|
|
@ -284,6 +284,88 @@
|
|||
slew-rate = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
can1_pins_a: can1-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('A', 12, AF9)>; /* CAN1_TX */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('A', 11, AF9)>; /* CAN1_RX */
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
can1_pins_b: can1-1 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('B', 9, AF9)>; /* CAN1_TX */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('B', 8, AF9)>; /* CAN1_RX */
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
can1_pins_c: can1-2 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('D', 1, AF9)>; /* CAN1_TX */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('D', 0, AF9)>; /* CAN1_RX */
|
||||
bias-pull-up;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
can1_pins_d: can1-3 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('H', 13, AF9)>; /* CAN1_TX */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('H', 14, AF9)>; /* CAN1_RX */
|
||||
bias-pull-up;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
can2_pins_a: can2-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('B', 6, AF9)>; /* CAN2_TX */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('B', 5, AF9)>; /* CAN2_RX */
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
can2_pins_b: can2-1 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('B', 13, AF9)>; /* CAN2_TX */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('B', 12, AF9)>; /* CAN2_RX */
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
can3_pins_a: can3-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('A', 15, AF11)>; /* CAN3_TX */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('A', 8, AF11)>; /* CAN3_RX */
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
can3_pins_b: can3-1 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('B', 4, AF11)>; /* CAN3_TX */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('B', 3, AF11)>; /* CAN3_RX */
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@
|
|||
reg = <0x2c0f0000 0x1000>;
|
||||
interrupts = <0 84 4>;
|
||||
cache-level = <2>;
|
||||
cache-unified;
|
||||
};
|
||||
|
||||
pmu {
|
||||
|
|
|
|||
|
|
@ -300,6 +300,29 @@ static int unwind_exec_pop_subset_r0_to_r3(struct unwind_ctrl_block *ctrl,
|
|||
return URC_OK;
|
||||
}
|
||||
|
||||
static unsigned long unwind_decode_uleb128(struct unwind_ctrl_block *ctrl)
|
||||
{
|
||||
unsigned long bytes = 0;
|
||||
unsigned long insn;
|
||||
unsigned long result = 0;
|
||||
|
||||
/*
|
||||
* unwind_get_byte() will advance `ctrl` one instruction at a time, so
|
||||
* loop until we get an instruction byte where bit 7 is not set.
|
||||
*
|
||||
* Note: This decodes a maximum of 4 bytes to output 28 bits data where
|
||||
* max is 0xfffffff: that will cover a vsp increment of 1073742336, hence
|
||||
* it is sufficient for unwinding the stack.
|
||||
*/
|
||||
do {
|
||||
insn = unwind_get_byte(ctrl);
|
||||
result |= (insn & 0x7f) << (bytes * 7);
|
||||
bytes++;
|
||||
} while (!!(insn & 0x80) && (bytes != sizeof(result)));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Execute the current unwind instruction.
|
||||
*/
|
||||
|
|
@ -353,7 +376,7 @@ static int unwind_exec_insn(struct unwind_ctrl_block *ctrl)
|
|||
if (ret)
|
||||
goto error;
|
||||
} else if (insn == 0xb2) {
|
||||
unsigned long uleb128 = unwind_get_byte(ctrl);
|
||||
unsigned long uleb128 = unwind_decode_uleb128(ctrl);
|
||||
|
||||
ctrl->vrs[SP] += 0x204 + (uleb128 << 2);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -653,7 +653,7 @@ static void __init map_sa1100_gpio_regs( void )
|
|||
*/
|
||||
static void __init get_assabet_scr(void)
|
||||
{
|
||||
unsigned long uninitialized_var(scr), i;
|
||||
unsigned long scr, i;
|
||||
|
||||
GPDR |= 0x3fc; /* Configure GPIO 9:2 as outputs */
|
||||
GPSR = 0x3fc; /* Write 0xFF to GPIO 9:2 */
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/**
|
||||
/*
|
||||
* arch/arm/mac-sa1100/jornada720_ssp.c
|
||||
*
|
||||
* Copyright (C) 2006/2007 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>
|
||||
|
|
@ -26,6 +26,7 @@ static unsigned long jornada_ssp_flags;
|
|||
|
||||
/**
|
||||
* jornada_ssp_reverse - reverses input byte
|
||||
* @byte: input byte to reverse
|
||||
*
|
||||
* we need to reverse all data we receive from the mcu due to its physical location
|
||||
* returns : 01110111 -> 11101110
|
||||
|
|
@ -46,6 +47,7 @@ EXPORT_SYMBOL(jornada_ssp_reverse);
|
|||
|
||||
/**
|
||||
* jornada_ssp_byte - waits for ready ssp bus and sends byte
|
||||
* @byte: input byte to transmit
|
||||
*
|
||||
* waits for fifo buffer to clear and then transmits, if it doesn't then we will
|
||||
* timeout after <timeout> rounds. Needs mcu running before its called.
|
||||
|
|
@ -77,6 +79,7 @@ EXPORT_SYMBOL(jornada_ssp_byte);
|
|||
|
||||
/**
|
||||
* jornada_ssp_inout - decide if input is command or trading byte
|
||||
* @byte: input byte to send (may be %TXDUMMY)
|
||||
*
|
||||
* returns : (jornada_ssp_byte(byte)) on success
|
||||
* : %-ETIMEDOUT on timeout failure
|
||||
|
|
|
|||
|
|
@ -799,7 +799,7 @@ static int alignment_get_thumb(struct pt_regs *regs, u16 *ip, u16 *inst)
|
|||
static int
|
||||
do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
|
||||
{
|
||||
union offset_union uninitialized_var(offset);
|
||||
union offset_union offset;
|
||||
unsigned long instrptr;
|
||||
int (*handler)(unsigned long addr, u32 instr, struct pt_regs *regs);
|
||||
unsigned int type;
|
||||
|
|
|
|||
|
|
@ -49,17 +49,14 @@
|
|||
opp-shared;
|
||||
opp-800000000 {
|
||||
opp-hz = /bits/ 64 <800000000>;
|
||||
opp-microvolt = <820000>;
|
||||
clock-latency-ns = <300000>;
|
||||
};
|
||||
opp-1000000000 {
|
||||
opp-hz = /bits/ 64 <1000000000>;
|
||||
opp-microvolt = <820000>;
|
||||
clock-latency-ns = <300000>;
|
||||
};
|
||||
opp-1200000000 {
|
||||
opp-hz = /bits/ 64 <1200000000>;
|
||||
opp-microvolt = <820000>;
|
||||
clock-latency-ns = <300000>;
|
||||
opp-suspend;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -60,17 +60,14 @@
|
|||
opp-shared;
|
||||
opp-800000000 {
|
||||
opp-hz = /bits/ 64 <800000000>;
|
||||
opp-microvolt = <820000>;
|
||||
clock-latency-ns = <300000>;
|
||||
};
|
||||
opp-1000000000 {
|
||||
opp-hz = /bits/ 64 <1000000000>;
|
||||
opp-microvolt = <820000>;
|
||||
clock-latency-ns = <300000>;
|
||||
};
|
||||
opp-1200000000 {
|
||||
opp-hz = /bits/ 64 <1200000000>;
|
||||
opp-microvolt = <820000>;
|
||||
clock-latency-ns = <300000>;
|
||||
opp-suspend;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ void user_regs_reset_single_step(struct user_pt_regs *regs,
|
|||
void kernel_enable_single_step(struct pt_regs *regs);
|
||||
void kernel_disable_single_step(void);
|
||||
int kernel_active_single_step(void);
|
||||
void kernel_rewind_single_step(struct pt_regs *regs);
|
||||
|
||||
#ifdef CONFIG_HAVE_HW_BREAKPOINT
|
||||
int reinstall_suspended_bps(struct pt_regs *regs);
|
||||
|
|
|
|||
|
|
@ -102,8 +102,14 @@
|
|||
#define SB_BARRIER_INSN __SYS_BARRIER_INSN(0, 7, 31)
|
||||
|
||||
#define SYS_DC_ISW sys_insn(1, 0, 7, 6, 2)
|
||||
#define SYS_DC_IGSW sys_insn(1, 0, 7, 6, 4)
|
||||
#define SYS_DC_IGDSW sys_insn(1, 0, 7, 6, 6)
|
||||
#define SYS_DC_CSW sys_insn(1, 0, 7, 10, 2)
|
||||
#define SYS_DC_CGSW sys_insn(1, 0, 7, 10, 4)
|
||||
#define SYS_DC_CGDSW sys_insn(1, 0, 7, 10, 6)
|
||||
#define SYS_DC_CISW sys_insn(1, 0, 7, 14, 2)
|
||||
#define SYS_DC_CIGSW sys_insn(1, 0, 7, 14, 4)
|
||||
#define SYS_DC_CIGDSW sys_insn(1, 0, 7, 14, 6)
|
||||
|
||||
#define SYS_OSDTRRX_EL1 sys_reg(2, 0, 0, 0, 2)
|
||||
#define SYS_MDCCINT_EL1 sys_reg(2, 0, 0, 2, 0)
|
||||
|
|
|
|||
|
|
@ -441,6 +441,11 @@ int kernel_active_single_step(void)
|
|||
}
|
||||
NOKPROBE_SYMBOL(kernel_active_single_step);
|
||||
|
||||
void kernel_rewind_single_step(struct pt_regs *regs)
|
||||
{
|
||||
set_regs_spsr_ss(regs);
|
||||
}
|
||||
|
||||
/* ptrace API */
|
||||
void user_enable_single_step(struct task_struct *task)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -223,6 +223,8 @@ int kgdb_arch_handle_exception(int exception_vector, int signo,
|
|||
*/
|
||||
if (!kernel_active_single_step())
|
||||
kernel_enable_single_step(linux_regs);
|
||||
else
|
||||
kernel_rewind_single_step(linux_regs);
|
||||
err = 0;
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -403,8 +403,8 @@ static void do_bad_area(unsigned long addr, unsigned int esr, struct pt_regs *re
|
|||
}
|
||||
}
|
||||
|
||||
#define VM_FAULT_BADMAP 0x010000
|
||||
#define VM_FAULT_BADACCESS 0x020000
|
||||
#define VM_FAULT_BADMAP ((__force vm_fault_t)0x010000)
|
||||
#define VM_FAULT_BADACCESS ((__force vm_fault_t)0x020000)
|
||||
|
||||
static vm_fault_t __do_page_fault(struct mm_struct *mm, unsigned long addr,
|
||||
unsigned int mm_flags, unsigned long vm_flags)
|
||||
|
|
|
|||
|
|
@ -444,7 +444,7 @@ static void
|
|||
do_copy_task_regs (struct task_struct *task, struct unw_frame_info *info, void *arg)
|
||||
{
|
||||
unsigned long mask, sp, nat_bits = 0, ar_rnat, urbs_end, cfm;
|
||||
unsigned long uninitialized_var(ip); /* GCC be quiet */
|
||||
unsigned long ip;
|
||||
elf_greg_t *dst = arg;
|
||||
struct pt_regs *pt;
|
||||
char nat;
|
||||
|
|
|
|||
|
|
@ -581,7 +581,7 @@ static int salinfo_cpu_pre_down(unsigned int cpu)
|
|||
* 'data' contains an integer that corresponds to the feature we're
|
||||
* testing
|
||||
*/
|
||||
static int proc_salinfo_show(struct seq_file *m, void *v)
|
||||
static int __maybe_unused proc_salinfo_show(struct seq_file *m, void *v)
|
||||
{
|
||||
unsigned long data = (unsigned long)v;
|
||||
seq_puts(m, (sal_platform_features & data) ? "1\n" : "0\n");
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ skip:
|
|||
return __per_cpu_start + __per_cpu_offset[smp_processor_id()];
|
||||
}
|
||||
|
||||
static inline void
|
||||
static inline __init void
|
||||
alloc_per_cpu_data(void)
|
||||
{
|
||||
size_t size = PERCPU_PAGE_SIZE * num_possible_cpus();
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ static void *per_cpu_node_setup(void *cpu_data, int node)
|
|||
void __init setup_per_cpu_areas(void)
|
||||
{
|
||||
struct pcpu_alloc_info *ai;
|
||||
struct pcpu_group_info *uninitialized_var(gi);
|
||||
struct pcpu_group_info *gi;
|
||||
unsigned int *cpu_map;
|
||||
void *base;
|
||||
unsigned long base_offset;
|
||||
|
|
|
|||
|
|
@ -369,7 +369,7 @@ EXPORT_SYMBOL(flush_tlb_range);
|
|||
|
||||
void ia64_tlb_init(void)
|
||||
{
|
||||
ia64_ptce_info_t uninitialized_var(ptce_info); /* GCC be quiet */
|
||||
ia64_ptce_info_t ptce_info;
|
||||
u64 tr_pgbits;
|
||||
long status;
|
||||
pal_vm_info_1_u_t vm_info_1;
|
||||
|
|
|
|||
|
|
@ -883,11 +883,17 @@ static inline int rt_setup_ucontext(struct ucontext __user *uc, struct pt_regs *
|
|||
}
|
||||
|
||||
static inline void __user *
|
||||
get_sigframe(struct ksignal *ksig, size_t frame_size)
|
||||
get_sigframe(struct ksignal *ksig, struct pt_regs *tregs, size_t frame_size)
|
||||
{
|
||||
unsigned long usp = sigsp(rdusp(), ksig);
|
||||
unsigned long gap = 0;
|
||||
|
||||
return (void __user *)((usp - frame_size) & -8UL);
|
||||
if (CPU_IS_020_OR_030 && tregs->format == 0xb) {
|
||||
/* USP is unreliable so use worst-case value */
|
||||
gap = 256;
|
||||
}
|
||||
|
||||
return (void __user *)((usp - gap - frame_size) & -8UL);
|
||||
}
|
||||
|
||||
static int setup_frame(struct ksignal *ksig, sigset_t *set,
|
||||
|
|
@ -905,7 +911,7 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set,
|
|||
return -EFAULT;
|
||||
}
|
||||
|
||||
frame = get_sigframe(ksig, sizeof(*frame) + fsize);
|
||||
frame = get_sigframe(ksig, tregs, sizeof(*frame) + fsize);
|
||||
|
||||
if (fsize)
|
||||
err |= copy_to_user (frame + 1, regs + 1, fsize);
|
||||
|
|
@ -976,7 +982,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
|
|||
return -EFAULT;
|
||||
}
|
||||
|
||||
frame = get_sigframe(ksig, sizeof(*frame));
|
||||
frame = get_sigframe(ksig, tregs, sizeof(*frame));
|
||||
|
||||
if (fsize)
|
||||
err |= copy_to_user (&frame->uc.uc_extra, regs + 1, fsize);
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <linux/dma-map-ops.h> /* for dma_default_coherent */
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/slab.h>
|
||||
|
|
@ -623,17 +624,18 @@ u32 au1xxx_dbdma_put_source(u32 chanid, dma_addr_t buf, int nbytes, u32 flags)
|
|||
dp->dscr_cmd0 &= ~DSCR_CMD0_IE;
|
||||
|
||||
/*
|
||||
* There is an errata on the Au1200/Au1550 parts that could result
|
||||
* in "stale" data being DMA'ed. It has to do with the snoop logic on
|
||||
* the cache eviction buffer. DMA_NONCOHERENT is on by default for
|
||||
* these parts. If it is fixed in the future, these dma_cache_inv will
|
||||
* just be nothing more than empty macros. See io.h.
|
||||
* There is an erratum on certain Au1200/Au1550 revisions that could
|
||||
* result in "stale" data being DMA'ed. It has to do with the snoop
|
||||
* logic on the cache eviction buffer. dma_default_coherent is set
|
||||
* to false on these parts.
|
||||
*/
|
||||
dma_cache_wback_inv((unsigned long)buf, nbytes);
|
||||
if (!dma_default_coherent)
|
||||
dma_cache_wback_inv(KSEG0ADDR(buf), nbytes);
|
||||
dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
|
||||
wmb(); /* drain writebuffer */
|
||||
dma_cache_wback_inv((unsigned long)dp, sizeof(*dp));
|
||||
ctp->chan_ptr->ddma_dbell = 0;
|
||||
wmb(); /* force doorbell write out to dma engine */
|
||||
|
||||
/* Get next descriptor pointer. */
|
||||
ctp->put_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
|
||||
|
|
@ -685,17 +687,18 @@ u32 au1xxx_dbdma_put_dest(u32 chanid, dma_addr_t buf, int nbytes, u32 flags)
|
|||
dp->dscr_source1, dp->dscr_dest0, dp->dscr_dest1);
|
||||
#endif
|
||||
/*
|
||||
* There is an errata on the Au1200/Au1550 parts that could result in
|
||||
* "stale" data being DMA'ed. It has to do with the snoop logic on the
|
||||
* cache eviction buffer. DMA_NONCOHERENT is on by default for these
|
||||
* parts. If it is fixed in the future, these dma_cache_inv will just
|
||||
* be nothing more than empty macros. See io.h.
|
||||
* There is an erratum on certain Au1200/Au1550 revisions that could
|
||||
* result in "stale" data being DMA'ed. It has to do with the snoop
|
||||
* logic on the cache eviction buffer. dma_default_coherent is set
|
||||
* to false on these parts.
|
||||
*/
|
||||
dma_cache_inv((unsigned long)buf, nbytes);
|
||||
if (!dma_default_coherent)
|
||||
dma_cache_inv(KSEG0ADDR(buf), nbytes);
|
||||
dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
|
||||
wmb(); /* drain writebuffer */
|
||||
dma_cache_wback_inv((unsigned long)dp, sizeof(*dp));
|
||||
ctp->chan_ptr->ddma_dbell = 0;
|
||||
wmb(); /* force doorbell write out to dma engine */
|
||||
|
||||
/* Get next descriptor pointer. */
|
||||
ctp->put_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
|
||||
|
|
|
|||
|
|
@ -53,8 +53,6 @@ CONFIG_IPV6_SUBTREES=y
|
|||
CONFIG_NETWORK_SECMARK=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_VLAN_8021Q=m
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_DECNET_ROUTER=y
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
# CONFIG_FW_LOADER is not set
|
||||
|
|
|
|||
|
|
@ -49,8 +49,6 @@ CONFIG_IPV6_SUBTREES=y
|
|||
CONFIG_NETWORK_SECMARK=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_VLAN_8021Q=m
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_DECNET_ROUTER=y
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
# CONFIG_FW_LOADER is not set
|
||||
|
|
|
|||
|
|
@ -48,8 +48,6 @@ CONFIG_IPV6_SUBTREES=y
|
|||
CONFIG_NETWORK_SECMARK=y
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_VLAN_8021Q=m
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_DECNET_ROUTER=y
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
# CONFIG_FW_LOADER is not set
|
||||
|
|
|
|||
|
|
@ -69,7 +69,6 @@ CONFIG_IP_NF_RAW=m
|
|||
CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_DECNET_NF_GRABULATOR=m
|
||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||
|
|
@ -99,7 +98,6 @@ CONFIG_ATM_MPOA=m
|
|||
CONFIG_ATM_BR2684=m
|
||||
CONFIG_BRIDGE=m
|
||||
CONFIG_VLAN_8021Q=m
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_LLC2=m
|
||||
CONFIG_ATALK=m
|
||||
CONFIG_DEV_APPLETALK=m
|
||||
|
|
|
|||
|
|
@ -106,7 +106,6 @@ CONFIG_IP6_NF_FILTER=m
|
|||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
CONFIG_IP6_NF_RAW=m
|
||||
CONFIG_DECNET_NF_GRABULATOR=m
|
||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||
|
|
@ -127,7 +126,6 @@ CONFIG_BRIDGE_EBT_REDIRECT=m
|
|||
CONFIG_BRIDGE_EBT_SNAT=m
|
||||
CONFIG_BRIDGE_EBT_LOG=m
|
||||
CONFIG_BRIDGE=m
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_NET_SCHED=y
|
||||
CONFIG_NET_SCH_CBQ=m
|
||||
CONFIG_NET_SCH_HTB=m
|
||||
|
|
|
|||
|
|
@ -117,7 +117,6 @@ CONFIG_IP6_NF_FILTER=m
|
|||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
CONFIG_IP6_NF_RAW=m
|
||||
CONFIG_DECNET_NF_GRABULATOR=m
|
||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||
|
|
@ -147,7 +146,6 @@ CONFIG_ATM_MPOA=m
|
|||
CONFIG_ATM_BR2684=m
|
||||
CONFIG_BRIDGE=m
|
||||
CONFIG_VLAN_8021Q=m
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_LLC2=m
|
||||
CONFIG_ATALK=m
|
||||
CONFIG_DEV_APPLETALK=m
|
||||
|
|
|
|||
|
|
@ -200,7 +200,6 @@ CONFIG_IP6_NF_TARGET_REJECT=m
|
|||
CONFIG_IP6_NF_MANGLE=m
|
||||
CONFIG_IP6_NF_RAW=m
|
||||
CONFIG_IP6_NF_SECURITY=m
|
||||
CONFIG_DECNET_NF_GRABULATOR=m
|
||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||
|
|
@ -234,7 +233,6 @@ CONFIG_ATM_BR2684=m
|
|||
CONFIG_BRIDGE=m
|
||||
CONFIG_VLAN_8021Q=m
|
||||
CONFIG_VLAN_8021Q_GVRP=y
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_LLC2=m
|
||||
CONFIG_ATALK=m
|
||||
CONFIG_DEV_APPLETALK=m
|
||||
|
|
|
|||
|
|
@ -198,7 +198,6 @@ CONFIG_IP6_NF_TARGET_REJECT=m
|
|||
CONFIG_IP6_NF_MANGLE=m
|
||||
CONFIG_IP6_NF_RAW=m
|
||||
CONFIG_IP6_NF_SECURITY=m
|
||||
CONFIG_DECNET_NF_GRABULATOR=m
|
||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||
|
|
@ -232,7 +231,6 @@ CONFIG_ATM_BR2684=m
|
|||
CONFIG_BRIDGE=m
|
||||
CONFIG_VLAN_8021Q=m
|
||||
CONFIG_VLAN_8021Q_GVRP=y
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_LLC2=m
|
||||
CONFIG_ATALK=m
|
||||
CONFIG_DEV_APPLETALK=m
|
||||
|
|
|
|||
|
|
@ -116,7 +116,6 @@ CONFIG_IP6_NF_FILTER=m
|
|||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
CONFIG_IP6_NF_RAW=m
|
||||
CONFIG_DECNET_NF_GRABULATOR=m
|
||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||
|
|
@ -137,7 +136,6 @@ CONFIG_BRIDGE_EBT_REDIRECT=m
|
|||
CONFIG_BRIDGE_EBT_SNAT=m
|
||||
CONFIG_BRIDGE_EBT_LOG=m
|
||||
CONFIG_BRIDGE=m
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_NET_SCHED=y
|
||||
CONFIG_NET_SCH_CBQ=m
|
||||
CONFIG_NET_SCH_HTB=m
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ char *fw_getenv(char *envname)
|
|||
{
|
||||
char *result = NULL;
|
||||
|
||||
if (_fw_envp != NULL) {
|
||||
if (_fw_envp != NULL && fw_envp(0) != NULL) {
|
||||
/*
|
||||
* Return a pointer to the given environment variable.
|
||||
* YAMON uses "name", "value" pairs, while U-Boot uses
|
||||
|
|
|
|||
|
|
@ -190,10 +190,6 @@ static unsigned long __init init_initrd(void)
|
|||
pr_err("initrd start must be page aligned\n");
|
||||
goto disable;
|
||||
}
|
||||
if (initrd_start < PAGE_OFFSET) {
|
||||
pr_err("initrd start < PAGE_OFFSET\n");
|
||||
goto disable;
|
||||
}
|
||||
|
||||
/*
|
||||
* Sanitize initrd addresses. For example firmware
|
||||
|
|
@ -206,6 +202,11 @@ static unsigned long __init init_initrd(void)
|
|||
initrd_end = (unsigned long)__va(end);
|
||||
initrd_start = (unsigned long)__va(__pa(initrd_start));
|
||||
|
||||
if (initrd_start < PAGE_OFFSET) {
|
||||
pr_err("initrd start < PAGE_OFFSET\n");
|
||||
goto disable;
|
||||
}
|
||||
|
||||
ROOT_DEV = Root_RAM0;
|
||||
return PFN_UP(end);
|
||||
disable:
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ static void dump_tlb(int first, int last)
|
|||
unsigned int pagemask, guestctl1 = 0, c0, c1, i;
|
||||
unsigned long asidmask = cpu_asid_mask(¤t_cpu_data);
|
||||
int asidwidth = DIV_ROUND_UP(ilog2(asidmask) + 1, 4);
|
||||
unsigned long uninitialized_var(s_mmid);
|
||||
unsigned long s_mmid;
|
||||
#ifdef CONFIG_32BIT
|
||||
bool xpa = cpu_has_xpa && (read_c0_pagegrain() & PG_ELPA);
|
||||
int pwidth = xpa ? 11 : 8;
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ void setup_zero_pages(void)
|
|||
static void *__kmap_pgprot(struct page *page, unsigned long addr, pgprot_t prot)
|
||||
{
|
||||
enum fixed_addresses idx;
|
||||
unsigned int uninitialized_var(old_mmid);
|
||||
unsigned int old_mmid;
|
||||
unsigned long vaddr, flags, entrylo;
|
||||
unsigned long old_ctx;
|
||||
pte_t pte;
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
|
|||
if (size <= (current_cpu_data.tlbsizeftlbsets ?
|
||||
current_cpu_data.tlbsize / 8 :
|
||||
current_cpu_data.tlbsize / 2)) {
|
||||
unsigned long old_entryhi, uninitialized_var(old_mmid);
|
||||
unsigned long old_entryhi, old_mmid;
|
||||
int newpid = cpu_asid(cpu, mm);
|
||||
|
||||
old_entryhi = read_c0_entryhi();
|
||||
|
|
@ -214,7 +214,7 @@ void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
|
|||
int cpu = smp_processor_id();
|
||||
|
||||
if (cpu_context(cpu, vma->vm_mm) != 0) {
|
||||
unsigned long uninitialized_var(old_mmid);
|
||||
unsigned long old_mmid;
|
||||
unsigned long flags, old_entryhi;
|
||||
int idx;
|
||||
|
||||
|
|
@ -381,7 +381,7 @@ void add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
|
|||
#ifdef CONFIG_XPA
|
||||
panic("Broken for XPA kernels");
|
||||
#else
|
||||
unsigned int uninitialized_var(old_mmid);
|
||||
unsigned int old_mmid;
|
||||
unsigned long flags;
|
||||
unsigned long wired;
|
||||
unsigned long old_pagemask;
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@
|
|||
rx-fifo-depth = <8192>;
|
||||
tx-fifo-depth = <8192>;
|
||||
address-bits = <48>;
|
||||
max-frame-size = <1518>;
|
||||
max-frame-size = <1500>;
|
||||
local-mac-address = [00 00 00 00 00 00];
|
||||
altr,has-supplementary-unicast;
|
||||
altr,enable-sup-addr = <1>;
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@
|
|||
interrupt-names = "rx_irq", "tx_irq";
|
||||
rx-fifo-depth = <8192>;
|
||||
tx-fifo-depth = <8192>;
|
||||
max-frame-size = <1518>;
|
||||
max-frame-size = <1500>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <&phy0>;
|
||||
|
|
|
|||
|
|
@ -173,7 +173,6 @@ handler: ;\
|
|||
l.sw PT_GPR28(r1),r28 ;\
|
||||
l.sw PT_GPR29(r1),r29 ;\
|
||||
/* r30 already save */ ;\
|
||||
/* l.sw PT_GPR30(r1),r30*/ ;\
|
||||
l.sw PT_GPR31(r1),r31 ;\
|
||||
TRACE_IRQS_OFF_ENTRY ;\
|
||||
/* Store -1 in orig_gpr11 for non-syscall exceptions */ ;\
|
||||
|
|
@ -211,9 +210,8 @@ handler: ;\
|
|||
l.sw PT_GPR27(r1),r27 ;\
|
||||
l.sw PT_GPR28(r1),r28 ;\
|
||||
l.sw PT_GPR29(r1),r29 ;\
|
||||
/* r31 already saved */ ;\
|
||||
l.sw PT_GPR30(r1),r30 ;\
|
||||
/* l.sw PT_GPR31(r1),r31 */ ;\
|
||||
/* r30 already saved */ ;\
|
||||
l.sw PT_GPR31(r1),r31 ;\
|
||||
/* Store -1 in orig_gpr11 for non-syscall exceptions */ ;\
|
||||
l.addi r30,r0,-1 ;\
|
||||
l.sw PT_ORIG_GPR11(r1),r30 ;\
|
||||
|
|
|
|||
|
|
@ -57,6 +57,11 @@ extern void flush_dcache_page(struct page *page);
|
|||
|
||||
#define flush_dcache_mmap_lock(mapping) xa_lock_irq(&mapping->i_pages)
|
||||
#define flush_dcache_mmap_unlock(mapping) xa_unlock_irq(&mapping->i_pages)
|
||||
#define flush_dcache_mmap_lock_irqsave(mapping, flags) \
|
||||
xa_lock_irqsave(&mapping->i_pages, flags)
|
||||
#define flush_dcache_mmap_unlock_irqrestore(mapping, flags) \
|
||||
xa_unlock_irqrestore(&mapping->i_pages, flags)
|
||||
|
||||
|
||||
#define flush_icache_page(vma,page) do { \
|
||||
flush_kernel_dcache_page(page); \
|
||||
|
|
|
|||
|
|
@ -328,6 +328,7 @@ void flush_dcache_page(struct page *page)
|
|||
struct vm_area_struct *mpnt;
|
||||
unsigned long offset;
|
||||
unsigned long addr, old_addr = 0;
|
||||
unsigned long flags;
|
||||
pgoff_t pgoff;
|
||||
|
||||
if (mapping && !mapping_mapped(mapping)) {
|
||||
|
|
@ -347,7 +348,7 @@ void flush_dcache_page(struct page *page)
|
|||
* declared as MAP_PRIVATE or MAP_SHARED), so we only need
|
||||
* to flush one address here for them all to become coherent */
|
||||
|
||||
flush_dcache_mmap_lock(mapping);
|
||||
flush_dcache_mmap_lock_irqsave(mapping, flags);
|
||||
vma_interval_tree_foreach(mpnt, &mapping->i_mmap, pgoff, pgoff) {
|
||||
offset = (pgoff - mpnt->vm_pgoff) << PAGE_SHIFT;
|
||||
addr = mpnt->vm_start + offset;
|
||||
|
|
@ -370,7 +371,7 @@ void flush_dcache_page(struct page *page)
|
|||
old_addr = addr;
|
||||
}
|
||||
}
|
||||
flush_dcache_mmap_unlock(mapping);
|
||||
flush_dcache_mmap_unlock_irqrestore(mapping, flags);
|
||||
}
|
||||
EXPORT_SYMBOL(flush_dcache_page);
|
||||
|
||||
|
|
|
|||
|
|
@ -442,13 +442,29 @@ void arch_dma_free(struct device *dev, size_t size, void *vaddr,
|
|||
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
/*
|
||||
* fdc: The data cache line is written back to memory, if and only if
|
||||
* it is dirty, and then invalidated from the data cache.
|
||||
*/
|
||||
flush_kernel_dcache_range((unsigned long)phys_to_virt(paddr), size);
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||
enum dma_data_direction dir)
|
||||
{
|
||||
flush_kernel_dcache_range((unsigned long)phys_to_virt(paddr), size);
|
||||
unsigned long addr = (unsigned long) phys_to_virt(paddr);
|
||||
|
||||
switch (dir) {
|
||||
case DMA_TO_DEVICE:
|
||||
case DMA_BIDIRECTIONAL:
|
||||
flush_kernel_dcache_range(addr, size);
|
||||
return;
|
||||
case DMA_FROM_DEVICE:
|
||||
purge_kernel_dcache_range_asm(addr, addr + size);
|
||||
return;
|
||||
default:
|
||||
BUG();
|
||||
}
|
||||
}
|
||||
|
||||
void arch_dma_cache_sync(struct device *dev, void *vaddr, size_t size,
|
||||
|
|
|
|||
|
|
@ -124,13 +124,18 @@ void machine_power_off(void)
|
|||
/* It seems we have no way to power the system off via
|
||||
* software. The user has to press the button himself. */
|
||||
|
||||
printk(KERN_EMERG "System shut down completed.\n"
|
||||
"Please power this system off now.");
|
||||
printk("Power off or press RETURN to reboot.\n");
|
||||
|
||||
/* prevent soft lockup/stalled CPU messages for endless loop. */
|
||||
rcu_sysrq_start();
|
||||
lockup_detector_soft_poweroff();
|
||||
for (;;);
|
||||
while (1) {
|
||||
/* reboot if user presses RETURN key */
|
||||
if (pdc_iodc_getc() == 13) {
|
||||
printk("Rebooting...\n");
|
||||
machine_restart(NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void (*pm_power_off)(void);
|
||||
|
|
|
|||
|
|
@ -248,9 +248,6 @@ ENTRY_CFI(real64_call_asm)
|
|||
/* save fn */
|
||||
copy %arg2, %r31
|
||||
|
||||
/* set up the new ap */
|
||||
ldo 64(%arg1), %r29
|
||||
|
||||
/* load up the arg registers from the saved arg area */
|
||||
/* 32-bit calling convention passes first 4 args in registers */
|
||||
ldd 0*REG_SZ(%arg1), %arg0 /* note overwriting arg0 */
|
||||
|
|
@ -262,7 +259,9 @@ ENTRY_CFI(real64_call_asm)
|
|||
ldd 7*REG_SZ(%arg1), %r19
|
||||
ldd 1*REG_SZ(%arg1), %arg1 /* do this one last! */
|
||||
|
||||
/* set up real-mode stack and real-mode ap */
|
||||
tophys_r1 %sp
|
||||
ldo -16(%sp), %r29 /* Reference param save area */
|
||||
|
||||
b,l rfi_virt2real,%r2
|
||||
nop
|
||||
|
|
|
|||
|
|
@ -305,8 +305,8 @@ static void handle_break(struct pt_regs *regs)
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_KGDB
|
||||
if (unlikely(iir == PARISC_KGDB_COMPILED_BREAK_INSN ||
|
||||
iir == PARISC_KGDB_BREAK_INSN)) {
|
||||
if (unlikely((iir == PARISC_KGDB_COMPILED_BREAK_INSN ||
|
||||
iir == PARISC_KGDB_BREAK_INSN)) && !user_mode(regs)) {
|
||||
kgdb_handle_exception(9, SIGTRAP, 0, regs);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -253,8 +253,6 @@ CONFIG_ATM_LANE=m
|
|||
CONFIG_ATM_BR2684=m
|
||||
CONFIG_BRIDGE=m
|
||||
CONFIG_VLAN_8021Q=m
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_DECNET_ROUTER=y
|
||||
CONFIG_IPX=m
|
||||
CONFIG_ATALK=m
|
||||
CONFIG_DEV_APPLETALK=m
|
||||
|
|
|
|||
|
|
@ -398,7 +398,7 @@ static char *__fetch_rtas_last_error(char *altbuf)
|
|||
buf = kmalloc(RTAS_ERROR_LOG_MAX, GFP_ATOMIC);
|
||||
}
|
||||
if (buf)
|
||||
memcpy(buf, rtas_err_buf, RTAS_ERROR_LOG_MAX);
|
||||
memmove(buf, rtas_err_buf, RTAS_ERROR_LOG_MAX);
|
||||
}
|
||||
|
||||
return buf;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ unsigned long __kvmhv_copy_tofrom_guest_radix(int lpid, int pid,
|
|||
gva_t eaddr, void *to, void *from,
|
||||
unsigned long n)
|
||||
{
|
||||
int uninitialized_var(old_pid), old_lpid;
|
||||
int old_pid, old_lpid;
|
||||
unsigned long quadrant, ret = n;
|
||||
bool is_load = !!to;
|
||||
|
||||
|
|
|
|||
|
|
@ -1018,8 +1018,8 @@ void radix__ptep_set_access_flags(struct vm_area_struct *vma, pte_t *ptep,
|
|||
pte_t entry, unsigned long address, int psize)
|
||||
{
|
||||
struct mm_struct *mm = vma->vm_mm;
|
||||
unsigned long set = pte_val(entry) & (_PAGE_DIRTY | _PAGE_ACCESSED |
|
||||
_PAGE_RW | _PAGE_EXEC);
|
||||
unsigned long set = pte_val(entry) & (_PAGE_DIRTY | _PAGE_SOFT_DIRTY |
|
||||
_PAGE_ACCESSED | _PAGE_RW | _PAGE_EXEC);
|
||||
|
||||
unsigned long change = pte_val(entry) ^ pte_val(*ptep);
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -984,7 +984,7 @@ static void mpc5121_clk_provide_migration_support(void)
|
|||
|
||||
#define NODE_PREP do { \
|
||||
of_address_to_resource(np, 0, &res); \
|
||||
snprintf(devname, sizeof(devname), "%08x.%s", res.start, np->name); \
|
||||
snprintf(devname, sizeof(devname), "%pa.%s", &res.start, np->name); \
|
||||
} while (0)
|
||||
|
||||
#define NODE_CHK(clkname, clkitem, regnode, regflag) do { \
|
||||
|
|
|
|||
|
|
@ -340,7 +340,7 @@ static int mpc52xx_irqhost_map(struct irq_domain *h, unsigned int virq,
|
|||
{
|
||||
int l1irq;
|
||||
int l2irq;
|
||||
struct irq_chip *uninitialized_var(irqchip);
|
||||
struct irq_chip *irqchip;
|
||||
void *hndlr;
|
||||
int type;
|
||||
u32 reg;
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ static struct irq_domain * __init flipper_pic_init(struct device_node *np)
|
|||
}
|
||||
io_base = ioremap(res.start, resource_size(&res));
|
||||
|
||||
pr_info("controller at 0x%08x mapped to 0x%p\n", res.start, io_base);
|
||||
pr_info("controller at 0x%pa mapped to 0x%p\n", &res.start, io_base);
|
||||
|
||||
__flipper_quiesce(io_base);
|
||||
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ static struct irq_domain *hlwd_pic_init(struct device_node *np)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
pr_info("controller at 0x%08x mapped to 0x%p\n", res.start, io_base);
|
||||
pr_info("controller at 0x%pa mapped to 0x%p\n", &res.start, io_base);
|
||||
|
||||
__hlwd_quiesce(io_base);
|
||||
|
||||
|
|
|
|||
|
|
@ -89,8 +89,8 @@ static void __iomem *wii_ioremap_hw_regs(char *name, char *compatible)
|
|||
|
||||
hw_regs = ioremap(res.start, resource_size(&res));
|
||||
if (hw_regs) {
|
||||
pr_info("%s at 0x%08x mapped to 0x%p\n", name,
|
||||
res.start, hw_regs);
|
||||
pr_info("%s at 0x%pa mapped to 0x%p\n", name,
|
||||
&res.start, hw_regs);
|
||||
}
|
||||
|
||||
out_put:
|
||||
|
|
|
|||
|
|
@ -4,6 +4,11 @@ KASAN_SANITIZE := n
|
|||
|
||||
targets += trampoline.o purgatory.ro kexec-purgatory.c
|
||||
|
||||
# When profile-guided optimization is enabled, llvm emits two different
|
||||
# overlapping text sections, which is not supported by kexec. Remove profile
|
||||
# optimization flags.
|
||||
KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%,$(KBUILD_CFLAGS))
|
||||
|
||||
LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined
|
||||
|
||||
$(obj)/purgatory.ro: $(obj)/trampoline.o FORCE
|
||||
|
|
|
|||
|
|
@ -216,9 +216,8 @@ int __init tsi108_setup_pci(struct device_node *dev, u32 cfg_phys, int primary)
|
|||
|
||||
(hose)->ops = &tsi108_direct_pci_ops;
|
||||
|
||||
printk(KERN_INFO "Found tsi108 PCI host bridge at 0x%08x. "
|
||||
"Firmware bus number: %d->%d\n",
|
||||
rsrc.start, hose->first_busno, hose->last_busno);
|
||||
pr_info("Found tsi108 PCI host bridge at 0x%pa. Firmware bus number: %d->%d\n",
|
||||
&rsrc.start, hose->first_busno, hose->last_busno);
|
||||
|
||||
/* Interpret the "ranges" property */
|
||||
/* This also maps the I/O region and sets isa_io/mem_base */
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ static int pcpu_sigp_retry(struct pcpu *pcpu, u8 order, u32 parm)
|
|||
|
||||
static inline int pcpu_stopped(struct pcpu *pcpu)
|
||||
{
|
||||
u32 uninitialized_var(status);
|
||||
u32 status;
|
||||
|
||||
if (__pcpu_sigp(pcpu->address, SIGP_SENSE,
|
||||
0, &status) != SIGP_CC_STATUS_STORED)
|
||||
|
|
|
|||
|
|
@ -380,7 +380,7 @@ static int __init sq_api_init(void)
|
|||
if (unlikely(!sq_cache))
|
||||
return ret;
|
||||
|
||||
sq_bitmap = kzalloc(size, GFP_KERNEL);
|
||||
sq_bitmap = kcalloc(size, sizeof(long), GFP_KERNEL);
|
||||
if (unlikely(!sq_bitmap))
|
||||
goto out;
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ ENTRY(_stext)
|
|||
ldc r0, r6_bank
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_OF_FLATTREE
|
||||
#ifdef CONFIG_OF_EARLY_FLATTREE
|
||||
mov r4, r12 ! Store device tree blob pointer in r12
|
||||
#endif
|
||||
|
||||
|
|
@ -315,7 +315,7 @@ ENTRY(_stext)
|
|||
10:
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_OF_FLATTREE
|
||||
#ifdef CONFIG_OF_EARLY_FLATTREE
|
||||
mov.l 8f, r0 ! Make flat device tree available early.
|
||||
jsr @r0
|
||||
mov r12, r4
|
||||
|
|
@ -346,7 +346,7 @@ ENTRY(stack_start)
|
|||
5: .long start_kernel
|
||||
6: .long cpu_init
|
||||
7: .long init_thread_union
|
||||
#if defined(CONFIG_OF_FLATTREE)
|
||||
#if defined(CONFIG_OF_EARLY_FLATTREE)
|
||||
8: .long sh_fdt_init
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ static int __init nmi_debug_setup(char *str)
|
|||
register_die_notifier(&nmi_debug_nb);
|
||||
|
||||
if (*str != '=')
|
||||
return 0;
|
||||
return 1;
|
||||
|
||||
for (p = str + 1; *p; p = sep + 1) {
|
||||
sep = strchr(p, ',');
|
||||
|
|
@ -70,6 +70,6 @@ static int __init nmi_debug_setup(char *str)
|
|||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("nmi_debug", nmi_debug_setup);
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ void __init __weak plat_early_device_setup(void)
|
|||
{
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF_FLATTREE
|
||||
#ifdef CONFIG_OF_EARLY_FLATTREE
|
||||
void __ref sh_fdt_init(phys_addr_t dt_phys)
|
||||
{
|
||||
static int done = 0;
|
||||
|
|
@ -330,7 +330,7 @@ void __init setup_arch(char **cmdline_p)
|
|||
/* Let earlyprintk output early console messages */
|
||||
early_platform_driver_probe("earlyprintk", 1, 1);
|
||||
|
||||
#ifdef CONFIG_OF_FLATTREE
|
||||
#ifdef CONFIG_OF_EARLY_FLATTREE
|
||||
#ifdef CONFIG_USE_BUILTIN_DTB
|
||||
unflatten_and_copy_device_tree();
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -67,7 +67,3 @@
|
|||
} while (0)
|
||||
|
||||
#define abort() return 0
|
||||
|
||||
#define __BYTE_ORDER __LITTLE_ENDIAN
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -110,66 +110,78 @@ typedef unsigned int addr_t;
|
|||
|
||||
static inline u8 rdfs8(addr_t addr)
|
||||
{
|
||||
u8 *ptr = (u8 *)absolute_pointer(addr);
|
||||
u8 v;
|
||||
asm volatile("movb %%fs:%1,%0" : "=q" (v) : "m" (*(u8 *)addr));
|
||||
asm volatile("movb %%fs:%1,%0" : "=q" (v) : "m" (*ptr));
|
||||
return v;
|
||||
}
|
||||
static inline u16 rdfs16(addr_t addr)
|
||||
{
|
||||
u16 *ptr = (u16 *)absolute_pointer(addr);
|
||||
u16 v;
|
||||
asm volatile("movw %%fs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr));
|
||||
asm volatile("movw %%fs:%1,%0" : "=r" (v) : "m" (*ptr));
|
||||
return v;
|
||||
}
|
||||
static inline u32 rdfs32(addr_t addr)
|
||||
{
|
||||
u32 *ptr = (u32 *)absolute_pointer(addr);
|
||||
u32 v;
|
||||
asm volatile("movl %%fs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr));
|
||||
asm volatile("movl %%fs:%1,%0" : "=r" (v) : "m" (*ptr));
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline void wrfs8(u8 v, addr_t addr)
|
||||
{
|
||||
asm volatile("movb %1,%%fs:%0" : "+m" (*(u8 *)addr) : "qi" (v));
|
||||
u8 *ptr = (u8 *)absolute_pointer(addr);
|
||||
asm volatile("movb %1,%%fs:%0" : "+m" (*ptr) : "qi" (v));
|
||||
}
|
||||
static inline void wrfs16(u16 v, addr_t addr)
|
||||
{
|
||||
asm volatile("movw %1,%%fs:%0" : "+m" (*(u16 *)addr) : "ri" (v));
|
||||
u16 *ptr = (u16 *)absolute_pointer(addr);
|
||||
asm volatile("movw %1,%%fs:%0" : "+m" (*ptr) : "ri" (v));
|
||||
}
|
||||
static inline void wrfs32(u32 v, addr_t addr)
|
||||
{
|
||||
asm volatile("movl %1,%%fs:%0" : "+m" (*(u32 *)addr) : "ri" (v));
|
||||
u32 *ptr = (u32 *)absolute_pointer(addr);
|
||||
asm volatile("movl %1,%%fs:%0" : "+m" (*ptr) : "ri" (v));
|
||||
}
|
||||
|
||||
static inline u8 rdgs8(addr_t addr)
|
||||
{
|
||||
u8 *ptr = (u8 *)absolute_pointer(addr);
|
||||
u8 v;
|
||||
asm volatile("movb %%gs:%1,%0" : "=q" (v) : "m" (*(u8 *)addr));
|
||||
asm volatile("movb %%gs:%1,%0" : "=q" (v) : "m" (*ptr));
|
||||
return v;
|
||||
}
|
||||
static inline u16 rdgs16(addr_t addr)
|
||||
{
|
||||
u16 *ptr = (u16 *)absolute_pointer(addr);
|
||||
u16 v;
|
||||
asm volatile("movw %%gs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr));
|
||||
asm volatile("movw %%gs:%1,%0" : "=r" (v) : "m" (*ptr));
|
||||
return v;
|
||||
}
|
||||
static inline u32 rdgs32(addr_t addr)
|
||||
{
|
||||
u32 *ptr = (u32 *)absolute_pointer(addr);
|
||||
u32 v;
|
||||
asm volatile("movl %%gs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr));
|
||||
asm volatile("movl %%gs:%1,%0" : "=r" (v) : "m" (*ptr));
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline void wrgs8(u8 v, addr_t addr)
|
||||
{
|
||||
asm volatile("movb %1,%%gs:%0" : "+m" (*(u8 *)addr) : "qi" (v));
|
||||
u8 *ptr = (u8 *)absolute_pointer(addr);
|
||||
asm volatile("movb %1,%%gs:%0" : "+m" (*ptr) : "qi" (v));
|
||||
}
|
||||
static inline void wrgs16(u16 v, addr_t addr)
|
||||
{
|
||||
asm volatile("movw %1,%%gs:%0" : "+m" (*(u16 *)addr) : "ri" (v));
|
||||
u16 *ptr = (u16 *)absolute_pointer(addr);
|
||||
asm volatile("movw %1,%%gs:%0" : "+m" (*ptr) : "ri" (v));
|
||||
}
|
||||
static inline void wrgs32(u32 v, addr_t addr)
|
||||
{
|
||||
asm volatile("movl %1,%%gs:%0" : "+m" (*(u32 *)addr) : "ri" (v));
|
||||
u32 *ptr = (u32 *)absolute_pointer(addr);
|
||||
asm volatile("movl %1,%%gs:%0" : "+m" (*ptr) : "ri" (v));
|
||||
}
|
||||
|
||||
/* Note: these only return true/false, not a signed return value! */
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ static void copy_boot_params(void)
|
|||
u16 cl_offset;
|
||||
};
|
||||
const struct old_cmdline * const oldcmd =
|
||||
(const struct old_cmdline *)OLD_CL_ADDRESS;
|
||||
absolute_pointer(OLD_CL_ADDRESS);
|
||||
|
||||
BUILD_BUG_ON(sizeof(boot_params) != 4096);
|
||||
memcpy(&boot_params.hdr, &hdr, sizeof(hdr));
|
||||
|
|
|
|||
|
|
@ -96,6 +96,11 @@
|
|||
#define INTEL_FAM6_LAKEFIELD 0x8A
|
||||
#define INTEL_FAM6_ALDERLAKE 0x97
|
||||
#define INTEL_FAM6_ALDERLAKE_L 0x9A
|
||||
#define INTEL_FAM6_ALDERLAKE_N 0xBE
|
||||
|
||||
#define INTEL_FAM6_RAPTORLAKE 0xB7
|
||||
#define INTEL_FAM6_RAPTORLAKE_P 0xBA
|
||||
#define INTEL_FAM6_RAPTORLAKE_S 0xBF
|
||||
|
||||
/* "Small Core" Processors (Atom) */
|
||||
|
||||
|
|
|
|||
|
|
@ -563,6 +563,7 @@ struct kvm_vcpu_arch {
|
|||
u64 ia32_misc_enable_msr;
|
||||
u64 smbase;
|
||||
u64 smi_count;
|
||||
bool at_instruction_boundary;
|
||||
bool tpr_access_reporting;
|
||||
u64 ia32_xss;
|
||||
u64 microcode_version;
|
||||
|
|
@ -981,6 +982,8 @@ struct kvm_vcpu_stat {
|
|||
u64 irq_injections;
|
||||
u64 nmi_injections;
|
||||
u64 req_event;
|
||||
u64 preemption_reported;
|
||||
u64 preemption_other;
|
||||
};
|
||||
|
||||
struct x86_instruction_info;
|
||||
|
|
|
|||
|
|
@ -410,10 +410,9 @@ static unsigned int reserve_eilvt_offset(int offset, unsigned int new)
|
|||
if (vector && !eilvt_entry_is_changeable(vector, new))
|
||||
/* may not change if vectors are different */
|
||||
return rsvd;
|
||||
rsvd = atomic_cmpxchg(&eilvt_offsets[offset], rsvd, new);
|
||||
} while (rsvd != new);
|
||||
} while (!atomic_try_cmpxchg(&eilvt_offsets[offset], &rsvd, new));
|
||||
|
||||
rsvd &= ~APIC_EILVT_MASKED;
|
||||
rsvd = new & ~APIC_EILVT_MASKED;
|
||||
if (rsvd && rsvd != vector)
|
||||
pr_info("LVT offset %d assigned for vector 0x%02x\n",
|
||||
offset, rsvd);
|
||||
|
|
|
|||
|
|
@ -2455,17 +2455,21 @@ static int io_apic_get_redir_entries(int ioapic)
|
|||
|
||||
unsigned int arch_dynirq_lower_bound(unsigned int from)
|
||||
{
|
||||
unsigned int ret;
|
||||
|
||||
/*
|
||||
* dmar_alloc_hwirq() may be called before setup_IO_APIC(), so use
|
||||
* gsi_top if ioapic_dynirq_base hasn't been initialized yet.
|
||||
*/
|
||||
if (!ioapic_initialized)
|
||||
return gsi_top;
|
||||
ret = ioapic_dynirq_base ? : gsi_top;
|
||||
|
||||
/*
|
||||
* For DT enabled machines ioapic_dynirq_base is irrelevant and not
|
||||
* updated. So simply return @from if ioapic_dynirq_base == 0.
|
||||
* For DT enabled machines ioapic_dynirq_base is irrelevant and
|
||||
* always 0. gsi_top can be 0 if there is no IO/APIC registered.
|
||||
* 0 is an invalid interrupt number for dynamic allocations. Return
|
||||
* @from instead.
|
||||
*/
|
||||
return ioapic_dynirq_base ? : from;
|
||||
return ret ? : from;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
|
|
|
|||
|
|
@ -97,7 +97,10 @@ static void init_x2apic_ldr(void)
|
|||
|
||||
static int x2apic_phys_probe(void)
|
||||
{
|
||||
if (x2apic_mode && (x2apic_phys || x2apic_fadt_phys()))
|
||||
if (!x2apic_mode)
|
||||
return 0;
|
||||
|
||||
if (x2apic_phys || x2apic_fadt_phys())
|
||||
return 1;
|
||||
|
||||
return apic == &apic_x2apic_phys;
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ int detect_extended_topology_early(struct cpuinfo_x86 *c)
|
|||
* initial apic id, which also represents 32-bit extended x2apic id.
|
||||
*/
|
||||
c->initial_apicid = edx;
|
||||
smp_num_siblings = LEVEL_MAX_SIBLINGS(ebx);
|
||||
smp_num_siblings = max_t(int, smp_num_siblings, LEVEL_MAX_SIBLINGS(ebx));
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -107,7 +107,8 @@ int detect_extended_topology(struct cpuinfo_x86 *c)
|
|||
*/
|
||||
cpuid_count(leaf, SMT_LEVEL, &eax, &ebx, &ecx, &edx);
|
||||
c->initial_apicid = edx;
|
||||
core_level_siblings = smp_num_siblings = LEVEL_MAX_SIBLINGS(ebx);
|
||||
core_level_siblings = LEVEL_MAX_SIBLINGS(ebx);
|
||||
smp_num_siblings = max_t(int, smp_num_siblings, LEVEL_MAX_SIBLINGS(ebx));
|
||||
core_plus_mask_width = ht_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);
|
||||
die_level_siblings = LEVEL_MAX_SIBLINGS(ebx);
|
||||
die_plus_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);
|
||||
|
|
|
|||
|
|
@ -171,7 +171,6 @@ void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
|
|||
printk("%sCall Trace:\n", log_lvl);
|
||||
|
||||
unwind_start(&state, task, regs, stack);
|
||||
stack = stack ? : get_stack_pointer(task, regs);
|
||||
regs = unwind_get_entry_regs(&state, &partial);
|
||||
|
||||
/*
|
||||
|
|
@ -190,9 +189,13 @@ void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
|
|||
* - hardirq stack
|
||||
* - entry stack
|
||||
*/
|
||||
for ( ; stack; stack = PTR_ALIGN(stack_info.next_sp, sizeof(long))) {
|
||||
for (stack = stack ?: get_stack_pointer(task, regs);
|
||||
stack;
|
||||
stack = stack_info.next_sp) {
|
||||
const char *stack_name;
|
||||
|
||||
stack = PTR_ALIGN(stack, sizeof(long));
|
||||
|
||||
if (get_stack_info(stack, task, &stack_info, &visit_mask)) {
|
||||
/*
|
||||
* We weren't on a valid stack. It's possible that
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ static void ich_force_hpet_resume(void)
|
|||
static void ich_force_enable_hpet(struct pci_dev *dev)
|
||||
{
|
||||
u32 val;
|
||||
u32 uninitialized_var(rcba);
|
||||
u32 rcba;
|
||||
int err = 0;
|
||||
|
||||
if (hpet_address || force_hpet_address)
|
||||
|
|
@ -185,7 +185,7 @@ static void hpet_print_force_info(void)
|
|||
static void old_ich_force_hpet_resume(void)
|
||||
{
|
||||
u32 val;
|
||||
u32 uninitialized_var(gen_cntl);
|
||||
u32 gen_cntl;
|
||||
|
||||
if (!force_hpet_address || !cached_dev)
|
||||
return;
|
||||
|
|
@ -207,7 +207,7 @@ static void old_ich_force_hpet_resume(void)
|
|||
static void old_ich_force_enable_hpet(struct pci_dev *dev)
|
||||
{
|
||||
u32 val;
|
||||
u32 uninitialized_var(gen_cntl);
|
||||
u32 gen_cntl;
|
||||
|
||||
if (hpet_address || force_hpet_address)
|
||||
return;
|
||||
|
|
@ -298,7 +298,7 @@ static void vt8237_force_hpet_resume(void)
|
|||
|
||||
static void vt8237_force_enable_hpet(struct pci_dev *dev)
|
||||
{
|
||||
u32 uninitialized_var(val);
|
||||
u32 val;
|
||||
|
||||
if (hpet_address || force_hpet_address)
|
||||
return;
|
||||
|
|
@ -429,7 +429,7 @@ static void nvidia_force_hpet_resume(void)
|
|||
|
||||
static void nvidia_force_enable_hpet(struct pci_dev *dev)
|
||||
{
|
||||
u32 uninitialized_var(val);
|
||||
u32 val;
|
||||
|
||||
if (hpet_address || force_hpet_address)
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -6246,7 +6246,8 @@ out:
|
|||
|
||||
static void svm_handle_exit_irqoff(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
|
||||
if (to_svm(vcpu)->vmcb->control.exit_code == SVM_EXIT_INTR)
|
||||
vcpu->arch.at_instruction_boundary = true;
|
||||
}
|
||||
|
||||
static void svm_sched_in(struct kvm_vcpu *vcpu, int cpu)
|
||||
|
|
|
|||
|
|
@ -6358,6 +6358,7 @@ static void handle_external_interrupt_irqoff(struct kvm_vcpu *vcpu)
|
|||
);
|
||||
|
||||
kvm_after_interrupt(vcpu);
|
||||
vcpu->arch.at_instruction_boundary = true;
|
||||
}
|
||||
STACK_FRAME_NON_STANDARD(handle_external_interrupt_irqoff);
|
||||
|
||||
|
|
@ -7266,6 +7267,21 @@ static int vmx_check_intercept(struct kvm_vcpu *vcpu,
|
|||
/* FIXME: produce nested vmexit and return X86EMUL_INTERCEPTED. */
|
||||
break;
|
||||
|
||||
case x86_intercept_pause:
|
||||
/*
|
||||
* PAUSE is a single-byte NOP with a REPE prefix, i.e. collides
|
||||
* with vanilla NOPs in the emulator. Apply the interception
|
||||
* check only to actual PAUSE instructions. Don't check
|
||||
* PAUSE-loop-exiting, software can't expect a given PAUSE to
|
||||
* exit, i.e. KVM is within its rights to allow L2 to execute
|
||||
* the PAUSE.
|
||||
*/
|
||||
if ((info->rep_prefix != REPE_PREFIX) ||
|
||||
!nested_cpu_has2(vmcs12, CPU_BASED_PAUSE_EXITING))
|
||||
return X86EMUL_CONTINUE;
|
||||
|
||||
break;
|
||||
|
||||
/* TODO: check more intercepts... */
|
||||
default:
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -207,6 +207,8 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
|
|||
{ "nmi_injections", VCPU_STAT(nmi_injections) },
|
||||
{ "req_event", VCPU_STAT(req_event) },
|
||||
{ "l1d_flush", VCPU_STAT(l1d_flush) },
|
||||
{ "preemption_reported", VCPU_STAT(preemption_reported) },
|
||||
{ "preemption_other", VCPU_STAT(preemption_other) },
|
||||
{ "mmu_shadow_zapped", VM_STAT(mmu_shadow_zapped) },
|
||||
{ "mmu_pte_write", VM_STAT(mmu_pte_write) },
|
||||
{ "mmu_pde_zapped", VM_STAT(mmu_pde_zapped) },
|
||||
|
|
@ -3562,6 +3564,19 @@ static void kvm_steal_time_set_preempted(struct kvm_vcpu *vcpu)
|
|||
struct kvm_host_map map;
|
||||
struct kvm_steal_time *st;
|
||||
|
||||
/*
|
||||
* The vCPU can be marked preempted if and only if the VM-Exit was on
|
||||
* an instruction boundary and will not trigger guest emulation of any
|
||||
* kind (see vcpu_run). Vendor specific code controls (conservatively)
|
||||
* when this is true, for example allowing the vCPU to be marked
|
||||
* preempted if and only if the VM-Exit was due to a host interrupt.
|
||||
*/
|
||||
if (!vcpu->arch.at_instruction_boundary) {
|
||||
vcpu->stat.preemption_other++;
|
||||
return;
|
||||
}
|
||||
|
||||
vcpu->stat.preemption_reported++;
|
||||
if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED))
|
||||
return;
|
||||
|
||||
|
|
@ -8446,6 +8461,13 @@ static int vcpu_run(struct kvm_vcpu *vcpu)
|
|||
vcpu->arch.l1tf_flush_l1d = true;
|
||||
|
||||
for (;;) {
|
||||
/*
|
||||
* If another guest vCPU requests a PV TLB flush in the middle
|
||||
* of instruction emulation, the rest of the emulation could
|
||||
* use a stale page translation. Assume that any code after
|
||||
* this point can start executing an instruction.
|
||||
*/
|
||||
vcpu->arch.at_instruction_boundary = false;
|
||||
if (kvm_vcpu_running(vcpu)) {
|
||||
r = vcpu_enter_guest(vcpu);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#include <linux/sched/task.h>
|
||||
|
||||
#include <asm/set_memory.h>
|
||||
#include <asm/cpu_device_id.h>
|
||||
#include <asm/e820/api.h>
|
||||
#include <asm/init.h>
|
||||
#include <asm/page.h>
|
||||
|
|
@ -208,6 +209,24 @@ static void __init probe_page_size_mask(void)
|
|||
}
|
||||
}
|
||||
|
||||
#define INTEL_MATCH(_model) { .vendor = X86_VENDOR_INTEL, \
|
||||
.family = 6, \
|
||||
.model = _model, \
|
||||
}
|
||||
/*
|
||||
* INVLPG may not properly flush Global entries
|
||||
* on these CPUs when PCIDs are enabled.
|
||||
*/
|
||||
static const struct x86_cpu_id invlpg_miss_ids[] = {
|
||||
INTEL_MATCH(INTEL_FAM6_ALDERLAKE ),
|
||||
INTEL_MATCH(INTEL_FAM6_ALDERLAKE_L ),
|
||||
INTEL_MATCH(INTEL_FAM6_ALDERLAKE_N ),
|
||||
INTEL_MATCH(INTEL_FAM6_RAPTORLAKE ),
|
||||
INTEL_MATCH(INTEL_FAM6_RAPTORLAKE_P),
|
||||
INTEL_MATCH(INTEL_FAM6_RAPTORLAKE_S),
|
||||
{}
|
||||
};
|
||||
|
||||
static void setup_pcid(void)
|
||||
{
|
||||
if (!IS_ENABLED(CONFIG_X86_64))
|
||||
|
|
@ -216,6 +235,12 @@ static void setup_pcid(void)
|
|||
if (!boot_cpu_has(X86_FEATURE_PCID))
|
||||
return;
|
||||
|
||||
if (x86_match_cpu(invlpg_miss_ids)) {
|
||||
pr_info("Incomplete global flushes, disabling PCID");
|
||||
setup_clear_cpu_cap(X86_FEATURE_PCID);
|
||||
return;
|
||||
}
|
||||
|
||||
if (boot_cpu_has(X86_FEATURE_PGE)) {
|
||||
/*
|
||||
* This can't be cr4_set_bits_and_update_boot() -- the
|
||||
|
|
|
|||
|
|
@ -14,6 +14,11 @@ $(obj)/sha256.o: $(srctree)/lib/crypto/sha256.c FORCE
|
|||
|
||||
CFLAGS_sha256.o := -D__DISABLE_EXPORTS
|
||||
|
||||
# When profile-guided optimization is enabled, llvm emits two different
|
||||
# overlapping text sections, which is not supported by kexec. Remove profile
|
||||
# optimization flags.
|
||||
KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%,$(KBUILD_CFLAGS))
|
||||
|
||||
LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined -nostdlib -z nodefaultlib
|
||||
targets += purgatory.ro
|
||||
|
||||
|
|
|
|||
|
|
@ -248,7 +248,9 @@ enum {
|
|||
|
||||
/* 1/64k is granular enough and can easily be handled w/ u32 */
|
||||
HWEIGHT_WHOLE = 1 << 16,
|
||||
};
|
||||
|
||||
enum {
|
||||
/*
|
||||
* As vtime is used to calculate the cost of each IO, it needs to
|
||||
* be fairly high precision. For example, it should be able to
|
||||
|
|
@ -271,6 +273,11 @@ enum {
|
|||
VRATE_MIN = VTIME_PER_USEC * VRATE_MIN_PPM / MILLION,
|
||||
VRATE_CLAMP_ADJ_PCT = 4,
|
||||
|
||||
/* switch iff the conditions are met for longer than this */
|
||||
AUTOP_CYCLE_NSEC = 10LLU * NSEC_PER_SEC,
|
||||
};
|
||||
|
||||
enum {
|
||||
/* if IOs end up waiting for requests, issue less */
|
||||
RQ_WAIT_BUSY_PCT = 5,
|
||||
|
||||
|
|
@ -288,9 +295,6 @@ enum {
|
|||
SURPLUS_SCALE_ABS = HWEIGHT_WHOLE / 50, /* + 2% */
|
||||
SURPLUS_MIN_ADJ_DELTA = HWEIGHT_WHOLE / 33, /* 3% */
|
||||
|
||||
/* switch iff the conditions are met for longer than this */
|
||||
AUTOP_CYCLE_NSEC = 10LLU * NSEC_PER_SEC,
|
||||
|
||||
/*
|
||||
* Count IO size in 4k pages. The 12bit shift helps keeping
|
||||
* size-proportional components of cost calculation in closer
|
||||
|
|
|
|||
|
|
@ -479,7 +479,7 @@ static int __blk_bios_map_sg(struct request_queue *q, struct bio *bio,
|
|||
struct scatterlist *sglist,
|
||||
struct scatterlist **sg)
|
||||
{
|
||||
struct bio_vec uninitialized_var(bvec), bvprv = { NULL };
|
||||
struct bio_vec bvec, bvprv = { NULL };
|
||||
struct bvec_iter iter;
|
||||
int nsegs = 0;
|
||||
bool new_bio = false;
|
||||
|
|
|
|||
|
|
@ -255,9 +255,10 @@ int public_key_verify_signature(const struct public_key *pkey,
|
|||
struct crypto_wait cwait;
|
||||
struct crypto_akcipher *tfm;
|
||||
struct akcipher_request *req;
|
||||
struct scatterlist src_sg[2];
|
||||
struct scatterlist src_sg;
|
||||
char alg_name[CRYPTO_MAX_ALG_NAME];
|
||||
char *key, *ptr;
|
||||
char *buf, *ptr;
|
||||
size_t buf_len;
|
||||
int ret;
|
||||
|
||||
pr_devel("==>%s()\n", __func__);
|
||||
|
|
@ -281,28 +282,31 @@ int public_key_verify_signature(const struct public_key *pkey,
|
|||
if (!req)
|
||||
goto error_free_tfm;
|
||||
|
||||
key = kmalloc(pkey->keylen + sizeof(u32) * 2 + pkey->paramlen,
|
||||
GFP_KERNEL);
|
||||
if (!key)
|
||||
buf_len = max_t(size_t, pkey->keylen + sizeof(u32) * 2 + pkey->paramlen,
|
||||
sig->s_size + sig->digest_size);
|
||||
|
||||
buf = kmalloc(buf_len, GFP_KERNEL);
|
||||
if (!buf)
|
||||
goto error_free_req;
|
||||
|
||||
memcpy(key, pkey->key, pkey->keylen);
|
||||
ptr = key + pkey->keylen;
|
||||
memcpy(buf, pkey->key, pkey->keylen);
|
||||
ptr = buf + pkey->keylen;
|
||||
ptr = pkey_pack_u32(ptr, pkey->algo);
|
||||
ptr = pkey_pack_u32(ptr, pkey->paramlen);
|
||||
memcpy(ptr, pkey->params, pkey->paramlen);
|
||||
|
||||
if (pkey->key_is_private)
|
||||
ret = crypto_akcipher_set_priv_key(tfm, key, pkey->keylen);
|
||||
ret = crypto_akcipher_set_priv_key(tfm, buf, pkey->keylen);
|
||||
else
|
||||
ret = crypto_akcipher_set_pub_key(tfm, key, pkey->keylen);
|
||||
ret = crypto_akcipher_set_pub_key(tfm, buf, pkey->keylen);
|
||||
if (ret)
|
||||
goto error_free_key;
|
||||
goto error_free_buf;
|
||||
|
||||
sg_init_table(src_sg, 2);
|
||||
sg_set_buf(&src_sg[0], sig->s, sig->s_size);
|
||||
sg_set_buf(&src_sg[1], sig->digest, sig->digest_size);
|
||||
akcipher_request_set_crypt(req, src_sg, NULL, sig->s_size,
|
||||
memcpy(buf, sig->s, sig->s_size);
|
||||
memcpy(buf + sig->s_size, sig->digest, sig->digest_size);
|
||||
|
||||
sg_init_one(&src_sg, buf, sig->s_size + sig->digest_size);
|
||||
akcipher_request_set_crypt(req, &src_sg, NULL, sig->s_size,
|
||||
sig->digest_size);
|
||||
crypto_init_wait(&cwait);
|
||||
akcipher_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
|
||||
|
|
@ -310,8 +314,8 @@ int public_key_verify_signature(const struct public_key *pkey,
|
|||
crypto_req_done, &cwait);
|
||||
ret = crypto_wait_req(crypto_akcipher_verify(req), &cwait);
|
||||
|
||||
error_free_key:
|
||||
kfree(key);
|
||||
error_free_buf:
|
||||
kfree(buf);
|
||||
error_free_req:
|
||||
akcipher_request_free(req);
|
||||
error_free_tfm:
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue