Merge keystone/android12-5.10-keystone-qcom-release.185+ (7a5953e
) into msm-5.10
* refs/heads/tmp-7a5953e: ANDROID: GKI: Add symbol list for Nothing ANDROID: ABI: Update oplus symbol list ashmem: is_ashmem_file Export is_ashmem_file function which will be used by the minidump module to get ashmem info. Merge /mm/madvise.c from mirror-android12-5.10-2023-07 ANDROID: GKI: Update abi_gki_aarch64_qcom for page_owner symbols ANDROID: mm: Export page_owner_inited and __set_page_owner FROMGIT: pstore/ram: Check start of empty przs during init ANDROID: GKI: Update symbols for zebra ANDROID: wakeupbypass: Add vendor hook for batteryswap UPSTREAM: exfat: check if filename entries exceeds max filename length BACKPORT: FROMGIT: netfilter: nfnetlink_log: always add a timestamp FROMGIT: arm64: dts: qcom: sdm845-db845c: Mark cont splash memory region as reserved BACKPORT: FROMGIT: irqchip/gic-v3: Workaround for GIC-700 erratum 2941627 UPSTREAM: media: usb: siano: Fix warning due to null work_func_t function pointer UPSTREAM: Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb ANDROID: ABI: Update oplus symbol list ANDROID: Export symbols to do reverse mapping within memcg in kernel modules. ANDROID: GKI: export symbols to modify lru stats UPSTREAM: net: tap_open(): set sk_uid from current_fsuid() UPSTREAM: net: tun_chr_open(): set sk_uid from current_fsuid() UPSTREAM: netfilter: nf_tables: disallow rule addition to bound chain via NFTA_RULE_CHAIN_ID BACKPORT: UPSTREAM: usb: dwc3: gadget: Execute gadget stop after halting the controller UPSTREAM: usb: dwc3: gadget: Stall and restart EP0 if host is unresponsive UPSTREAM: net/sched: cls_route: No longer copy tcf_result on update to avoid use-after-free UPSTREAM: net/sched: cls_fw: No longer copy tcf_result on update to avoid use-after-free UPSTREAM: net/sched: cls_u32: No longer copy tcf_result on update to avoid use-after-free ANDROID: GKI: update xiaomi symbol list UPSTREAM: netfilter: nf_tables: skip bound chain on rule flush UPSTREAM: net/sched: cls_fw: Fix improper refcount update leads to use-after-free UPSTREAM: tty: n_gsm: fix UAF in gsm_cleanup_mux UPSTREAM: netfilter: nft_set_pipapo: fix improper element removal BACKPORT: FROMGIT: irqchip/gic-v3: Workaround for GIC-700 erratum 2941627 ANDROID: vendor_hook: fix the error record position of mutex FROMGIT: fs: drop_caches: draining pages before dropping caches ANDROID: GKI: Update symbols to symbol list ANDROID: GKI: Update symbols to symbol list ANDROID: GKI: add symbol list file for moto UPSTREAM: gfs2: Don't deref jdesc in evict UPSTREAM: media: dvb-core: Fix kernel WARNING for blocking operation in wait_event*() ANDROID: wakeupbypass: Add vendor hook for batteryswap ANDROID: GKI: Update symbols to symbol list ANDROID: vendor_hook: Add hook to abort reclaim and compaction UPSTREAM: Revert "Fix XFRM-I support for nested ESP tunnels" UPSTREAM: Revert "Fix XFRM-I support for nested ESP tunnels" ANDROID: Incremental fs: Allocate data buffer based on input request size ANDROID: ABI: update symbol list for Xclipse GPU ANDROID: vendor_hooks: Supplement the missing hook call point. ANDROID: GKI: Add symbol list for Nothing UPSTREAM: usb: dwc3: gadget: Propagate core init errors to UDC during pullup Revert "net: Remove DECnet leftovers from flow.h." Revert "neighbour: fix unaligned access to pneigh_entry" Revert "tcp: deny tcp_disconnect() when threads are waiting" Revert "regulator: Add regmap helper for ramp-delay setting" Revert "regulator: pca9450: Convert to use regulator_set_ramp_delay_regmap" Revert "regulator: pca9450: Fix BUCK2 enable_mask" Revert "tipc: add tipc_bearer_min_mtu to calculate min mtu" Revert "tipc: do not update mtu if msg_max is too small in mtu negotiation" Revert "tipc: check the bearer min mtu properly when setting it by netlink" Revert "ipv4/tcp: do not use per netns ctl sockets" ANDROID: GKI: preserve CRC generation for some bluetooth symbols Revert "net: Find dst with sk's xfrm policy not ctl_sk" Revert "tcp: fix possible sk_priority leak in tcp_v4_send_reset()" Revert "firmware: arm_sdei: Fix sleep from invalid context BUG" Revert "arm64: Stash shadow stack pointer in the task struct on interrupt" Revert "workqueue: Rename "delayed" (delayed by active management) to "inactive"" Revert "workqueue: Fix hung time report of worker pools" Revert "uapi/linux/const.h: prefer ISO-friendly __typeof__" Linux 5.10.185 um: Fix build w/o CONFIG_PM_SLEEP drm/i915/gen11+: Only load DRAM information from pcode drm/i915/dg1: Wait for pcode/uncore handshake at startup media: dvb-core: Fix use-after-free due to race at dvb_register_device() media: dvbdev: fix error logic at dvb_register_device() media: dvbdev: Fix memleak in dvb_register_device nilfs2: reject devices with insufficient block count mm/memory_hotplug: extend offline_and_remove_memory() to handle more than one memory block mmc: block: ensure error propagation for non-blk batman-adv: Switch to kstrtox.h for kstrtou64 neighbour: delete neigh_lookup_nodev as not used net: Remove DECnet leftovers from flow.h. net: Remove unused inline function dst_hold_and_use() neighbour: Remove unused inline function neigh_key_eq16() rcu/kvfree: Avoid freeing new kfree_rcu() memory after old grace period cgroup: always put cset in cgroup_css_set_put_fork afs: Fix vlserver probe RTT handling selftests/ptp: Fix timestamp printf format for PTP_SYS_OFFSET net: tipc: resize nlattr array to correct size net: lapbether: only support ethernet devices net/sched: cls_api: Fix lockup on flushing explicitly created chain ext4: drop the call to ext4_error() from ext4_get_group_info() drm/nouveau: add nv_encoder pointer check for NULL drm/nouveau/dp: check for NULL nv_connector->native_mode drm/nouveau: don't detect DSM for non-NVIDIA device igb: fix nvm.ops.read() error handling sctp: fix an error code in sctp_sf_eat_auth() ipvlan: fix bound dev checking for IPv6 l3s mode IB/isert: Fix incorrect release of isert connection IB/isert: Fix possible list corruption in CMA handler IB/isert: Fix dead lock in ib_isert IB/uverbs: Fix to consider event queue closing also upon non-blocking mode RDMA/cma: Always set static rate to 0 for RoCE RDMA/mlx5: Initiate dropless RQ for RAW Ethernet functions octeontx2-af: fixed resource availability check iavf: remove mask from iavf_irq_enable_queues() RDMA/rxe: Fix the use-before-initialization error of resp_pkts RDMA/rxe: Removed unused name from rxe_task struct RDMA/rxe: Remove the unused variable obj net/sched: cls_u32: Fix reference counter leak leading to overflow ping6: Fix send to link-local addresses with VRF. net: enetc: correct the indexes of highest and 2nd highest TCs netfilter: nfnetlink: skip error delivery on batch in case of ENOMEM spi: fsl-dspi: avoid SCK glitches with continuous transfers RDMA/rtrs: Fix the last iu->buf leak in err path usb: dwc3: gadget: Reset num TRBs before giving back the request serial: lantiq: add missing interrupt ack USB: serial: option: add Quectel EM061KGL series Remove DECnet support from kernel ALSA: hda/realtek: Add a quirk for Compaq N14JP6 net: usb: qmi_wwan: add support for Compal RXM-G1 RDMA/uverbs: Restrict usage of privileged QKEYs nouveau: fix client work fence deletion race powerpc/purgatory: remove PGO flags x86/purgatory: remove PGO flags kexec: support purgatories with .text.hot sections nilfs2: fix possible out-of-bounds segment allocation in resize ioctl nilfs2: fix incomplete buffer cleanup in nilfs_btnode_abort_change_key() nios2: dts: Fix tse_mac "max-frame-size" property ocfs2: check new file size on fallocate call ocfs2: fix use-after-free when unmounting read-only filesystem epoll: ep_autoremove_wake_function should use list_del_init_careful io_uring: hold uring mutex around poll removal irqchip/gic: Correctly validate OF quirk descriptors drm:amd:amdgpu: Fix missing buffer object unlock in failure path xen/blkfront: Only check REQ_FUA for writes ASoC: dwc: move DMA init to snd_soc_dai_driver probe() mips: Move initrd_start check after initrd address sanitisation. MIPS: Alchemy: fix dbdma2 parisc: Flush gatt writes and adjust gatt mask in parisc_agp_mask_memory() parisc: Improve cache flushing for PCXL in arch_sync_dma_for_cpu() ASoC: soc-pcm: test if a BE can be prepared btrfs: handle memory allocation failure in btrfs_csum_one_bio btrfs: scrub: try harder to mark RAID56 block groups read-only power: supply: Fix logic checking if system is running from battery irqchip/gic-v3: Disable pseudo NMIs on Mediatek devices w/ firmware issues regulator: Fix error checking for debugfs_create_dir platform/x86: asus-wmi: Ignore WMI events with codes 0x7B, 0xC0 power: supply: Ratelimit no data debug output tools: gpio: fix debounce_period_us output of lsgpio ARM: dts: vexpress: add missing cache properties power: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + schedule() power: supply: sc27xx: Fix external_power_changed race power: supply: ab8500: Fix external_power_changed race test_firmware: fix a memory leak with reqs buffer test_firmware: prevent race conditions by a correct implementation of locking test_firmware: Use kstrtobool() instead of strtobool() kernel.h: split out kstrtox() and simple_strtox() to a separate header lib: cleanup kstrto*() usage Revert "sched/fair: Detect capacity inversion" Revert "sched/fair: Consider capacity inversion in util_fits_cpu()" Revert "sched/uclamp: Fix a uninitialized variable warnings" Revert "sched/fair: Fixes for capacity inversion detection" Linux 5.10.184 Revert "staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE" btrfs: unset reloc control if transaction commit fails in prepare_to_relocate() btrfs: check return value of btrfs_commit_transaction in relocation drm/atomic: Don't pollute crtc_state->mode_blob with error pointers MIPS: locking/atomic: Fix atomic{_64,}_sub_if_positive xfs: verify buffer contents when we skip log replay tcp: fix tcp_min_tso_segs sysctl ext4: only check dquot_initialize_needed() when debugging Revert "ext4: don't clear SB_RDONLY when remounting r/w until quota is re-enabled" vhost: support PACKED when setting-getting vring_base riscv: fix kprobe __user string arg print fault issue eeprom: at24: also select REGMAP i2c: sprd: Delete i2c adapter in .remove's error path ASoC: codecs: wsa881x: do not set can_multi_write flag staging: vc04_services: fix gcc-13 build warning usb: usbfs: Use consistent mmap functions usb: usbfs: Enforce page requirements for mmap pinctrl: meson-axg: add missing GPIOA_18 gpio group rbd: get snapshot context after exclusive lock is ensured to be held rbd: move RBD_OBJ_FLAG_COPYUP_ENABLED flag setting tee: amdtee: Add return_origin to 'struct tee_cmd_load_ta' Bluetooth: hci_qca: fix debugfs registration Bluetooth: Fix use-after-free in hci_remove_ltk/hci_remove_irk s390/dasd: Use correct lock while counting channel queue length ceph: fix use-after-free bug for inodes when flushing capsnaps can: j1939: avoid possible use-after-free when j1939_can_rx_register fails can: j1939: change j1939_netdev_lock type to mutex can: j1939: j1939_sk_send_loop_abort(): improved error queue handling in J1939 Socket drm/amdgpu: fix xclk freq on CHIP_STONEY ALSA: hda/realtek: Add Lenovo P3 Tower platform ALSA: hda/realtek: Add a quirk for HP Slim Desktop S01 Input: psmouse - fix OOB access in Elantech protocol Input: xpad - delete a Razer DeathAdder mouse VID/PID entry batman-adv: Broken sync while rescheduling delayed work bnxt_en: Implement .set_port / .unset_port UDP tunnel callbacks bnxt_en: Query default VLAN before VNIC setup on a VF bnxt_en: Don't issue AP reset during ethtool's reset operation lib: cpu_rmap: Fix potential use-after-free in irq_cpu_rmap_release() bpf: Add extra path pointer check to d_path helper net: sched: fix possible refcount leak in tc_chain_tmplt_add() net: sched: move rtm_tca_policy declaration to include file rfs: annotate lockless accesses to RFS sock flow table rfs: annotate lockless accesses to sk->sk_rxhash ipv6: rpl: Fix Route of Death. netfilter: ipset: Add schedule point in call_ad(). netfilter: conntrack: fix NULL pointer dereference in nf_confirm_cthelper qed/qede: Fix scheduling while atomic Bluetooth: L2CAP: Add missing checks for invalid DCID Bluetooth: Fix l2cap_disconnect_req deadlock net/sched: fq_pie: ensure reasonable TCA_FQ_PIE_QUANTUM values net/smc: Avoid to access invalid RMBs' MRs in SMCRv1 ADD LINK CONT net: dsa: lan9303: allow vid != 0 in port_fdb_{add|del} methods neighbour: fix unaligned access to pneigh_entry wifi: mt76: mt7615: fix possible race in mt7615_mac_sta_poll afs: Fix setting of mtime when creating a file/dir/symlink spi: qup: Request DMA before enabling clocks staging: vchiq_core: drop vchiq_status from vchiq_initialise i40e: fix build warning in ice_fltr_add_mac_to_list() i40e: fix build warnings in i40e_alloc.h i40iw: fix build warning in i40iw_manage_apbvt() block/blk-iocost (gcc13): keep large values in a new enum blk-iocost: avoid 64-bit division in ioc_timer_fn f2fs: fix iostat lock protection bonding (gcc13): synchronize bond_{a,t}lb_xmit() types remove the sx8 block driver sfc (gcc13): synchronize ef100_enqueue_skb()'s return type gcc-plugins: Reorganize gimple includes for GCC 13 ata: ahci: fix enum constants for gcc-13 Linux 5.10.183 ARM: defconfig: drop CONFIG_DRM_RCAR_LVDS ext4: enable the lazy init thread when remounting read/write selftests: mptcp: join: skip if MPTCP is not supported selftests: mptcp: simult flows: skip if MPTCP is not supported selftests: mptcp: diag: skip if MPTCP is not supported crypto: ccp: Play nice with vmalloc'd memory for SEV command structs crypto: ccp: Reject SEV commands with mismatching command buffer scsi: dpt_i2o: Do not process completions with invalid addresses scsi: dpt_i2o: Remove broken pass-through ioctl (I2OUSERCMD) drm/rcar: stop using 'imply' for dependencies media: ti-vpe: cal: avoid FIELD_GET assertion tpm, tpm_tis: Request threaded interrupt handler regmap: Account for register length when chunking KEYS: asymmetric: Copy sig and digest in public_key_verify_signature() KVM: x86: Account fastpath-only VM-Exits in vCPU stats test_firmware: fix the memory leak of the allocated firmware buffer serial: 8250_tegra: Fix an error handling path in tegra_uart_probe() fbcon: Fix null-ptr-deref in soft_cursor ext4: add lockdep annotations for i_data_sem for ea_inode's ext4: disallow ea_inodes with extended attributes ext4: set lockdep subclass for the ea_inode in ext4_xattr_inode_cache_find() ext4: add EA_INODE checking to ext4_iget() selftests: mptcp: pm nl: skip if MPTCP is not supported selftests: mptcp: connect: skip if MPTCP is not supported tracing/probe: trace_probe_primary_from_call(): checked list_first_entry selinux: don't use make's grouped targets feature yet btrfs: fix csum_tree_block page iteration to avoid tripping on -Werror=array-bounds tty: serial: fsl_lpuart: use UARTCTRL_TXINV to send break instead of UARTCTRL_SBK mmc: vub300: fix invalid response handling eth: sun: cassini: remove dead code gcc-12: disable '-Wdangling-pointer' warning for now ath6kl: Use struct_group() to avoid size-mismatched casting ACPI: thermal: drop an always true check x86/boot: Wrap literal addresses in absolute_pointer() ata: libata-scsi: Use correct device no in ata_find_dev() scsi: stex: Fix gcc 13 warnings misc: fastrpc: reject new invocations during device removal misc: fastrpc: return -EPIPE to invocations on device removal usb: gadget: f_fs: Add unbind event before functionfs_unbind net: usb: qmi_wwan: Set DTR quirk for BroadMobi BM818 iio: dac: build ad5758 driver when AD5758 is selected iio: adc: ad7192: Change "shorted" channels to differential iio: dac: mcp4725: Fix i2c_master_send() return value handling iio: light: vcnl4035: fixed chip ID check iio: imu: inv_icm42600: fix timestamp reset HID: wacom: avoid integer overflow in wacom_intuos_inout() HID: google: add jewel USB id iio: adc: mxs-lradc: fix the order of two cleanup operations mailbox: mailbox-test: fix a locking issue in mbox_test_message_write() atm: hide unused procfs functions drm/msm: Be more shouty if per-process pgtables aren't working ALSA: oss: avoid missing-prototype warnings netfilter: conntrack: define variables exp_nat_nla_policy and any_addr with CONFIG_NF_NAT wifi: b43: fix incorrect __packed annotation scsi: core: Decrease scsi_device's iorequest_cnt if dispatch failed arm64/mm: mark private VM_FAULT_X defines as vm_fault_t ARM: dts: stm32: add pin map for CAN controller on stm32f7 wifi: rtl8xxxu: fix authentication timeout due to incorrect RCR value s390/pkey: zeroize key blobs media: dvb-core: Fix use-after-free due to race condition at dvb_ca_en50221 media: dvb-core: Fix kernel WARNING for blocking operation in wait_event*() media: dvb-core: Fix use-after-free due on race condition at dvb_net media: mn88443x: fix !CONFIG_OF error by drop of_match_ptr from ID table media: ttusb-dec: fix memory leak in ttusb_dec_exit_dvb() media: dvb_ca_en50221: fix a size write bug media: netup_unidvb: fix irq init by register it at the end of probe media: dvb-usb: dw2102: fix uninit-value in su3000_read_mac_address media: dvb-usb: digitv: fix null-ptr-deref in digitv_i2c_xfer() media: dvb-usb-v2: rtl28xxu: fix null-ptr-deref in rtl28xxu_i2c_xfer media: dvb-usb-v2: ce6230: fix null-ptr-deref in ce6230_i2c_master_xfer() media: dvb-usb-v2: ec168: fix null-ptr-deref in ec168_i2c_xfer() media: dvb-usb: az6027: fix three null-ptr-deref in az6027_i2c_xfer() media: dvb_demux: fix a bug for the continuity counter ASoC: ssm2602: Add workaround for playback distortions ASoC: dt-bindings: Adjust #sound-dai-cells on TI's single-DAI codecs xfrm: Check if_id in inbound policy/secpath match ASoC: dwc: limit the number of overrun messages block/rnbd: replace REQ_OP_FLUSH with REQ_OP_WRITE nbd: Fix debugfs_create_dir error checking fbdev: stifb: Fix info entry in sti_struct on error path fbdev: modedb: Add 1920x1080 at 60 Hz video mode gfs2: Don't deref jdesc in evict media: rcar-vin: Select correct interrupt mode for V4L2_FIELD_ALTERNATE ARM: 9295/1: unwind:fix unwind abort for uleb128 case btrfs: abort transaction when sibling keys check fails for leaves mailbox: mailbox-test: Fix potential double-free in mbox_test_message_write() ALSA: hda: Glenfly: add HD Audio PCI IDs and HDMI Codec Vendor IDs. watchdog: menz069_wdt: fix watchdog initialisation mtd: rawnand: marvell: don't set the NAND frequency select mtd: rawnand: marvell: ensure timing values are written net: dsa: mv88e6xxx: Increase wait after reset deactivation net/sched: flower: fix possible OOB write in fl_set_geneve_opt() net/mlx5: Read embedded cpu after init bit cleared udp6: Fix race condition in udp6_sendmsg & connect net/netlink: fix NETLINK_LIST_MEMBERSHIPS length report net: sched: fix NULL pointer dereference in mq_attach net/sched: Prohibit regrafting ingress or clsact Qdiscs net/sched: Reserve TC_H_INGRESS (TC_H_CLSACT) for ingress (clsact) Qdiscs net/sched: sch_clsact: Only create under TC_H_CLSACT net/sched: sch_ingress: Only create under TC_H_INGRESS tcp: Return user_mss for TCP_MAXSEG in CLOSE/LISTEN state if user_mss set tcp: deny tcp_disconnect() when threads are waiting af_packet: do not use READ_ONCE() in packet_bind() mtd: rawnand: ingenic: fix empty stub helper definitions amd-xgbe: fix the false linkup in xgbe_phy_status af_packet: Fix data-races of pkt_sk(sk)->num. netrom: fix info-leak in nr_write_internal() net/mlx5: fw_tracer, Fix event handling dmaengine: pl330: rename _start to prevent build error iommu/amd: Don't block updates to GATag if guest mode is on iommu/rockchip: Fix unwind goto issue RDMA/bnxt_re: Fix return value of bnxt_re_process_raw_qp_pkt_rx RDMA/bnxt_re: Fix a possible memory leak dmaengine: at_xdmac: fix potential Oops in at_xdmac_prep_interleaved() dmaengine: at_xdmac: Move the free desc to the tail of the desc list dmaengine: at_xdmac: Fix race for the tx desc callback dmaengine: at_xdmac: Fix concurrency over chan's completed_cookie RDMA/efa: Fix unsupported page sizes in device RDMA/bnxt_re: Fix the page_size used during the MR creation RDMA/bnxt_re: Code refactor while populating user MRs Linux 5.10.182 netfilter: ctnetlink: Support offloaded conntrack entry deletion ipv{4,6}/raw: fix output xfrm lookup wrt protocol binder: fix UAF caused by faulty buffer cleanup bluetooth: Add cmd validity checks at the start of hci_sock_ioctl() net: phy: mscc: enable VSC8501/2 RGMII RX clock net/mlx5: Devcom, serialize devcom registration net/mlx5: devcom only supports 2 ports regulator: pca9450: Fix BUCK2 enable_mask regulator: pca9450: Convert to use regulator_set_ramp_delay_regmap regulator: Add regmap helper for ramp-delay setting power: supply: bq24190: Call power_supply_changed() after updating input current power: supply: core: Refactor power_supply_set_input_current_limit_from_supplier() power: supply: bq27xxx: After charger plug in/out wait 0.5s for things to stabilize power: supply: bq27xxx: Ensure power_supply_changed() is called on current sign changes power: supply: bq27xxx: Move bq27xxx_battery_update() down power: supply: bq27xxx: expose battery data when CI=1 power: supply: bq27xxx: Add cache parameter to bq27xxx_battery_current_and_status() power: supply: bq27xxx: make status more robust power: supply: bq27xxx: fix sign of current_now for newer ICs power: supply: bq27xxx: fix polarity of current_now x86/cpu: Drop spurious underscore from RAPTOR_LAKE #define x86/cpu: Add Raptor Lake to Intel family Linux 5.10.181 net: phy: mscc: add VSC8502 to MODULE_DEVICE_TABLE 3c589_cs: Fix an error handling path in tc589_probe() arm64: dts: imx8mn-var-som: fix PHY detection bug by adding deassert delay net/mlx5: Devcom, fix error flow in mlx5_devcom_register_device net/mlx5: Fix error message when failing to allocate device memory net/mlx5: DR, Fix crc32 calculation to work on big-endian (BE) CPUs net/mlx5e: do as little as possible in napi poll when budget is 0 forcedeth: Fix an error handling path in nv_probe() ASoC: Intel: Skylake: Fix declaration of enum skl_ch_cfg x86/show_trace_log_lvl: Ensure stack pointer is aligned, again xen/pvcalls-back: fix double frees with pvcalls_new_active_socket() coresight: Fix signedness bug in tmc_etr_buf_insert_barrier_packet() fs: fix undefined behavior in bit shift for SB_NOUSER power: supply: sbs-charger: Fix INHIBITED bit for Status reg power: supply: bq27xxx: Fix poll_interval handling and races on remove power: supply: bq27xxx: Fix I2C IRQ race on remove power: supply: bq27xxx: Fix bq27xxx_battery_update() race condition power: supply: leds: Fix blink to LED on transition ipv6: Fix out-of-bounds access in ipv6_find_tlv() bpf: Fix mask generation for 32-bit narrow loads of 64-bit fields octeontx2-pf: Fix TSOv6 offload selftests: fib_tests: mute cleanup error message net: fix skb leak in __skb_tstamp_tx() media: radio-shark: Add endpoint checks USB: sisusbvga: Add endpoint checks USB: core: Add routines for endpoint checks in old drivers udplite: Fix NULL pointer dereference in __sk_mem_raise_allocated(). net: fix stack overflow when LRO is disabled for virtual interfaces fbdev: udlfb: Fix endpoint check debugobjects: Don't wake up kswapd from fill_pool() x86/topology: Fix erroneous smp_num_siblings on Intel Hybrid platforms parisc: Fix flush_dcache_page() for usage from irq context selftests/memfd: Fix unknown type name build failure x86/mm: Avoid incomplete Global INVLPG flushes dt-binding: cdns,usb3: Fix cdns,on-chip-buff-size type btrfs: use nofs when cleaning up aborted transactions gpio: mockup: Fix mode of debugfs files parisc: Allow to reboot machine after system halt parisc: Handle kgdb breakpoints only in kernel context m68k: Move signal frame following exception on 68020/030 net: cdc_ncm: Deal with too low values of dwNtbOutMaxSize ALSA: hda/realtek: Enable headset onLenovo M70/M90 ALSA: hda: Fix unhandled register update during auto-suspend period ALSA: hda/ca0132: add quirk for EVGA X299 DARK ocfs2: Switch to security_inode_init_security() spi: fsl-cpm: Use 16 bit mode for large transfers with even size spi: fsl-spi: Re-organise transfer bits_per_word adaptation act_mirred: use the backlog for nested calls to mirred ingress net/sched: act_mirred: better wording on protection against excessive stack growth net/sched: act_mirred: refactor the handle of xmit writeback, cgroup: remove extra percpu_ref_exit() ARM: dts: stm32: fix AV96 board SAI2 pin muxing on stm32mp15 watchdog: sp5100_tco: Immediately trigger upon starting. s390/qdio: fix do_sqbs() inline assembly constraint s390/qdio: get rid of register asm serial: 8250_exar: Add support for USR298x PCI Modems serial: exar: Add support for Sealevel 7xxxC serial cards serial: 8250_exar: derive nr_ports from PCI ID for Acces I/O cards KVM: arm64: Link position-independent string routines into .hyp.text HID: wacom: add three styli to wacom_intuos_get_tool_type HID: wacom: Add new Intuos Pro Small (PTH-460) device IDs HID: wacom: Force pen out of prox if no events have been received in a while nilfs2: fix use-after-free bug of nilfs_root in nilfs_evict_inode() powerpc/64s/radix: Fix soft dirty tracking tpm/tpm_tis: Disable interrupts for more Lenovo devices ceph: force updating the msg pointer in non-split case vc_screen: reload load of struct vc_data pointer in vcs_write() to avoid UAF serial: Add support for Advantech PCI-1611U card statfs: enforce statfs[64] structure initialization can: kvaser_pciefd: Disable interrupts in probe error path can: kvaser_pciefd: Do not send EFLUSH command on TFD interrupt can: kvaser_pciefd: Clear listen-only bit if not explicitly requested can: kvaser_pciefd: Empty SRB buffer in probe can: kvaser_pciefd: Call request_irq() before enabling interrupts can: kvaser_pciefd: Set CAN_STATE_STOPPED in kvaser_pciefd_stop() can: isotp: recvmsg(): allow MSG_CMSG_COMPAT flag can: j1939: recvmsg(): allow MSG_CMSG_COMPAT flag ALSA: hda/realtek: Add quirk for 2nd ASUS GU603 ALSA: hda/realtek: Add a quirk for HP EliteDesk 805 ALSA: hda/realtek: Add quirk for Clevo L140AU ALSA: hda: Add NVIDIA codec IDs a3 through a7 to patch table ALSA: hda: Fix Oops by 9.1 surround channel names usb: typec: altmodes/displayport: fix pin_assignment_show usb: gadget: u_ether: Fix host MAC address case usb: dwc3: debugfs: Resume dwc3 before accessing registers USB: UHCI: adjust zhaoxin UHCI controllers OverCurrent bit value usb-storage: fix deadlock when a scsi command timeouts more than once USB: usbtmc: Fix direction for 0-length ioctl control messages ALSA: usb-audio: Add a sample rate workaround for Line6 Pod Go bridge: always declare tunnel functions netfilter: nft_set_rbtree: fix null deref on element insertion vlan: fix a potential uninit-value in vlan_dev_hard_start_xmit() igb: fix bit_shift to be in [1..8] range cassini: Fix a memory leak in the error handling path of cas_init_one() scsi: storvsc: Don't pass unused PFNs to Hyper-V host wifi: iwlwifi: mvm: don't trust firmware n_channels wifi: mac80211: fix min center freq offset tracing net: bcmgenet: Restore phy_stop() depending upon suspend/close net: bcmgenet: Remove phy_stop() from bcmgenet_netif_stop() tipc: check the bearer min mtu properly when setting it by netlink tipc: do not update mtu if msg_max is too small in mtu negotiation tipc: add tipc_bearer_min_mtu to calculate min mtu net/tipc: fix tipc header files for kernel-doc net: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment() drm/exynos: fix g2d_open/close helper function definitions SUNRPC: Fix trace_svc_register() call site media: netup_unidvb: fix use-after-free at del_timer() net: hns3: fix reset delay time to avoid configuration timeout net: hns3: fix sending pfc frames after reset issue erspan: get the proto with the md version for collect_md serial: arc_uart: fix of_iomap leak in `arc_serial_probe` tcp: fix possible sk_priority leak in tcp_v4_send_reset() net: Find dst with sk's xfrm policy not ctl_sk ipv4/tcp: do not use per netns ctl sockets vsock: avoid to close connected socket after the timeout ALSA: hda/realtek: Apply HP B&O top speaker profile to Pavilion 15 ALSA: firewire-digi00x: prevent potential use after free net: phy: dp83867: add w/a for packet errors seen with short cables net: fec: Better handle pm_runtime_get() failing in .remove() af_key: Reject optional tunnel/BEET mode templates in outbound policies cpupower: Make TSC read per CPU for Mperf monitor drm/msm/dpu: Remove duplicate register defines from INTF drm/msm/dp: unregister audio driver during unbind Revert "Fix XFRM-I support for nested ESP tunnels" xfrm: don't check the default policy if the policy allows the packet btrfs: fix space cache inconsistency after error loading it from disk btrfs: replace calls to btrfs_find_free_ino with btrfs_find_free_objectid btrfs: move btrfs_find_highest_objectid/btrfs_find_free_objectid to disk-io.c mfd: dln2: Fix memory leak in dln2_probe() phy: st: miphy28lp: use _poll_timeout functions for waits Input: xpad - add constants for GIP interface numbers iommu/arm-smmu-v3: Acknowledge pri/event queue overflow if any clk: tegra20: fix gcc-7 constant overflow warning iommu/arm-smmu-qcom: Limit the SMR groups to 128 RDMA/core: Fix multiple -Warray-bounds warnings recordmcount: Fix memory leaks in the uwrite function sched: Fix KCSAN noinstr violation mcb-pci: Reallocate memory region to avoid memory overlapping serial: 8250: Reinit port->pm on port specific driver unbind usb: typec: tcpm: fix multiple times discover svids error HID: wacom: generic: Set battery quirk only when we see battery data spi: spi-imx: fix MX51_ECSPI_* macros when cs > 3 HID: logitech-hidpp: Reconcile USB and Unifying serials HID: logitech-hidpp: Don't use the USB serial for USB devices staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE Bluetooth: L2CAP: fix "bad unlock balance" in l2cap_disconnect_rsp Bluetooth: hci_bcm: Fall back to getting bdaddr from EFI if not set ipvs: Update width of source for ip_vs_sync_conn_options wifi: ath11k: Fix SKB corruption in REO destination ring wifi: iwlwifi: dvm: Fix memcpy: detected field-spanning write backtrace null_blk: Always check queue mode setting from configfs wifi: iwlwifi: pcie: Fix integer overflow in iwl_write_to_user_buf wifi: iwlwifi: pcie: fix possible NULL pointer dereference samples/bpf: Fix fout leak in hbm's run_bpf_prog f2fs: fix to drop all dirty pages during umount() if cp_error is set ext4: Fix best extent lstart adjustment logic in ext4_mb_new_inode_pa() ext4: set goal start correctly in ext4_mb_normalize_request gfs2: Fix inode height consistency check scsi: message: mptlan: Fix use after free bug in mptlan_remove() due to race condition lib: cpu_rmap: Avoid use after free on rmap->obj array entries scsi: target: iscsit: Free cmds before session free net: Catch invalid index in XPS mapping net: pasemi: Fix return type of pasemi_mac_start_tx() scsi: lpfc: Prevent lpfc_debugfs_lockstat_write() buffer overflow ext2: Check block size validity during mount wifi: brcmfmac: cfg80211: Pass the PMK in binary instead of hex bpf: Annotate data races in bpf_local_storage wifi: ath: Silence memcpy run-time false positive warning drm/amd: Fix an out of bounds error in BIOS parser ACPICA: ACPICA: check null return of ACPI_ALLOCATE_ZEROED in acpi_db_display_objects ACPICA: Avoid undefined behavior: applying zero offset to null pointer drm/tegra: Avoid potential 32-bit integer overflow remoteproc: stm32_rproc: Add mutex protection for workqueue ACPI: EC: Fix oops when removing custom query handlers firmware: arm_sdei: Fix sleep from invalid context BUG memstick: r592: Fix UAF bug in r592_remove due to race condition arm64: dts: qcom: msm8996: Add missing DWC3 quirks regmap: cache: Return error in cache sync operations for REGCACHE_NONE drm/amd/display: Use DC_LOG_DC in the trasform pixel function fs: hfsplus: remove WARN_ON() from hfsplus_cat_{read,write}_inode() rcu: Protect rcu_print_task_exp_stall() ->exp_tasks access refscale: Move shutdown from wait_event() to wait_event_idle() ext4: allow ext4_get_group_info() to fail ext4: allow to find by goal if EXT4_MB_HINT_GOAL_ONLY is set ext4: add mballoc stats proc file ext4: drop s_mb_bal_lock and convert protected fields to atomic ext4: remove redundant mb_regenerate_buddy() ext4: fix lockdep warning when enabling MMP ext4: don't clear SB_RDONLY when remounting r/w until quota is re-enabled ext4: reflect error codes from ext4_multi_mount_protect() to its callers ext4: remove an unused variable warning with CONFIG_QUOTA=n fbdev: arcfb: Fix error handling in arcfb_probe() drm/i915/dp: prevent potential div-by-zero af_unix: Fix data races around sk->sk_shutdown. af_unix: Fix a data race of sk->sk_receive_queue->qlen. net: datagram: fix data-races in datagram_poll() ipvlan:Fix out-of-bounds caused by unclear skb->cb tcp: add annotations around sk->sk_shutdown accesses tcp: factor out __tcp_close() helper net: add vlan_get_protocol_and_depth() helper net: tap: check vlan with eth_type_vlan() method net: deal with most data-races in sk_wait_event() net: annotate sk->sk_err write from do_recvmmsg() netlink: annotate accesses to nlk->cb_running netfilter: conntrack: fix possible bug_on with enable_hooks=1 net: Fix load-tearing on sk->sk_stamp in sock_recv_cmsgs(). linux/dim: Do nothing if no time delta between samples net: mdio: mvusb: Fix an error handling path in mvusb_mdio_probe() ARM: 9296/1: HP Jornada 7XX: fix kernel-doc warnings drm/mipi-dsi: Set the fwnode for mipi_dsi_device driver core: add a helper to setup both the of_node and fwnode of a device Linux 5.10.180 drm/amd/display: Fix hang when skipping modeset mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock drm/exynos: move to use request_irq by IRQF_NO_AUTOEN flag printk: declare printk_deferred_{enter,safe}() in include/linux/printk.h KVM: x86: move guest_pv_has out of user_access section KVM: x86: do not report preemption if the steal time cache is stale KVM: x86: revalidate steal time cache if MSR value changes KVM: x86: do not set st->preempted when going back to user space KVM: x86: Remove obsolete disabling of page faults in kvm_arch_vcpu_put() KVM: Fix steal time asm constraints KVM: x86: Fix recording of guest steal time / preempted status KVM: x86: Ensure PV TLB flush tracepoint reflects KVM behavior drbd: correctly submit flush bio on barrier serial: 8250: Fix serial8250_tx_empty() race with DMA Tx ext4: fix invalid free tracking in ext4_xattr_move_to_block() ext4: remove a BUG_ON in ext4_mb_release_group_pa() ext4: bail out of ext4_xattr_ibody_get() fails for any reason ext4: add bounds checking in get_max_inline_xattr_value_size() ext4: fix deadlock when converting an inline directory in nojournal mode ext4: improve error recovery code paths in __ext4_remount() ext4: check iomap type only if ext4_iomap_begin() does not fail ext4: fix data races when using cached status extents ext4: avoid a potential slab-out-of-bounds in ext4_group_desc_csum ext4: fix WARNING in mb_find_extent KVM: x86: do not report a vCPU as preempted outside instruction boundaries KVM: x86: hyper-v: Avoid calling kvm_make_vcpus_request_mask() with vcpu_mask==NULL HID: wacom: insert timestamp to packed Bluetooth (BT) events HID: wacom: Set a default resolution for older tablets drm/amdgpu: disable sdma ecc irq only when sdma RAS is enabled in suspend drm/amdgpu/gfx: disable gfx9 cp_ecc_error_irq only when enabling legacy gfx ras drm/amdgpu: fix an amdgpu_irq_put() issue in gmc_v9_0_hw_fini() drm/panel: otm8009a: Set backlight parent to panel device f2fs: fix potential corruption when moving a directory ARM: dts: s5pv210: correct MIPI CSIS clock name ARM: dts: exynos: fix WM8960 clock name in Itop Elite remoteproc: st: Call of_node_put() on iteration error remoteproc: stm32: Call of_node_put() on iteration error sh: nmi_debug: fix return value of __setup handler sh: init: use OF_EARLY_FLATTREE for early init sh: mcount.S: fix build error when PRINTK is not enabled sh: math-emu: fix macro redefined warning inotify: Avoid reporting event with invalid wd platform/x86: touchscreen_dmi: Add info for the Dexp Ursus KX210i platform/x86: touchscreen_dmi: Add upside-down quirk for GDIX1002 ts on the Juno Tablet cifs: fix pcchunk length type in smb2_copychunk_range btrfs: print-tree: parent bytenr must be aligned to sector size btrfs: don't free qgroup space unless specified btrfs: fix btrfs_prev_leaf() to not return the same key twice perf symbols: Fix return incorrect build_id size in elf_read_build_id() crypto: sun8i-ss - Fix a test in sun8i_ss_setup_ivs() perf map: Delete two variable initialisations before null pointer checks in sort__sym_from_cmp() perf pmu: zfree() expects a pointer to a pointer to zero it after freeing its contents perf vendor events power9: Remove UTF-8 characters from JSON files net: enetc: check the index of the SFI rather than the handle virtio_net: suppress cpu stall when free_unused_bufs virtio_net: split free_unused_bufs() net: dsa: mt7530: fix corrupt frames using trgmii on 40 MHz XTAL MT7621 ALSA: caiaq: input: Add error handling for unsupported input methods in `snd_usb_caiaq_input_init` drm/amdgpu: add a missing lock for AMDGPU_SCHED af_packet: Don't send zero-byte data in packet_sendmsg_spkt(). ionic: remove noise from ethtool rxnfc error msg octeontx2-vf: Detach LF resources on probe cleanup octeontx2-pf: Disable packet I/O for graceful exit rxrpc: Fix hard call timeout units sfc: Fix module EEPROM reporting for QSFP modules net/sched: act_mirred: Add carrier check watchdog: dw_wdt: Fix the error handling path of dw_wdt_drv_probe() writeback: fix call of incorrect macro net: dsa: mv88e6xxx: add mv88e6321 rsvd2cpu sit: update dev->needed_headroom in ipip6_tunnel_bind_dev() net/sched: cls_api: remove block_cb from driver_list before freeing net/ncsi: clear Tx enable mode when handling a Config required AEN scsi: qedi: Fix use after free bug in qedi_remove() dm verity: fix error handling for check_at_most_once on FEC dm verity: skip redundant verity_handle_err() on I/O errors mailbox: zynqmp: Fix counts of child nodes mailbox: zynq: Switch to flexible array to simplify code crypto: ccp - Clear PSP interrupt status register before calling handler ring-buffer: Ensure proper resetting of atomic variables in ring_buffer_reset_online_cpus tty: Prevent writing chars during tcsetattr TCSADRAIN/FLUSH tty: clean include/linux/tty.h up tty: move some tty-only functions to drivers/tty/tty.h tty: move some internal tty lock enums and functions out of tty.h tty: audit: move some local functions out of tty.h tty: create internal tty.h file netfilter: nf_tables: deactivate anonymous set from preparation phase scsi: target: core: Avoid smp_processor_id() in preemptible code arm64: dts: qcom: sdm845: correct dynamic power coefficients sound/oss/dmasound: fix 'dmasound_setup' defined but not used arm64: Always load shadow stack pointer directly from the task struct perf intel-pt: Fix CYC timestamps after standalone CBR dm ioctl: fix nested locking in table_clear() to remove deadlock concern dm flakey: fix a crash with invalid table line debugobject: Ensure pool refill (again) perf auxtrace: Fix address filter entire kernel size arm64: Stash shadow stack pointer in the task struct on interrupt dm integrity: call kmem_cache_destroy() in dm_integrity_init() error path dm clone: call kmem_cache_destroy() in dm_clone_init() error path ia64: fix an addr to taddr in huge_pte_offset() s390/dasd: fix hanging blockdevice after request requeue btrfs: scrub: reject unsupported scrub flags scripts/gdb: fix lx-timerlist for Python3 afs: Fix updating of i_size with dv jump from server mfd: tqmx86: Correct board names for TQMxE39x mfd: tqmx86: Specify IO port register range more precisely mfd: tqmx86: Add support for TQMx110EB and TQMxE40x mfd: tqmx86: Remove incorrect TQMx90UC board ID mfd: tqmx86: Do not access I2C_DETECT register through io_base thermal/drivers/mediatek: Use devm_of_iomap to avoid resource leak in mtk_thermal_probe dmaengine: at_xdmac: do not enable all cyclic channels dmaengine: dw-edma: Fix to enable to issue dma request on DMA processing dmaengine: dw-edma: Fix to change for continuous transfer phy: tegra: xusb: Add missing tegra_xusb_port_unregister for usb2_port and ulpi_port pwm: mtk-disp: Disable shadow registers before setting backlight values pwm: mtk-disp: Adjust the clocks to avoid them mismatch pwm: mtk-disp: Don't check the return code of pwmchip_remove() leds: tca6507: Fix error handling of using fwnode_property_read_string dmaengine: mv_xor_v2: Fix an error code. leds: TI_LMU_COMMON: select REGMAP instead of depending on it ext4: fix use-after-free read in ext4_find_extent for bigalloc + inline openrisc: Properly store r31 to pt_regs on unhandled exceptions clocksource/drivers/davinci: Fix memory leak in davinci_timer_register when init fails RDMA/mlx5: Use correct device num_ports when modify DC SUNRPC: remove the maximum number of retries in call_bind_status RDMA/mlx5: Fix flow counter query via DEVX Input: raspberrypi-ts - fix refcount leak in rpi_ts_probe input: raspberrypi-ts: Release firmware handle when not needed firmware: raspberrypi: Introduce devm_rpi_firmware_get() NFSv4.1: Always send a RECLAIM_COMPLETE after establishing lease IB/hfi1: Fix bugs with non-PAGE_SIZE-end multi-iovec user SDMA requests IB/hfi1: Add additional usdma traces IB/hfi1: Add AIP tx traces IB/hfi1: Fix SDMA mmu_rb_node not being evicted in LRU order RDMA/srpt: Add a check for valid 'mad_agent' pointer RDMA/cm: Trace icm_send_rej event before the cm state is reset RDMA/siw: Remove namespace check from siw_netdev_event() clk: add missing of_node_put() in "assigned-clocks" property parsing power: supply: generic-adc-battery: fix unit scaling rtc: meson-vrtc: Use ktime_get_real_ts64() to get the current time RDMA/mlx4: Prevent shift wrapping in set_user_sq_size() rtc: omap: include header for omap_rtc_power_off_program prototype workqueue: Fix hung time report of worker pools RDMA/rdmavt: Delete unnecessary NULL check workqueue: Rename "delayed" (delayed by active management) to "inactive" RDMA/siw: Fix potential page_array out of range access clk: at91: clk-sam9x60-pll: fix return value check perf/core: Fix hardlockup failure caused by perf throttle powerpc/rtas: use memmove for potentially overlapping buffer copy macintosh: via-pmu-led: requires ATA to be set powerpc/sysdev/tsi108: fix resource printk format warnings powerpc/wii: fix resource printk format warnings powerpc/mpc512x: fix resource printk format warning macintosh/windfarm_smu_sat: Add missing of_node_put() spmi: Add a check for remove callback when removing a SPMI driver staging: rtl8192e: Fix W_DISABLE# does not work after stop/start serial: 8250: Add missing wakeup event reporting uapi/linux/const.h: prefer ISO-friendly __typeof__ i2c: cadence: cdns_i2c_master_xfer(): Fix runtime PM leak on error path tty: serial: fsl_lpuart: adjust buffer length to the intended size firmware: stratix10-svc: Fix an NULL vs IS_ERR() bug in probe usb: mtu3: fix kernel panic at qmu transfer done irq handler usb: chipidea: fix missing goto in `ci_hdrc_probe` usb: gadget: tegra-xudc: Fix crash in vbus_draw sh: sq: Fix incorrect element size for allocating bitmap buffer spi: cadence-quadspi: fix suspend-resume implementations ASoC: fsl_mqs: move of_node_put() to the correct location coresight: etm_pmu: Set the module field scripts/gdb: bail early if there are no generic PD scripts/gdb: bail early if there are no clocks ia64: salinfo: placate defined-but-not-used warning ia64: mm/contig: fix section mismatch warning/error PCI/EDR: Clear Device Status after EDR error recovery of: Fix modalias string generation vmci_host: fix a race condition in vmci_host_poll() causing GPF spi: fsl-spi: Fix CPM/QE mode Litte Endian spi: qup: Don't skip cleanup in remove's error path linux/vt_buffer.h: allow either builtin or modular for macros ASoC: es8316: Handle optional IRQ assignment ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ PCI: imx6: Install the fault handler only on compatible match usb: gadget: udc: renesas_usb3: Fix use after free bug in renesas_usb3_remove due to race condition spi: imx: Don't skip cleanup in remove's error path spi: spi-imx: using pm_runtime_resume_and_get instead of pm_runtime_get_sync iio: light: max44009: add missing OF device matching fpga: bridge: fix kernel-doc parameter description usb: dwc3: gadget: Change condition for processing suspend event usb: host: xhci-rcar: remove leftover quirk handling pstore: Revert pmsg_lock back to a normal mutex ipmi: ASPEED_BT_IPMI_BMC: select REGMAP_MMIO instead of depending on it tcp/udp: Fix memleaks of sk and zerocopy skbs with TX timestamp. net: amd: Fix link leak when verifying config failed netlink: Use copy_to_user() for optval in netlink_getsockopt(). Revert "Bluetooth: btsdio: fix use after free bug in btsdio_remove due to unfinished work" ipv4: Fix potential uninit variable access bug in __ip_make_skb() net/sched: sch_fq: fix integer overflow of "credit" netfilter: nf_tables: don't write table validation state without mutex bpf: Don't EFAULT for getsockopt with optval=NULL ixgbe: Enable setting RSS table to default values ixgbe: Allow flow hash to be set via ethtool wifi: iwlwifi: fw: fix memory leak in debugfs wifi: iwlwifi: mvm: check firmware response size wifi: iwlwifi: make the loop for card preparation effective jdb2: Don't refuse invalidation of already invalidated buffers wifi: iwlwifi: fw: move memset before early return wifi: iwlwifi: yoyo: Fix possible division by zero md/raid10: fix memleak of md thread md/raid10: fix memleak for 'conf->bio_split' md/raid10: fix leak of 'r10bio->remaining' for recovery bpf, sockmap: Revert buggy deadlock fix in the sockhash and sockmap nvme-fcloop: fix "inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage" nvme: fix async event trace event nvme: handle the persistent internal error AER bpf, sockmap: fix deadlocks in the sockhash and sockmap net: ethernet: stmmac: dwmac-rk: fix optional phy regulator handling scsi: lpfc: Fix ioremap issues in lpfc_sli4_pci_mem_setup() f2fs: fix to avoid use-after-free for cached IPU bio xsk: Fix unaligned descriptor validation crypto: drbg - Only fail when jent is unavailable in FIPS mode crypto: drbg - make drbg_prepare_hrng() handle jent instantiation errors bpftool: Fix bug for long instructions in program CFG dumps selftests/bpf: Wait for receive in cg_storage_multi test net: qrtr: correct types of trace event parameters wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_reg() wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_rfreg() crypto: sa2ul - Select CRYPTO_DES crypto: caam - Clear some memory in instantiate_rng f2fs: compress: fix to call f2fs_wait_on_page_writeback() in f2fs_write_raw_pages() f2fs: apply zone capacity to all zone type f2fs: enforce single zone capacity f2fs: handle dqget error in f2fs_transfer_project_quota() scsi: megaraid: Fix mega_cmd_done() CMDID_INT_CMDS scsi: target: iscsit: Fix TAS handling during conn cleanup scsi: target: Fix multiple LUN_RESET handling scsi: target: Make state_list per CPU scsi: target: Rename cmd.bad_sector to cmd.sense_info scsi: target: Rename struct sense_info to sense_detail net/packet: convert po->auxdata to an atomic flag net/packet: convert po->origdev to an atomic flag net/packet: annotate accesses to po->xmit vlan: partially enable SIOCSHWTSTAMP in container bpf: Remove misleading spec_v1 check on var-offset stack read scm: fix MSG_CTRUNC setting condition for SO_PASSSEC bpf: fix precision propagation verbose logging bpf: take into account liveness when propagating precision wifi: rtw88: mac: Return the original error from rtw_mac_power_switch() wifi: rtw88: mac: Return the original error from rtw_pwr_seq_parser() tools: bpftool: Remove invalid \' json escape wifi: ath6kl: reduce WARN to dev_dbg() in callback wifi: ath5k: fix an off by one check in ath5k_eeprom_read_freq_list() wifi: ath9k: hif_usb: fix memory leak of remain_skbs wifi: ath6kl: minor fix for allocation size tick/common: Align tick period with the HZ tick. tick: Get rid of tick_period tick/sched: Optimize tick_do_update_jiffies64() further tick/sched: Reduce seqcount held scope in tick_do_update_jiffies64() tick/sched: Use tick_next_period for lockless quick check drm/i915: Make intel_get_crtc_new_encoder() less oopsy debugobject: Prevent init race with static objects arm64: kgdb: Set PSTATE.SS to 1 to re-enable single-step x86/ioapic: Don't return 0 from arch_dynirq_lower_bound() regulator: stm32-pwr: fix of_iomap leak media: venus: dec: Fix handling of the start cmd media: venus: vdec: Handle DRC after drain media: venus: preserve DRC state across seeks media: venus: vdec: Make decoder return LAST flag for sufficient event media: venus: vdec: Fix non reliable setting of LAST flag media: rc: gpio-ir-recv: Fix support for wake-up media: rcar_fdp1: Fix refcount leak in probe and remove function media: rcar_fdp1: Fix the correct variable assignments media: rcar_fdp1: Make use of the helper function devm_platform_ioremap_resource() media: rcar_fdp1: fix pm_runtime_get_sync() usage count media: rcar_fdp1: simplify error check logic at fdp_open() media: saa7134: fix use after free bug in saa7134_finidev due to race condition media: dm1105: Fix use after free bug in dm1105_remove due to race condition media: rkvdec: fix use after free bug in rkvdec_remove x86/apic: Fix atomic update of offset in reserve_eilvt_offset() ACPI: processor: Fix evaluating _PDC method when running as Xen dom0 regulator: core: Avoid lockdep reports when resolving supplies drm: msm: adreno: Disable preemption on Adreno 510 regulator: core: Consistently set mutex_owner when using ww_mutex_lock_slow() drm/lima/lima_drv: Add missing unwind goto in lima_pdev_probe() ARM: dts: gta04: fix excess dma channel usage mmc: sdhci-of-esdhc: fix quirk to ignore command inhibit for data drm/msm/adreno: drop bogus pm_runtime_set_active() drm/msm/adreno: Defer enabling runpm until hw_init() media: max9286: Free control handler drm/bridge: adv7533: Fix adv7533_mode_valid for adv7533 and adv7535 firmware: qcom_scm: Clear download bit during reboot media: bdisp: Add missing check for create_workqueue x86/MCE/AMD: Use an u64 for bank_map ARM: dts: qcom: ipq8064: Fix the PCI I/O port range ARM: dts: qcom: ipq8064: reduce pci IO size to 64K ARM: dts: qcom: ipq4019: Fix the PCI I/O port range arm64: dts: qcom: msm8996: Fix the PCI I/O port range arm64: dts: qcom: ipq8074: Fix the PCI I/O port range arm64: dts: qcom: msm8998: Fix the PCI I/O port range arm64: dts: qcom: sdm845: Fix the PCI I/O port range arm64: dts: qcom: sdm845: correct dynamic power coefficients arm64: dts: qcom: msm8998: Fix stm-stimulus-base reg name EDAC/skx: Fix overflows on the DRAM row address mapping arrays drm/msm/disp/dpu: check for crtc enable rather than crtc active to release shared resources arm64: dts: renesas: r8a774c0: Remove bogus voltages from OPP table arm64: dts: renesas: r8a77990: Remove bogus voltages from OPP table soc: ti: pm33xx: Fix refcount leak in am33xx_pm_probe soc: ti: pm33xx: Enable basic PM runtime support for genpd drm/probe-helper: Cancel previous job before starting new one drm/vgem: add missing mutex_destroy drm/rockchip: Drop unbalanced obj unref erofs: fix potential overflow calculating xattr_isize erofs: stop parsing non-compact HEAD index if clusterofs is invalid tpm, tpm_tis: Claim locality when interrupts are reenabled on resume tpm, tpm: Implement usage counter for locality tpm, tpm_tis: Claim locality before writing interrupt registers tpm, tpm_tis: Disable interrupts if tpm_tis_probe_irq() failed tpm, tpm_tis: Claim locality before writing TPM_INT_ENABLE register tpm, tpm_tis: Do not skip reset of original interrupt vector selinux: ensure av_permissions.h is built when needed selinux: fix Makefile dependencies of flask.h selftests/resctrl: Check for return value after write_schemata() selftests/resctrl: Return NULL if malloc_and_init_memory() did not alloc mem wifi: rtl8xxxu: RTL8192EU always needs full init rcu: Fix missing TICK_DEP_MASK_RCU_EXP dependency check mailbox: zynqmp: Fix typo in IPI documentation clk: rockchip: rk3399: allow clk_cifout to force clk_cifout_src to reparent mailbox: zynqmp: Fix IPI isr handling md/raid10: fix null-ptr-deref in raid10_sync_request nilfs2: fix infinite loop in nilfs_mdt_get_block() nilfs2: do not write dirty data after degenerating to read-only parisc: Fix argument pointer in real64_call_asm() sound/oss/dmasound: fix build when drivers are mixed =y/=m ubifs: Free memory for tmpfile name ubi: Fix return value overwrite issue in try_write_vid_and_data() ubifs: Fix memleak when insert_old_idx() failed Revert "ubifs: dirty_cow_znode: Fix memleak in error handling path" iommu/amd: Fix "Guest Virtual APIC Table Root Pointer" configuration in IRTE i2c: omap: Fix standard mode false ACK readings writeback, cgroup: fix null-ptr-deref write in bdi_split_work_to_wbs relayfs: fix out-of-bounds access in relay_file_read KVM: nVMX: Emulate NOPs in L2, and PAUSE if it's not intercepted reiserfs: Add security prefix to xattr name in reiserfs_security_write() rcu: Avoid stack overflow due to __rcu_irq_enter_check_tick() being kprobe-ed crypto: safexcel - Cleanup ring IRQ workqueues on load failure MIPS: fw: Allow firmware to pass a empty env crypto: api - Demote BUG_ON() in crypto_unregister_alg() to a WARN_ON() ring-buffer: Sync IRQ works before buffer destruction pwm: meson: Fix g12a ao clk81 name pwm: meson: Fix axg ao mux parents kheaders: Use array declaration instead of char ipmi: fix SSIF not responding under certain cond. ipmi:ssif: Add send_retries increment tick/nohz: Fix cpu_is_hotpluggable() by checking with nohz subsystem xhci: fix debugfs register accesses while suspended staging: iio: resolver: ads1210: fix config mode ext4: use ext4_journal_start/stop for fast commit transactions blk-crypto: make blk_crypto_evict_key() more robust blk-crypto: make blk_crypto_evict_key() return void blk-mq: release crypto keyslot before reporting I/O complete perf sched: Cast PTHREAD_STACK_MIN to int as it may turn into sysconf(__SC_THREAD_STACK_MIN_VALUE) posix-cpu-timers: Implement the missing timer_wait_running callback hwmon: (adt7475) Use device_property APIs when configuring polarity hwmon: (k10temp) Check range scale when CUR_TEMP register is read-write USB: dwc3: fix runtime pm imbalance on unbind USB: dwc3: fix runtime pm imbalance on probe errors PCI: qcom: Fix the incorrect register usage in v2.7.0 config PCI: pciehp: Fix AB-BA deadlock between reset_lock and device_lock wireguard: timers: cast enum limits members to int in prints asm-generic/io.h: suppress endianness warnings for readq() and writeq() ASoC: Intel: bytcr_rt5640: Add quirk for the Acer Iconia One 7 B1-750 iio: adc: palmas_gpadc: fix NULL dereference on rmmod driver core: Don't require dynamic_debug for initcall_debug probe timing USB: serial: option: add UNISOC vendor and TOZED LT70C product x86/fpu: Prevent FPU state corruption bluetooth: Perform careful capability checks in hci_sock_ioctl() drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var wifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies() KVM: arm64: Fix buffer overflow in kvm_arm_set_fw_reg() counter: 104-quad-8: Fix race condition between FLAG and CNTR reads seccomp: Move copy_seccomp() to no failure path. Revert "ASoC: hdac_hdmi: use set_stream() instead of set_tdm_slots()" ANDROID: preserve CRC for xhci symbols Revert "ipv4: shrink netns_ipv4 with sysctl conversions" Revert "tcp: convert elligible sysctls to u8" Revert "tcp: restrict net.ipv4.tcp_app_win" Linux 5.10.179 ASN.1: Fix check for strdup() success ASoC: fsl_asrc_dma: fix potential null-ptr-deref iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger() pwm: hibvt: Explicitly set .polarity in .get_state() pwm: iqs620a: Explicitly set .polarity in .get_state() pwm: meson: Explicitly set .polarity in .get_state() sctp: Call inet6_destroy_sock() via sk->sk_destruct(). dccp: Call inet6_destroy_sock() via sk->sk_destruct(). inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy(). tcp/udp: Call inet6_destroy_sock() in IPv6 sk->sk_destruct(). udp: Call inet6_destroy_sock() in setsockopt(IPV6_ADDRFORM). ext4: fix use-after-free in ext4_xattr_set_entry ext4: remove duplicate definition of ext4_xattr_ibody_inline_set() Revert "ext4: fix use-after-free in ext4_xattr_set_entry" fuse: fix deadlock between atomic O_TRUNC and page invalidation fuse: always revalidate rename target dentry fuse: fix attr version comparison in fuse_read_update_size() fuse: check s_root when destroying sb virtiofs: split requests that exceed virtqueue size virtiofs: clean up error handling in virtio_fs_get_tree() purgatory: fix disabling debug info docs: futex: Fix kernel-doc references after code split-up preparation MIPS: Define RUNTIME_DISCARD_EXIT in LD script sched/fair: Fixes for capacity inversion detection sched/uclamp: Fix a uninitialized variable warnings sched/fair: Consider capacity inversion in util_fits_cpu() sched/fair: Detect capacity inversion sched/uclamp: Cater for uclamp in find_energy_efficient_cpu()'s early exit condition sched/uclamp: Make cpu_overutilized() use util_fits_cpu() sched/uclamp: Make asym_fits_capacity() use util_fits_cpu() sched/uclamp: Make select_idle_capacity() use util_fits_cpu() sched/uclamp: Fix fits_capacity() check in feec() sched/uclamp: Make task_fits_capacity() use util_fits_cpu() mm/khugepaged: check again on anon uffd-wp during isolation mmc: sdhci_am654: Set HIGH_SPEED_ENA for SDR12 and SDR25 kernel/sys.c: fix and improve control flow in __sys_setres[ug]id() memstick: fix memory leak if card device is never registered nilfs2: initialize unused bytes in segment summary blocks iio: light: tsl2772: fix reading proximity-diodes from device tree xfs: drop submit side trans alloc for append ioends powerpc/doc: Fix htmldocs errors xen/netback: use same error messages for same errors nvme-tcp: fix a possible UAF when failing to allocate an io queue s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling net: dsa: b53: mmap: add phy ops scsi: core: Improve scsi_vpd_inquiry() checks scsi: megaraid_sas: Fix fw_crash_buffer_show() selftests: sigaltstack: fix -Wuninitialized Input: i8042 - add quirk for Fujitsu Lifebook A574/H f2fs: Fix f2fs_truncate_partial_nodes ftrace event e1000e: Disable TSO on i219-LM card to increase speed bpf: Fix incorrect verifier pruning due to missing register precision taints mlxsw: pci: Fix possible crash during initialization net: rpl: fix rpl header size calculation mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next() i40e: fix i40e_setup_misc_vector() error handling i40e: fix accessing vsi->active_filters without holding lock netfilter: nf_tables: fix ifdef to also consider nf_tables=m sfc: Fix use-after-free due to selftest_work sfc: Split STATE_READY in to STATE_NET_DOWN and STATE_NET_UP. virtio_net: bugfix overflow inside xdp_linearize_page() net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg regulator: fan53555: Explicitly include bits header netfilter: br_netfilter: fix recent physdev match breakage arm64: dts: imx8mm-evk: correct pmic clock source arm64: dts: meson-g12-common: specify full DMC range arm64: dts: qcom: ipq8074-hk01: enable QMP device, not the PHY node ARM: dts: rockchip: fix a typo error for rk3288 spdif node Linux 5.10.178 sysctl: Fix data-races in proc_dou8vec_minmax(). panic, kexec: make __crash_kexec() NMI safe kexec: turn all kexec_mutex acquisitions into trylocks kexec: move locking into do_kexec_load riscv: Handle zicsr/zifencei issues between clang and binutils kbuild: check CONFIG_AS_IS_LLVM instead of LLVM_IAS kbuild: Switch to 'f' variants of integrated assembler flag kbuild: check the minimum assembler version in Kconfig coresight-etm4: Fix for() loop drvdata->nr_addr_cmp range bug watchdog: sbsa_wdog: Make sure the timeout programming is within the limits i2c: ocores: generate stop condition after timeout in polling mode x86/rtc: Remove __init for runtime functions sched/fair: Fix imbalance overflow sched/fair: Move calculate of avg_load to a better location powerpc/papr_scm: Update the NUMA distance table for the target node powerpc/pseries: Add support for FORM2 associativity powerpc/pseries: Add a helper for form1 cpu distance powerpc/pseries: Consolidate different NUMA distance update code paths powerpc/pseries: Rename TYPE1_AFFINITY to FORM1_AFFINITY powerpc/pseries: rename min_common_depth to primary_domain_index ubi: Fix deadlock caused by recursively holding work_sem mtd: ubi: wl: Fix a couple of kernel-doc issues ubi: Fix failure attaching when vid_hdr offset equals to (sub)page size cgroup/cpuset: Wake up cpuset_attach_wq tasks in cpuset_cancel_attach() x86/PCI: Add quirk for AMD XHCI controller that loses MSI-X state in D3hot scsi: ses: Handle enclosure with just a primary component gracefully net: sfp: initialize sfp->i2c_block_size at sfp allocation riscv: add icache flush for nommu sigreturn trampoline asymmetric_keys: log on fatal failures in PE/pkcs7 verify_pefile: relax wrapper length check drm: panel-orientation-quirks: Add quirk for Lenovo Yoga Book X90F efi: sysfb_efi: Add quirk for Lenovo Yoga Book X91F/L i2c: imx-lpi2c: clean rx/tx buffers upon new message wifi: mwifiex: mark OF related data as maybe unused power: supply: cros_usbpd: reclassify "default case!" as debug libbpf: Fix single-line struct definition output in btf_dump net: macb: fix a memory corruption in extended buffer descriptor mode udp6: fix potential access to stale information RDMA/core: Fix GID entry ref leak when create_ah fails sctp: fix a potential overflow in sctp_ifwdtsn_skip net: qrtr: Fix an uninit variable access bug in qrtr_tx_resume() qlcnic: check pci_reset_function result drm/armada: Fix a potential double free in an error handling path tcp: restrict net.ipv4.tcp_app_win tcp: convert elligible sysctls to u8 ipv4: shrink netns_ipv4 with sysctl conversions sysctl: add proc_dou8vec_minmax() niu: Fix missing unwind goto in niu_alloc_channels() 9p/xen : Fix use after free bug in xen_9pfs_front_remove due to race condition RDMA/cma: Allow UD qp_type to join multicast only IB/mlx5: Add support for 400G_8X lane speed IB/mlx5: Add support for NDR link speed clk: sprd: set max_register according to mapping range mtd: rawnand: stm32_fmc2: use timings.mode instead of checking tRC_min mtd: rawnand: stm32_fmc2: remove unsupported EDO mode mtd: rawnand: meson: fix bitmask for length in command word mtdblock: tolerate corrected bit-flips fbmem: Reject FB_ACTIVATE_KD_TEXT from userspace btrfs: fix fast csum implementation detection btrfs: print checksum type and implementation at mount time Bluetooth: Fix race condition in hidp_session_thread Bluetooth: L2CAP: Fix use-after-free in l2cap_disconnect_{req,rsp} ALSA: hda/sigmatel: fix S/PDIF out on Intel D*45* motherboards ALSA: firewire-tascam: add missing unwind goto in snd_tscm_stream_start_duplex() ALSA: i2c/cs8427: fix iec958 mixer control deactivation ALSA: hda/sigmatel: add pin overrides for Intel DP45SG motherboard ALSA: emu10k1: fix capture interrupt handler unlinking Revert "pinctrl: amd: Disable and mask interrupts on resume" bpftool: Print newline before '}' for struct with padding only fields ocfs2: fix freeing uninitialized resource on ocfs2_dlm_shutdown Revert "media: ti: cal: fix possible memory leak in cal_ctx_create()" drm/bridge: lt9611: Fix PLL being unable to lock selftests: intel_pstate: ftime() is deprecated mm/swap: fix swap_info_struct race between swapoff and get_swap_pages() ring-buffer: Fix race while reader and writer are on the same page drm/nouveau/disp: Support more modes by checking with lower bpc drm/panfrost: Fix the panfrost_mmu_map_fault_addr() error path ASoC: hdac_hdmi: use set_stream() instead of set_tdm_slots() tracing: Free error logs of tracing instances can: isotp: isotp_ops: fix poll() to not report false EPOLLOUT events can: j1939: j1939_tp_tx_dat_new(): fix out-of-bounds memory access ftrace: Fix issue that 'direct->addr' not restored in modify_ftrace_direct() ftrace: Mark get_lock_parent_ip() __always_inline perf/core: Fix the same task check in perf_event_set_output scsi: iscsi_tcp: Check that sock is valid before iscsi_set_param() iio: adc: ad7791: fix IRQ flags ALSA: hda/realtek: Add quirk for Clevo X370SNW dt-bindings: serial: renesas,scif: Fix 4th IRQ for 4-IRQ SCIFs nilfs2: fix sysfs interface lifetime nilfs2: fix potential UAF of struct nilfs_sc_info in nilfs_segctor_thread() tty: serial: fsl_lpuart: avoid checking for transfer complete when UARTCTRL_SBK is asserted in lpuart32_tx_empty tty: serial: sh-sci: Fix Rx on RZ/G2L SCI tty: serial: sh-sci: Fix transmit end interrupt handler iio: light: cm32181: Unregister second I2C client if present iio: dac: cio-dac: Fix max DAC write value check for 12-bit iio: adc: ti-ads7950: Set `can_sleep` flag for GPIO chip USB: serial: option: add Quectel RM500U-CN modem USB: serial: option: add Telit FE990 compositions usb: typec: altmodes/displayport: Fix configure initial pin assignment USB: serial: cp210x: add Silicon Labs IFS-USB-DATACABLE IDs xhci: also avoid the XHCI_ZERO_64B_REGS quirk with a passthrough iommu usb: xhci: tegra: fix sleep in atomic call NFSD: callback request does not use correct credential for AUTH_SYS sunrpc: only free unix grouplist after RCU settles net: stmmac: fix up RX flow hash indirection table when setting channels net: ethernet: ti: am65-cpsw: Fix mdio cleanup in probe gpio: davinci: Add irq chip flag to skip set wake ipv6: Fix an uninit variable access bug in __ip6_make_skb() net: qrtr: Do not do DEL_SERVER broadcast after DEL_CLIENT sctp: check send stream number after wait_for_sndbuf net: don't let netpoll invoke NAPI if in xmit context icmp: guard against too small mtu net: qrtr: Fix a refcount bug in qrtr_recvmsg() net: qrtr: combine nameservice into main module wifi: mac80211: fix invalid drv_sta_pre_rcu_remove calls for non-uploaded sta KVM: s390: pv: fix external interruption loop not always detected pwm: sprd: Explicitly set .polarity in .get_state() pwm: cros-ec: Explicitly set .polarity in .get_state() Drivers: vmbus: Check for channel allocation before looking up relids gpio: GPIO_REGMAP: select REGMAP instead of depending on it Conflicts: Documentation/devicetree/bindings Documentation/devicetree/bindings/serial/renesas,scif.yaml Documentation/devicetree/bindings/sound/tas2562.yaml Documentation/devicetree/bindings/sound/tas2764.yaml Documentation/devicetree/bindings/sound/tas2770.yaml Documentation/devicetree/bindings/usb/cdns,usb3.yaml drivers/firmware/qcom_scm.c net/qrtr/af_qrtr.c net/qrtr/ns.c Change-Id: Iae4be21654d43667cdf433135c297352d09190bd Signed-off-by: Srinivasarao Pathipati <quic_c_spathi@quicinc.com>
This commit is contained in:
commit
c38dc90458
@ -898,10 +898,6 @@
|
|||||||
|
|
||||||
debugpat [X86] Enable PAT debugging
|
debugpat [X86] Enable PAT debugging
|
||||||
|
|
||||||
decnet.addr= [HW,NET]
|
|
||||||
Format: <area>[,<node>]
|
|
||||||
See also Documentation/networking/decnet.rst.
|
|
||||||
|
|
||||||
default_hugepagesz=
|
default_hugepagesz=
|
||||||
[HW] The size of the default HugeTLB page. This is
|
[HW] The size of the default HugeTLB page. This is
|
||||||
the size represented by the legacy /proc/ hugepages
|
the size represented by the legacy /proc/ hugepages
|
||||||
|
@ -34,13 +34,14 @@ Table : Subdirectories in /proc/sys/net
|
|||||||
========= =================== = ========== ==================
|
========= =================== = ========== ==================
|
||||||
Directory Content Directory Content
|
Directory Content Directory Content
|
||||||
========= =================== = ========== ==================
|
========= =================== = ========== ==================
|
||||||
core General parameter appletalk Appletalk protocol
|
802 E802 protocol mptcp Multipath TCP
|
||||||
unix Unix domain sockets netrom NET/ROM
|
appletalk Appletalk protocol netfilter Network Filter
|
||||||
802 E802 protocol ax25 AX25
|
ax25 AX25 netrom NET/ROM
|
||||||
ethernet Ethernet protocol rose X.25 PLP layer
|
bridge Bridging rose X.25 PLP layer
|
||||||
ipv4 IP version 4 x25 X.25 protocol
|
core General parameter tipc TIPC
|
||||||
bridge Bridging decnet DEC net
|
ethernet Ethernet protocol unix Unix domain sockets
|
||||||
ipv6 IP version 6 tipc TIPC
|
ipv4 IP version 4 x25 X.25 protocol
|
||||||
|
ipv6 IP version 6
|
||||||
========= =================== = ========== ==================
|
========= =================== = ========== ==================
|
||||||
|
|
||||||
1. /proc/sys/net/core - Network core options
|
1. /proc/sys/net/core - Network core options
|
||||||
|
@ -113,6 +113,9 @@ stable kernels.
|
|||||||
| ARM | MMU-500 | #841119,826419 | N/A |
|
| ARM | MMU-500 | #841119,826419 | N/A |
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| ARM | GIC-700 | #2941627 | ARM64_ERRATUM_2941627 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
| Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_845719 |
|
| Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_845719 |
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
| Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_843419 |
|
| Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_843419 |
|
||||||
|
@ -24,11 +24,8 @@ String Conversions
|
|||||||
.. kernel-doc:: lib/vsprintf.c
|
.. kernel-doc:: lib/vsprintf.c
|
||||||
:export:
|
:export:
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/kernel.h
|
.. kernel-doc:: include/linux/kstrtox.h
|
||||||
:functions: kstrtol
|
:functions: kstrtol kstrtoul
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/kernel.h
|
|
||||||
:functions: kstrtoul
|
|
||||||
|
|
||||||
.. kernel-doc:: lib/kstrtox.c
|
.. kernel-doc:: lib/kstrtox.c
|
||||||
:export:
|
:export:
|
||||||
|
@ -1358,7 +1358,7 @@ Mutex API reference
|
|||||||
Futex API reference
|
Futex API reference
|
||||||
===================
|
===================
|
||||||
|
|
||||||
.. kernel-doc:: kernel/futex.c
|
.. kernel-doc:: kernel/futex/core.c
|
||||||
:internal:
|
:internal:
|
||||||
|
|
||||||
Further reading
|
Further reading
|
||||||
|
@ -1,243 +0,0 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0
|
|
||||||
|
|
||||||
=========================================
|
|
||||||
Linux DECnet Networking Layer Information
|
|
||||||
=========================================
|
|
||||||
|
|
||||||
1. Other documentation....
|
|
||||||
==========================
|
|
||||||
|
|
||||||
- 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:
|
|
||||||
|
|
||||||
- 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>
|
|
||||||
|
|
@ -46,7 +46,6 @@ Contents:
|
|||||||
cdc_mbim
|
cdc_mbim
|
||||||
dccp
|
dccp
|
||||||
dctcp
|
dctcp
|
||||||
decnet
|
|
||||||
dns_resolver
|
dns_resolver
|
||||||
driver
|
driver
|
||||||
eql
|
eql
|
||||||
|
105
Documentation/powerpc/associativity.rst
Normal file
105
Documentation/powerpc/associativity.rst
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
============================
|
||||||
|
NUMA resource associativity
|
||||||
|
============================
|
||||||
|
|
||||||
|
Associativity represents the groupings of the various platform resources into
|
||||||
|
domains of substantially similar mean performance relative to resources outside
|
||||||
|
of that domain. Resources subsets of a given domain that exhibit better
|
||||||
|
performance relative to each other than relative to other resources subsets
|
||||||
|
are represented as being members of a sub-grouping domain. This performance
|
||||||
|
characteristic is presented in terms of NUMA node distance within the Linux kernel.
|
||||||
|
From the platform view, these groups are also referred to as domains.
|
||||||
|
|
||||||
|
PAPR interface currently supports different ways of communicating these resource
|
||||||
|
grouping details to the OS. These are referred to as Form 0, Form 1 and Form2
|
||||||
|
associativity grouping. Form 0 is the oldest format and is now considered deprecated.
|
||||||
|
|
||||||
|
Hypervisor indicates the type/form of associativity used via "ibm,architecture-vec-5 property".
|
||||||
|
Bit 0 of byte 5 in the "ibm,architecture-vec-5" property indicates usage of Form 0 or Form 1.
|
||||||
|
A value of 1 indicates the usage of Form 1 associativity. For Form 2 associativity
|
||||||
|
bit 2 of byte 5 in the "ibm,architecture-vec-5" property is used.
|
||||||
|
|
||||||
|
Form 0
|
||||||
|
------
|
||||||
|
Form 0 associativity supports only two NUMA distances (LOCAL and REMOTE).
|
||||||
|
|
||||||
|
Form 1
|
||||||
|
------
|
||||||
|
With Form 1 a combination of ibm,associativity-reference-points, and ibm,associativity
|
||||||
|
device tree properties are used to determine the NUMA distance between resource groups/domains.
|
||||||
|
|
||||||
|
The “ibm,associativity” property contains a list of one or more numbers (domainID)
|
||||||
|
representing the resource’s platform grouping domains.
|
||||||
|
|
||||||
|
The “ibm,associativity-reference-points” property contains a list of one or more numbers
|
||||||
|
(domainID index) that represents the 1 based ordinal in the associativity lists.
|
||||||
|
The list of domainID indexes represents an increasing hierarchy of resource grouping.
|
||||||
|
|
||||||
|
ex:
|
||||||
|
{ primary domainID index, secondary domainID index, tertiary domainID index.. }
|
||||||
|
|
||||||
|
Linux kernel uses the domainID at the primary domainID index as the NUMA node id.
|
||||||
|
Linux kernel computes NUMA distance between two domains by recursively comparing
|
||||||
|
if they belong to the same higher-level domains. For mismatch at every higher
|
||||||
|
level of the resource group, the kernel doubles the NUMA distance between the
|
||||||
|
comparing domains.
|
||||||
|
|
||||||
|
Form 2
|
||||||
|
-------
|
||||||
|
Form 2 associativity format adds separate device tree properties representing NUMA node distance
|
||||||
|
thereby making the node distance computation flexible. Form 2 also allows flexible primary
|
||||||
|
domain numbering. With numa distance computation now detached from the index value in
|
||||||
|
"ibm,associativity-reference-points" property, Form 2 allows a large number of primary domain
|
||||||
|
ids at the same domainID index representing resource groups of different performance/latency
|
||||||
|
characteristics.
|
||||||
|
|
||||||
|
Hypervisor indicates the usage of FORM2 associativity using bit 2 of byte 5 in the
|
||||||
|
"ibm,architecture-vec-5" property.
|
||||||
|
|
||||||
|
"ibm,numa-lookup-index-table" property contains a list of one or more numbers representing
|
||||||
|
the domainIDs present in the system. The offset of the domainID in this property is
|
||||||
|
used as an index while computing numa distance information via "ibm,numa-distance-table".
|
||||||
|
|
||||||
|
prop-encoded-array: The number N of the domainIDs encoded as with encode-int, followed by
|
||||||
|
N domainID encoded as with encode-int
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
"ibm,numa-lookup-index-table" = {4, 0, 8, 250, 252}. The offset of domainID 8 (2) is used when
|
||||||
|
computing the distance of domain 8 from other domains present in the system. For the rest of
|
||||||
|
this document, this offset will be referred to as domain distance offset.
|
||||||
|
|
||||||
|
"ibm,numa-distance-table" property contains a list of one or more numbers representing the NUMA
|
||||||
|
distance between resource groups/domains present in the system.
|
||||||
|
|
||||||
|
prop-encoded-array: The number N of the distance values encoded as with encode-int, followed by
|
||||||
|
N distance values encoded as with encode-bytes. The max distance value we could encode is 255.
|
||||||
|
The number N must be equal to the square of m where m is the number of domainIDs in the
|
||||||
|
numa-lookup-index-table.
|
||||||
|
|
||||||
|
For ex:
|
||||||
|
ibm,numa-lookup-index-table = <3 0 8 40>;
|
||||||
|
ibm,numa-distace-table = <9>, /bits/ 8 < 10 20 80 20 10 160 80 160 10>;
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
| 0 8 40
|
||||||
|
--|------------
|
||||||
|
|
|
||||||
|
0 | 10 20 80
|
||||||
|
|
|
||||||
|
8 | 20 10 160
|
||||||
|
|
|
||||||
|
40| 80 160 10
|
||||||
|
|
||||||
|
A possible "ibm,associativity" property for resources in node 0, 8 and 40
|
||||||
|
|
||||||
|
{ 3, 6, 7, 0 }
|
||||||
|
{ 3, 6, 9, 8 }
|
||||||
|
{ 3, 6, 7, 40}
|
||||||
|
|
||||||
|
With "ibm,associativity-reference-points" { 0x3 }
|
||||||
|
|
||||||
|
"ibm,lookup-index-table" helps in having a compact representation of distance matrix.
|
||||||
|
Since domainID can be sparse, the matrix of distances can also be effectively sparse.
|
||||||
|
With "ibm,lookup-index-table" we can achieve a compact representation of
|
||||||
|
distance information.
|
@ -7,6 +7,7 @@ powerpc
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
associativity
|
||||||
booting
|
booting
|
||||||
bootwrapper
|
bootwrapper
|
||||||
cpu_families
|
cpu_families
|
||||||
|
@ -704,7 +704,7 @@ ref
|
|||||||
no-jd
|
no-jd
|
||||||
BIOS setup but without jack-detection
|
BIOS setup but without jack-detection
|
||||||
intel
|
intel
|
||||||
Intel DG45* mobos
|
Intel D*45* mobos
|
||||||
dell-m6-amic
|
dell-m6-amic
|
||||||
Dell desktops/laptops with analog mics
|
Dell desktops/laptops with analog mics
|
||||||
dell-m6-dmic
|
dell-m6-dmic
|
||||||
|
@ -1400,7 +1400,7 @@ Riferimento per l'API dei Mutex
|
|||||||
Riferimento per l'API dei Futex
|
Riferimento per l'API dei Futex
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
.. kernel-doc:: kernel/futex.c
|
.. kernel-doc:: kernel/futex/core.c
|
||||||
:internal:
|
:internal:
|
||||||
|
|
||||||
Approfondimenti
|
Approfondimenti
|
||||||
|
@ -303,7 +303,6 @@ Code Seq# Include File Comments
|
|||||||
0x89 00-06 arch/x86/include/asm/sockios.h
|
0x89 00-06 arch/x86/include/asm/sockios.h
|
||||||
0x89 0B-DF linux/sockios.h
|
0x89 0B-DF linux/sockios.h
|
||||||
0x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range
|
0x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range
|
||||||
0x89 E0-EF linux/dn.h PROTOPRIVATE range
|
|
||||||
0x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range
|
0x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range
|
||||||
0x8B all linux/wireless.h
|
0x8B all linux/wireless.h
|
||||||
0x8C 00-3F WiNRADiO driver
|
0x8C 00-3F WiNRADiO driver
|
||||||
|
@ -4905,13 +4905,6 @@ F: include/linux/tfrc.h
|
|||||||
F: include/uapi/linux/dccp.h
|
F: include/uapi/linux/dccp.h
|
||||||
F: net/dccp/
|
F: net/dccp/
|
||||||
|
|
||||||
DECnet NETWORK LAYER
|
|
||||||
L: linux-decnet-user@lists.sourceforge.net
|
|
||||||
S: Orphan
|
|
||||||
W: http://linux-decnet.sourceforge.net
|
|
||||||
F: Documentation/networking/decnet.rst
|
|
||||||
F: net/decnet/
|
|
||||||
|
|
||||||
DECSTATION PLATFORM SUPPORT
|
DECSTATION PLATFORM SUPPORT
|
||||||
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
||||||
L: linux-mips@vger.kernel.org
|
L: linux-mips@vger.kernel.org
|
||||||
|
14
Makefile
14
Makefile
@ -1,7 +1,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 10
|
PATCHLEVEL = 10
|
||||||
SUBLEVEL = 177
|
SUBLEVEL = 185
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Dare mighty things
|
NAME = Dare mighty things
|
||||||
|
|
||||||
@ -602,8 +602,10 @@ endif
|
|||||||
ifneq ($(GCC_TOOLCHAIN),)
|
ifneq ($(GCC_TOOLCHAIN),)
|
||||||
CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN)
|
CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN)
|
||||||
endif
|
endif
|
||||||
ifneq ($(LLVM_IAS),1)
|
ifeq ($(LLVM_IAS),1)
|
||||||
CLANG_FLAGS += -no-integrated-as
|
CLANG_FLAGS += -fintegrated-as
|
||||||
|
else
|
||||||
|
CLANG_FLAGS += -fno-integrated-as
|
||||||
endif
|
endif
|
||||||
CLANG_FLAGS += -Werror=unknown-warning-option
|
CLANG_FLAGS += -Werror=unknown-warning-option
|
||||||
KBUILD_CFLAGS += $(CLANG_FLAGS)
|
KBUILD_CFLAGS += $(CLANG_FLAGS)
|
||||||
@ -833,6 +835,10 @@ endif
|
|||||||
KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
|
KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
|
||||||
|
|
||||||
KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-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
|
ifdef CONFIG_FRAME_POINTER
|
||||||
KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
||||||
else
|
else
|
||||||
@ -876,7 +882,7 @@ else
|
|||||||
DEBUG_CFLAGS += -g
|
DEBUG_CFLAGS += -g
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(LLVM_IAS),1)
|
ifdef CONFIG_AS_IS_LLVM
|
||||||
KBUILD_AFLAGS += -g
|
KBUILD_AFLAGS += -g
|
||||||
else
|
else
|
||||||
KBUILD_AFLAGS += -Wa,-gdwarf-2
|
KBUILD_AFLAGS += -Wa,-gdwarf-2
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
android12-5.10-2023-07_r1
|
android12-5.10-2023-09_r1
|
||||||
|
|
||||||
505b4a192915e388bb2f1659672bca58af6086e3
|
00c7bec87c460abfa95b61b5bbe61f26de8a3282
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -2136,6 +2136,7 @@
|
|||||||
ttm_tt_destroy_common
|
ttm_tt_destroy_common
|
||||||
ttm_tt_populate
|
ttm_tt_populate
|
||||||
ttm_tt_set_placement_caching
|
ttm_tt_set_placement_caching
|
||||||
|
ttm_tt_unpopulate
|
||||||
ttm_unmap_and_unpopulate_pages
|
ttm_unmap_and_unpopulate_pages
|
||||||
tty_flip_buffer_push
|
tty_flip_buffer_push
|
||||||
tty_insert_flip_string_fixed_flag
|
tty_insert_flip_string_fixed_flag
|
||||||
|
3
android/abi_gki_aarch64_moto
Normal file
3
android/abi_gki_aarch64_moto
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[abi_symbol_list]
|
||||||
|
__traceiter_android_vh_tune_mmap_readaround
|
||||||
|
__tracepoint_android_vh_tune_mmap_readaround
|
4
android/abi_gki_aarch64_nothing
Normal file
4
android/abi_gki_aarch64_nothing
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[abi_symbol_list]
|
||||||
|
# required by mount_state.ko
|
||||||
|
iterate_supers_type
|
||||||
|
get_fs_type
|
@ -1357,6 +1357,7 @@
|
|||||||
irq_work_queue
|
irq_work_queue
|
||||||
irq_work_queue_on
|
irq_work_queue_on
|
||||||
irq_work_sync
|
irq_work_sync
|
||||||
|
is_ashmem_file
|
||||||
is_dma_buf_file
|
is_dma_buf_file
|
||||||
isolate_and_split_free_page
|
isolate_and_split_free_page
|
||||||
isolate_anon_lru_page
|
isolate_anon_lru_page
|
||||||
@ -1549,6 +1550,7 @@
|
|||||||
__memcat_p
|
__memcat_p
|
||||||
memcg_kmem_enabled_key
|
memcg_kmem_enabled_key
|
||||||
mem_cgroup_from_id
|
mem_cgroup_from_id
|
||||||
|
mem_cgroup_update_lru_size
|
||||||
memchr
|
memchr
|
||||||
memchr_inv
|
memchr_inv
|
||||||
memcmp
|
memcmp
|
||||||
@ -1616,6 +1618,7 @@
|
|||||||
mmc_send_tuning
|
mmc_send_tuning
|
||||||
mmput
|
mmput
|
||||||
mod_delayed_work_on
|
mod_delayed_work_on
|
||||||
|
__mod_lruvec_state
|
||||||
mod_node_page_state
|
mod_node_page_state
|
||||||
mod_timer
|
mod_timer
|
||||||
mod_timer_pending
|
mod_timer_pending
|
||||||
@ -1815,6 +1818,7 @@
|
|||||||
__page_mapcount
|
__page_mapcount
|
||||||
page_mapping
|
page_mapping
|
||||||
__page_pinner_migration_failed
|
__page_pinner_migration_failed
|
||||||
|
page_referenced
|
||||||
page_symlink
|
page_symlink
|
||||||
page_to_lruvec
|
page_to_lruvec
|
||||||
panic
|
panic
|
||||||
@ -2253,6 +2257,7 @@
|
|||||||
rndis_set_param_vendor
|
rndis_set_param_vendor
|
||||||
rndis_signal_connect
|
rndis_signal_connect
|
||||||
rndis_uninit
|
rndis_uninit
|
||||||
|
root_mem_cgroup
|
||||||
root_task_group
|
root_task_group
|
||||||
round_jiffies
|
round_jiffies
|
||||||
round_jiffies_relative
|
round_jiffies_relative
|
||||||
@ -2794,6 +2799,7 @@
|
|||||||
__traceiter_android_vh_clear_mask_adjust
|
__traceiter_android_vh_clear_mask_adjust
|
||||||
__traceiter_android_vh_clear_reserved_fmt_fields
|
__traceiter_android_vh_clear_reserved_fmt_fields
|
||||||
__traceiter_android_vh_cma_drain_all_pages_bypass
|
__traceiter_android_vh_cma_drain_all_pages_bypass
|
||||||
|
__traceiter_android_vh_compact_finished
|
||||||
__traceiter_android_vh_alloc_pages_reclaim_bypass
|
__traceiter_android_vh_alloc_pages_reclaim_bypass
|
||||||
__traceiter_android_vh_free_unref_page_bypass
|
__traceiter_android_vh_free_unref_page_bypass
|
||||||
__traceiter_android_vh_kvmalloc_node_use_vmalloc
|
__traceiter_android_vh_kvmalloc_node_use_vmalloc
|
||||||
@ -2851,6 +2857,7 @@
|
|||||||
__traceiter_android_vh_logbuf
|
__traceiter_android_vh_logbuf
|
||||||
__traceiter_android_vh_look_around
|
__traceiter_android_vh_look_around
|
||||||
__traceiter_android_vh_look_around_migrate_page
|
__traceiter_android_vh_look_around_migrate_page
|
||||||
|
__traceiter_android_vh_madvise_cold_or_pageout_abort
|
||||||
__traceiter_android_vh_mark_page_accessed
|
__traceiter_android_vh_mark_page_accessed
|
||||||
__traceiter_android_vh_mem_cgroup_alloc
|
__traceiter_android_vh_mem_cgroup_alloc
|
||||||
__traceiter_android_vh_mem_cgroup_css_offline
|
__traceiter_android_vh_mem_cgroup_css_offline
|
||||||
@ -3059,6 +3066,7 @@
|
|||||||
__tracepoint_android_vh_clear_mask_adjust
|
__tracepoint_android_vh_clear_mask_adjust
|
||||||
__tracepoint_android_vh_clear_reserved_fmt_fields
|
__tracepoint_android_vh_clear_reserved_fmt_fields
|
||||||
__tracepoint_android_vh_cma_drain_all_pages_bypass
|
__tracepoint_android_vh_cma_drain_all_pages_bypass
|
||||||
|
__tracepoint_android_vh_compact_finished
|
||||||
__tracepoint_android_vh_alloc_pages_reclaim_bypass
|
__tracepoint_android_vh_alloc_pages_reclaim_bypass
|
||||||
__tracepoint_android_vh_free_unref_page_bypass
|
__tracepoint_android_vh_free_unref_page_bypass
|
||||||
__tracepoint_android_vh_kvmalloc_node_use_vmalloc
|
__tracepoint_android_vh_kvmalloc_node_use_vmalloc
|
||||||
@ -3116,6 +3124,7 @@
|
|||||||
__tracepoint_android_vh_logbuf
|
__tracepoint_android_vh_logbuf
|
||||||
__tracepoint_android_vh_look_around
|
__tracepoint_android_vh_look_around
|
||||||
__tracepoint_android_vh_look_around_migrate_page
|
__tracepoint_android_vh_look_around_migrate_page
|
||||||
|
__tracepoint_android_vh_madvise_cold_or_pageout_abort
|
||||||
__tracepoint_android_vh_mark_page_accessed
|
__tracepoint_android_vh_mark_page_accessed
|
||||||
__tracepoint_android_vh_mem_cgroup_alloc
|
__tracepoint_android_vh_mem_cgroup_alloc
|
||||||
__tracepoint_android_vh_mem_cgroup_css_offline
|
__tracepoint_android_vh_mem_cgroup_css_offline
|
||||||
|
@ -1659,6 +1659,7 @@
|
|||||||
overflowuid
|
overflowuid
|
||||||
page_endio
|
page_endio
|
||||||
page_mapping
|
page_mapping
|
||||||
|
page_owner_inited
|
||||||
__page_pinner_migration_failed
|
__page_pinner_migration_failed
|
||||||
__pagevec_release
|
__pagevec_release
|
||||||
panic
|
panic
|
||||||
@ -2187,6 +2188,7 @@
|
|||||||
set_normalized_timespec64
|
set_normalized_timespec64
|
||||||
set_page_dirty_lock
|
set_page_dirty_lock
|
||||||
__SetPageMovable
|
__SetPageMovable
|
||||||
|
__set_page_owner
|
||||||
set_task_cpu
|
set_task_cpu
|
||||||
set_user_nice
|
set_user_nice
|
||||||
sg_alloc_table
|
sg_alloc_table
|
||||||
|
@ -63,6 +63,12 @@
|
|||||||
utf16s_to_utf8s
|
utf16s_to_utf8s
|
||||||
wait_for_completion_io_timeout
|
wait_for_completion_io_timeout
|
||||||
|
|
||||||
|
#required by mq-deadline module
|
||||||
|
blk_mq_debugfs_rq_show
|
||||||
|
seq_list_start
|
||||||
|
seq_list_next
|
||||||
|
__blk_mq_debugfs_rq_show
|
||||||
|
|
||||||
#required by cs35l41 module
|
#required by cs35l41 module
|
||||||
regcache_drop_region
|
regcache_drop_region
|
||||||
regmap_async_complete
|
regmap_async_complete
|
||||||
|
4
android/abi_gki_aarch64_zebra
Normal file
4
android/abi_gki_aarch64_zebra
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[abi_symbol_list]
|
||||||
|
__traceiter_android_vh_wakeup_bypass
|
||||||
|
__tracepoint_android_vh_wakeup_bypass
|
||||||
|
tty_termios_hw_change
|
@ -179,7 +179,7 @@ codec: wm8960@1a {
|
|||||||
compatible = "wlf,wm8960";
|
compatible = "wlf,wm8960";
|
||||||
reg = <0x1a>;
|
reg = <0x1a>;
|
||||||
clocks = <&pmu_system_controller 0>;
|
clocks = <&pmu_system_controller 0>;
|
||||||
clock-names = "MCLK1";
|
clock-names = "mclk";
|
||||||
wlf,shared-lrclk;
|
wlf,shared-lrclk;
|
||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
};
|
};
|
||||||
|
@ -609,6 +609,22 @@ &i2c3 {
|
|||||||
clock-frequency = <100000>;
|
clock-frequency = <100000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&mcspi1 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mcspi2 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mcspi3 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mcspi4 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
&usb_otg_hs {
|
&usb_otg_hs {
|
||||||
interface-type = <0>;
|
interface-type = <0>;
|
||||||
usb-phy = <&usb2_phy>;
|
usb-phy = <&usb2_phy>;
|
||||||
|
@ -414,8 +414,8 @@ pcie0: pci@40000000 {
|
|||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000>,
|
ranges = <0x81000000 0x0 0x00000000 0x40200000 0x0 0x00100000>,
|
||||||
<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>;
|
<0x82000000 0x0 0x40300000 0x40300000 0x0 0x00d00000>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
|
@ -465,8 +465,8 @@ pcie0: pci@1b500000 {
|
|||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
ranges = <0x81000000 0 0x0fe00000 0x0fe00000 0 0x00100000 /* downstream I/O */
|
ranges = <0x81000000 0x0 0x00000000 0x0fe00000 0x0 0x00010000 /* I/O */
|
||||||
0x82000000 0 0x08000000 0x08000000 0 0x07e00000>; /* non-prefetchable memory */
|
0x82000000 0x0 0x08000000 0x08000000 0x0 0x07e00000>; /* MEM */
|
||||||
|
|
||||||
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
@ -516,8 +516,8 @@ pcie1: pci@1b700000 {
|
|||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
ranges = <0x81000000 0 0x31e00000 0x31e00000 0 0x00100000 /* downstream I/O */
|
ranges = <0x81000000 0x0 0x00000000 0x31e00000 0x0 0x00010000 /* I/O */
|
||||||
0x82000000 0 0x2e000000 0x2e000000 0 0x03e00000>; /* non-prefetchable memory */
|
0x82000000 0x0 0x2e000000 0x2e000000 0x0 0x03e00000>; /* MEM */
|
||||||
|
|
||||||
interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
@ -567,8 +567,8 @@ pcie2: pci@1b900000 {
|
|||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
ranges = <0x81000000 0 0x35e00000 0x35e00000 0 0x00100000 /* downstream I/O */
|
ranges = <0x81000000 0x0 0x00000000 0x35e00000 0x0 0x00010000 /* I/O */
|
||||||
0x82000000 0 0x32000000 0x32000000 0 0x03e00000>; /* non-prefetchable memory */
|
0x82000000 0x0 0x32000000 0x32000000 0x0 0x03e00000>; /* MEM */
|
||||||
|
|
||||||
interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
|
@ -959,7 +959,7 @@ wdt: watchdog@ff800000 {
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
spdif: sound@ff88b0000 {
|
spdif: sound@ff8b0000 {
|
||||||
compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
|
compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
|
||||||
reg = <0x0 0xff8b0000 0x0 0x10000>;
|
reg = <0x0 0xff8b0000 0x0 0x10000>;
|
||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
|
@ -583,7 +583,7 @@ csis0: csis@fa600000 {
|
|||||||
interrupts = <29>;
|
interrupts = <29>;
|
||||||
clocks = <&clocks CLK_CSIS>,
|
clocks = <&clocks CLK_CSIS>,
|
||||||
<&clocks SCLK_CSIS>;
|
<&clocks SCLK_CSIS>;
|
||||||
clock-names = "clk_csis",
|
clock-names = "csis",
|
||||||
"sclk_csis";
|
"sclk_csis";
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
@ -284,6 +284,88 @@ pins2 {
|
|||||||
slew-rate = <2>;
|
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;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1102,7 +1102,7 @@ pins {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sai2a_sleep_pins_c: sai2a-2 {
|
sai2a_sleep_pins_c: sai2a-sleep-2 {
|
||||||
pins {
|
pins {
|
||||||
pinmux = <STM32_PINMUX('D', 13, ANALOG)>, /* SAI2_SCK_A */
|
pinmux = <STM32_PINMUX('D', 13, ANALOG)>, /* SAI2_SCK_A */
|
||||||
<STM32_PINMUX('D', 11, ANALOG)>, /* SAI2_SD_A */
|
<STM32_PINMUX('D', 11, ANALOG)>, /* SAI2_SD_A */
|
||||||
|
@ -132,6 +132,7 @@ L2: cache-controller@2c0f0000 {
|
|||||||
reg = <0x2c0f0000 0x1000>;
|
reg = <0x2c0f0000 0x1000>;
|
||||||
interrupts = <0 84 4>;
|
interrupts = <0 84 4>;
|
||||||
cache-level = <2>;
|
cache-level = <2>;
|
||||||
|
cache-unified;
|
||||||
};
|
};
|
||||||
|
|
||||||
pmu {
|
pmu {
|
||||||
|
@ -672,7 +672,6 @@ CONFIG_DRM_IMX_LDB=m
|
|||||||
CONFIG_DRM_IMX_HDMI=m
|
CONFIG_DRM_IMX_HDMI=m
|
||||||
CONFIG_DRM_ATMEL_HLCDC=m
|
CONFIG_DRM_ATMEL_HLCDC=m
|
||||||
CONFIG_DRM_RCAR_DU=m
|
CONFIG_DRM_RCAR_DU=m
|
||||||
CONFIG_DRM_RCAR_LVDS=y
|
|
||||||
CONFIG_DRM_SUN4I=m
|
CONFIG_DRM_SUN4I=m
|
||||||
CONFIG_DRM_MSM=m
|
CONFIG_DRM_MSM=m
|
||||||
CONFIG_DRM_FSL_DCU=m
|
CONFIG_DRM_FSL_DCU=m
|
||||||
|
@ -48,6 +48,7 @@ static inline u32 read_ ## a64(void) \
|
|||||||
return read_sysreg(a32); \
|
return read_sysreg(a32); \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
|
CPUIF_MAP(ICC_EOIR1, ICC_EOIR1_EL1)
|
||||||
CPUIF_MAP(ICC_PMR, ICC_PMR_EL1)
|
CPUIF_MAP(ICC_PMR, ICC_PMR_EL1)
|
||||||
CPUIF_MAP(ICC_AP0R0, ICC_AP0R0_EL1)
|
CPUIF_MAP(ICC_AP0R0, ICC_AP0R0_EL1)
|
||||||
CPUIF_MAP(ICC_AP0R1, ICC_AP0R1_EL1)
|
CPUIF_MAP(ICC_AP0R1, ICC_AP0R1_EL1)
|
||||||
|
@ -300,6 +300,29 @@ static int unwind_exec_pop_subset_r0_to_r3(struct unwind_ctrl_block *ctrl,
|
|||||||
return URC_OK;
|
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.
|
* Execute the current unwind instruction.
|
||||||
*/
|
*/
|
||||||
@ -353,7 +376,7 @@ static int unwind_exec_insn(struct unwind_ctrl_block *ctrl)
|
|||||||
if (ret)
|
if (ret)
|
||||||
goto error;
|
goto error;
|
||||||
} else if (insn == 0xb2) {
|
} else if (insn == 0xb2) {
|
||||||
unsigned long uleb128 = unwind_get_byte(ctrl);
|
unsigned long uleb128 = unwind_decode_uleb128(ctrl);
|
||||||
|
|
||||||
ctrl->vrs[SP] += 0x204 + (uleb128 << 2);
|
ctrl->vrs[SP] += 0x204 + (uleb128 << 2);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/**
|
/*
|
||||||
* arch/arm/mac-sa1100/jornada720_ssp.c
|
* arch/arm/mac-sa1100/jornada720_ssp.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006/2007 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>
|
* 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
|
* 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
|
* we need to reverse all data we receive from the mcu due to its physical location
|
||||||
* returns : 01110111 -> 11101110
|
* returns : 01110111 -> 11101110
|
||||||
@ -46,6 +47,7 @@ EXPORT_SYMBOL(jornada_ssp_reverse);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* jornada_ssp_byte - waits for ready ssp bus and sends byte
|
* 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
|
* 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.
|
* 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
|
* 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
|
* returns : (jornada_ssp_byte(byte)) on success
|
||||||
* : %-ETIMEDOUT on timeout failure
|
* : %-ETIMEDOUT on timeout failure
|
||||||
|
@ -1604,10 +1604,9 @@ usb2_phy0: phy@36000 {
|
|||||||
|
|
||||||
dmc: bus@38000 {
|
dmc: bus@38000 {
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
reg = <0x0 0x38000 0x0 0x400>;
|
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
ranges = <0x0 0x0 0x0 0x38000 0x0 0x400>;
|
ranges = <0x0 0x0 0x0 0x38000 0x0 0x2000>;
|
||||||
|
|
||||||
canvas: video-lut@48 {
|
canvas: video-lut@48 {
|
||||||
compatible = "amlogic,canvas";
|
compatible = "amlogic,canvas";
|
||||||
|
@ -128,7 +128,7 @@ pmic@4b {
|
|||||||
rohm,reset-snvs-powered;
|
rohm,reset-snvs-powered;
|
||||||
|
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clocks = <&osc_32k 0>;
|
clocks = <&osc_32k>;
|
||||||
clock-output-names = "clk-32k-out";
|
clock-output-names = "clk-32k-out";
|
||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
|
@ -98,11 +98,17 @@ mdio {
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
ethphy: ethernet-phy@4 {
|
ethphy: ethernet-phy@4 { /* AR8033 or ADIN1300 */
|
||||||
compatible = "ethernet-phy-ieee802.3-c22";
|
compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
|
reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
|
||||||
reset-assert-us = <10000>;
|
reset-assert-us = <10000>;
|
||||||
|
/*
|
||||||
|
* Deassert delay:
|
||||||
|
* ADIN1300 requires 5ms.
|
||||||
|
* AR8033 requires 1ms.
|
||||||
|
*/
|
||||||
|
reset-deassert-us = <20000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -60,11 +60,11 @@ &pcie1 {
|
|||||||
perst-gpio = <&tlmm 58 0x1>;
|
perst-gpio = <&tlmm 58 0x1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&pcie_phy0 {
|
&pcie_qmp0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&pcie_phy1 {
|
&pcie_qmp1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -607,10 +607,8 @@ pcie1: pci@10000000 {
|
|||||||
phys = <&pcie_phy1>;
|
phys = <&pcie_phy1>;
|
||||||
phy-names = "pciephy";
|
phy-names = "pciephy";
|
||||||
|
|
||||||
ranges = <0x81000000 0 0x10200000 0x10200000
|
ranges = <0x81000000 0x0 0x00000000 0x10200000 0x0 0x10000>, /* I/O */
|
||||||
0 0x10000>, /* downstream I/O */
|
<0x82000000 0x0 0x10220000 0x10220000 0x0 0xfde0000>; /* MEM */
|
||||||
<0x82000000 0 0x10220000 0x10220000
|
|
||||||
0 0xfde0000>; /* non-prefetchable memory */
|
|
||||||
|
|
||||||
interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
@ -671,10 +669,8 @@ pcie0: pci@20000000 {
|
|||||||
phys = <&pcie_phy0>;
|
phys = <&pcie_phy0>;
|
||||||
phy-names = "pciephy";
|
phy-names = "pciephy";
|
||||||
|
|
||||||
ranges = <0x81000000 0 0x20200000 0x20200000
|
ranges = <0x81000000 0x0 0x00000000 0x20200000 0x0 0x10000>, /* I/O */
|
||||||
0 0x10000>, /* downstream I/O */
|
<0x82000000 0x0 0x20220000 0x20220000 0x0 0xfde0000>; /* MEM */
|
||||||
<0x82000000 0 0x20220000 0x20220000
|
|
||||||
0 0xfde0000>; /* non-prefetchable memory */
|
|
||||||
|
|
||||||
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
|
@ -744,8 +744,8 @@ pcie0: pcie@600000 {
|
|||||||
|
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
ranges = <0x01000000 0x0 0x0c200000 0x0c200000 0x0 0x100000>,
|
ranges = <0x01000000 0x0 0x00000000 0x0c200000 0x0 0x100000>,
|
||||||
<0x02000000 0x0 0x0c300000 0x0c300000 0x0 0xd00000>;
|
<0x02000000 0x0 0x0c300000 0x0c300000 0x0 0xd00000>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
@ -796,8 +796,8 @@ pcie1: pcie@608000 {
|
|||||||
|
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
ranges = <0x01000000 0x0 0x0d200000 0x0d200000 0x0 0x100000>,
|
ranges = <0x01000000 0x0 0x00000000 0x0d200000 0x0 0x100000>,
|
||||||
<0x02000000 0x0 0x0d300000 0x0d300000 0x0 0xd00000>;
|
<0x02000000 0x0 0x0d300000 0x0d300000 0x0 0xd00000>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
@ -845,8 +845,8 @@ pcie2: pcie@610000 {
|
|||||||
|
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
ranges = <0x01000000 0x0 0x0e200000 0x0e200000 0x0 0x100000>,
|
ranges = <0x01000000 0x0 0x00000000 0x0e200000 0x0 0x100000>,
|
||||||
<0x02000000 0x0 0x0e300000 0x0e300000 0x0 0x1d00000>;
|
<0x02000000 0x0 0x0e300000 0x0e300000 0x0 0x1d00000>;
|
||||||
|
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
|
|
||||||
@ -1771,8 +1771,11 @@ dwc3@6a00000 {
|
|||||||
interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
phys = <&hsusb_phy1>, <&ssusb_phy_0>;
|
phys = <&hsusb_phy1>, <&ssusb_phy_0>;
|
||||||
phy-names = "usb2-phy", "usb3-phy";
|
phy-names = "usb2-phy", "usb3-phy";
|
||||||
|
snps,hird-threshold = /bits/ 8 <0>;
|
||||||
snps,dis_u2_susphy_quirk;
|
snps,dis_u2_susphy_quirk;
|
||||||
snps,dis_enblslpm_quirk;
|
snps,dis_enblslpm_quirk;
|
||||||
|
snps,is-utmi-l1-suspend;
|
||||||
|
tx-fifo-resize;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -942,7 +942,7 @@ pcie0: pci@1c00000 {
|
|||||||
phys = <&pciephy>;
|
phys = <&pciephy>;
|
||||||
phy-names = "pciephy";
|
phy-names = "pciephy";
|
||||||
|
|
||||||
ranges = <0x01000000 0x0 0x1b200000 0x1b200000 0x0 0x100000>,
|
ranges = <0x01000000 0x0 0x00000000 0x1b200000 0x0 0x100000>,
|
||||||
<0x02000000 0x0 0x1b300000 0x1b300000 0x0 0xd00000>;
|
<0x02000000 0x0 0x1b300000 0x1b300000 0x0 0xd00000>;
|
||||||
|
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
@ -1187,7 +1187,7 @@ stm: stm@6002000 {
|
|||||||
compatible = "arm,coresight-stm", "arm,primecell";
|
compatible = "arm,coresight-stm", "arm,primecell";
|
||||||
reg = <0x06002000 0x1000>,
|
reg = <0x06002000 0x1000>,
|
||||||
<0x16280000 0x180000>;
|
<0x16280000 0x180000>;
|
||||||
reg-names = "stm-base", "stm-data-base";
|
reg-names = "stm-base", "stm-stimulus-base";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
|
clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
|
||||||
|
@ -85,6 +85,14 @@ hdmi_con: endpoint {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
reserved-memory {
|
||||||
|
/* Cont splash region set up by the bootloader */
|
||||||
|
cont_splash_mem: framebuffer@9d400000 {
|
||||||
|
reg = <0x0 0x9d400000 0x0 0x2400000>;
|
||||||
|
no-map;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
lt9611_1v8: lt9611-vdd18-regulator {
|
lt9611_1v8: lt9611-vdd18-regulator {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "LT9611_1V8";
|
regulator-name = "LT9611_1V8";
|
||||||
@ -482,6 +490,7 @@ &i2c14 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&mdss {
|
&mdss {
|
||||||
|
memory-region = <&cont_splash_mem>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -196,8 +196,8 @@ CPU0: cpu@0 {
|
|||||||
cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||||
&LITTLE_CPU_SLEEP_1
|
&LITTLE_CPU_SLEEP_1
|
||||||
&CLUSTER_SLEEP_0>;
|
&CLUSTER_SLEEP_0>;
|
||||||
capacity-dmips-mhz = <607>;
|
capacity-dmips-mhz = <611>;
|
||||||
dynamic-power-coefficient = <100>;
|
dynamic-power-coefficient = <154>;
|
||||||
qcom,freq-domain = <&cpufreq_hw 0>;
|
qcom,freq-domain = <&cpufreq_hw 0>;
|
||||||
operating-points-v2 = <&cpu0_opp_table>;
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
||||||
@ -221,8 +221,8 @@ CPU1: cpu@100 {
|
|||||||
cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||||
&LITTLE_CPU_SLEEP_1
|
&LITTLE_CPU_SLEEP_1
|
||||||
&CLUSTER_SLEEP_0>;
|
&CLUSTER_SLEEP_0>;
|
||||||
capacity-dmips-mhz = <607>;
|
capacity-dmips-mhz = <611>;
|
||||||
dynamic-power-coefficient = <100>;
|
dynamic-power-coefficient = <154>;
|
||||||
qcom,freq-domain = <&cpufreq_hw 0>;
|
qcom,freq-domain = <&cpufreq_hw 0>;
|
||||||
operating-points-v2 = <&cpu0_opp_table>;
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
||||||
@ -243,8 +243,8 @@ CPU2: cpu@200 {
|
|||||||
cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||||
&LITTLE_CPU_SLEEP_1
|
&LITTLE_CPU_SLEEP_1
|
||||||
&CLUSTER_SLEEP_0>;
|
&CLUSTER_SLEEP_0>;
|
||||||
capacity-dmips-mhz = <607>;
|
capacity-dmips-mhz = <611>;
|
||||||
dynamic-power-coefficient = <100>;
|
dynamic-power-coefficient = <154>;
|
||||||
qcom,freq-domain = <&cpufreq_hw 0>;
|
qcom,freq-domain = <&cpufreq_hw 0>;
|
||||||
operating-points-v2 = <&cpu0_opp_table>;
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
||||||
@ -265,8 +265,8 @@ CPU3: cpu@300 {
|
|||||||
cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||||
&LITTLE_CPU_SLEEP_1
|
&LITTLE_CPU_SLEEP_1
|
||||||
&CLUSTER_SLEEP_0>;
|
&CLUSTER_SLEEP_0>;
|
||||||
capacity-dmips-mhz = <607>;
|
capacity-dmips-mhz = <611>;
|
||||||
dynamic-power-coefficient = <100>;
|
dynamic-power-coefficient = <154>;
|
||||||
qcom,freq-domain = <&cpufreq_hw 0>;
|
qcom,freq-domain = <&cpufreq_hw 0>;
|
||||||
operating-points-v2 = <&cpu0_opp_table>;
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
||||||
@ -288,7 +288,7 @@ CPU4: cpu@400 {
|
|||||||
cpu-idle-states = <&BIG_CPU_SLEEP_0
|
cpu-idle-states = <&BIG_CPU_SLEEP_0
|
||||||
&BIG_CPU_SLEEP_1
|
&BIG_CPU_SLEEP_1
|
||||||
&CLUSTER_SLEEP_0>;
|
&CLUSTER_SLEEP_0>;
|
||||||
dynamic-power-coefficient = <396>;
|
dynamic-power-coefficient = <442>;
|
||||||
qcom,freq-domain = <&cpufreq_hw 1>;
|
qcom,freq-domain = <&cpufreq_hw 1>;
|
||||||
operating-points-v2 = <&cpu4_opp_table>;
|
operating-points-v2 = <&cpu4_opp_table>;
|
||||||
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
||||||
@ -310,7 +310,7 @@ CPU5: cpu@500 {
|
|||||||
cpu-idle-states = <&BIG_CPU_SLEEP_0
|
cpu-idle-states = <&BIG_CPU_SLEEP_0
|
||||||
&BIG_CPU_SLEEP_1
|
&BIG_CPU_SLEEP_1
|
||||||
&CLUSTER_SLEEP_0>;
|
&CLUSTER_SLEEP_0>;
|
||||||
dynamic-power-coefficient = <396>;
|
dynamic-power-coefficient = <442>;
|
||||||
qcom,freq-domain = <&cpufreq_hw 1>;
|
qcom,freq-domain = <&cpufreq_hw 1>;
|
||||||
operating-points-v2 = <&cpu4_opp_table>;
|
operating-points-v2 = <&cpu4_opp_table>;
|
||||||
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
||||||
@ -332,7 +332,7 @@ CPU6: cpu@600 {
|
|||||||
cpu-idle-states = <&BIG_CPU_SLEEP_0
|
cpu-idle-states = <&BIG_CPU_SLEEP_0
|
||||||
&BIG_CPU_SLEEP_1
|
&BIG_CPU_SLEEP_1
|
||||||
&CLUSTER_SLEEP_0>;
|
&CLUSTER_SLEEP_0>;
|
||||||
dynamic-power-coefficient = <396>;
|
dynamic-power-coefficient = <442>;
|
||||||
qcom,freq-domain = <&cpufreq_hw 1>;
|
qcom,freq-domain = <&cpufreq_hw 1>;
|
||||||
operating-points-v2 = <&cpu4_opp_table>;
|
operating-points-v2 = <&cpu4_opp_table>;
|
||||||
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
||||||
@ -354,7 +354,7 @@ CPU7: cpu@700 {
|
|||||||
cpu-idle-states = <&BIG_CPU_SLEEP_0
|
cpu-idle-states = <&BIG_CPU_SLEEP_0
|
||||||
&BIG_CPU_SLEEP_1
|
&BIG_CPU_SLEEP_1
|
||||||
&CLUSTER_SLEEP_0>;
|
&CLUSTER_SLEEP_0>;
|
||||||
dynamic-power-coefficient = <396>;
|
dynamic-power-coefficient = <442>;
|
||||||
qcom,freq-domain = <&cpufreq_hw 1>;
|
qcom,freq-domain = <&cpufreq_hw 1>;
|
||||||
operating-points-v2 = <&cpu4_opp_table>;
|
operating-points-v2 = <&cpu4_opp_table>;
|
||||||
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
|
||||||
@ -1816,8 +1816,8 @@ pcie0: pci@1c00000 {
|
|||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
ranges = <0x01000000 0x0 0x60200000 0 0x60200000 0x0 0x100000>,
|
ranges = <0x01000000 0x0 0x00000000 0x0 0x60200000 0x0 0x100000>,
|
||||||
<0x02000000 0x0 0x60300000 0 0x60300000 0x0 0xd00000>;
|
<0x02000000 0x0 0x60300000 0x0 0x60300000 0x0 0xd00000>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
@ -1920,7 +1920,7 @@ pcie1: pci@1c08000 {
|
|||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
ranges = <0x01000000 0x0 0x40200000 0x0 0x40200000 0x0 0x100000>,
|
ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
|
||||||
<0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
|
<0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 307 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 307 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
@ -49,17 +49,14 @@ cluster1_opp: opp_table10 {
|
|||||||
opp-shared;
|
opp-shared;
|
||||||
opp-800000000 {
|
opp-800000000 {
|
||||||
opp-hz = /bits/ 64 <800000000>;
|
opp-hz = /bits/ 64 <800000000>;
|
||||||
opp-microvolt = <820000>;
|
|
||||||
clock-latency-ns = <300000>;
|
clock-latency-ns = <300000>;
|
||||||
};
|
};
|
||||||
opp-1000000000 {
|
opp-1000000000 {
|
||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <820000>;
|
|
||||||
clock-latency-ns = <300000>;
|
clock-latency-ns = <300000>;
|
||||||
};
|
};
|
||||||
opp-1200000000 {
|
opp-1200000000 {
|
||||||
opp-hz = /bits/ 64 <1200000000>;
|
opp-hz = /bits/ 64 <1200000000>;
|
||||||
opp-microvolt = <820000>;
|
|
||||||
clock-latency-ns = <300000>;
|
clock-latency-ns = <300000>;
|
||||||
opp-suspend;
|
opp-suspend;
|
||||||
};
|
};
|
||||||
|
@ -60,17 +60,14 @@ cluster1_opp: opp_table10 {
|
|||||||
opp-shared;
|
opp-shared;
|
||||||
opp-800000000 {
|
opp-800000000 {
|
||||||
opp-hz = /bits/ 64 <800000000>;
|
opp-hz = /bits/ 64 <800000000>;
|
||||||
opp-microvolt = <820000>;
|
|
||||||
clock-latency-ns = <300000>;
|
clock-latency-ns = <300000>;
|
||||||
};
|
};
|
||||||
opp-1000000000 {
|
opp-1000000000 {
|
||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <820000>;
|
|
||||||
clock-latency-ns = <300000>;
|
clock-latency-ns = <300000>;
|
||||||
};
|
};
|
||||||
opp-1200000000 {
|
opp-1200000000 {
|
||||||
opp-hz = /bits/ 64 <1200000000>;
|
opp-hz = /bits/ 64 <1200000000>;
|
||||||
opp-microvolt = <820000>;
|
|
||||||
clock-latency-ns = <300000>;
|
clock-latency-ns = <300000>;
|
||||||
opp-suspend;
|
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_enable_single_step(struct pt_regs *regs);
|
||||||
void kernel_disable_single_step(void);
|
void kernel_disable_single_step(void);
|
||||||
int kernel_active_single_step(void);
|
int kernel_active_single_step(void);
|
||||||
|
void kernel_rewind_single_step(struct pt_regs *regs);
|
||||||
|
|
||||||
#ifdef CONFIG_HAVE_HW_BREAKPOINT
|
#ifdef CONFIG_HAVE_HW_BREAKPOINT
|
||||||
int reinstall_suspended_bps(struct pt_regs *regs);
|
int reinstall_suspended_bps(struct pt_regs *regs);
|
||||||
|
@ -9,15 +9,16 @@
|
|||||||
#ifdef CONFIG_SHADOW_CALL_STACK
|
#ifdef CONFIG_SHADOW_CALL_STACK
|
||||||
scs_sp .req x18
|
scs_sp .req x18
|
||||||
|
|
||||||
.macro scs_load tsk, tmp
|
.macro scs_load_current
|
||||||
ldr scs_sp, [\tsk, #TSK_TI_SCS_SP]
|
get_current_task scs_sp
|
||||||
|
ldr scs_sp, [scs_sp, #TSK_TI_SCS_SP]
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro scs_save tsk, tmp
|
.macro scs_save tsk, tmp
|
||||||
str scs_sp, [\tsk, #TSK_TI_SCS_SP]
|
str scs_sp, [\tsk, #TSK_TI_SCS_SP]
|
||||||
.endm
|
.endm
|
||||||
#else
|
#else
|
||||||
.macro scs_load tsk, tmp
|
.macro scs_load_current
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro scs_save tsk, tmp
|
.macro scs_save tsk, tmp
|
||||||
|
@ -439,6 +439,11 @@ int kernel_active_single_step(void)
|
|||||||
}
|
}
|
||||||
NOKPROBE_SYMBOL(kernel_active_single_step);
|
NOKPROBE_SYMBOL(kernel_active_single_step);
|
||||||
|
|
||||||
|
void kernel_rewind_single_step(struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
set_regs_spsr_ss(regs);
|
||||||
|
}
|
||||||
|
|
||||||
/* ptrace API */
|
/* ptrace API */
|
||||||
void user_enable_single_step(struct task_struct *task)
|
void user_enable_single_step(struct task_struct *task)
|
||||||
{
|
{
|
||||||
|
@ -297,7 +297,7 @@ alternative_if ARM64_HAS_ADDRESS_AUTH
|
|||||||
alternative_else_nop_endif
|
alternative_else_nop_endif
|
||||||
1:
|
1:
|
||||||
|
|
||||||
scs_load tsk, x20
|
scs_load_current
|
||||||
.else
|
.else
|
||||||
add x21, sp, #S_FRAME_SIZE
|
add x21, sp, #S_FRAME_SIZE
|
||||||
get_current_task tsk
|
get_current_task tsk
|
||||||
@ -1122,7 +1122,7 @@ SYM_FUNC_START(cpu_switch_to)
|
|||||||
msr sp_el0, x1
|
msr sp_el0, x1
|
||||||
ptrauth_keys_install_kernel x1, x8, x9, x10
|
ptrauth_keys_install_kernel x1, x8, x9, x10
|
||||||
scs_save x0, x8
|
scs_save x0, x8
|
||||||
scs_load x1, x8
|
scs_load_current
|
||||||
ret
|
ret
|
||||||
SYM_FUNC_END(cpu_switch_to)
|
SYM_FUNC_END(cpu_switch_to)
|
||||||
NOKPROBE(cpu_switch_to)
|
NOKPROBE(cpu_switch_to)
|
||||||
|
@ -621,7 +621,7 @@ SYM_FUNC_START_LOCAL(__secondary_switched)
|
|||||||
ldr x2, [x0, #CPU_BOOT_TASK]
|
ldr x2, [x0, #CPU_BOOT_TASK]
|
||||||
cbz x2, __secondary_too_slow
|
cbz x2, __secondary_too_slow
|
||||||
msr sp_el0, x2
|
msr sp_el0, x2
|
||||||
scs_load x2, x3
|
scs_load_current
|
||||||
mov x29, #0
|
mov x29, #0
|
||||||
mov x30, #0
|
mov x30, #0
|
||||||
|
|
||||||
|
@ -223,6 +223,8 @@ int kgdb_arch_handle_exception(int exception_vector, int signo,
|
|||||||
*/
|
*/
|
||||||
if (!kernel_active_single_step())
|
if (!kernel_active_single_step())
|
||||||
kernel_enable_single_step(linux_regs);
|
kernel_enable_single_step(linux_regs);
|
||||||
|
else
|
||||||
|
kernel_rewind_single_step(linux_regs);
|
||||||
err = 0;
|
err = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -499,6 +499,8 @@ int kvm_arm_set_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
|
|||||||
u64 val;
|
u64 val;
|
||||||
int wa_level;
|
int wa_level;
|
||||||
|
|
||||||
|
if (KVM_REG_SIZE(reg->id) != sizeof(val))
|
||||||
|
return -ENOENT;
|
||||||
if (copy_from_user(&val, uaddr, KVM_REG_SIZE(reg->id)))
|
if (copy_from_user(&val, uaddr, KVM_REG_SIZE(reg->id)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
|
@ -484,8 +484,8 @@ static void do_bad_area(unsigned long far, unsigned int esr,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define VM_FAULT_BADMAP 0x010000
|
#define VM_FAULT_BADMAP ((__force vm_fault_t)0x010000)
|
||||||
#define VM_FAULT_BADACCESS 0x020000
|
#define VM_FAULT_BADACCESS ((__force vm_fault_t)0x020000)
|
||||||
|
|
||||||
static int __do_page_fault(struct vm_area_struct *vma, unsigned long addr,
|
static int __do_page_fault(struct vm_area_struct *vma, unsigned long addr,
|
||||||
unsigned int mm_flags, unsigned long vm_flags,
|
unsigned int mm_flags, unsigned long vm_flags,
|
||||||
|
@ -581,7 +581,7 @@ static int salinfo_cpu_pre_down(unsigned int cpu)
|
|||||||
* 'data' contains an integer that corresponds to the feature we're
|
* 'data' contains an integer that corresponds to the feature we're
|
||||||
* testing
|
* 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;
|
unsigned long data = (unsigned long)v;
|
||||||
seq_puts(m, (sal_platform_features & data) ? "1\n" : "0\n");
|
seq_puts(m, (sal_platform_features & data) ? "1\n" : "0\n");
|
||||||
|
@ -79,7 +79,7 @@ void *per_cpu_init(void)
|
|||||||
return __per_cpu_start + __per_cpu_offset[smp_processor_id()];
|
return __per_cpu_start + __per_cpu_offset[smp_processor_id()];
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline __init void
|
||||||
alloc_per_cpu_data(void)
|
alloc_per_cpu_data(void)
|
||||||
{
|
{
|
||||||
size_t size = PERCPU_PAGE_SIZE * num_possible_cpus();
|
size_t size = PERCPU_PAGE_SIZE * num_possible_cpus();
|
||||||
|
@ -58,7 +58,7 @@ huge_pte_offset (struct mm_struct *mm, unsigned long addr, unsigned long sz)
|
|||||||
|
|
||||||
pgd = pgd_offset(mm, taddr);
|
pgd = pgd_offset(mm, taddr);
|
||||||
if (pgd_present(*pgd)) {
|
if (pgd_present(*pgd)) {
|
||||||
p4d = p4d_offset(pgd, addr);
|
p4d = p4d_offset(pgd, taddr);
|
||||||
if (p4d_present(*p4d)) {
|
if (p4d_present(*p4d)) {
|
||||||
pud = pud_offset(p4d, taddr);
|
pud = pud_offset(p4d, taddr);
|
||||||
if (pud_present(*pud)) {
|
if (pud_present(*pud)) {
|
||||||
|
@ -882,11 +882,17 @@ static inline int rt_setup_ucontext(struct ucontext __user *uc, struct pt_regs *
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline void __user *
|
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 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,
|
static int setup_frame(struct ksignal *ksig, sigset_t *set,
|
||||||
@ -904,7 +910,7 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set,
|
|||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
frame = get_sigframe(ksig, sizeof(*frame) + fsize);
|
frame = get_sigframe(ksig, tregs, sizeof(*frame) + fsize);
|
||||||
|
|
||||||
if (fsize)
|
if (fsize)
|
||||||
err |= copy_to_user (frame + 1, regs + 1, 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;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
frame = get_sigframe(ksig, sizeof(*frame));
|
frame = get_sigframe(ksig, tregs, sizeof(*frame));
|
||||||
|
|
||||||
if (fsize)
|
if (fsize)
|
||||||
err |= copy_to_user (&frame->uc.uc_extra, regs + 1, 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/init.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/slab.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;
|
dp->dscr_cmd0 &= ~DSCR_CMD0_IE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There is an errata on the Au1200/Au1550 parts that could result
|
* There is an erratum on certain Au1200/Au1550 revisions that could
|
||||||
* in "stale" data being DMA'ed. It has to do with the snoop logic on
|
* result in "stale" data being DMA'ed. It has to do with the snoop
|
||||||
* the cache eviction buffer. DMA_NONCOHERENT is on by default for
|
* logic on the cache eviction buffer. dma_default_coherent is set
|
||||||
* these parts. If it is fixed in the future, these dma_cache_inv will
|
* to false on these parts.
|
||||||
* just be nothing more than empty macros. See io.h.
|
|
||||||
*/
|
*/
|
||||||
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 */
|
dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
|
||||||
wmb(); /* drain writebuffer */
|
wmb(); /* drain writebuffer */
|
||||||
dma_cache_wback_inv((unsigned long)dp, sizeof(*dp));
|
dma_cache_wback_inv((unsigned long)dp, sizeof(*dp));
|
||||||
ctp->chan_ptr->ddma_dbell = 0;
|
ctp->chan_ptr->ddma_dbell = 0;
|
||||||
|
wmb(); /* force doorbell write out to dma engine */
|
||||||
|
|
||||||
/* Get next descriptor pointer. */
|
/* Get next descriptor pointer. */
|
||||||
ctp->put_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
|
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);
|
dp->dscr_source1, dp->dscr_dest0, dp->dscr_dest1);
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* There is an errata on the Au1200/Au1550 parts that could result in
|
* There is an erratum on certain Au1200/Au1550 revisions that could
|
||||||
* "stale" data being DMA'ed. It has to do with the snoop logic on the
|
* result in "stale" data being DMA'ed. It has to do with the snoop
|
||||||
* cache eviction buffer. DMA_NONCOHERENT is on by default for these
|
* logic on the cache eviction buffer. dma_default_coherent is set
|
||||||
* parts. If it is fixed in the future, these dma_cache_inv will just
|
* to false on these parts.
|
||||||
* be nothing more than empty macros. See io.h.
|
|
||||||
*/
|
*/
|
||||||
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 */
|
dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */
|
||||||
wmb(); /* drain writebuffer */
|
wmb(); /* drain writebuffer */
|
||||||
dma_cache_wback_inv((unsigned long)dp, sizeof(*dp));
|
dma_cache_wback_inv((unsigned long)dp, sizeof(*dp));
|
||||||
ctp->chan_ptr->ddma_dbell = 0;
|
ctp->chan_ptr->ddma_dbell = 0;
|
||||||
|
wmb(); /* force doorbell write out to dma engine */
|
||||||
|
|
||||||
/* Get next descriptor pointer. */
|
/* Get next descriptor pointer. */
|
||||||
ctp->put_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr));
|
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_NETWORK_SECMARK=y
|
||||||
CONFIG_IP_SCTP=m
|
CONFIG_IP_SCTP=m
|
||||||
CONFIG_VLAN_8021Q=m
|
CONFIG_VLAN_8021Q=m
|
||||||
CONFIG_DECNET=m
|
|
||||||
CONFIG_DECNET_ROUTER=y
|
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
# CONFIG_FW_LOADER is not set
|
# CONFIG_FW_LOADER is not set
|
||||||
|
@ -49,8 +49,6 @@ CONFIG_IPV6_SUBTREES=y
|
|||||||
CONFIG_NETWORK_SECMARK=y
|
CONFIG_NETWORK_SECMARK=y
|
||||||
CONFIG_IP_SCTP=m
|
CONFIG_IP_SCTP=m
|
||||||
CONFIG_VLAN_8021Q=m
|
CONFIG_VLAN_8021Q=m
|
||||||
CONFIG_DECNET=m
|
|
||||||
CONFIG_DECNET_ROUTER=y
|
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
# CONFIG_FW_LOADER is not set
|
# CONFIG_FW_LOADER is not set
|
||||||
|
@ -48,8 +48,6 @@ CONFIG_IPV6_SUBTREES=y
|
|||||||
CONFIG_NETWORK_SECMARK=y
|
CONFIG_NETWORK_SECMARK=y
|
||||||
CONFIG_IP_SCTP=m
|
CONFIG_IP_SCTP=m
|
||||||
CONFIG_VLAN_8021Q=m
|
CONFIG_VLAN_8021Q=m
|
||||||
CONFIG_DECNET=m
|
|
||||||
CONFIG_DECNET_ROUTER=y
|
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
# CONFIG_FW_LOADER 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_ARPTABLES=m
|
||||||
CONFIG_IP_NF_ARPFILTER=m
|
CONFIG_IP_NF_ARPFILTER=m
|
||||||
CONFIG_IP_NF_ARP_MANGLE=m
|
CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
CONFIG_DECNET_NF_GRABULATOR=m
|
|
||||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
@ -99,7 +98,6 @@ CONFIG_ATM_MPOA=m
|
|||||||
CONFIG_ATM_BR2684=m
|
CONFIG_ATM_BR2684=m
|
||||||
CONFIG_BRIDGE=m
|
CONFIG_BRIDGE=m
|
||||||
CONFIG_VLAN_8021Q=m
|
CONFIG_VLAN_8021Q=m
|
||||||
CONFIG_DECNET=m
|
|
||||||
CONFIG_LLC2=m
|
CONFIG_LLC2=m
|
||||||
CONFIG_ATALK=m
|
CONFIG_ATALK=m
|
||||||
CONFIG_DEV_APPLETALK=m
|
CONFIG_DEV_APPLETALK=m
|
||||||
|
@ -117,7 +117,6 @@ CONFIG_IP6_NF_FILTER=m
|
|||||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||||
CONFIG_IP6_NF_MANGLE=m
|
CONFIG_IP6_NF_MANGLE=m
|
||||||
CONFIG_IP6_NF_RAW=m
|
CONFIG_IP6_NF_RAW=m
|
||||||
CONFIG_DECNET_NF_GRABULATOR=m
|
|
||||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
@ -147,7 +146,6 @@ CONFIG_ATM_MPOA=m
|
|||||||
CONFIG_ATM_BR2684=m
|
CONFIG_ATM_BR2684=m
|
||||||
CONFIG_BRIDGE=m
|
CONFIG_BRIDGE=m
|
||||||
CONFIG_VLAN_8021Q=m
|
CONFIG_VLAN_8021Q=m
|
||||||
CONFIG_DECNET=m
|
|
||||||
CONFIG_LLC2=m
|
CONFIG_LLC2=m
|
||||||
CONFIG_ATALK=m
|
CONFIG_ATALK=m
|
||||||
CONFIG_DEV_APPLETALK=m
|
CONFIG_DEV_APPLETALK=m
|
||||||
|
@ -200,7 +200,6 @@ CONFIG_IP6_NF_TARGET_REJECT=m
|
|||||||
CONFIG_IP6_NF_MANGLE=m
|
CONFIG_IP6_NF_MANGLE=m
|
||||||
CONFIG_IP6_NF_RAW=m
|
CONFIG_IP6_NF_RAW=m
|
||||||
CONFIG_IP6_NF_SECURITY=m
|
CONFIG_IP6_NF_SECURITY=m
|
||||||
CONFIG_DECNET_NF_GRABULATOR=m
|
|
||||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
@ -234,7 +233,6 @@ CONFIG_ATM_BR2684=m
|
|||||||
CONFIG_BRIDGE=m
|
CONFIG_BRIDGE=m
|
||||||
CONFIG_VLAN_8021Q=m
|
CONFIG_VLAN_8021Q=m
|
||||||
CONFIG_VLAN_8021Q_GVRP=y
|
CONFIG_VLAN_8021Q_GVRP=y
|
||||||
CONFIG_DECNET=m
|
|
||||||
CONFIG_LLC2=m
|
CONFIG_LLC2=m
|
||||||
CONFIG_ATALK=m
|
CONFIG_ATALK=m
|
||||||
CONFIG_DEV_APPLETALK=m
|
CONFIG_DEV_APPLETALK=m
|
||||||
|
@ -198,7 +198,6 @@ CONFIG_IP6_NF_TARGET_REJECT=m
|
|||||||
CONFIG_IP6_NF_MANGLE=m
|
CONFIG_IP6_NF_MANGLE=m
|
||||||
CONFIG_IP6_NF_RAW=m
|
CONFIG_IP6_NF_RAW=m
|
||||||
CONFIG_IP6_NF_SECURITY=m
|
CONFIG_IP6_NF_SECURITY=m
|
||||||
CONFIG_DECNET_NF_GRABULATOR=m
|
|
||||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
@ -232,7 +231,6 @@ CONFIG_ATM_BR2684=m
|
|||||||
CONFIG_BRIDGE=m
|
CONFIG_BRIDGE=m
|
||||||
CONFIG_VLAN_8021Q=m
|
CONFIG_VLAN_8021Q=m
|
||||||
CONFIG_VLAN_8021Q_GVRP=y
|
CONFIG_VLAN_8021Q_GVRP=y
|
||||||
CONFIG_DECNET=m
|
|
||||||
CONFIG_LLC2=m
|
CONFIG_LLC2=m
|
||||||
CONFIG_ATALK=m
|
CONFIG_ATALK=m
|
||||||
CONFIG_DEV_APPLETALK=m
|
CONFIG_DEV_APPLETALK=m
|
||||||
|
@ -116,7 +116,6 @@ CONFIG_IP6_NF_FILTER=m
|
|||||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||||
CONFIG_IP6_NF_MANGLE=m
|
CONFIG_IP6_NF_MANGLE=m
|
||||||
CONFIG_IP6_NF_RAW=m
|
CONFIG_IP6_NF_RAW=m
|
||||||
CONFIG_DECNET_NF_GRABULATOR=m
|
|
||||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||||
CONFIG_BRIDGE_EBT_T_FILTER=m
|
CONFIG_BRIDGE_EBT_T_FILTER=m
|
||||||
@ -137,7 +136,6 @@ CONFIG_BRIDGE_EBT_REDIRECT=m
|
|||||||
CONFIG_BRIDGE_EBT_SNAT=m
|
CONFIG_BRIDGE_EBT_SNAT=m
|
||||||
CONFIG_BRIDGE_EBT_LOG=m
|
CONFIG_BRIDGE_EBT_LOG=m
|
||||||
CONFIG_BRIDGE=m
|
CONFIG_BRIDGE=m
|
||||||
CONFIG_DECNET=m
|
|
||||||
CONFIG_NET_SCHED=y
|
CONFIG_NET_SCHED=y
|
||||||
CONFIG_NET_SCH_CBQ=m
|
CONFIG_NET_SCH_CBQ=m
|
||||||
CONFIG_NET_SCH_HTB=m
|
CONFIG_NET_SCH_HTB=m
|
||||||
|
@ -53,7 +53,7 @@ char *fw_getenv(char *envname)
|
|||||||
{
|
{
|
||||||
char *result = NULL;
|
char *result = NULL;
|
||||||
|
|
||||||
if (_fw_envp != NULL) {
|
if (_fw_envp != NULL && fw_envp(0) != NULL) {
|
||||||
/*
|
/*
|
||||||
* Return a pointer to the given environment variable.
|
* Return a pointer to the given environment variable.
|
||||||
* YAMON uses "name", "value" pairs, while U-Boot uses
|
* YAMON uses "name", "value" pairs, while U-Boot uses
|
||||||
|
@ -203,7 +203,7 @@ ATOMIC_OPS(atomic64, xor, s64, ^=, xor, lld, scd)
|
|||||||
* The function returns the old value of @v minus @i.
|
* The function returns the old value of @v minus @i.
|
||||||
*/
|
*/
|
||||||
#define ATOMIC_SIP_OP(pfx, type, op, ll, sc) \
|
#define ATOMIC_SIP_OP(pfx, type, op, ll, sc) \
|
||||||
static __inline__ int pfx##_sub_if_positive(type i, pfx##_t * v) \
|
static __inline__ type pfx##_sub_if_positive(type i, pfx##_t * v) \
|
||||||
{ \
|
{ \
|
||||||
type temp, result; \
|
type temp, result; \
|
||||||
\
|
\
|
||||||
|
@ -154,10 +154,6 @@ static unsigned long __init init_initrd(void)
|
|||||||
pr_err("initrd start must be page aligned\n");
|
pr_err("initrd start must be page aligned\n");
|
||||||
goto disable;
|
goto disable;
|
||||||
}
|
}
|
||||||
if (initrd_start < PAGE_OFFSET) {
|
|
||||||
pr_err("initrd start < PAGE_OFFSET\n");
|
|
||||||
goto disable;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sanitize initrd addresses. For example firmware
|
* Sanitize initrd addresses. For example firmware
|
||||||
@ -170,6 +166,11 @@ static unsigned long __init init_initrd(void)
|
|||||||
initrd_end = (unsigned long)__va(end);
|
initrd_end = (unsigned long)__va(end);
|
||||||
initrd_start = (unsigned long)__va(__pa(initrd_start));
|
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;
|
ROOT_DEV = Root_RAM0;
|
||||||
return PFN_UP(end);
|
return PFN_UP(end);
|
||||||
disable:
|
disable:
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
#define EMITS_PT_NOTE
|
#define EMITS_PT_NOTE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define RUNTIME_DISCARD_EXIT
|
||||||
|
|
||||||
#include <asm-generic/vmlinux.lds.h>
|
#include <asm-generic/vmlinux.lds.h>
|
||||||
|
|
||||||
#undef mips
|
#undef mips
|
||||||
|
@ -97,7 +97,7 @@ rgmii_0_eth_tse_0: ethernet@400 {
|
|||||||
rx-fifo-depth = <8192>;
|
rx-fifo-depth = <8192>;
|
||||||
tx-fifo-depth = <8192>;
|
tx-fifo-depth = <8192>;
|
||||||
address-bits = <48>;
|
address-bits = <48>;
|
||||||
max-frame-size = <1518>;
|
max-frame-size = <1500>;
|
||||||
local-mac-address = [00 00 00 00 00 00];
|
local-mac-address = [00 00 00 00 00 00];
|
||||||
altr,has-supplementary-unicast;
|
altr,has-supplementary-unicast;
|
||||||
altr,enable-sup-addr = <1>;
|
altr,enable-sup-addr = <1>;
|
||||||
|
@ -106,7 +106,7 @@ tse_mac: ethernet@4000 {
|
|||||||
interrupt-names = "rx_irq", "tx_irq";
|
interrupt-names = "rx_irq", "tx_irq";
|
||||||
rx-fifo-depth = <8192>;
|
rx-fifo-depth = <8192>;
|
||||||
tx-fifo-depth = <8192>;
|
tx-fifo-depth = <8192>;
|
||||||
max-frame-size = <1518>;
|
max-frame-size = <1500>;
|
||||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||||
phy-mode = "rgmii-id";
|
phy-mode = "rgmii-id";
|
||||||
phy-handle = <&phy0>;
|
phy-handle = <&phy0>;
|
||||||
|
@ -173,7 +173,6 @@ handler: ;\
|
|||||||
l.sw PT_GPR28(r1),r28 ;\
|
l.sw PT_GPR28(r1),r28 ;\
|
||||||
l.sw PT_GPR29(r1),r29 ;\
|
l.sw PT_GPR29(r1),r29 ;\
|
||||||
/* r30 already save */ ;\
|
/* r30 already save */ ;\
|
||||||
/* l.sw PT_GPR30(r1),r30*/ ;\
|
|
||||||
l.sw PT_GPR31(r1),r31 ;\
|
l.sw PT_GPR31(r1),r31 ;\
|
||||||
TRACE_IRQS_OFF_ENTRY ;\
|
TRACE_IRQS_OFF_ENTRY ;\
|
||||||
/* Store -1 in orig_gpr11 for non-syscall exceptions */ ;\
|
/* Store -1 in orig_gpr11 for non-syscall exceptions */ ;\
|
||||||
@ -211,9 +210,8 @@ handler: ;\
|
|||||||
l.sw PT_GPR27(r1),r27 ;\
|
l.sw PT_GPR27(r1),r27 ;\
|
||||||
l.sw PT_GPR28(r1),r28 ;\
|
l.sw PT_GPR28(r1),r28 ;\
|
||||||
l.sw PT_GPR29(r1),r29 ;\
|
l.sw PT_GPR29(r1),r29 ;\
|
||||||
/* r31 already saved */ ;\
|
/* r30 already saved */ ;\
|
||||||
l.sw PT_GPR30(r1),r30 ;\
|
l.sw PT_GPR31(r1),r31 ;\
|
||||||
/* l.sw PT_GPR31(r1),r31 */ ;\
|
|
||||||
/* Store -1 in orig_gpr11 for non-syscall exceptions */ ;\
|
/* Store -1 in orig_gpr11 for non-syscall exceptions */ ;\
|
||||||
l.addi r30,r0,-1 ;\
|
l.addi r30,r0,-1 ;\
|
||||||
l.sw PT_ORIG_GPR11(r1),r30 ;\
|
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_lock(mapping) xa_lock_irq(&mapping->i_pages)
|
||||||
#define flush_dcache_mmap_unlock(mapping) xa_unlock_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 { \
|
#define flush_icache_page(vma,page) do { \
|
||||||
flush_kernel_dcache_page(page); \
|
flush_kernel_dcache_page(page); \
|
||||||
|
@ -327,6 +327,7 @@ void flush_dcache_page(struct page *page)
|
|||||||
struct vm_area_struct *mpnt;
|
struct vm_area_struct *mpnt;
|
||||||
unsigned long offset;
|
unsigned long offset;
|
||||||
unsigned long addr, old_addr = 0;
|
unsigned long addr, old_addr = 0;
|
||||||
|
unsigned long flags;
|
||||||
pgoff_t pgoff;
|
pgoff_t pgoff;
|
||||||
|
|
||||||
if (mapping && !mapping_mapped(mapping)) {
|
if (mapping && !mapping_mapped(mapping)) {
|
||||||
@ -346,7 +347,7 @@ void flush_dcache_page(struct page *page)
|
|||||||
* declared as MAP_PRIVATE or MAP_SHARED), so we only need
|
* declared as MAP_PRIVATE or MAP_SHARED), so we only need
|
||||||
* to flush one address here for them all to become coherent */
|
* 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) {
|
vma_interval_tree_foreach(mpnt, &mapping->i_mmap, pgoff, pgoff) {
|
||||||
offset = (pgoff - mpnt->vm_pgoff) << PAGE_SHIFT;
|
offset = (pgoff - mpnt->vm_pgoff) << PAGE_SHIFT;
|
||||||
addr = mpnt->vm_start + offset;
|
addr = mpnt->vm_start + offset;
|
||||||
@ -369,7 +370,7 @@ void flush_dcache_page(struct page *page)
|
|||||||
old_addr = addr;
|
old_addr = addr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
flush_dcache_mmap_unlock(mapping);
|
flush_dcache_mmap_unlock_irqrestore(mapping, flags);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(flush_dcache_page);
|
EXPORT_SYMBOL(flush_dcache_page);
|
||||||
|
|
||||||
|
@ -446,11 +446,27 @@ 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,
|
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
|
||||||
enum dma_data_direction dir)
|
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);
|
flush_kernel_dcache_range((unsigned long)phys_to_virt(paddr), size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
|
||||||
enum dma_data_direction dir)
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,13 +123,18 @@ void machine_power_off(void)
|
|||||||
/* It seems we have no way to power the system off via
|
/* It seems we have no way to power the system off via
|
||||||
* software. The user has to press the button himself. */
|
* software. The user has to press the button himself. */
|
||||||
|
|
||||||
printk(KERN_EMERG "System shut down completed.\n"
|
printk("Power off or press RETURN to reboot.\n");
|
||||||
"Please power this system off now.");
|
|
||||||
|
|
||||||
/* prevent soft lockup/stalled CPU messages for endless loop. */
|
/* prevent soft lockup/stalled CPU messages for endless loop. */
|
||||||
rcu_sysrq_start();
|
rcu_sysrq_start();
|
||||||
lockup_detector_soft_poweroff();
|
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);
|
void (*pm_power_off)(void);
|
||||||
|
@ -248,9 +248,6 @@ ENTRY_CFI(real64_call_asm)
|
|||||||
/* save fn */
|
/* save fn */
|
||||||
copy %arg2, %r31
|
copy %arg2, %r31
|
||||||
|
|
||||||
/* set up the new ap */
|
|
||||||
ldo 64(%arg1), %r29
|
|
||||||
|
|
||||||
/* load up the arg registers from the saved arg area */
|
/* load up the arg registers from the saved arg area */
|
||||||
/* 32-bit calling convention passes first 4 args in registers */
|
/* 32-bit calling convention passes first 4 args in registers */
|
||||||
ldd 0*REG_SZ(%arg1), %arg0 /* note overwriting arg0 */
|
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 7*REG_SZ(%arg1), %r19
|
||||||
ldd 1*REG_SZ(%arg1), %arg1 /* do this one last! */
|
ldd 1*REG_SZ(%arg1), %arg1 /* do this one last! */
|
||||||
|
|
||||||
|
/* set up real-mode stack and real-mode ap */
|
||||||
tophys_r1 %sp
|
tophys_r1 %sp
|
||||||
|
ldo -16(%sp), %r29 /* Reference param save area */
|
||||||
|
|
||||||
b,l rfi_virt2real,%r2
|
b,l rfi_virt2real,%r2
|
||||||
nop
|
nop
|
||||||
|
@ -305,8 +305,8 @@ static void handle_break(struct pt_regs *regs)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_KGDB
|
#ifdef CONFIG_KGDB
|
||||||
if (unlikely(iir == PARISC_KGDB_COMPILED_BREAK_INSN ||
|
if (unlikely((iir == PARISC_KGDB_COMPILED_BREAK_INSN ||
|
||||||
iir == PARISC_KGDB_BREAK_INSN)) {
|
iir == PARISC_KGDB_BREAK_INSN)) && !user_mode(regs)) {
|
||||||
kgdb_handle_exception(9, SIGTRAP, 0, regs);
|
kgdb_handle_exception(9, SIGTRAP, 0, regs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -245,8 +245,6 @@ CONFIG_ATM_LANE=m
|
|||||||
CONFIG_ATM_BR2684=m
|
CONFIG_ATM_BR2684=m
|
||||||
CONFIG_BRIDGE=m
|
CONFIG_BRIDGE=m
|
||||||
CONFIG_VLAN_8021Q=m
|
CONFIG_VLAN_8021Q=m
|
||||||
CONFIG_DECNET=m
|
|
||||||
CONFIG_DECNET_ROUTER=y
|
|
||||||
CONFIG_ATALK=m
|
CONFIG_ATALK=m
|
||||||
CONFIG_DEV_APPLETALK=m
|
CONFIG_DEV_APPLETALK=m
|
||||||
CONFIG_IPDDP=m
|
CONFIG_IPDDP=m
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
#define FW_FEATURE_OPAL ASM_CONST(0x0000000010000000)
|
#define FW_FEATURE_OPAL ASM_CONST(0x0000000010000000)
|
||||||
#define FW_FEATURE_SET_MODE ASM_CONST(0x0000000040000000)
|
#define FW_FEATURE_SET_MODE ASM_CONST(0x0000000040000000)
|
||||||
#define FW_FEATURE_BEST_ENERGY ASM_CONST(0x0000000080000000)
|
#define FW_FEATURE_BEST_ENERGY ASM_CONST(0x0000000080000000)
|
||||||
#define FW_FEATURE_TYPE1_AFFINITY ASM_CONST(0x0000000100000000)
|
#define FW_FEATURE_FORM1_AFFINITY ASM_CONST(0x0000000100000000)
|
||||||
#define FW_FEATURE_PRRN ASM_CONST(0x0000000200000000)
|
#define FW_FEATURE_PRRN ASM_CONST(0x0000000200000000)
|
||||||
#define FW_FEATURE_DRMEM_V2 ASM_CONST(0x0000000400000000)
|
#define FW_FEATURE_DRMEM_V2 ASM_CONST(0x0000000400000000)
|
||||||
#define FW_FEATURE_DRC_INFO ASM_CONST(0x0000000800000000)
|
#define FW_FEATURE_DRC_INFO ASM_CONST(0x0000000800000000)
|
||||||
@ -53,6 +53,7 @@
|
|||||||
#define FW_FEATURE_ULTRAVISOR ASM_CONST(0x0000004000000000)
|
#define FW_FEATURE_ULTRAVISOR ASM_CONST(0x0000004000000000)
|
||||||
#define FW_FEATURE_STUFF_TCE ASM_CONST(0x0000008000000000)
|
#define FW_FEATURE_STUFF_TCE ASM_CONST(0x0000008000000000)
|
||||||
#define FW_FEATURE_RPT_INVALIDATE ASM_CONST(0x0000010000000000)
|
#define FW_FEATURE_RPT_INVALIDATE ASM_CONST(0x0000010000000000)
|
||||||
|
#define FW_FEATURE_FORM2_AFFINITY ASM_CONST(0x0000020000000000)
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
@ -69,11 +70,11 @@ enum {
|
|||||||
FW_FEATURE_SPLPAR | FW_FEATURE_LPAR |
|
FW_FEATURE_SPLPAR | FW_FEATURE_LPAR |
|
||||||
FW_FEATURE_CMO | FW_FEATURE_VPHN | FW_FEATURE_XCMO |
|
FW_FEATURE_CMO | FW_FEATURE_VPHN | FW_FEATURE_XCMO |
|
||||||
FW_FEATURE_SET_MODE | FW_FEATURE_BEST_ENERGY |
|
FW_FEATURE_SET_MODE | FW_FEATURE_BEST_ENERGY |
|
||||||
FW_FEATURE_TYPE1_AFFINITY | FW_FEATURE_PRRN |
|
FW_FEATURE_FORM1_AFFINITY | FW_FEATURE_PRRN |
|
||||||
FW_FEATURE_HPT_RESIZE | FW_FEATURE_DRMEM_V2 |
|
FW_FEATURE_HPT_RESIZE | FW_FEATURE_DRMEM_V2 |
|
||||||
FW_FEATURE_DRC_INFO | FW_FEATURE_BLOCK_REMOVE |
|
FW_FEATURE_DRC_INFO | FW_FEATURE_BLOCK_REMOVE |
|
||||||
FW_FEATURE_PAPR_SCM | FW_FEATURE_ULTRAVISOR |
|
FW_FEATURE_PAPR_SCM | FW_FEATURE_ULTRAVISOR |
|
||||||
FW_FEATURE_RPT_INVALIDATE,
|
FW_FEATURE_RPT_INVALIDATE | FW_FEATURE_FORM2_AFFINITY,
|
||||||
FW_FEATURE_PSERIES_ALWAYS = 0,
|
FW_FEATURE_PSERIES_ALWAYS = 0,
|
||||||
FW_FEATURE_POWERNV_POSSIBLE = FW_FEATURE_OPAL | FW_FEATURE_ULTRAVISOR,
|
FW_FEATURE_POWERNV_POSSIBLE = FW_FEATURE_OPAL | FW_FEATURE_ULTRAVISOR,
|
||||||
FW_FEATURE_POWERNV_ALWAYS = 0,
|
FW_FEATURE_POWERNV_ALWAYS = 0,
|
||||||
|
@ -147,8 +147,9 @@ extern int of_read_drc_info_cell(struct property **prop,
|
|||||||
#define OV5_MSI 0x0201 /* PCIe/MSI support */
|
#define OV5_MSI 0x0201 /* PCIe/MSI support */
|
||||||
#define OV5_CMO 0x0480 /* Cooperative Memory Overcommitment */
|
#define OV5_CMO 0x0480 /* Cooperative Memory Overcommitment */
|
||||||
#define OV5_XCMO 0x0440 /* Page Coalescing */
|
#define OV5_XCMO 0x0440 /* Page Coalescing */
|
||||||
#define OV5_TYPE1_AFFINITY 0x0580 /* Type 1 NUMA affinity */
|
#define OV5_FORM1_AFFINITY 0x0580 /* FORM1 NUMA affinity */
|
||||||
#define OV5_PRRN 0x0540 /* Platform Resource Reassignment */
|
#define OV5_PRRN 0x0540 /* Platform Resource Reassignment */
|
||||||
|
#define OV5_FORM2_AFFINITY 0x0520 /* Form2 NUMA affinity */
|
||||||
#define OV5_HP_EVT 0x0604 /* Hot Plug Event support */
|
#define OV5_HP_EVT 0x0604 /* Hot Plug Event support */
|
||||||
#define OV5_RESIZE_HPT 0x0601 /* Hash Page Table resizing */
|
#define OV5_RESIZE_HPT 0x0601 /* Hash Page Table resizing */
|
||||||
#define OV5_PFO_HW_RNG 0x1180 /* PFO Random Number Generator */
|
#define OV5_PFO_HW_RNG 0x1180 /* PFO Random Number Generator */
|
||||||
|
@ -36,7 +36,7 @@ static inline int pcibus_to_node(struct pci_bus *bus)
|
|||||||
cpu_all_mask : \
|
cpu_all_mask : \
|
||||||
cpumask_of_node(pcibus_to_node(bus)))
|
cpumask_of_node(pcibus_to_node(bus)))
|
||||||
|
|
||||||
extern int cpu_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc);
|
int cpu_relative_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc);
|
||||||
extern int __node_distance(int, int);
|
extern int __node_distance(int, int);
|
||||||
#define node_distance(a, b) __node_distance(a, b)
|
#define node_distance(a, b) __node_distance(a, b)
|
||||||
|
|
||||||
@ -64,6 +64,7 @@ static inline int early_cpu_to_node(int cpu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int of_drconf_to_nid_single(struct drmem_lmb *lmb);
|
int of_drconf_to_nid_single(struct drmem_lmb *lmb);
|
||||||
|
void update_numa_distance(struct device_node *node);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@ -83,7 +84,7 @@ static inline void sysfs_remove_device_from_node(struct device *dev,
|
|||||||
|
|
||||||
static inline void update_numa_cpu_lookup_table(unsigned int cpu, int node) {}
|
static inline void update_numa_cpu_lookup_table(unsigned int cpu, int node) {}
|
||||||
|
|
||||||
static inline int cpu_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc)
|
static inline int cpu_relative_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -93,6 +94,7 @@ static inline int of_drconf_to_nid_single(struct drmem_lmb *lmb)
|
|||||||
return first_online_node;
|
return first_online_node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void update_numa_distance(struct device_node *node) {}
|
||||||
#endif /* CONFIG_NUMA */
|
#endif /* CONFIG_NUMA */
|
||||||
|
|
||||||
#if defined(CONFIG_NUMA) && defined(CONFIG_PPC_SPLPAR)
|
#if defined(CONFIG_NUMA) && defined(CONFIG_PPC_SPLPAR)
|
||||||
|
@ -1069,7 +1069,8 @@ static const struct ibm_arch_vec ibm_architecture_vec_template __initconst = {
|
|||||||
#else
|
#else
|
||||||
0,
|
0,
|
||||||
#endif
|
#endif
|
||||||
.associativity = OV5_FEAT(OV5_TYPE1_AFFINITY) | OV5_FEAT(OV5_PRRN),
|
.associativity = OV5_FEAT(OV5_FORM1_AFFINITY) | OV5_FEAT(OV5_PRRN) |
|
||||||
|
OV5_FEAT(OV5_FORM2_AFFINITY),
|
||||||
.bin_opts = OV5_FEAT(OV5_RESIZE_HPT) | OV5_FEAT(OV5_HP_EVT),
|
.bin_opts = OV5_FEAT(OV5_RESIZE_HPT) | OV5_FEAT(OV5_HP_EVT),
|
||||||
.micro_checkpoint = 0,
|
.micro_checkpoint = 0,
|
||||||
.reserved0 = 0,
|
.reserved0 = 0,
|
||||||
|
@ -399,7 +399,7 @@ static char *__fetch_rtas_last_error(char *altbuf)
|
|||||||
buf = kmalloc(RTAS_ERROR_LOG_MAX, GFP_ATOMIC);
|
buf = kmalloc(RTAS_ERROR_LOG_MAX, GFP_ATOMIC);
|
||||||
}
|
}
|
||||||
if (buf)
|
if (buf)
|
||||||
memcpy(buf, rtas_err_buf, RTAS_ERROR_LOG_MAX);
|
memmove(buf, rtas_err_buf, RTAS_ERROR_LOG_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
|
@ -1064,8 +1064,8 @@ void radix__ptep_set_access_flags(struct vm_area_struct *vma, pte_t *ptep,
|
|||||||
pte_t entry, unsigned long address, int psize)
|
pte_t entry, unsigned long address, int psize)
|
||||||
{
|
{
|
||||||
struct mm_struct *mm = vma->vm_mm;
|
struct mm_struct *mm = vma->vm_mm;
|
||||||
unsigned long set = pte_val(entry) & (_PAGE_DIRTY | _PAGE_ACCESSED |
|
unsigned long set = pte_val(entry) & (_PAGE_DIRTY | _PAGE_SOFT_DIRTY |
|
||||||
_PAGE_RW | _PAGE_EXEC);
|
_PAGE_ACCESSED | _PAGE_RW | _PAGE_EXEC);
|
||||||
|
|
||||||
unsigned long change = pte_val(entry) ^ pte_val(*ptep);
|
unsigned long change = pte_val(entry) ^ pte_val(*ptep);
|
||||||
/*
|
/*
|
||||||
|
@ -51,14 +51,22 @@ EXPORT_SYMBOL(numa_cpu_lookup_table);
|
|||||||
EXPORT_SYMBOL(node_to_cpumask_map);
|
EXPORT_SYMBOL(node_to_cpumask_map);
|
||||||
EXPORT_SYMBOL(node_data);
|
EXPORT_SYMBOL(node_data);
|
||||||
|
|
||||||
static int min_common_depth;
|
static int primary_domain_index;
|
||||||
static int n_mem_addr_cells, n_mem_size_cells;
|
static int n_mem_addr_cells, n_mem_size_cells;
|
||||||
static int form1_affinity;
|
|
||||||
|
#define FORM0_AFFINITY 0
|
||||||
|
#define FORM1_AFFINITY 1
|
||||||
|
#define FORM2_AFFINITY 2
|
||||||
|
static int affinity_form;
|
||||||
|
|
||||||
#define MAX_DISTANCE_REF_POINTS 4
|
#define MAX_DISTANCE_REF_POINTS 4
|
||||||
static int distance_ref_points_depth;
|
static int distance_ref_points_depth;
|
||||||
static const __be32 *distance_ref_points;
|
static const __be32 *distance_ref_points;
|
||||||
static int distance_lookup_table[MAX_NUMNODES][MAX_DISTANCE_REF_POINTS];
|
static int distance_lookup_table[MAX_NUMNODES][MAX_DISTANCE_REF_POINTS];
|
||||||
|
static int numa_distance_table[MAX_NUMNODES][MAX_NUMNODES] = {
|
||||||
|
[0 ... MAX_NUMNODES - 1] = { [0 ... MAX_NUMNODES - 1] = -1 }
|
||||||
|
};
|
||||||
|
static int numa_id_index_table[MAX_NUMNODES] = { [0 ... MAX_NUMNODES - 1] = NUMA_NO_NODE };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate node_to_cpumask_map based on number of available nodes
|
* Allocate node_to_cpumask_map based on number of available nodes
|
||||||
@ -163,7 +171,55 @@ static void unmap_cpu_from_node(unsigned long cpu)
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_HOTPLUG_CPU || CONFIG_PPC_SPLPAR */
|
#endif /* CONFIG_HOTPLUG_CPU || CONFIG_PPC_SPLPAR */
|
||||||
|
|
||||||
int cpu_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc)
|
static int __associativity_to_nid(const __be32 *associativity,
|
||||||
|
int max_array_sz)
|
||||||
|
{
|
||||||
|
int nid;
|
||||||
|
/*
|
||||||
|
* primary_domain_index is 1 based array index.
|
||||||
|
*/
|
||||||
|
int index = primary_domain_index - 1;
|
||||||
|
|
||||||
|
if (!numa_enabled || index >= max_array_sz)
|
||||||
|
return NUMA_NO_NODE;
|
||||||
|
|
||||||
|
nid = of_read_number(&associativity[index], 1);
|
||||||
|
|
||||||
|
/* POWER4 LPAR uses 0xffff as invalid node */
|
||||||
|
if (nid == 0xffff || nid >= nr_node_ids)
|
||||||
|
nid = NUMA_NO_NODE;
|
||||||
|
return nid;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Returns nid in the range [0..nr_node_ids], or -1 if no useful NUMA
|
||||||
|
* info is found.
|
||||||
|
*/
|
||||||
|
static int associativity_to_nid(const __be32 *associativity)
|
||||||
|
{
|
||||||
|
int array_sz = of_read_number(associativity, 1);
|
||||||
|
|
||||||
|
/* Skip the first element in the associativity array */
|
||||||
|
return __associativity_to_nid((associativity + 1), array_sz);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __cpu_form2_relative_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc)
|
||||||
|
{
|
||||||
|
int dist;
|
||||||
|
int node1, node2;
|
||||||
|
|
||||||
|
node1 = associativity_to_nid(cpu1_assoc);
|
||||||
|
node2 = associativity_to_nid(cpu2_assoc);
|
||||||
|
|
||||||
|
dist = numa_distance_table[node1][node2];
|
||||||
|
if (dist <= LOCAL_DISTANCE)
|
||||||
|
return 0;
|
||||||
|
else if (dist <= REMOTE_DISTANCE)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __cpu_form1_relative_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc)
|
||||||
{
|
{
|
||||||
int dist = 0;
|
int dist = 0;
|
||||||
|
|
||||||
@ -179,6 +235,15 @@ int cpu_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc)
|
|||||||
return dist;
|
return dist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int cpu_relative_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc)
|
||||||
|
{
|
||||||
|
/* We should not get called with FORM0 */
|
||||||
|
VM_WARN_ON(affinity_form == FORM0_AFFINITY);
|
||||||
|
if (affinity_form == FORM1_AFFINITY)
|
||||||
|
return __cpu_form1_relative_distance(cpu1_assoc, cpu2_assoc);
|
||||||
|
return __cpu_form2_relative_distance(cpu1_assoc, cpu2_assoc);
|
||||||
|
}
|
||||||
|
|
||||||
/* must hold reference to node during call */
|
/* must hold reference to node during call */
|
||||||
static const __be32 *of_get_associativity(struct device_node *dev)
|
static const __be32 *of_get_associativity(struct device_node *dev)
|
||||||
{
|
{
|
||||||
@ -190,7 +255,9 @@ int __node_distance(int a, int b)
|
|||||||
int i;
|
int i;
|
||||||
int distance = LOCAL_DISTANCE;
|
int distance = LOCAL_DISTANCE;
|
||||||
|
|
||||||
if (!form1_affinity)
|
if (affinity_form == FORM2_AFFINITY)
|
||||||
|
return numa_distance_table[a][b];
|
||||||
|
else if (affinity_form == FORM0_AFFINITY)
|
||||||
return ((a == b) ? LOCAL_DISTANCE : REMOTE_DISTANCE);
|
return ((a == b) ? LOCAL_DISTANCE : REMOTE_DISTANCE);
|
||||||
|
|
||||||
for (i = 0; i < distance_ref_points_depth; i++) {
|
for (i = 0; i < distance_ref_points_depth; i++) {
|
||||||
@ -205,52 +272,6 @@ int __node_distance(int a, int b)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__node_distance);
|
EXPORT_SYMBOL(__node_distance);
|
||||||
|
|
||||||
static void initialize_distance_lookup_table(int nid,
|
|
||||||
const __be32 *associativity)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (!form1_affinity)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (i = 0; i < distance_ref_points_depth; i++) {
|
|
||||||
const __be32 *entry;
|
|
||||||
|
|
||||||
entry = &associativity[be32_to_cpu(distance_ref_points[i]) - 1];
|
|
||||||
distance_lookup_table[nid][i] = of_read_number(entry, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Returns nid in the range [0..nr_node_ids], or -1 if no useful NUMA
|
|
||||||
* info is found.
|
|
||||||
*/
|
|
||||||
static int associativity_to_nid(const __be32 *associativity)
|
|
||||||
{
|
|
||||||
int nid = NUMA_NO_NODE;
|
|
||||||
|
|
||||||
if (!numa_enabled)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
if (of_read_number(associativity, 1) >= min_common_depth)
|
|
||||||
nid = of_read_number(&associativity[min_common_depth], 1);
|
|
||||||
|
|
||||||
/* POWER4 LPAR uses 0xffff as invalid node */
|
|
||||||
if (nid == 0xffff || nid >= nr_node_ids)
|
|
||||||
nid = NUMA_NO_NODE;
|
|
||||||
|
|
||||||
if (nid > 0 &&
|
|
||||||
of_read_number(associativity, 1) >= distance_ref_points_depth) {
|
|
||||||
/*
|
|
||||||
* Skip the length field and send start of associativity array
|
|
||||||
*/
|
|
||||||
initialize_distance_lookup_table(nid, associativity + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
out:
|
|
||||||
return nid;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Returns the nid associated with the given device tree node,
|
/* Returns the nid associated with the given device tree node,
|
||||||
* or -1 if not found.
|
* or -1 if not found.
|
||||||
*/
|
*/
|
||||||
@ -284,10 +305,159 @@ int of_node_to_nid(struct device_node *device)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(of_node_to_nid);
|
EXPORT_SYMBOL(of_node_to_nid);
|
||||||
|
|
||||||
static int __init find_min_common_depth(void)
|
static void __initialize_form1_numa_distance(const __be32 *associativity,
|
||||||
|
int max_array_sz)
|
||||||
{
|
{
|
||||||
int depth;
|
int i, nid;
|
||||||
|
|
||||||
|
if (affinity_form != FORM1_AFFINITY)
|
||||||
|
return;
|
||||||
|
|
||||||
|
nid = __associativity_to_nid(associativity, max_array_sz);
|
||||||
|
if (nid != NUMA_NO_NODE) {
|
||||||
|
for (i = 0; i < distance_ref_points_depth; i++) {
|
||||||
|
const __be32 *entry;
|
||||||
|
int index = be32_to_cpu(distance_ref_points[i]) - 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* broken hierarchy, return with broken distance table
|
||||||
|
*/
|
||||||
|
if (WARN(index >= max_array_sz, "Broken ibm,associativity property"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
entry = &associativity[index];
|
||||||
|
distance_lookup_table[nid][i] = of_read_number(entry, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void initialize_form1_numa_distance(const __be32 *associativity)
|
||||||
|
{
|
||||||
|
int array_sz;
|
||||||
|
|
||||||
|
array_sz = of_read_number(associativity, 1);
|
||||||
|
/* Skip the first element in the associativity array */
|
||||||
|
__initialize_form1_numa_distance(associativity + 1, array_sz);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Used to update distance information w.r.t newly added node.
|
||||||
|
*/
|
||||||
|
void update_numa_distance(struct device_node *node)
|
||||||
|
{
|
||||||
|
int nid;
|
||||||
|
|
||||||
|
if (affinity_form == FORM0_AFFINITY)
|
||||||
|
return;
|
||||||
|
else if (affinity_form == FORM1_AFFINITY) {
|
||||||
|
const __be32 *associativity;
|
||||||
|
|
||||||
|
associativity = of_get_associativity(node);
|
||||||
|
if (!associativity)
|
||||||
|
return;
|
||||||
|
|
||||||
|
initialize_form1_numa_distance(associativity);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FORM2 affinity */
|
||||||
|
nid = of_node_to_nid_single(node);
|
||||||
|
if (nid == NUMA_NO_NODE)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* With FORM2 we expect NUMA distance of all possible NUMA
|
||||||
|
* nodes to be provided during boot.
|
||||||
|
*/
|
||||||
|
WARN(numa_distance_table[nid][nid] == -1,
|
||||||
|
"NUMA distance details for node %d not provided\n", nid);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(update_numa_distance);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ibm,numa-lookup-index-table= {N, domainid1, domainid2, ..... domainidN}
|
||||||
|
* ibm,numa-distance-table = { N, 1, 2, 4, 5, 1, 6, .... N elements}
|
||||||
|
*/
|
||||||
|
static void initialize_form2_numa_distance_lookup_table(void)
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
struct device_node *root;
|
struct device_node *root;
|
||||||
|
const __u8 *numa_dist_table;
|
||||||
|
const __be32 *numa_lookup_index;
|
||||||
|
int numa_dist_table_length;
|
||||||
|
int max_numa_index, distance_index;
|
||||||
|
|
||||||
|
if (firmware_has_feature(FW_FEATURE_OPAL))
|
||||||
|
root = of_find_node_by_path("/ibm,opal");
|
||||||
|
else
|
||||||
|
root = of_find_node_by_path("/rtas");
|
||||||
|
if (!root)
|
||||||
|
root = of_find_node_by_path("/");
|
||||||
|
|
||||||
|
numa_lookup_index = of_get_property(root, "ibm,numa-lookup-index-table", NULL);
|
||||||
|
max_numa_index = of_read_number(&numa_lookup_index[0], 1);
|
||||||
|
|
||||||
|
/* first element of the array is the size and is encode-int */
|
||||||
|
numa_dist_table = of_get_property(root, "ibm,numa-distance-table", NULL);
|
||||||
|
numa_dist_table_length = of_read_number((const __be32 *)&numa_dist_table[0], 1);
|
||||||
|
/* Skip the size which is encoded int */
|
||||||
|
numa_dist_table += sizeof(__be32);
|
||||||
|
|
||||||
|
pr_debug("numa_dist_table_len = %d, numa_dist_indexes_len = %d\n",
|
||||||
|
numa_dist_table_length, max_numa_index);
|
||||||
|
|
||||||
|
for (i = 0; i < max_numa_index; i++)
|
||||||
|
/* +1 skip the max_numa_index in the property */
|
||||||
|
numa_id_index_table[i] = of_read_number(&numa_lookup_index[i + 1], 1);
|
||||||
|
|
||||||
|
|
||||||
|
if (numa_dist_table_length != max_numa_index * max_numa_index) {
|
||||||
|
WARN(1, "Wrong NUMA distance information\n");
|
||||||
|
/* consider everybody else just remote. */
|
||||||
|
for (i = 0; i < max_numa_index; i++) {
|
||||||
|
for (j = 0; j < max_numa_index; j++) {
|
||||||
|
int nodeA = numa_id_index_table[i];
|
||||||
|
int nodeB = numa_id_index_table[j];
|
||||||
|
|
||||||
|
if (nodeA == nodeB)
|
||||||
|
numa_distance_table[nodeA][nodeB] = LOCAL_DISTANCE;
|
||||||
|
else
|
||||||
|
numa_distance_table[nodeA][nodeB] = REMOTE_DISTANCE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
distance_index = 0;
|
||||||
|
for (i = 0; i < max_numa_index; i++) {
|
||||||
|
for (j = 0; j < max_numa_index; j++) {
|
||||||
|
int nodeA = numa_id_index_table[i];
|
||||||
|
int nodeB = numa_id_index_table[j];
|
||||||
|
|
||||||
|
numa_distance_table[nodeA][nodeB] = numa_dist_table[distance_index++];
|
||||||
|
pr_debug("dist[%d][%d]=%d ", nodeA, nodeB, numa_distance_table[nodeA][nodeB]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
of_node_put(root);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __init find_primary_domain_index(void)
|
||||||
|
{
|
||||||
|
int index;
|
||||||
|
struct device_node *root;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check for which form of affinity.
|
||||||
|
*/
|
||||||
|
if (firmware_has_feature(FW_FEATURE_OPAL)) {
|
||||||
|
affinity_form = FORM1_AFFINITY;
|
||||||
|
} else if (firmware_has_feature(FW_FEATURE_FORM2_AFFINITY)) {
|
||||||
|
dbg("Using form 2 affinity\n");
|
||||||
|
affinity_form = FORM2_AFFINITY;
|
||||||
|
} else if (firmware_has_feature(FW_FEATURE_FORM1_AFFINITY)) {
|
||||||
|
dbg("Using form 1 affinity\n");
|
||||||
|
affinity_form = FORM1_AFFINITY;
|
||||||
|
} else
|
||||||
|
affinity_form = FORM0_AFFINITY;
|
||||||
|
|
||||||
if (firmware_has_feature(FW_FEATURE_OPAL))
|
if (firmware_has_feature(FW_FEATURE_OPAL))
|
||||||
root = of_find_node_by_path("/ibm,opal");
|
root = of_find_node_by_path("/ibm,opal");
|
||||||
@ -318,25 +488,21 @@ static int __init find_min_common_depth(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
distance_ref_points_depth /= sizeof(int);
|
distance_ref_points_depth /= sizeof(int);
|
||||||
|
if (affinity_form == FORM0_AFFINITY) {
|
||||||
if (firmware_has_feature(FW_FEATURE_OPAL) ||
|
|
||||||
firmware_has_feature(FW_FEATURE_TYPE1_AFFINITY)) {
|
|
||||||
dbg("Using form 1 affinity\n");
|
|
||||||
form1_affinity = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (form1_affinity) {
|
|
||||||
depth = of_read_number(distance_ref_points, 1);
|
|
||||||
} else {
|
|
||||||
if (distance_ref_points_depth < 2) {
|
if (distance_ref_points_depth < 2) {
|
||||||
printk(KERN_WARNING "NUMA: "
|
printk(KERN_WARNING "NUMA: "
|
||||||
"short ibm,associativity-reference-points\n");
|
"short ibm,associativity-reference-points\n");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
depth = of_read_number(&distance_ref_points[1], 1);
|
index = of_read_number(&distance_ref_points[1], 1);
|
||||||
|
} else {
|
||||||
|
/*
|
||||||
|
* Both FORM1 and FORM2 affinity find the primary domain details
|
||||||
|
* at the same offset.
|
||||||
|
*/
|
||||||
|
index = of_read_number(distance_ref_points, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Warn and cap if the hardware supports more than
|
* Warn and cap if the hardware supports more than
|
||||||
* MAX_DISTANCE_REF_POINTS domains.
|
* MAX_DISTANCE_REF_POINTS domains.
|
||||||
@ -348,7 +514,7 @@ static int __init find_min_common_depth(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
of_node_put(root);
|
of_node_put(root);
|
||||||
return depth;
|
return index;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
of_node_put(root);
|
of_node_put(root);
|
||||||
@ -426,6 +592,38 @@ static int of_get_assoc_arrays(struct assoc_arrays *aa)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int get_nid_and_numa_distance(struct drmem_lmb *lmb)
|
||||||
|
{
|
||||||
|
struct assoc_arrays aa = { .arrays = NULL };
|
||||||
|
int default_nid = NUMA_NO_NODE;
|
||||||
|
int nid = default_nid;
|
||||||
|
int rc, index;
|
||||||
|
|
||||||
|
if ((primary_domain_index < 0) || !numa_enabled)
|
||||||
|
return default_nid;
|
||||||
|
|
||||||
|
rc = of_get_assoc_arrays(&aa);
|
||||||
|
if (rc)
|
||||||
|
return default_nid;
|
||||||
|
|
||||||
|
if (primary_domain_index <= aa.array_sz &&
|
||||||
|
!(lmb->flags & DRCONF_MEM_AI_INVALID) && lmb->aa_index < aa.n_arrays) {
|
||||||
|
const __be32 *associativity;
|
||||||
|
|
||||||
|
index = lmb->aa_index * aa.array_sz;
|
||||||
|
associativity = &aa.arrays[index];
|
||||||
|
nid = __associativity_to_nid(associativity, aa.array_sz);
|
||||||
|
if (nid > 0 && affinity_form == FORM1_AFFINITY) {
|
||||||
|
/*
|
||||||
|
* lookup array associativity entries have
|
||||||
|
* no length of the array as the first element.
|
||||||
|
*/
|
||||||
|
__initialize_form1_numa_distance(associativity, aa.array_sz);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nid;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is like of_node_to_nid_single() for memory represented in the
|
* This is like of_node_to_nid_single() for memory represented in the
|
||||||
* ibm,dynamic-reconfiguration-memory node.
|
* ibm,dynamic-reconfiguration-memory node.
|
||||||
@ -437,35 +635,28 @@ int of_drconf_to_nid_single(struct drmem_lmb *lmb)
|
|||||||
int nid = default_nid;
|
int nid = default_nid;
|
||||||
int rc, index;
|
int rc, index;
|
||||||
|
|
||||||
if ((min_common_depth < 0) || !numa_enabled)
|
if ((primary_domain_index < 0) || !numa_enabled)
|
||||||
return default_nid;
|
return default_nid;
|
||||||
|
|
||||||
rc = of_get_assoc_arrays(&aa);
|
rc = of_get_assoc_arrays(&aa);
|
||||||
if (rc)
|
if (rc)
|
||||||
return default_nid;
|
return default_nid;
|
||||||
|
|
||||||
if (min_common_depth <= aa.array_sz &&
|
if (primary_domain_index <= aa.array_sz &&
|
||||||
!(lmb->flags & DRCONF_MEM_AI_INVALID) && lmb->aa_index < aa.n_arrays) {
|
!(lmb->flags & DRCONF_MEM_AI_INVALID) && lmb->aa_index < aa.n_arrays) {
|
||||||
index = lmb->aa_index * aa.array_sz + min_common_depth - 1;
|
const __be32 *associativity;
|
||||||
nid = of_read_number(&aa.arrays[index], 1);
|
|
||||||
|
|
||||||
if (nid == 0xffff || nid >= nr_node_ids)
|
index = lmb->aa_index * aa.array_sz;
|
||||||
nid = default_nid;
|
associativity = &aa.arrays[index];
|
||||||
|
nid = __associativity_to_nid(associativity, aa.array_sz);
|
||||||
if (nid > 0) {
|
|
||||||
index = lmb->aa_index * aa.array_sz;
|
|
||||||
initialize_distance_lookup_table(nid,
|
|
||||||
&aa.arrays[index]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nid;
|
return nid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_SPLPAR
|
#ifdef CONFIG_PPC_SPLPAR
|
||||||
static int vphn_get_nid(long lcpu)
|
|
||||||
|
static int __vphn_get_associativity(long lcpu, __be32 *associativity)
|
||||||
{
|
{
|
||||||
__be32 associativity[VPHN_ASSOC_BUFSIZE] = {0};
|
|
||||||
long rc, hwid;
|
long rc, hwid;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -485,12 +676,30 @@ static int vphn_get_nid(long lcpu)
|
|||||||
|
|
||||||
rc = hcall_vphn(hwid, VPHN_FLAG_VCPU, associativity);
|
rc = hcall_vphn(hwid, VPHN_FLAG_VCPU, associativity);
|
||||||
if (rc == H_SUCCESS)
|
if (rc == H_SUCCESS)
|
||||||
return associativity_to_nid(associativity);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int vphn_get_nid(long lcpu)
|
||||||
|
{
|
||||||
|
__be32 associativity[VPHN_ASSOC_BUFSIZE] = {0};
|
||||||
|
|
||||||
|
|
||||||
|
if (!__vphn_get_associativity(lcpu, associativity))
|
||||||
|
return associativity_to_nid(associativity);
|
||||||
|
|
||||||
return NUMA_NO_NODE;
|
return NUMA_NO_NODE;
|
||||||
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
static int __vphn_get_associativity(long lcpu, __be32 *associativity)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static int vphn_get_nid(long unused)
|
static int vphn_get_nid(long unused)
|
||||||
{
|
{
|
||||||
return NUMA_NO_NODE;
|
return NUMA_NO_NODE;
|
||||||
@ -685,7 +894,7 @@ static int __init numa_setup_drmem_lmb(struct drmem_lmb *lmb,
|
|||||||
size = read_n_cells(n_mem_size_cells, usm);
|
size = read_n_cells(n_mem_size_cells, usm);
|
||||||
}
|
}
|
||||||
|
|
||||||
nid = of_drconf_to_nid_single(lmb);
|
nid = get_nid_and_numa_distance(lmb);
|
||||||
fake_numa_create_new_node(((base + size) >> PAGE_SHIFT),
|
fake_numa_create_new_node(((base + size) >> PAGE_SHIFT),
|
||||||
&nid);
|
&nid);
|
||||||
node_set_online(nid);
|
node_set_online(nid);
|
||||||
@ -702,24 +911,31 @@ static int __init parse_numa_properties(void)
|
|||||||
struct device_node *memory;
|
struct device_node *memory;
|
||||||
int default_nid = 0;
|
int default_nid = 0;
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
|
const __be32 *associativity;
|
||||||
|
|
||||||
if (numa_enabled == 0) {
|
if (numa_enabled == 0) {
|
||||||
printk(KERN_WARNING "NUMA disabled by user\n");
|
printk(KERN_WARNING "NUMA disabled by user\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
min_common_depth = find_min_common_depth();
|
primary_domain_index = find_primary_domain_index();
|
||||||
|
|
||||||
if (min_common_depth < 0) {
|
if (primary_domain_index < 0) {
|
||||||
/*
|
/*
|
||||||
* if we fail to parse min_common_depth from device tree
|
* if we fail to parse primary_domain_index from device tree
|
||||||
* mark the numa disabled, boot with numa disabled.
|
* mark the numa disabled, boot with numa disabled.
|
||||||
*/
|
*/
|
||||||
numa_enabled = false;
|
numa_enabled = false;
|
||||||
return min_common_depth;
|
return primary_domain_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
dbg("NUMA associativity depth for CPU/Memory: %d\n", min_common_depth);
|
dbg("NUMA associativity depth for CPU/Memory: %d\n", primary_domain_index);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If it is FORM2 initialize the distance table here.
|
||||||
|
*/
|
||||||
|
if (affinity_form == FORM2_AFFINITY)
|
||||||
|
initialize_form2_numa_distance_lookup_table();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Even though we connect cpus to numa domains later in SMP
|
* Even though we connect cpus to numa domains later in SMP
|
||||||
@ -727,18 +943,30 @@ static int __init parse_numa_properties(void)
|
|||||||
* each node to be onlined must have NODE_DATA etc backing it.
|
* each node to be onlined must have NODE_DATA etc backing it.
|
||||||
*/
|
*/
|
||||||
for_each_present_cpu(i) {
|
for_each_present_cpu(i) {
|
||||||
|
__be32 vphn_assoc[VPHN_ASSOC_BUFSIZE];
|
||||||
struct device_node *cpu;
|
struct device_node *cpu;
|
||||||
int nid = vphn_get_nid(i);
|
int nid = NUMA_NO_NODE;
|
||||||
|
|
||||||
/*
|
memset(vphn_assoc, 0, VPHN_ASSOC_BUFSIZE * sizeof(__be32));
|
||||||
* Don't fall back to default_nid yet -- we will plug
|
|
||||||
* cpus into nodes once the memory scan has discovered
|
if (__vphn_get_associativity(i, vphn_assoc) == 0) {
|
||||||
* the topology.
|
nid = associativity_to_nid(vphn_assoc);
|
||||||
*/
|
initialize_form1_numa_distance(vphn_assoc);
|
||||||
if (nid == NUMA_NO_NODE) {
|
} else {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Don't fall back to default_nid yet -- we will plug
|
||||||
|
* cpus into nodes once the memory scan has discovered
|
||||||
|
* the topology.
|
||||||
|
*/
|
||||||
cpu = of_get_cpu_node(i, NULL);
|
cpu = of_get_cpu_node(i, NULL);
|
||||||
BUG_ON(!cpu);
|
BUG_ON(!cpu);
|
||||||
nid = of_node_to_nid_single(cpu);
|
|
||||||
|
associativity = of_get_associativity(cpu);
|
||||||
|
if (associativity) {
|
||||||
|
nid = associativity_to_nid(associativity);
|
||||||
|
initialize_form1_numa_distance(associativity);
|
||||||
|
}
|
||||||
of_node_put(cpu);
|
of_node_put(cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -776,8 +1004,11 @@ static int __init parse_numa_properties(void)
|
|||||||
* have associativity properties. If none, then
|
* have associativity properties. If none, then
|
||||||
* everything goes to default_nid.
|
* everything goes to default_nid.
|
||||||
*/
|
*/
|
||||||
nid = of_node_to_nid_single(memory);
|
associativity = of_get_associativity(memory);
|
||||||
if (nid < 0)
|
if (associativity) {
|
||||||
|
nid = associativity_to_nid(associativity);
|
||||||
|
initialize_form1_numa_distance(associativity);
|
||||||
|
} else
|
||||||
nid = default_nid;
|
nid = default_nid;
|
||||||
|
|
||||||
fake_numa_create_new_node(((start + size) >> PAGE_SHIFT), &nid);
|
fake_numa_create_new_node(((start + size) >> PAGE_SHIFT), &nid);
|
||||||
@ -926,7 +1157,7 @@ static void __init find_possible_nodes(void)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
max_nodes = of_read_number(&domains[min_common_depth], 1);
|
max_nodes = of_read_number(&domains[primary_domain_index], 1);
|
||||||
pr_info("Partition configured for %d NUMA nodes.\n", max_nodes);
|
pr_info("Partition configured for %d NUMA nodes.\n", max_nodes);
|
||||||
|
|
||||||
for (i = 0; i < max_nodes; i++) {
|
for (i = 0; i < max_nodes; i++) {
|
||||||
@ -935,7 +1166,7 @@ static void __init find_possible_nodes(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
prop_length /= sizeof(int);
|
prop_length /= sizeof(int);
|
||||||
if (prop_length > min_common_depth + 2)
|
if (prop_length > primary_domain_index + 2)
|
||||||
coregroup_enabled = 1;
|
coregroup_enabled = 1;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
@ -1268,7 +1499,7 @@ int cpu_to_coregroup_id(int cpu)
|
|||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
index = of_read_number(associativity, 1);
|
index = of_read_number(associativity, 1);
|
||||||
if (index > min_common_depth + 1)
|
if (index > primary_domain_index + 1)
|
||||||
return of_read_number(&associativity[index - 1], 1);
|
return of_read_number(&associativity[index - 1], 1);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
@ -984,7 +984,7 @@ static void mpc5121_clk_provide_migration_support(void)
|
|||||||
|
|
||||||
#define NODE_PREP do { \
|
#define NODE_PREP do { \
|
||||||
of_address_to_resource(np, 0, &res); \
|
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)
|
} while (0)
|
||||||
|
|
||||||
#define NODE_CHK(clkname, clkitem, regnode, regflag) do { \
|
#define NODE_CHK(clkname, clkitem, regnode, regflag) do { \
|
||||||
|
@ -144,7 +144,7 @@ static struct irq_domain * __init flipper_pic_init(struct device_node *np)
|
|||||||
}
|
}
|
||||||
io_base = ioremap(res.start, resource_size(&res));
|
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);
|
__flipper_quiesce(io_base);
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ static struct irq_domain *hlwd_pic_init(struct device_node *np)
|
|||||||
return NULL;
|
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);
|
__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));
|
hw_regs = ioremap(res.start, resource_size(&res));
|
||||||
if (hw_regs) {
|
if (hw_regs) {
|
||||||
pr_info("%s at 0x%08x mapped to 0x%p\n", name,
|
pr_info("%s at 0x%pa mapped to 0x%p\n", name,
|
||||||
res.start, hw_regs);
|
&res.start, hw_regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
out_put:
|
out_put:
|
||||||
|
@ -119,10 +119,11 @@ struct vec5_fw_feature {
|
|||||||
|
|
||||||
static __initdata struct vec5_fw_feature
|
static __initdata struct vec5_fw_feature
|
||||||
vec5_fw_features_table[] = {
|
vec5_fw_features_table[] = {
|
||||||
{FW_FEATURE_TYPE1_AFFINITY, OV5_TYPE1_AFFINITY},
|
{FW_FEATURE_FORM1_AFFINITY, OV5_FORM1_AFFINITY},
|
||||||
{FW_FEATURE_PRRN, OV5_PRRN},
|
{FW_FEATURE_PRRN, OV5_PRRN},
|
||||||
{FW_FEATURE_DRMEM_V2, OV5_DRMEM_V2},
|
{FW_FEATURE_DRMEM_V2, OV5_DRMEM_V2},
|
||||||
{FW_FEATURE_DRC_INFO, OV5_DRC_INFO},
|
{FW_FEATURE_DRC_INFO, OV5_DRC_INFO},
|
||||||
|
{FW_FEATURE_FORM2_AFFINITY, OV5_FORM2_AFFINITY},
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init fw_vec5_feature_init(const char *vec5, unsigned long len)
|
static void __init fw_vec5_feature_init(const char *vec5, unsigned long len)
|
||||||
|
@ -484,6 +484,8 @@ static ssize_t dlpar_cpu_add(u32 drc_index)
|
|||||||
return saved_rc;
|
return saved_rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_numa_distance(dn);
|
||||||
|
|
||||||
rc = dlpar_online_cpu(dn);
|
rc = dlpar_online_cpu(dn);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
saved_rc = rc;
|
saved_rc = rc;
|
||||||
|
@ -180,6 +180,8 @@ static int update_lmb_associativity_index(struct drmem_lmb *lmb)
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_numa_distance(lmb_node);
|
||||||
|
|
||||||
dr_node = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory");
|
dr_node = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory");
|
||||||
if (!dr_node) {
|
if (!dr_node) {
|
||||||
dlpar_free_cc_nodes(lmb_node);
|
dlpar_free_cc_nodes(lmb_node);
|
||||||
|
@ -261,7 +261,7 @@ static int cpu_relative_dispatch_distance(int last_disp_cpu, int cur_disp_cpu)
|
|||||||
if (!last_disp_cpu_assoc || !cur_disp_cpu_assoc)
|
if (!last_disp_cpu_assoc || !cur_disp_cpu_assoc)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
return cpu_distance(last_disp_cpu_assoc, cur_disp_cpu_assoc);
|
return cpu_relative_distance(last_disp_cpu_assoc, cur_disp_cpu_assoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cpu_home_node_dispatch_distance(int disp_cpu)
|
static int cpu_home_node_dispatch_distance(int disp_cpu)
|
||||||
@ -281,7 +281,7 @@ static int cpu_home_node_dispatch_distance(int disp_cpu)
|
|||||||
if (!disp_cpu_assoc || !vcpu_assoc)
|
if (!disp_cpu_assoc || !vcpu_assoc)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
return cpu_distance(disp_cpu_assoc, vcpu_assoc);
|
return cpu_relative_distance(disp_cpu_assoc, vcpu_assoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_vcpu_disp_stat(int disp_cpu)
|
static void update_vcpu_disp_stat(int disp_cpu)
|
||||||
|
@ -1079,6 +1079,13 @@ static int papr_scm_probe(struct platform_device *pdev)
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* open firmware platform device create won't update the NUMA
|
||||||
|
* distance table. For PAPR SCM devices we use numa_map_to_online_node()
|
||||||
|
* to find the nearest online NUMA node and that requires correct
|
||||||
|
* distance table information.
|
||||||
|
*/
|
||||||
|
update_numa_distance(dn);
|
||||||
|
|
||||||
p = kzalloc(sizeof(*p), GFP_KERNEL);
|
p = kzalloc(sizeof(*p), GFP_KERNEL);
|
||||||
if (!p)
|
if (!p)
|
||||||
|
@ -4,6 +4,11 @@ KASAN_SANITIZE := n
|
|||||||
|
|
||||||
targets += trampoline_$(BITS).o purgatory.ro kexec-purgatory.c
|
targets += trampoline_$(BITS).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
|
LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined
|
||||||
|
|
||||||
$(obj)/purgatory.ro: $(obj)/trampoline_$(BITS).o FORCE
|
$(obj)/purgatory.ro: $(obj)/trampoline_$(BITS).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;
|
(hose)->ops = &tsi108_direct_pci_ops;
|
||||||
|
|
||||||
printk(KERN_INFO "Found tsi108 PCI host bridge at 0x%08x. "
|
pr_info("Found tsi108 PCI host bridge at 0x%pa. Firmware bus number: %d->%d\n",
|
||||||
"Firmware bus number: %d->%d\n",
|
&rsrc.start, hose->first_busno, hose->last_busno);
|
||||||
rsrc.start, hose->first_busno, hose->last_busno);
|
|
||||||
|
|
||||||
/* Interpret the "ranges" property */
|
/* Interpret the "ranges" property */
|
||||||
/* This also maps the I/O region and sets isa_io/mem_base */
|
/* This also maps the I/O region and sets isa_io/mem_base */
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user