Snap for 9034712 from 45971eed4e
to android12-5.10-keystone-qcom-release
Change-Id: Ifa7dd7abe4488f60aa8754f0e24235a2a60307e8
This commit is contained in:
@@ -76,7 +76,7 @@ The beginning of an extended attribute block is in
|
|||||||
- Checksum of the extended attribute block.
|
- Checksum of the extended attribute block.
|
||||||
* - 0x14
|
* - 0x14
|
||||||
- \_\_u32
|
- \_\_u32
|
||||||
- h\_reserved[2]
|
- h\_reserved[3]
|
||||||
- Zero.
|
- Zero.
|
||||||
|
|
||||||
The checksum is calculated against the FS UUID, the 64-bit block number
|
The checksum is calculated against the FS UUID, the 64-bit block number
|
||||||
|
@@ -3508,14 +3508,15 @@ field must be set, though).
|
|||||||
|
|
||||||
“IEC958 Playback Con Mask” is used to return the bit-mask for the IEC958
|
“IEC958 Playback Con Mask” is used to return the bit-mask for the IEC958
|
||||||
status bits of consumer mode. Similarly, “IEC958 Playback Pro Mask”
|
status bits of consumer mode. Similarly, “IEC958 Playback Pro Mask”
|
||||||
returns the bitmask for professional mode. They are read-only controls,
|
returns the bitmask for professional mode. They are read-only controls.
|
||||||
and are defined as MIXER controls (iface =
|
|
||||||
``SNDRV_CTL_ELEM_IFACE_MIXER``).
|
|
||||||
|
|
||||||
Meanwhile, “IEC958 Playback Default” control is defined for getting and
|
Meanwhile, “IEC958 Playback Default” control is defined for getting and
|
||||||
setting the current default IEC958 bits. Note that this one is usually
|
setting the current default IEC958 bits.
|
||||||
defined as a PCM control (iface = ``SNDRV_CTL_ELEM_IFACE_PCM``),
|
|
||||||
although in some places it's defined as a MIXER control.
|
Due to historical reasons, both variants of the Playback Mask and the
|
||||||
|
Playback Default controls can be implemented on either a
|
||||||
|
``SNDRV_CTL_ELEM_IFACE_PCM`` or a ``SNDRV_CTL_ELEM_IFACE_MIXER`` iface.
|
||||||
|
Drivers should expose the mask and default on the same iface though.
|
||||||
|
|
||||||
In addition, you can define the control switches to enable/disable or to
|
In addition, you can define the control switches to enable/disable or to
|
||||||
set the raw bit mode. The implementation will depend on the chip, but
|
set the raw bit mode. The implementation will depend on the chip, but
|
||||||
|
@@ -51,8 +51,7 @@ call :c:func:`free_area_init` function. Yet, the mappings array is not
|
|||||||
usable until the call to :c:func:`memblock_free_all` that hands all the
|
usable until the call to :c:func:`memblock_free_all` that hands all the
|
||||||
memory to the page allocator.
|
memory to the page allocator.
|
||||||
|
|
||||||
If an architecture enables `CONFIG_ARCH_HAS_HOLES_MEMORYMODEL` option,
|
An architecture may free parts of the `mem_map` array that do not cover the
|
||||||
it may free parts of the `mem_map` array that do not cover the
|
|
||||||
actual physical pages. In such case, the architecture specific
|
actual physical pages. In such case, the architecture specific
|
||||||
:c:func:`pfn_valid` implementation should take the holes in the
|
:c:func:`pfn_valid` implementation should take the holes in the
|
||||||
`mem_map` into account.
|
`mem_map` into account.
|
||||||
|
2
Makefile
2
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 = 110
|
SUBLEVEL = 117
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Dare mighty things
|
NAME = Dare mighty things
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -319,6 +319,7 @@
|
|||||||
ktime_get
|
ktime_get
|
||||||
ktime_get_mono_fast_ns
|
ktime_get_mono_fast_ns
|
||||||
ktime_get_real_ts64
|
ktime_get_real_ts64
|
||||||
|
ktime_get_with_offset
|
||||||
kvfree
|
kvfree
|
||||||
kvfree_call_rcu
|
kvfree_call_rcu
|
||||||
kvmalloc_node
|
kvmalloc_node
|
||||||
@@ -605,6 +606,7 @@
|
|||||||
strlen
|
strlen
|
||||||
strncmp
|
strncmp
|
||||||
strncpy
|
strncpy
|
||||||
|
strnlen
|
||||||
strpbrk
|
strpbrk
|
||||||
strsep
|
strsep
|
||||||
__sw_hweight16
|
__sw_hweight16
|
||||||
@@ -897,7 +899,9 @@
|
|||||||
dma_buf_put
|
dma_buf_put
|
||||||
dma_buf_unmap_attachment
|
dma_buf_unmap_attachment
|
||||||
dma_get_sgtable_attrs
|
dma_get_sgtable_attrs
|
||||||
|
down_read
|
||||||
find_vma
|
find_vma
|
||||||
|
up_read
|
||||||
wait_for_completion_interruptible
|
wait_for_completion_interruptible
|
||||||
|
|
||||||
# required by gpio-regulator.ko
|
# required by gpio-regulator.ko
|
||||||
@@ -1018,7 +1022,6 @@
|
|||||||
kernel_param_unlock
|
kernel_param_unlock
|
||||||
kfree_skb_list
|
kfree_skb_list
|
||||||
ktime_get_seconds
|
ktime_get_seconds
|
||||||
ktime_get_with_offset
|
|
||||||
napi_gro_receive
|
napi_gro_receive
|
||||||
netdev_set_default_ethtool_ops
|
netdev_set_default_ethtool_ops
|
||||||
netif_carrier_off
|
netif_carrier_off
|
||||||
@@ -1413,9 +1416,6 @@
|
|||||||
usb_put_hcd
|
usb_put_hcd
|
||||||
usb_remove_hcd
|
usb_remove_hcd
|
||||||
|
|
||||||
# required by pdr_interface.ko
|
|
||||||
strnlen
|
|
||||||
|
|
||||||
# required by phy-qcom-qmp.ko
|
# required by phy-qcom-qmp.ko
|
||||||
of_clk_get_by_name
|
of_clk_get_by_name
|
||||||
__of_reset_control_get
|
__of_reset_control_get
|
||||||
@@ -1647,6 +1647,8 @@
|
|||||||
mmc_regulator_set_vqmmc
|
mmc_regulator_set_vqmmc
|
||||||
mmc_send_tuning
|
mmc_send_tuning
|
||||||
regulator_is_supported_voltage
|
regulator_is_supported_voltage
|
||||||
|
__reset_control_get
|
||||||
|
reset_control_put
|
||||||
__sdhci_add_host
|
__sdhci_add_host
|
||||||
sdhci_add_host
|
sdhci_add_host
|
||||||
sdhci_cleanup_host
|
sdhci_cleanup_host
|
||||||
|
@@ -371,7 +371,10 @@
|
|||||||
device_unregister
|
device_unregister
|
||||||
_dev_info
|
_dev_info
|
||||||
__dev_kfree_skb_any
|
__dev_kfree_skb_any
|
||||||
|
__dev_kfree_skb_irq
|
||||||
|
devm_add_action
|
||||||
__devm_alloc_percpu
|
__devm_alloc_percpu
|
||||||
|
devm_alloc_etherdev_mqs
|
||||||
devm_blk_ksm_init
|
devm_blk_ksm_init
|
||||||
devm_clk_bulk_get
|
devm_clk_bulk_get
|
||||||
devm_clk_bulk_get_optional
|
devm_clk_bulk_get_optional
|
||||||
@@ -412,11 +415,13 @@
|
|||||||
devm_led_classdev_register_ext
|
devm_led_classdev_register_ext
|
||||||
devm_led_classdev_unregister
|
devm_led_classdev_unregister
|
||||||
devm_mbox_controller_register
|
devm_mbox_controller_register
|
||||||
|
devm_mdiobus_alloc_size
|
||||||
devm_memremap
|
devm_memremap
|
||||||
devm_mfd_add_devices
|
devm_mfd_add_devices
|
||||||
devm_nvmem_cell_get
|
devm_nvmem_cell_get
|
||||||
devm_nvmem_device_get
|
devm_nvmem_device_get
|
||||||
devm_nvmem_register
|
devm_nvmem_register
|
||||||
|
devm_of_mdiobus_register
|
||||||
devm_of_phy_get_by_index
|
devm_of_phy_get_by_index
|
||||||
__devm_of_phy_provider_register
|
__devm_of_phy_provider_register
|
||||||
devm_of_platform_populate
|
devm_of_platform_populate
|
||||||
@@ -433,6 +438,7 @@
|
|||||||
devm_power_supply_register
|
devm_power_supply_register
|
||||||
devm_rc_allocate_device
|
devm_rc_allocate_device
|
||||||
devm_rc_register_device
|
devm_rc_register_device
|
||||||
|
devm_register_netdev
|
||||||
devm_regmap_add_irq_chip
|
devm_regmap_add_irq_chip
|
||||||
devm_regmap_field_alloc
|
devm_regmap_field_alloc
|
||||||
devm_regmap_field_bulk_alloc
|
devm_regmap_field_bulk_alloc
|
||||||
@@ -584,6 +590,7 @@
|
|||||||
down_write
|
down_write
|
||||||
d_path
|
d_path
|
||||||
dput
|
dput
|
||||||
|
dql_completed
|
||||||
drain_workqueue
|
drain_workqueue
|
||||||
driver_create_file
|
driver_create_file
|
||||||
driver_remove_file
|
driver_remove_file
|
||||||
@@ -809,7 +816,13 @@
|
|||||||
genlmsg_put
|
genlmsg_put
|
||||||
genl_register_family
|
genl_register_family
|
||||||
genl_unregister_family
|
genl_unregister_family
|
||||||
|
__genphy_config_aneg
|
||||||
|
genphy_read_abilities
|
||||||
|
genphy_read_mmd_unsupported
|
||||||
|
genphy_read_status
|
||||||
genphy_resume
|
genphy_resume
|
||||||
|
genphy_suspend
|
||||||
|
genphy_write_mmd_unsupported
|
||||||
gen_pool_add_owner
|
gen_pool_add_owner
|
||||||
gen_pool_alloc_algo_owner
|
gen_pool_alloc_algo_owner
|
||||||
gen_pool_avail
|
gen_pool_avail
|
||||||
@@ -835,6 +848,7 @@
|
|||||||
get_kernel_pages
|
get_kernel_pages
|
||||||
get_net_ns_by_fd
|
get_net_ns_by_fd
|
||||||
get_net_ns_by_pid
|
get_net_ns_by_pid
|
||||||
|
get_pelt_halflife
|
||||||
get_pid_task
|
get_pid_task
|
||||||
get_random_bytes
|
get_random_bytes
|
||||||
get_random_u32
|
get_random_u32
|
||||||
@@ -957,11 +971,13 @@
|
|||||||
init_uts_ns
|
init_uts_ns
|
||||||
init_wait_entry
|
init_wait_entry
|
||||||
__init_waitqueue_head
|
__init_waitqueue_head
|
||||||
|
input_alloc_absinfo
|
||||||
input_allocate_device
|
input_allocate_device
|
||||||
input_event
|
input_event
|
||||||
input_free_device
|
input_free_device
|
||||||
input_mt_init_slots
|
input_mt_init_slots
|
||||||
input_mt_report_slot_state
|
input_mt_report_slot_state
|
||||||
|
input_mt_sync_frame
|
||||||
input_register_device
|
input_register_device
|
||||||
input_set_abs_params
|
input_set_abs_params
|
||||||
input_set_capability
|
input_set_capability
|
||||||
@@ -1169,8 +1185,12 @@
|
|||||||
mbox_send_message
|
mbox_send_message
|
||||||
mdiobus_alloc_size
|
mdiobus_alloc_size
|
||||||
mdiobus_free
|
mdiobus_free
|
||||||
|
__mdiobus_read
|
||||||
|
mdiobus_read
|
||||||
__mdiobus_register
|
__mdiobus_register
|
||||||
mdiobus_unregister
|
mdiobus_unregister
|
||||||
|
__mdiobus_write
|
||||||
|
mdiobus_write
|
||||||
media_create_intf_link
|
media_create_intf_link
|
||||||
media_create_pad_link
|
media_create_pad_link
|
||||||
media_device_cleanup
|
media_device_cleanup
|
||||||
@@ -1270,10 +1290,12 @@
|
|||||||
mutex_lock_killable
|
mutex_lock_killable
|
||||||
mutex_trylock
|
mutex_trylock
|
||||||
mutex_unlock
|
mutex_unlock
|
||||||
|
napi_complete_done
|
||||||
napi_disable
|
napi_disable
|
||||||
napi_gro_flush
|
napi_gro_flush
|
||||||
napi_gro_receive
|
napi_gro_receive
|
||||||
__napi_schedule
|
__napi_schedule
|
||||||
|
__napi_schedule_irqoff
|
||||||
napi_schedule_prep
|
napi_schedule_prep
|
||||||
__ndelay
|
__ndelay
|
||||||
nd_tbl
|
nd_tbl
|
||||||
@@ -1292,6 +1314,7 @@
|
|||||||
netif_receive_skb_list
|
netif_receive_skb_list
|
||||||
netif_rx
|
netif_rx
|
||||||
netif_rx_ni
|
netif_rx_ni
|
||||||
|
netif_schedule_queue
|
||||||
netif_tx_stop_all_queues
|
netif_tx_stop_all_queues
|
||||||
netif_tx_wake_queue
|
netif_tx_wake_queue
|
||||||
netlink_broadcast
|
netlink_broadcast
|
||||||
@@ -1372,6 +1395,7 @@
|
|||||||
of_get_next_child
|
of_get_next_child
|
||||||
of_get_next_parent
|
of_get_next_parent
|
||||||
of_get_parent
|
of_get_parent
|
||||||
|
of_get_phy_mode
|
||||||
of_get_property
|
of_get_property
|
||||||
of_get_regulator_init_data
|
of_get_regulator_init_data
|
||||||
of_graph_get_next_endpoint
|
of_graph_get_next_endpoint
|
||||||
@@ -1392,6 +1416,7 @@
|
|||||||
of_parse_phandle_with_fixed_args
|
of_parse_phandle_with_fixed_args
|
||||||
of_phandle_iterator_init
|
of_phandle_iterator_init
|
||||||
of_phandle_iterator_next
|
of_phandle_iterator_next
|
||||||
|
of_phy_connect
|
||||||
of_phy_simple_xlate
|
of_phy_simple_xlate
|
||||||
of_platform_depopulate
|
of_platform_depopulate
|
||||||
of_platform_device_create
|
of_platform_device_create
|
||||||
@@ -1459,19 +1484,29 @@
|
|||||||
phy_connect
|
phy_connect
|
||||||
phy_disconnect
|
phy_disconnect
|
||||||
phy_do_ioctl_running
|
phy_do_ioctl_running
|
||||||
|
phy_drivers_register
|
||||||
|
phy_drivers_unregister
|
||||||
phy_ethtool_get_link_ksettings
|
phy_ethtool_get_link_ksettings
|
||||||
phy_ethtool_nway_reset
|
phy_ethtool_nway_reset
|
||||||
phy_ethtool_set_link_ksettings
|
phy_ethtool_set_link_ksettings
|
||||||
phy_exit
|
phy_exit
|
||||||
phy_get
|
phy_get
|
||||||
phy_init
|
phy_init
|
||||||
|
phy_mii_ioctl
|
||||||
|
__phy_modify
|
||||||
|
phy_modify
|
||||||
|
phy_modify_paged_changed
|
||||||
phy_power_off
|
phy_power_off
|
||||||
phy_power_on
|
phy_power_on
|
||||||
phy_print_status
|
phy_print_status
|
||||||
phy_put
|
phy_put
|
||||||
|
phy_read_paged
|
||||||
|
phy_restore_page
|
||||||
|
phy_select_page
|
||||||
phy_set_mode_ext
|
phy_set_mode_ext
|
||||||
phy_start
|
phy_start
|
||||||
phy_stop
|
phy_stop
|
||||||
|
phy_write_paged
|
||||||
pid_task
|
pid_task
|
||||||
pinconf_generic_parse_dt_config
|
pinconf_generic_parse_dt_config
|
||||||
pinctrl_dev_get_drvdata
|
pinctrl_dev_get_drvdata
|
||||||
@@ -1660,6 +1695,7 @@
|
|||||||
regmap_raw_read
|
regmap_raw_read
|
||||||
regmap_raw_write
|
regmap_raw_write
|
||||||
regmap_read
|
regmap_read
|
||||||
|
regmap_test_bits
|
||||||
regmap_update_bits_base
|
regmap_update_bits_base
|
||||||
regmap_write
|
regmap_write
|
||||||
regulator_count_voltages
|
regulator_count_voltages
|
||||||
@@ -2091,6 +2127,8 @@
|
|||||||
timer_unstable_counter_workaround
|
timer_unstable_counter_workaround
|
||||||
topology_set_thermal_pressure
|
topology_set_thermal_pressure
|
||||||
_totalram_pages
|
_totalram_pages
|
||||||
|
touchscreen_parse_properties
|
||||||
|
touchscreen_report_pos
|
||||||
__trace_bprintk
|
__trace_bprintk
|
||||||
__trace_bputs
|
__trace_bputs
|
||||||
trace_event_buffer_commit
|
trace_event_buffer_commit
|
||||||
@@ -2153,6 +2191,7 @@
|
|||||||
__traceiter_android_vh_rwsem_init
|
__traceiter_android_vh_rwsem_init
|
||||||
__traceiter_android_vh_rwsem_wake
|
__traceiter_android_vh_rwsem_wake
|
||||||
__traceiter_android_vh_rwsem_write_finished
|
__traceiter_android_vh_rwsem_write_finished
|
||||||
|
__traceiter_android_vh_sched_pelt_multiplier
|
||||||
__traceiter_android_vh_scheduler_tick
|
__traceiter_android_vh_scheduler_tick
|
||||||
__traceiter_android_vh_selinux_avc_insert
|
__traceiter_android_vh_selinux_avc_insert
|
||||||
__traceiter_android_vh_selinux_avc_lookup
|
__traceiter_android_vh_selinux_avc_lookup
|
||||||
@@ -2237,6 +2276,7 @@
|
|||||||
__tracepoint_android_vh_rwsem_init
|
__tracepoint_android_vh_rwsem_init
|
||||||
__tracepoint_android_vh_rwsem_wake
|
__tracepoint_android_vh_rwsem_wake
|
||||||
__tracepoint_android_vh_rwsem_write_finished
|
__tracepoint_android_vh_rwsem_write_finished
|
||||||
|
__tracepoint_android_vh_sched_pelt_multiplier
|
||||||
__tracepoint_android_vh_scheduler_tick
|
__tracepoint_android_vh_scheduler_tick
|
||||||
__tracepoint_android_vh_selinux_avc_insert
|
__tracepoint_android_vh_selinux_avc_insert
|
||||||
__tracepoint_android_vh_selinux_avc_lookup
|
__tracepoint_android_vh_selinux_avc_lookup
|
||||||
@@ -2790,10 +2830,13 @@
|
|||||||
fwnode_graph_parse_endpoint
|
fwnode_graph_parse_endpoint
|
||||||
fwnode_property_get_reference_args
|
fwnode_property_get_reference_args
|
||||||
fwnode_property_read_u64_array
|
fwnode_property_read_u64_array
|
||||||
|
gen_pool_avail
|
||||||
gen_pool_dma_alloc_align
|
gen_pool_dma_alloc_align
|
||||||
gen_pool_has_addr
|
gen_pool_has_addr
|
||||||
|
gen_pool_size
|
||||||
getboottime64
|
getboottime64
|
||||||
get_governor_parent_kobj
|
get_governor_parent_kobj
|
||||||
|
get_pelt_halflife
|
||||||
get_task_exe_file
|
get_task_exe_file
|
||||||
get_vaddr_frames
|
get_vaddr_frames
|
||||||
get_zeroed_page
|
get_zeroed_page
|
||||||
@@ -3070,6 +3113,7 @@
|
|||||||
__traceiter_android_vh_rwsem_init
|
__traceiter_android_vh_rwsem_init
|
||||||
__traceiter_android_vh_rwsem_wake
|
__traceiter_android_vh_rwsem_wake
|
||||||
__traceiter_android_vh_rwsem_write_finished
|
__traceiter_android_vh_rwsem_write_finished
|
||||||
|
__traceiter_android_vh_sched_pelt_multiplier
|
||||||
__traceiter_android_vh_scmi_timeout_sync
|
__traceiter_android_vh_scmi_timeout_sync
|
||||||
__traceiter_android_vh_show_resume_epoch_val
|
__traceiter_android_vh_show_resume_epoch_val
|
||||||
__traceiter_android_vh_show_suspend_epoch_val
|
__traceiter_android_vh_show_suspend_epoch_val
|
||||||
@@ -3123,6 +3167,7 @@
|
|||||||
__tracepoint_android_vh_rwsem_init
|
__tracepoint_android_vh_rwsem_init
|
||||||
__tracepoint_android_vh_rwsem_wake
|
__tracepoint_android_vh_rwsem_wake
|
||||||
__tracepoint_android_vh_rwsem_write_finished
|
__tracepoint_android_vh_rwsem_write_finished
|
||||||
|
__tracepoint_android_vh_sched_pelt_multiplier
|
||||||
__tracepoint_android_vh_scmi_timeout_sync
|
__tracepoint_android_vh_scmi_timeout_sync
|
||||||
__tracepoint_android_vh_show_resume_epoch_val
|
__tracepoint_android_vh_show_resume_epoch_val
|
||||||
__tracepoint_android_vh_show_suspend_epoch_val
|
__tracepoint_android_vh_show_suspend_epoch_val
|
||||||
@@ -3193,6 +3238,7 @@
|
|||||||
usb_otg_state_string
|
usb_otg_state_string
|
||||||
usb_phy_set_charger_current
|
usb_phy_set_charger_current
|
||||||
usb_remove_phy
|
usb_remove_phy
|
||||||
|
usb_role_switch_set_role
|
||||||
v4l2_async_notifier_add_subdev
|
v4l2_async_notifier_add_subdev
|
||||||
v4l2_async_notifier_cleanup
|
v4l2_async_notifier_cleanup
|
||||||
v4l2_async_subdev_notifier_register
|
v4l2_async_subdev_notifier_register
|
||||||
|
@@ -681,6 +681,7 @@
|
|||||||
dma_unmap_sg_attrs
|
dma_unmap_sg_attrs
|
||||||
do_exit
|
do_exit
|
||||||
do_wait_intr_irq
|
do_wait_intr_irq
|
||||||
|
do_traversal_all_lruvec
|
||||||
down
|
down
|
||||||
down_interruptible
|
down_interruptible
|
||||||
down_read
|
down_read
|
||||||
@@ -1802,10 +1803,12 @@
|
|||||||
page_endio
|
page_endio
|
||||||
__page_file_index
|
__page_file_index
|
||||||
__page_file_mapping
|
__page_file_mapping
|
||||||
|
__page_mapcount
|
||||||
page_get_link
|
page_get_link
|
||||||
page_mapping
|
page_mapping
|
||||||
__page_pinner_migration_failed
|
__page_pinner_migration_failed
|
||||||
page_symlink
|
page_symlink
|
||||||
|
page_to_lruvec
|
||||||
panic
|
panic
|
||||||
panic_notifier_list
|
panic_notifier_list
|
||||||
panic_timeout
|
panic_timeout
|
||||||
@@ -2802,6 +2805,7 @@
|
|||||||
__traceiter_android_vh_ipi_stop
|
__traceiter_android_vh_ipi_stop
|
||||||
__traceiter_android_vh_ipv6_gen_linklocal_addr
|
__traceiter_android_vh_ipv6_gen_linklocal_addr
|
||||||
__traceiter_android_vh_jiffies_update
|
__traceiter_android_vh_jiffies_update
|
||||||
|
__traceiter_android_vh_killed_process
|
||||||
__traceiter_android_vh_kmalloc_slab
|
__traceiter_android_vh_kmalloc_slab
|
||||||
__traceiter_android_vh_logbuf
|
__traceiter_android_vh_logbuf
|
||||||
__traceiter_android_vh_mem_cgroup_alloc
|
__traceiter_android_vh_mem_cgroup_alloc
|
||||||
@@ -2810,19 +2814,33 @@
|
|||||||
__traceiter_android_vh_mem_cgroup_free
|
__traceiter_android_vh_mem_cgroup_free
|
||||||
__traceiter_android_vh_mem_cgroup_id_remove
|
__traceiter_android_vh_mem_cgroup_id_remove
|
||||||
__traceiter_android_vh_meminfo_proc_show
|
__traceiter_android_vh_meminfo_proc_show
|
||||||
|
__traceiter_android_vh_alloc_pages_slowpath_begin
|
||||||
|
__traceiter_android_vh_alloc_pages_slowpath_end
|
||||||
__traceiter_android_vh_mutex_unlock_slowpath
|
__traceiter_android_vh_mutex_unlock_slowpath
|
||||||
|
__traceiter_android_vh_mutex_unlock_slowpath_end
|
||||||
__traceiter_android_vh_mutex_wait_finish
|
__traceiter_android_vh_mutex_wait_finish
|
||||||
__traceiter_android_vh_mutex_wait_start
|
__traceiter_android_vh_mutex_wait_start
|
||||||
__traceiter_android_vh_override_creds
|
__traceiter_android_vh_override_creds
|
||||||
__traceiter_android_vh_page_referenced_check_bypass
|
__traceiter_android_vh_page_referenced_check_bypass
|
||||||
|
__traceiter_android_vh_page_should_be_protected
|
||||||
|
__traceiter_android_vh_mark_page_accessed
|
||||||
|
__traceiter_android_vh_show_mapcount_pages
|
||||||
|
__traceiter_android_vh_do_traversal_lruvec
|
||||||
|
__traceiter_android_vh_update_page_mapcount
|
||||||
|
__traceiter_android_vh_add_page_to_lrulist
|
||||||
|
__traceiter_android_vh_del_page_from_lrulist
|
||||||
__traceiter_android_vh_pcplist_add_cma_pages_bypass
|
__traceiter_android_vh_pcplist_add_cma_pages_bypass
|
||||||
__traceiter_android_vh_prepare_update_load_avg_se
|
__traceiter_android_vh_prepare_update_load_avg_se
|
||||||
__traceiter_android_vh_printk_hotplug
|
__traceiter_android_vh_printk_hotplug
|
||||||
__traceiter_android_vh_process_killed
|
__traceiter_android_vh_process_killed
|
||||||
__traceiter_android_vh_killed_process
|
|
||||||
__traceiter_android_vh_revert_creds
|
__traceiter_android_vh_revert_creds
|
||||||
__traceiter_android_vh_rmqueue
|
__traceiter_android_vh_rmqueue
|
||||||
__traceiter_android_vh_rwsem_init
|
__traceiter_android_vh_rwsem_init
|
||||||
|
__traceiter_android_vh_rwsem_mark_wake_readers
|
||||||
|
__traceiter_android_vh_rwsem_set_owner
|
||||||
|
__traceiter_android_vh_rwsem_set_reader_owned
|
||||||
|
__traceiter_android_vh_rwsem_up_read_end
|
||||||
|
__traceiter_android_vh_rwsem_up_write_end
|
||||||
__traceiter_android_vh_rwsem_wake
|
__traceiter_android_vh_rwsem_wake
|
||||||
__traceiter_android_vh_rwsem_wake_finish
|
__traceiter_android_vh_rwsem_wake_finish
|
||||||
__traceiter_android_vh_rwsem_write_finished
|
__traceiter_android_vh_rwsem_write_finished
|
||||||
@@ -3010,6 +3028,7 @@
|
|||||||
__tracepoint_android_vh_ipi_stop
|
__tracepoint_android_vh_ipi_stop
|
||||||
__tracepoint_android_vh_ipv6_gen_linklocal_addr
|
__tracepoint_android_vh_ipv6_gen_linklocal_addr
|
||||||
__tracepoint_android_vh_jiffies_update
|
__tracepoint_android_vh_jiffies_update
|
||||||
|
__tracepoint_android_vh_killed_process
|
||||||
__tracepoint_android_vh_kmalloc_slab
|
__tracepoint_android_vh_kmalloc_slab
|
||||||
__tracepoint_android_vh_logbuf
|
__tracepoint_android_vh_logbuf
|
||||||
__tracepoint_android_vh_mem_cgroup_alloc
|
__tracepoint_android_vh_mem_cgroup_alloc
|
||||||
@@ -3018,19 +3037,33 @@
|
|||||||
__tracepoint_android_vh_mem_cgroup_free
|
__tracepoint_android_vh_mem_cgroup_free
|
||||||
__tracepoint_android_vh_mem_cgroup_id_remove
|
__tracepoint_android_vh_mem_cgroup_id_remove
|
||||||
__tracepoint_android_vh_meminfo_proc_show
|
__tracepoint_android_vh_meminfo_proc_show
|
||||||
|
__tracepoint_android_vh_alloc_pages_slowpath_begin
|
||||||
|
__tracepoint_android_vh_alloc_pages_slowpath_end
|
||||||
__tracepoint_android_vh_mutex_unlock_slowpath
|
__tracepoint_android_vh_mutex_unlock_slowpath
|
||||||
|
__tracepoint_android_vh_mutex_unlock_slowpath_end
|
||||||
__tracepoint_android_vh_mutex_wait_finish
|
__tracepoint_android_vh_mutex_wait_finish
|
||||||
__tracepoint_android_vh_mutex_wait_start
|
__tracepoint_android_vh_mutex_wait_start
|
||||||
__tracepoint_android_vh_override_creds
|
__tracepoint_android_vh_override_creds
|
||||||
__tracepoint_android_vh_page_referenced_check_bypass
|
__tracepoint_android_vh_page_referenced_check_bypass
|
||||||
|
__tracepoint_android_vh_page_should_be_protected
|
||||||
|
__tracepoint_android_vh_mark_page_accessed
|
||||||
|
__tracepoint_android_vh_show_mapcount_pages
|
||||||
|
__tracepoint_android_vh_do_traversal_lruvec
|
||||||
|
__tracepoint_android_vh_update_page_mapcount
|
||||||
|
__tracepoint_android_vh_add_page_to_lrulist
|
||||||
|
__tracepoint_android_vh_del_page_from_lrulist
|
||||||
__tracepoint_android_vh_pcplist_add_cma_pages_bypass
|
__tracepoint_android_vh_pcplist_add_cma_pages_bypass
|
||||||
__tracepoint_android_vh_prepare_update_load_avg_se
|
__tracepoint_android_vh_prepare_update_load_avg_se
|
||||||
__tracepoint_android_vh_printk_hotplug
|
__tracepoint_android_vh_printk_hotplug
|
||||||
__tracepoint_android_vh_process_killed
|
__tracepoint_android_vh_process_killed
|
||||||
__tracepoint_android_vh_killed_process
|
|
||||||
__tracepoint_android_vh_revert_creds
|
__tracepoint_android_vh_revert_creds
|
||||||
__tracepoint_android_vh_rmqueue
|
__tracepoint_android_vh_rmqueue
|
||||||
__tracepoint_android_vh_rwsem_init
|
__tracepoint_android_vh_rwsem_init
|
||||||
|
__tracepoint_android_vh_rwsem_mark_wake_readers
|
||||||
|
__tracepoint_android_vh_rwsem_set_owner
|
||||||
|
__tracepoint_android_vh_rwsem_set_reader_owned
|
||||||
|
__tracepoint_android_vh_rwsem_up_read_end
|
||||||
|
__tracepoint_android_vh_rwsem_up_write_end
|
||||||
__tracepoint_android_vh_rwsem_wake
|
__tracepoint_android_vh_rwsem_wake
|
||||||
__tracepoint_android_vh_rwsem_wake_finish
|
__tracepoint_android_vh_rwsem_wake_finish
|
||||||
__tracepoint_android_vh_rwsem_write_finished
|
__tracepoint_android_vh_rwsem_write_finished
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -199,6 +199,7 @@ tracesys_exit:
|
|||||||
st r0, [sp, PT_r0] ; sys call return value in pt_regs
|
st r0, [sp, PT_r0] ; sys call return value in pt_regs
|
||||||
|
|
||||||
;POST Sys Call Ptrace Hook
|
;POST Sys Call Ptrace Hook
|
||||||
|
mov r0, sp ; pt_regs needed
|
||||||
bl @syscall_trace_exit
|
bl @syscall_trace_exit
|
||||||
b ret_from_exception ; NOT ret_from_system_call at is saves r0 which
|
b ret_from_exception ; NOT ret_from_system_call at is saves r0 which
|
||||||
; we'd done before calling post hook above
|
; we'd done before calling post hook above
|
||||||
|
@@ -25,7 +25,7 @@ config ARM
|
|||||||
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
|
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
|
||||||
select ARCH_HAVE_CUSTOM_GPIO_H
|
select ARCH_HAVE_CUSTOM_GPIO_H
|
||||||
select ARCH_HAS_GCOV_PROFILE_ALL
|
select ARCH_HAS_GCOV_PROFILE_ALL
|
||||||
select ARCH_KEEP_MEMBLOCK if HAVE_ARCH_PFN_VALID || KEXEC
|
select ARCH_KEEP_MEMBLOCK
|
||||||
select ARCH_MIGHT_HAVE_PC_PARPORT
|
select ARCH_MIGHT_HAVE_PC_PARPORT
|
||||||
select ARCH_NO_SG_CHAIN if !ARM_HAS_SG_CHAIN
|
select ARCH_NO_SG_CHAIN if !ARM_HAS_SG_CHAIN
|
||||||
select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
|
select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
|
||||||
@@ -522,7 +522,6 @@ config ARCH_S3C24XX
|
|||||||
config ARCH_OMAP1
|
config ARCH_OMAP1
|
||||||
bool "TI OMAP1"
|
bool "TI OMAP1"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
|
||||||
select ARCH_OMAP
|
select ARCH_OMAP
|
||||||
select CLKDEV_LOOKUP
|
select CLKDEV_LOOKUP
|
||||||
select CLKSRC_MMIO
|
select CLKSRC_MMIO
|
||||||
@@ -1482,9 +1481,6 @@ config OABI_COMPAT
|
|||||||
UNPREDICTABLE (in fact it can be predicted that it won't work
|
UNPREDICTABLE (in fact it can be predicted that it won't work
|
||||||
at all). If in doubt say N.
|
at all). If in doubt say N.
|
||||||
|
|
||||||
config ARCH_HAS_HOLES_MEMORYMODEL
|
|
||||||
bool
|
|
||||||
|
|
||||||
config ARCH_SELECT_MEMORY_MODEL
|
config ARCH_SELECT_MEMORY_MODEL
|
||||||
bool
|
bool
|
||||||
|
|
||||||
@@ -1496,7 +1492,7 @@ config ARCH_SPARSEMEM_ENABLE
|
|||||||
select SPARSEMEM_STATIC if SPARSEMEM
|
select SPARSEMEM_STATIC if SPARSEMEM
|
||||||
|
|
||||||
config HAVE_ARCH_PFN_VALID
|
config HAVE_ARCH_PFN_VALID
|
||||||
def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
|
def_bool y
|
||||||
|
|
||||||
config HIGHMEM
|
config HIGHMEM
|
||||||
bool "High Memory Support"
|
bool "High Memory Support"
|
||||||
|
@@ -161,6 +161,8 @@
|
|||||||
|
|
||||||
/* HS USB Host PHY on PORT 1 */
|
/* HS USB Host PHY on PORT 1 */
|
||||||
hsusb1_phy: hsusb1_phy {
|
hsusb1_phy: hsusb1_phy {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&hsusb1_rst_pins>;
|
||||||
compatible = "usb-nop-xceiv";
|
compatible = "usb-nop-xceiv";
|
||||||
reset-gpios = <&gpio2 25 GPIO_ACTIVE_LOW>; /* gpio_57 */
|
reset-gpios = <&gpio2 25 GPIO_ACTIVE_LOW>; /* gpio_57 */
|
||||||
#phy-cells = <0>;
|
#phy-cells = <0>;
|
||||||
@@ -168,7 +170,9 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&davinci_emac {
|
&davinci_emac {
|
||||||
status = "okay";
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <ðernet_pins>;
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&davinci_mdio {
|
&davinci_mdio {
|
||||||
@@ -193,6 +197,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c2 {
|
&i2c2 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c2_pins>;
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
/* User DIP swithes [1:8] / User LEDS [1:2] */
|
/* User DIP swithes [1:8] / User LEDS [1:2] */
|
||||||
tca6416: gpio@21 {
|
tca6416: gpio@21 {
|
||||||
@@ -205,6 +211,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c3 {
|
&i2c3 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c3_pins>;
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -223,6 +231,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&usbhshost {
|
&usbhshost {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&hsusb1_pins>;
|
||||||
port1-mode = "ehci-phy";
|
port1-mode = "ehci-phy";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -231,8 +241,35 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&omap3_pmx_core {
|
&omap3_pmx_core {
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&hsusb1_rst_pins>;
|
ethernet_pins: pinmux_ethernet_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP3_CORE1_IOPAD(0x21fe, PIN_INPUT | MUX_MODE0) /* rmii_mdio_data */
|
||||||
|
OMAP3_CORE1_IOPAD(0x2200, MUX_MODE0) /* rmii_mdio_clk */
|
||||||
|
OMAP3_CORE1_IOPAD(0x2202, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_rxd0 */
|
||||||
|
OMAP3_CORE1_IOPAD(0x2204, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_rxd1 */
|
||||||
|
OMAP3_CORE1_IOPAD(0x2206, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_crs_dv */
|
||||||
|
OMAP3_CORE1_IOPAD(0x2208, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* rmii_rxer */
|
||||||
|
OMAP3_CORE1_IOPAD(0x220a, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* rmii_txd0 */
|
||||||
|
OMAP3_CORE1_IOPAD(0x220c, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* rmii_txd1 */
|
||||||
|
OMAP3_CORE1_IOPAD(0x220e, PIN_OUTPUT_PULLDOWN |MUX_MODE0) /* rmii_txen */
|
||||||
|
OMAP3_CORE1_IOPAD(0x2210, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_50mhz_clk */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c2_pins: pinmux_i2c2_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP3_CORE1_IOPAD(0x21be, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c2_scl */
|
||||||
|
OMAP3_CORE1_IOPAD(0x21c0, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c2_sda */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c3_pins: pinmux_i2c3_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP3_CORE1_IOPAD(0x21c2, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c3_scl */
|
||||||
|
OMAP3_CORE1_IOPAD(0x21c4, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c3_sda */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
leds_pins: pinmux_leds_pins {
|
leds_pins: pinmux_leds_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
@@ -300,8 +337,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&omap3_pmx_core2 {
|
&omap3_pmx_core2 {
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&hsusb1_pins>;
|
|
||||||
|
|
||||||
hsusb1_pins: pinmux_hsusb1_pins {
|
hsusb1_pins: pinmux_hsusb1_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
|
@@ -69,6 +69,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&i2c1_pins>;
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
s35390a: s35390a@30 {
|
s35390a: s35390a@30 {
|
||||||
@@ -179,6 +181,13 @@
|
|||||||
|
|
||||||
&omap3_pmx_core {
|
&omap3_pmx_core {
|
||||||
|
|
||||||
|
i2c1_pins: pinmux_i2c1_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP3_CORE1_IOPAD(0x21ba, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c1_scl */
|
||||||
|
OMAP3_CORE1_IOPAD(0x21bc, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c1_sda */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
wl12xx_buffer_pins: pinmux_wl12xx_buffer_pins {
|
wl12xx_buffer_pins: pinmux_wl12xx_buffer_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP3_CORE1_IOPAD(0x2156, PIN_OUTPUT | MUX_MODE4) /* mmc1_dat7.gpio_129 */
|
OMAP3_CORE1_IOPAD(0x2156, PIN_OUTPUT | MUX_MODE4) /* mmc1_dat7.gpio_129 */
|
||||||
|
@@ -91,7 +91,7 @@
|
|||||||
|
|
||||||
spi1: spi@fc018000 {
|
spi1: spi@fc018000 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_spi0_cs>;
|
pinctrl-0 = <&pinctrl_spi1_cs>;
|
||||||
cs-gpios = <&pioB 21 0>;
|
cs-gpios = <&pioB 21 0>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
@@ -149,7 +149,7 @@
|
|||||||
atmel,pins =
|
atmel,pins =
|
||||||
<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
||||||
};
|
};
|
||||||
pinctrl_spi0_cs: spi0_cs_default {
|
pinctrl_spi1_cs: spi1_cs_default {
|
||||||
atmel,pins =
|
atmel,pins =
|
||||||
<AT91_PIOB 21 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
|
<AT91_PIOB 21 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
|
||||||
};
|
};
|
||||||
|
@@ -219,6 +219,12 @@
|
|||||||
wm8731: wm8731@1b {
|
wm8731: wm8731@1b {
|
||||||
compatible = "wm8731";
|
compatible = "wm8731";
|
||||||
reg = <0x1b>;
|
reg = <0x1b>;
|
||||||
|
|
||||||
|
/* PCK0 at 12MHz */
|
||||||
|
clocks = <&pmc PMC_TYPE_SYSTEM 8>;
|
||||||
|
clock-names = "mclk";
|
||||||
|
assigned-clocks = <&pmc PMC_TYPE_SYSTEM 8>;
|
||||||
|
assigned-clock-rates = <12000000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -286,6 +286,8 @@
|
|||||||
codec: sgtl5000@a {
|
codec: sgtl5000@a {
|
||||||
compatible = "fsl,sgtl5000";
|
compatible = "fsl,sgtl5000";
|
||||||
reg = <0x0a>;
|
reg = <0x0a>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_sgtl5000>;
|
||||||
clocks = <&clks IMX6QDL_CLK_CKO>;
|
clocks = <&clks IMX6QDL_CLK_CKO>;
|
||||||
VDDA-supply = <®_module_3v3_audio>;
|
VDDA-supply = <®_module_3v3_audio>;
|
||||||
VDDIO-supply = <®_module_3v3>;
|
VDDIO-supply = <®_module_3v3>;
|
||||||
@@ -516,8 +518,6 @@
|
|||||||
MX6QDL_PAD_DISP0_DAT21__AUD4_TXD 0x130b0
|
MX6QDL_PAD_DISP0_DAT21__AUD4_TXD 0x130b0
|
||||||
MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
|
MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
|
||||||
MX6QDL_PAD_DISP0_DAT23__AUD4_RXD 0x130b0
|
MX6QDL_PAD_DISP0_DAT23__AUD4_RXD 0x130b0
|
||||||
/* SGTL5000 sys_mclk */
|
|
||||||
MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x130b0
|
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -810,6 +810,12 @@
|
|||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pinctrl_sgtl5000: sgtl5000grp {
|
||||||
|
fsl,pins = <
|
||||||
|
MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x130b0
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
pinctrl_spdif: spdifgrp {
|
pinctrl_spdif: spdifgrp {
|
||||||
fsl,pins = <
|
fsl,pins = <
|
||||||
MX6QDL_PAD_GPIO_16__SPDIF_IN 0x1b0b0
|
MX6QDL_PAD_GPIO_16__SPDIF_IN 0x1b0b0
|
||||||
|
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
reg_sd1_vmmc: regulator-sd1-vmmc {
|
reg_sd1_vmmc: regulator-sd1-vmmc {
|
||||||
compatible = "regulator-gpio";
|
compatible = "regulator-gpio";
|
||||||
gpio = <&gpio5 9 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_snvs_reg_sd>;
|
pinctrl-0 = <&pinctrl_snvs_reg_sd>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
|
@@ -11,3 +11,18 @@
|
|||||||
model = "LogicPD Zoom OMAP35xx SOM-LV Development Kit";
|
model = "LogicPD Zoom OMAP35xx SOM-LV Development Kit";
|
||||||
compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3430", "ti,omap3";
|
compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3430", "ti,omap3";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&omap3_pmx_core2 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&hsusb2_2_pins>;
|
||||||
|
hsusb2_2_pins: pinmux_hsusb2_2_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP3430_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */
|
||||||
|
OMAP3430_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */
|
||||||
|
OMAP3430_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */
|
||||||
|
OMAP3430_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */
|
||||||
|
OMAP3430_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */
|
||||||
|
OMAP3430_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
@@ -11,3 +11,18 @@
|
|||||||
model = "LogicPD Zoom DM3730 SOM-LV Development Kit";
|
model = "LogicPD Zoom DM3730 SOM-LV Development Kit";
|
||||||
compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3630", "ti,omap3";
|
compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3630", "ti,omap3";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&omap3_pmx_core2 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&hsusb2_2_pins>;
|
||||||
|
hsusb2_2_pins: pinmux_hsusb2_2_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */
|
||||||
|
OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */
|
||||||
|
OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */
|
||||||
|
OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */
|
||||||
|
OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */
|
||||||
|
OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
@@ -265,21 +265,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&omap3_pmx_core2 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&hsusb2_2_pins>;
|
|
||||||
hsusb2_2_pins: pinmux_hsusb2_2_pins {
|
|
||||||
pinctrl-single,pins = <
|
|
||||||
OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */
|
|
||||||
OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */
|
|
||||||
OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */
|
|
||||||
OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */
|
|
||||||
OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */
|
|
||||||
OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&uart2 {
|
&uart2 {
|
||||||
interrupts-extended = <&intc 73 &omap3_pmx_core OMAP3_UART2_RX>;
|
interrupts-extended = <&intc 73 &omap3_pmx_core OMAP3_UART2_RX>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@@ -31,6 +31,8 @@
|
|||||||
aliases {
|
aliases {
|
||||||
display0 = &lcd;
|
display0 = &lcd;
|
||||||
display1 = &tv0;
|
display1 = &tv0;
|
||||||
|
/delete-property/ mmc2;
|
||||||
|
/delete-property/ mmc3;
|
||||||
};
|
};
|
||||||
|
|
||||||
ldo_3v3: fixedregulator {
|
ldo_3v3: fixedregulator {
|
||||||
|
@@ -442,6 +442,9 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *addr);
|
|||||||
extern int valid_phys_addr_range(phys_addr_t addr, size_t size);
|
extern int valid_phys_addr_range(phys_addr_t addr, size_t size);
|
||||||
extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size);
|
extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size);
|
||||||
extern int devmem_is_allowed(unsigned long pfn);
|
extern int devmem_is_allowed(unsigned long pfn);
|
||||||
|
extern bool arch_memremap_can_ram_remap(resource_size_t offset, size_t size,
|
||||||
|
unsigned long flags);
|
||||||
|
#define arch_memremap_can_ram_remap arch_memremap_can_ram_remap
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -211,7 +211,6 @@ config ARCH_BRCMSTB
|
|||||||
select BCM7038_L1_IRQ
|
select BCM7038_L1_IRQ
|
||||||
select BRCMSTB_L2_IRQ
|
select BRCMSTB_L2_IRQ
|
||||||
select BCM7120_L2_IRQ
|
select BCM7120_L2_IRQ
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
|
||||||
select ZONE_DMA if ARM_LPAE
|
select ZONE_DMA if ARM_LPAE
|
||||||
select SOC_BRCMSTB
|
select SOC_BRCMSTB
|
||||||
select SOC_BUS
|
select SOC_BUS
|
||||||
|
@@ -5,7 +5,6 @@ menuconfig ARCH_DAVINCI
|
|||||||
depends on ARCH_MULTI_V5
|
depends on ARCH_MULTI_V5
|
||||||
select DAVINCI_TIMER
|
select DAVINCI_TIMER
|
||||||
select ZONE_DMA
|
select ZONE_DMA
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
|
||||||
select PM_GENERIC_DOMAINS if PM
|
select PM_GENERIC_DOMAINS if PM
|
||||||
select PM_GENERIC_DOMAINS_OF if PM && OF
|
select PM_GENERIC_DOMAINS_OF if PM && OF
|
||||||
select REGMAP_MMIO
|
select REGMAP_MMIO
|
||||||
|
@@ -1101,11 +1101,13 @@ static int __init da850_evm_config_emac(void)
|
|||||||
int ret;
|
int ret;
|
||||||
u32 val;
|
u32 val;
|
||||||
struct davinci_soc_info *soc_info = &davinci_soc_info;
|
struct davinci_soc_info *soc_info = &davinci_soc_info;
|
||||||
u8 rmii_en = soc_info->emac_pdata->rmii_en;
|
u8 rmii_en;
|
||||||
|
|
||||||
if (!machine_is_davinci_da850_evm())
|
if (!machine_is_davinci_da850_evm())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
rmii_en = soc_info->emac_pdata->rmii_en;
|
||||||
|
|
||||||
cfg_chip3_base = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);
|
cfg_chip3_base = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);
|
||||||
|
|
||||||
val = __raw_readl(cfg_chip3_base);
|
val = __raw_readl(cfg_chip3_base);
|
||||||
|
@@ -8,7 +8,6 @@
|
|||||||
menuconfig ARCH_EXYNOS
|
menuconfig ARCH_EXYNOS
|
||||||
bool "Samsung Exynos"
|
bool "Samsung Exynos"
|
||||||
depends on ARCH_MULTI_V7
|
depends on ARCH_MULTI_V7
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
|
||||||
select ARCH_SUPPORTS_BIG_ENDIAN
|
select ARCH_SUPPORTS_BIG_ENDIAN
|
||||||
select ARM_AMBA
|
select ARM_AMBA
|
||||||
select ARM_GIC
|
select ARM_GIC
|
||||||
@@ -20,7 +19,6 @@ menuconfig ARCH_EXYNOS
|
|||||||
select EXYNOS_PMU
|
select EXYNOS_PMU
|
||||||
select EXYNOS_SROM
|
select EXYNOS_SROM
|
||||||
select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS
|
select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS
|
||||||
select GPIOLIB
|
|
||||||
select HAVE_ARM_ARCH_TIMER if ARCH_EXYNOS5
|
select HAVE_ARM_ARCH_TIMER if ARCH_EXYNOS5
|
||||||
select HAVE_ARM_SCU if SMP
|
select HAVE_ARM_SCU if SMP
|
||||||
select HAVE_S3C2410_I2C if I2C
|
select HAVE_S3C2410_I2C if I2C
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
config ARCH_HIGHBANK
|
config ARCH_HIGHBANK
|
||||||
bool "Calxeda ECX-1000/2000 (Highbank/Midway)"
|
bool "Calxeda ECX-1000/2000 (Highbank/Midway)"
|
||||||
depends on ARCH_MULTI_V7
|
depends on ARCH_MULTI_V7
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
|
||||||
select ARCH_SUPPORTS_BIG_ENDIAN
|
select ARCH_SUPPORTS_BIG_ENDIAN
|
||||||
select ARM_AMBA
|
select ARM_AMBA
|
||||||
select ARM_ERRATA_764369 if SMP
|
select ARM_ERRATA_764369 if SMP
|
||||||
|
@@ -93,7 +93,6 @@ config SOC_DRA7XX
|
|||||||
config ARCH_OMAP2PLUS
|
config ARCH_OMAP2PLUS
|
||||||
bool
|
bool
|
||||||
select ARCH_HAS_BANDGAP
|
select ARCH_HAS_BANDGAP
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
|
||||||
select ARCH_HAS_RESET_CONTROLLER
|
select ARCH_HAS_RESET_CONTROLLER
|
||||||
select ARCH_OMAP
|
select ARCH_OMAP
|
||||||
select CLKSRC_MMIO
|
select CLKSRC_MMIO
|
||||||
|
@@ -314,10 +314,12 @@ void __init omap_gic_of_init(void)
|
|||||||
|
|
||||||
np = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-gic");
|
np = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-gic");
|
||||||
gic_dist_base_addr = of_iomap(np, 0);
|
gic_dist_base_addr = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
WARN_ON(!gic_dist_base_addr);
|
WARN_ON(!gic_dist_base_addr);
|
||||||
|
|
||||||
np = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-twd-timer");
|
np = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-twd-timer");
|
||||||
twd_base = of_iomap(np, 0);
|
twd_base = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
WARN_ON(!twd_base);
|
WARN_ON(!twd_base);
|
||||||
|
|
||||||
skip_errata_init:
|
skip_errata_init:
|
||||||
|
@@ -8,7 +8,6 @@
|
|||||||
config ARCH_S5PV210
|
config ARCH_S5PV210
|
||||||
bool "Samsung S5PV210/S5PC110"
|
bool "Samsung S5PV210/S5PC110"
|
||||||
depends on ARCH_MULTI_V7
|
depends on ARCH_MULTI_V7
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
|
||||||
select ARM_VIC
|
select ARM_VIC
|
||||||
select CLKSRC_SAMSUNG_PWM
|
select CLKSRC_SAMSUNG_PWM
|
||||||
select COMMON_CLK_SAMSUNG
|
select COMMON_CLK_SAMSUNG
|
||||||
|
@@ -3,7 +3,6 @@ config ARCH_TANGO
|
|||||||
bool "Sigma Designs Tango4 (SMP87xx)"
|
bool "Sigma Designs Tango4 (SMP87xx)"
|
||||||
depends on ARCH_MULTI_V7
|
depends on ARCH_MULTI_V7
|
||||||
# Cortex-A9 MPCore r3p0, PL310 r3p2
|
# Cortex-A9 MPCore r3p0, PL310 r3p2
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
|
||||||
select ARM_ERRATA_754322
|
select ARM_ERRATA_754322
|
||||||
select ARM_ERRATA_764369 if SMP
|
select ARM_ERRATA_764369 if SMP
|
||||||
select ARM_ERRATA_775420
|
select ARM_ERRATA_775420
|
||||||
|
@@ -580,7 +580,7 @@ static int __init ve_spc_clk_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
cluster = topology_physical_package_id(cpu_dev->id);
|
cluster = topology_physical_package_id(cpu_dev->id);
|
||||||
if (init_opp_table[cluster])
|
if (cluster < 0 || init_opp_table[cluster])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (ve_init_opp_table(cpu_dev))
|
if (ve_init_opp_table(cpu_dev))
|
||||||
|
@@ -479,3 +479,11 @@ void __init early_ioremap_init(void)
|
|||||||
{
|
{
|
||||||
early_ioremap_setup();
|
early_ioremap_setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool arch_memremap_can_ram_remap(resource_size_t offset, size_t size,
|
||||||
|
unsigned long flags)
|
||||||
|
{
|
||||||
|
unsigned long pfn = PHYS_PFN(offset);
|
||||||
|
|
||||||
|
return memblock_is_map_memory(pfn);
|
||||||
|
}
|
||||||
|
@@ -11,26 +11,6 @@
|
|||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
opp-shared;
|
opp-shared;
|
||||||
|
|
||||||
opp-100000000 {
|
|
||||||
opp-hz = /bits/ 64 <100000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-250000000 {
|
|
||||||
opp-hz = /bits/ 64 <250000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-500000000 {
|
|
||||||
opp-hz = /bits/ 64 <500000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-667000000 {
|
|
||||||
opp-hz = /bits/ 64 <667000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-1000000000 {
|
opp-1000000000 {
|
||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <761000>;
|
opp-microvolt = <761000>;
|
||||||
@@ -71,26 +51,6 @@
|
|||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
opp-shared;
|
opp-shared;
|
||||||
|
|
||||||
opp-100000000 {
|
|
||||||
opp-hz = /bits/ 64 <100000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-250000000 {
|
|
||||||
opp-hz = /bits/ 64 <250000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-500000000 {
|
|
||||||
opp-hz = /bits/ 64 <500000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-667000000 {
|
|
||||||
opp-hz = /bits/ 64 <667000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-1000000000 {
|
opp-1000000000 {
|
||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <731000>;
|
opp-microvolt = <731000>;
|
||||||
|
@@ -11,26 +11,6 @@
|
|||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
opp-shared;
|
opp-shared;
|
||||||
|
|
||||||
opp-100000000 {
|
|
||||||
opp-hz = /bits/ 64 <100000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-250000000 {
|
|
||||||
opp-hz = /bits/ 64 <250000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-500000000 {
|
|
||||||
opp-hz = /bits/ 64 <500000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-667000000 {
|
|
||||||
opp-hz = /bits/ 64 <667000000>;
|
|
||||||
opp-microvolt = <731000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-1000000000 {
|
opp-1000000000 {
|
||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <731000>;
|
opp-microvolt = <731000>;
|
||||||
@@ -76,26 +56,6 @@
|
|||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
opp-shared;
|
opp-shared;
|
||||||
|
|
||||||
opp-100000000 {
|
|
||||||
opp-hz = /bits/ 64 <100000000>;
|
|
||||||
opp-microvolt = <751000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-250000000 {
|
|
||||||
opp-hz = /bits/ 64 <250000000>;
|
|
||||||
opp-microvolt = <751000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-500000000 {
|
|
||||||
opp-hz = /bits/ 64 <500000000>;
|
|
||||||
opp-microvolt = <751000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-667000000 {
|
|
||||||
opp-hz = /bits/ 64 <667000000>;
|
|
||||||
opp-microvolt = <751000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-1000000000 {
|
opp-1000000000 {
|
||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <771000>;
|
opp-microvolt = <771000>;
|
||||||
|
@@ -95,26 +95,6 @@
|
|||||||
compatible = "operating-points-v2";
|
compatible = "operating-points-v2";
|
||||||
opp-shared;
|
opp-shared;
|
||||||
|
|
||||||
opp-100000000 {
|
|
||||||
opp-hz = /bits/ 64 <100000000>;
|
|
||||||
opp-microvolt = <730000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-250000000 {
|
|
||||||
opp-hz = /bits/ 64 <250000000>;
|
|
||||||
opp-microvolt = <730000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-500000000 {
|
|
||||||
opp-hz = /bits/ 64 <500000000>;
|
|
||||||
opp-microvolt = <730000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-667000000 {
|
|
||||||
opp-hz = /bits/ 64 <666666666>;
|
|
||||||
opp-microvolt = <750000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
opp-1000000000 {
|
opp-1000000000 {
|
||||||
opp-hz = /bits/ 64 <1000000000>;
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
opp-microvolt = <770000>;
|
opp-microvolt = <770000>;
|
||||||
|
@@ -89,12 +89,12 @@
|
|||||||
pendown-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
|
pendown-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
ti,x-min = /bits/ 16 <125>;
|
ti,x-min = /bits/ 16 <125>;
|
||||||
touchscreen-size-x = /bits/ 16 <4008>;
|
touchscreen-size-x = <4008>;
|
||||||
ti,y-min = /bits/ 16 <282>;
|
ti,y-min = /bits/ 16 <282>;
|
||||||
touchscreen-size-y = /bits/ 16 <3864>;
|
touchscreen-size-y = <3864>;
|
||||||
ti,x-plate-ohms = /bits/ 16 <180>;
|
ti,x-plate-ohms = /bits/ 16 <180>;
|
||||||
touchscreen-max-pressure = /bits/ 16 <255>;
|
touchscreen-max-pressure = <255>;
|
||||||
touchscreen-average-samples = /bits/ 16 <10>;
|
touchscreen-average-samples = <10>;
|
||||||
ti,debounce-tol = /bits/ 16 <3>;
|
ti,debounce-tol = /bits/ 16 <3>;
|
||||||
ti,debounce-rep = /bits/ 16 <1>;
|
ti,debounce-rep = /bits/ 16 <1>;
|
||||||
ti,settle-delay-usec = /bits/ 16 <150>;
|
ti,settle-delay-usec = /bits/ 16 <150>;
|
||||||
|
@@ -59,6 +59,10 @@
|
|||||||
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
|
||||||
rohm,reset-snvs-powered;
|
rohm,reset-snvs-powered;
|
||||||
|
|
||||||
|
#clock-cells = <0>;
|
||||||
|
clocks = <&osc_32k 0>;
|
||||||
|
clock-output-names = "clk-32k-out";
|
||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
buck1_reg: BUCK1 {
|
buck1_reg: BUCK1 {
|
||||||
regulator-name = "buck1";
|
regulator-name = "buck1";
|
||||||
|
@@ -70,12 +70,12 @@
|
|||||||
pendown-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
|
pendown-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
ti,x-min = /bits/ 16 <125>;
|
ti,x-min = /bits/ 16 <125>;
|
||||||
touchscreen-size-x = /bits/ 16 <4008>;
|
touchscreen-size-x = <4008>;
|
||||||
ti,y-min = /bits/ 16 <282>;
|
ti,y-min = /bits/ 16 <282>;
|
||||||
touchscreen-size-y = /bits/ 16 <3864>;
|
touchscreen-size-y = <3864>;
|
||||||
ti,x-plate-ohms = /bits/ 16 <180>;
|
ti,x-plate-ohms = /bits/ 16 <180>;
|
||||||
touchscreen-max-pressure = /bits/ 16 <255>;
|
touchscreen-max-pressure = <255>;
|
||||||
touchscreen-average-samples = /bits/ 16 <10>;
|
touchscreen-average-samples = <10>;
|
||||||
ti,debounce-tol = /bits/ 16 <3>;
|
ti,debounce-tol = /bits/ 16 <3>;
|
||||||
ti,debounce-rep = /bits/ 16 <1>;
|
ti,debounce-rep = /bits/ 16 <1>;
|
||||||
ti,settle-delay-usec = /bits/ 16 <150>;
|
ti,settle-delay-usec = /bits/ 16 <150>;
|
||||||
|
@@ -75,6 +75,7 @@
|
|||||||
#define ARM_CPU_PART_CORTEX_A77 0xD0D
|
#define ARM_CPU_PART_CORTEX_A77 0xD0D
|
||||||
#define ARM_CPU_PART_NEOVERSE_V1 0xD40
|
#define ARM_CPU_PART_NEOVERSE_V1 0xD40
|
||||||
#define ARM_CPU_PART_CORTEX_A78 0xD41
|
#define ARM_CPU_PART_CORTEX_A78 0xD41
|
||||||
|
#define ARM_CPU_PART_CORTEX_A78AE 0xD42
|
||||||
#define ARM_CPU_PART_CORTEX_X1 0xD44
|
#define ARM_CPU_PART_CORTEX_X1 0xD44
|
||||||
#define ARM_CPU_PART_CORTEX_A510 0xD46
|
#define ARM_CPU_PART_CORTEX_A510 0xD46
|
||||||
#define ARM_CPU_PART_CORTEX_A710 0xD47
|
#define ARM_CPU_PART_CORTEX_A710 0xD47
|
||||||
@@ -123,6 +124,7 @@
|
|||||||
#define MIDR_CORTEX_A77 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A77)
|
#define MIDR_CORTEX_A77 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A77)
|
||||||
#define MIDR_NEOVERSE_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V1)
|
#define MIDR_NEOVERSE_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V1)
|
||||||
#define MIDR_CORTEX_A78 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78)
|
#define MIDR_CORTEX_A78 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78)
|
||||||
|
#define MIDR_CORTEX_A78AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78AE)
|
||||||
#define MIDR_CORTEX_X1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X1)
|
#define MIDR_CORTEX_X1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X1)
|
||||||
#define MIDR_CORTEX_A510 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A510)
|
#define MIDR_CORTEX_A510 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A510)
|
||||||
#define MIDR_CORTEX_A710 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A710)
|
#define MIDR_CORTEX_A710 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A710)
|
||||||
|
@@ -219,4 +219,8 @@ extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size);
|
|||||||
|
|
||||||
extern int devmem_is_allowed(unsigned long pfn);
|
extern int devmem_is_allowed(unsigned long pfn);
|
||||||
|
|
||||||
|
extern bool arch_memremap_can_ram_remap(resource_size_t offset, size_t size,
|
||||||
|
unsigned long flags);
|
||||||
|
#define arch_memremap_can_ram_remap arch_memremap_can_ram_remap
|
||||||
|
|
||||||
#endif /* __ASM_IO_H */
|
#endif /* __ASM_IO_H */
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
#ifdef CONFIG_ARM64_MODULE_PLTS
|
#ifdef CONFIG_ARM64_MODULE_PLTS
|
||||||
SECTIONS {
|
SECTIONS {
|
||||||
.plt 0 (NOLOAD) : { BYTE(0) }
|
.plt 0 : { BYTE(0) }
|
||||||
.init.plt 0 (NOLOAD) : { BYTE(0) }
|
.init.plt 0 : { BYTE(0) }
|
||||||
.text.ftrace_trampoline 0 (NOLOAD) : { BYTE(0) }
|
.text.ftrace_trampoline 0 : { BYTE(0) }
|
||||||
|
|
||||||
#ifdef CONFIG_CRYPTO_FIPS140
|
#ifdef CONFIG_CRYPTO_FIPS140
|
||||||
/*
|
/*
|
||||||
|
@@ -522,13 +522,12 @@ extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
|
|||||||
|
|
||||||
#define pmd_none(pmd) (!pmd_val(pmd))
|
#define pmd_none(pmd) (!pmd_val(pmd))
|
||||||
|
|
||||||
#define pmd_bad(pmd) (!(pmd_val(pmd) & PMD_TABLE_BIT))
|
|
||||||
|
|
||||||
#define pmd_table(pmd) ((pmd_val(pmd) & PMD_TYPE_MASK) == \
|
#define pmd_table(pmd) ((pmd_val(pmd) & PMD_TYPE_MASK) == \
|
||||||
PMD_TYPE_TABLE)
|
PMD_TYPE_TABLE)
|
||||||
#define pmd_sect(pmd) ((pmd_val(pmd) & PMD_TYPE_MASK) == \
|
#define pmd_sect(pmd) ((pmd_val(pmd) & PMD_TYPE_MASK) == \
|
||||||
PMD_TYPE_SECT)
|
PMD_TYPE_SECT)
|
||||||
#define pmd_leaf(pmd) pmd_sect(pmd)
|
#define pmd_leaf(pmd) (pmd_present(pmd) && !pmd_table(pmd))
|
||||||
|
#define pmd_bad(pmd) (!pmd_table(pmd))
|
||||||
|
|
||||||
#if defined(CONFIG_ARM64_64K_PAGES) || CONFIG_PGTABLE_LEVELS < 3
|
#if defined(CONFIG_ARM64_64K_PAGES) || CONFIG_PGTABLE_LEVELS < 3
|
||||||
static inline bool pud_sect(pud_t pud) { return false; }
|
static inline bool pud_sect(pud_t pud) { return false; }
|
||||||
@@ -619,9 +618,9 @@ static inline unsigned long pmd_page_vaddr(pmd_t pmd)
|
|||||||
pr_err("%s:%d: bad pmd %016llx.\n", __FILE__, __LINE__, pmd_val(e))
|
pr_err("%s:%d: bad pmd %016llx.\n", __FILE__, __LINE__, pmd_val(e))
|
||||||
|
|
||||||
#define pud_none(pud) (!pud_val(pud))
|
#define pud_none(pud) (!pud_val(pud))
|
||||||
#define pud_bad(pud) (!(pud_val(pud) & PUD_TABLE_BIT))
|
#define pud_bad(pud) (!pud_table(pud))
|
||||||
#define pud_present(pud) pte_present(pud_pte(pud))
|
#define pud_present(pud) pte_present(pud_pte(pud))
|
||||||
#define pud_leaf(pud) pud_sect(pud)
|
#define pud_leaf(pud) (pud_present(pud) && !pud_table(pud))
|
||||||
#define pud_valid(pud) pte_valid(pud_pte(pud))
|
#define pud_valid(pud) pte_valid(pud_pte(pud))
|
||||||
|
|
||||||
static inline void set_pud(pud_t *pudp, pud_t pud)
|
static inline void set_pud(pud_t *pudp, pud_t pud)
|
||||||
|
@@ -42,7 +42,7 @@ bool alternative_is_applied(u16 cpufeature)
|
|||||||
/*
|
/*
|
||||||
* Check if the target PC is within an alternative block.
|
* Check if the target PC is within an alternative block.
|
||||||
*/
|
*/
|
||||||
static bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
|
static __always_inline bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
|
||||||
{
|
{
|
||||||
unsigned long replptr = (unsigned long)ALT_REPL_PTR(alt);
|
unsigned long replptr = (unsigned long)ALT_REPL_PTR(alt);
|
||||||
return !(pc >= replptr && pc <= (replptr + alt->alt_len));
|
return !(pc >= replptr && pc <= (replptr + alt->alt_len));
|
||||||
@@ -50,7 +50,7 @@ static bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
|
|||||||
|
|
||||||
#define align_down(x, a) ((unsigned long)(x) & ~(((unsigned long)(a)) - 1))
|
#define align_down(x, a) ((unsigned long)(x) & ~(((unsigned long)(a)) - 1))
|
||||||
|
|
||||||
static u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnptr)
|
static __always_inline u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnptr)
|
||||||
{
|
{
|
||||||
u32 insn;
|
u32 insn;
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ static u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnp
|
|||||||
return insn;
|
return insn;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void patch_alternative(struct alt_instr *alt,
|
static noinstr void patch_alternative(struct alt_instr *alt,
|
||||||
__le32 *origptr, __le32 *updptr, int nr_inst)
|
__le32 *origptr, __le32 *updptr, int nr_inst)
|
||||||
{
|
{
|
||||||
__le32 *replptr;
|
__le32 *replptr;
|
||||||
|
@@ -54,6 +54,9 @@ static int psci_acpi_cpu_init_idle(unsigned int cpu)
|
|||||||
struct acpi_lpi_state *lpi;
|
struct acpi_lpi_state *lpi;
|
||||||
struct acpi_processor *pr = per_cpu(processors, cpu);
|
struct acpi_processor *pr = per_cpu(processors, cpu);
|
||||||
|
|
||||||
|
if (unlikely(!pr || !pr->flags.has_lpi))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the PSCI cpu_suspend function hook has not been initialized
|
* If the PSCI cpu_suspend function hook has not been initialized
|
||||||
* idle states must not be enabled, so bail out
|
* idle states must not be enabled, so bail out
|
||||||
@@ -61,9 +64,6 @@ static int psci_acpi_cpu_init_idle(unsigned int cpu)
|
|||||||
if (!psci_ops.cpu_suspend)
|
if (!psci_ops.cpu_suspend)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
if (unlikely(!pr || !pr->flags.has_lpi))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
count = pr->power.count - 1;
|
count = pr->power.count - 1;
|
||||||
if (count <= 0)
|
if (count <= 0)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@@ -216,8 +216,8 @@ static int __kprobes aarch64_insn_patch_text_cb(void *arg)
|
|||||||
int i, ret = 0;
|
int i, ret = 0;
|
||||||
struct aarch64_insn_patch *pp = arg;
|
struct aarch64_insn_patch *pp = arg;
|
||||||
|
|
||||||
/* The first CPU becomes master */
|
/* The last CPU becomes master */
|
||||||
if (atomic_inc_return(&pp->cpu_count) == 1) {
|
if (atomic_inc_return(&pp->cpu_count) == num_online_cpus()) {
|
||||||
for (i = 0; ret == 0 && i < pp->insn_cnt; i++)
|
for (i = 0; ret == 0 && i < pp->insn_cnt; i++)
|
||||||
ret = aarch64_insn_patch_text_nosync(pp->text_addrs[i],
|
ret = aarch64_insn_patch_text_nosync(pp->text_addrs[i],
|
||||||
pp->new_insns[i]);
|
pp->new_insns[i]);
|
||||||
|
@@ -1116,17 +1116,32 @@ static int armv8_pmu_init_nogroups(struct arm_pmu *cpu_pmu, char *name,
|
|||||||
return armv8_pmu_init(cpu_pmu, name, map_event, NULL, NULL, NULL);
|
return armv8_pmu_init(cpu_pmu, name, map_event, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int armv8_pmuv3_init(struct arm_pmu *cpu_pmu)
|
#define PMUV3_INIT_SIMPLE(name) \
|
||||||
{
|
static int name##_pmu_init(struct arm_pmu *cpu_pmu) \
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_pmuv3",
|
{ \
|
||||||
armv8_pmuv3_map_event);
|
return armv8_pmu_init_nogroups(cpu_pmu, #name, armv8_pmuv3_map_event);\
|
||||||
}
|
}
|
||||||
|
|
||||||
static int armv8_a34_pmu_init(struct arm_pmu *cpu_pmu)
|
PMUV3_INIT_SIMPLE(armv8_pmuv3)
|
||||||
{
|
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a34",
|
PMUV3_INIT_SIMPLE(armv8_cortex_a34)
|
||||||
armv8_pmuv3_map_event);
|
PMUV3_INIT_SIMPLE(armv8_cortex_a55)
|
||||||
}
|
PMUV3_INIT_SIMPLE(armv8_cortex_a65)
|
||||||
|
PMUV3_INIT_SIMPLE(armv8_cortex_a75)
|
||||||
|
PMUV3_INIT_SIMPLE(armv8_cortex_a76)
|
||||||
|
PMUV3_INIT_SIMPLE(armv8_cortex_a77)
|
||||||
|
PMUV3_INIT_SIMPLE(armv8_cortex_a78)
|
||||||
|
PMUV3_INIT_SIMPLE(armv9_cortex_a510)
|
||||||
|
PMUV3_INIT_SIMPLE(armv9_cortex_a710)
|
||||||
|
PMUV3_INIT_SIMPLE(armv8_cortex_x1)
|
||||||
|
PMUV3_INIT_SIMPLE(armv9_cortex_x2)
|
||||||
|
PMUV3_INIT_SIMPLE(armv8_neoverse_e1)
|
||||||
|
PMUV3_INIT_SIMPLE(armv8_neoverse_n1)
|
||||||
|
PMUV3_INIT_SIMPLE(armv9_neoverse_n2)
|
||||||
|
PMUV3_INIT_SIMPLE(armv8_neoverse_v1)
|
||||||
|
|
||||||
|
PMUV3_INIT_SIMPLE(armv8_nvidia_carmel)
|
||||||
|
PMUV3_INIT_SIMPLE(armv8_nvidia_denver)
|
||||||
|
|
||||||
static int armv8_a35_pmu_init(struct arm_pmu *cpu_pmu)
|
static int armv8_a35_pmu_init(struct arm_pmu *cpu_pmu)
|
||||||
{
|
{
|
||||||
@@ -1140,24 +1155,12 @@ static int armv8_a53_pmu_init(struct arm_pmu *cpu_pmu)
|
|||||||
armv8_a53_map_event);
|
armv8_a53_map_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int armv8_a55_pmu_init(struct arm_pmu *cpu_pmu)
|
|
||||||
{
|
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a55",
|
|
||||||
armv8_pmuv3_map_event);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int armv8_a57_pmu_init(struct arm_pmu *cpu_pmu)
|
static int armv8_a57_pmu_init(struct arm_pmu *cpu_pmu)
|
||||||
{
|
{
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a57",
|
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a57",
|
||||||
armv8_a57_map_event);
|
armv8_a57_map_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int armv8_a65_pmu_init(struct arm_pmu *cpu_pmu)
|
|
||||||
{
|
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a65",
|
|
||||||
armv8_pmuv3_map_event);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int armv8_a72_pmu_init(struct arm_pmu *cpu_pmu)
|
static int armv8_a72_pmu_init(struct arm_pmu *cpu_pmu)
|
||||||
{
|
{
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a72",
|
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a72",
|
||||||
@@ -1170,36 +1173,6 @@ static int armv8_a73_pmu_init(struct arm_pmu *cpu_pmu)
|
|||||||
armv8_a73_map_event);
|
armv8_a73_map_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int armv8_a75_pmu_init(struct arm_pmu *cpu_pmu)
|
|
||||||
{
|
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a75",
|
|
||||||
armv8_pmuv3_map_event);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int armv8_a76_pmu_init(struct arm_pmu *cpu_pmu)
|
|
||||||
{
|
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a76",
|
|
||||||
armv8_pmuv3_map_event);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int armv8_a77_pmu_init(struct arm_pmu *cpu_pmu)
|
|
||||||
{
|
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a77",
|
|
||||||
armv8_pmuv3_map_event);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int armv8_e1_pmu_init(struct arm_pmu *cpu_pmu)
|
|
||||||
{
|
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_neoverse_e1",
|
|
||||||
armv8_pmuv3_map_event);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int armv8_n1_pmu_init(struct arm_pmu *cpu_pmu)
|
|
||||||
{
|
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_neoverse_n1",
|
|
||||||
armv8_pmuv3_map_event);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int armv8_thunder_pmu_init(struct arm_pmu *cpu_pmu)
|
static int armv8_thunder_pmu_init(struct arm_pmu *cpu_pmu)
|
||||||
{
|
{
|
||||||
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cavium_thunder",
|
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cavium_thunder",
|
||||||
@@ -1213,22 +1186,31 @@ static int armv8_vulcan_pmu_init(struct arm_pmu *cpu_pmu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const struct of_device_id armv8_pmu_of_device_ids[] = {
|
static const struct of_device_id armv8_pmu_of_device_ids[] = {
|
||||||
{.compatible = "arm,armv8-pmuv3", .data = armv8_pmuv3_init},
|
{.compatible = "arm,armv8-pmuv3", .data = armv8_pmuv3_pmu_init},
|
||||||
{.compatible = "arm,cortex-a34-pmu", .data = armv8_a34_pmu_init},
|
{.compatible = "arm,cortex-a34-pmu", .data = armv8_cortex_a34_pmu_init},
|
||||||
{.compatible = "arm,cortex-a35-pmu", .data = armv8_a35_pmu_init},
|
{.compatible = "arm,cortex-a35-pmu", .data = armv8_a35_pmu_init},
|
||||||
{.compatible = "arm,cortex-a53-pmu", .data = armv8_a53_pmu_init},
|
{.compatible = "arm,cortex-a53-pmu", .data = armv8_a53_pmu_init},
|
||||||
{.compatible = "arm,cortex-a55-pmu", .data = armv8_a55_pmu_init},
|
{.compatible = "arm,cortex-a55-pmu", .data = armv8_cortex_a55_pmu_init},
|
||||||
{.compatible = "arm,cortex-a57-pmu", .data = armv8_a57_pmu_init},
|
{.compatible = "arm,cortex-a57-pmu", .data = armv8_a57_pmu_init},
|
||||||
{.compatible = "arm,cortex-a65-pmu", .data = armv8_a65_pmu_init},
|
{.compatible = "arm,cortex-a65-pmu", .data = armv8_cortex_a65_pmu_init},
|
||||||
{.compatible = "arm,cortex-a72-pmu", .data = armv8_a72_pmu_init},
|
{.compatible = "arm,cortex-a72-pmu", .data = armv8_a72_pmu_init},
|
||||||
{.compatible = "arm,cortex-a73-pmu", .data = armv8_a73_pmu_init},
|
{.compatible = "arm,cortex-a73-pmu", .data = armv8_a73_pmu_init},
|
||||||
{.compatible = "arm,cortex-a75-pmu", .data = armv8_a75_pmu_init},
|
{.compatible = "arm,cortex-a75-pmu", .data = armv8_cortex_a75_pmu_init},
|
||||||
{.compatible = "arm,cortex-a76-pmu", .data = armv8_a76_pmu_init},
|
{.compatible = "arm,cortex-a76-pmu", .data = armv8_cortex_a76_pmu_init},
|
||||||
{.compatible = "arm,cortex-a77-pmu", .data = armv8_a77_pmu_init},
|
{.compatible = "arm,cortex-a77-pmu", .data = armv8_cortex_a77_pmu_init},
|
||||||
{.compatible = "arm,neoverse-e1-pmu", .data = armv8_e1_pmu_init},
|
{.compatible = "arm,cortex-a78-pmu", .data = armv8_cortex_a78_pmu_init},
|
||||||
{.compatible = "arm,neoverse-n1-pmu", .data = armv8_n1_pmu_init},
|
{.compatible = "arm,cortex-a510-pmu", .data = armv9_cortex_a510_pmu_init},
|
||||||
|
{.compatible = "arm,cortex-a710-pmu", .data = armv9_cortex_a710_pmu_init},
|
||||||
|
{.compatible = "arm,cortex-x1-pmu", .data = armv8_cortex_x1_pmu_init},
|
||||||
|
{.compatible = "arm,cortex-x2-pmu", .data = armv9_cortex_x2_pmu_init},
|
||||||
|
{.compatible = "arm,neoverse-e1-pmu", .data = armv8_neoverse_e1_pmu_init},
|
||||||
|
{.compatible = "arm,neoverse-n1-pmu", .data = armv8_neoverse_n1_pmu_init},
|
||||||
|
{.compatible = "arm,neoverse-n2-pmu", .data = armv9_neoverse_n2_pmu_init},
|
||||||
|
{.compatible = "arm,neoverse-v1-pmu", .data = armv8_neoverse_v1_pmu_init},
|
||||||
{.compatible = "cavium,thunder-pmu", .data = armv8_thunder_pmu_init},
|
{.compatible = "cavium,thunder-pmu", .data = armv8_thunder_pmu_init},
|
||||||
{.compatible = "brcm,vulcan-pmu", .data = armv8_vulcan_pmu_init},
|
{.compatible = "brcm,vulcan-pmu", .data = armv8_vulcan_pmu_init},
|
||||||
|
{.compatible = "nvidia,carmel-pmu", .data = armv8_nvidia_carmel_pmu_init},
|
||||||
|
{.compatible = "nvidia,denver-pmu", .data = armv8_nvidia_denver_pmu_init},
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1251,7 +1233,7 @@ static int __init armv8_pmu_driver_init(void)
|
|||||||
if (acpi_disabled)
|
if (acpi_disabled)
|
||||||
return platform_driver_register(&armv8_pmu_driver);
|
return platform_driver_register(&armv8_pmu_driver);
|
||||||
else
|
else
|
||||||
return arm_pmu_acpi_probe(armv8_pmuv3_init);
|
return arm_pmu_acpi_probe(armv8_pmuv3_pmu_init);
|
||||||
}
|
}
|
||||||
device_initcall(armv8_pmu_driver_init)
|
device_initcall(armv8_pmu_driver_init)
|
||||||
|
|
||||||
|
@@ -850,6 +850,7 @@ u8 spectre_bhb_loop_affected(int scope)
|
|||||||
if (scope == SCOPE_LOCAL_CPU) {
|
if (scope == SCOPE_LOCAL_CPU) {
|
||||||
static const struct midr_range spectre_bhb_k32_list[] = {
|
static const struct midr_range spectre_bhb_k32_list[] = {
|
||||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78),
|
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78),
|
||||||
|
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78AE),
|
||||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78C),
|
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78C),
|
||||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_X1),
|
MIDR_ALL_VERSIONS(MIDR_CORTEX_X1),
|
||||||
MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
|
MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/memblock.h>
|
||||||
|
|
||||||
#include <asm/fixmap.h>
|
#include <asm/fixmap.h>
|
||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
@@ -99,3 +100,11 @@ void __init early_ioremap_init(void)
|
|||||||
{
|
{
|
||||||
early_ioremap_setup();
|
early_ioremap_setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool arch_memremap_can_ram_remap(resource_size_t offset, size_t size,
|
||||||
|
unsigned long flags)
|
||||||
|
{
|
||||||
|
unsigned long pfn = PHYS_PFN(offset);
|
||||||
|
|
||||||
|
return memblock_is_map_memory(pfn);
|
||||||
|
}
|
||||||
|
@@ -167,7 +167,7 @@ void __init plat_mem_setup(void)
|
|||||||
dtb = phys_to_virt(fw_arg2);
|
dtb = phys_to_virt(fw_arg2);
|
||||||
else if (fw_passed_dtb) /* UHI interface or appended dtb */
|
else if (fw_passed_dtb) /* UHI interface or appended dtb */
|
||||||
dtb = (void *)fw_passed_dtb;
|
dtb = (void *)fw_passed_dtb;
|
||||||
else if (__dtb_start != __dtb_end)
|
else if (&__dtb_start != &__dtb_end)
|
||||||
dtb = (void *)__dtb_start;
|
dtb = (void *)__dtb_start;
|
||||||
else
|
else
|
||||||
panic("no dtb found");
|
panic("no dtb found");
|
||||||
|
@@ -429,7 +429,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
eth0_addr: eth-mac-addr@0x22 {
|
eth0_addr: eth-mac-addr@22 {
|
||||||
reg = <0x22 0x6>;
|
reg = <0x22 0x6>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -16,7 +16,7 @@ static inline void setup_8250_early_printk_port(unsigned long base,
|
|||||||
unsigned int reg_shift, unsigned int timeout) {}
|
unsigned int reg_shift, unsigned int timeout) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void set_handler(unsigned long offset, void *addr, unsigned long len);
|
void set_handler(unsigned long offset, const void *addr, unsigned long len);
|
||||||
extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len);
|
extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len);
|
||||||
|
|
||||||
typedef void (*vi_handler_t)(void);
|
typedef void (*vi_handler_t)(void);
|
||||||
|
@@ -40,9 +40,9 @@
|
|||||||
typedef unsigned int cycles_t;
|
typedef unsigned int cycles_t;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* On R4000/R4400 before version 5.0 an erratum exists such that if the
|
* On R4000/R4400 an erratum exists such that if the cycle counter is
|
||||||
* cycle counter is read in the exact moment that it is matching the
|
* read in the exact moment that it is matching the compare register,
|
||||||
* compare register, no interrupt will be generated.
|
* no interrupt will be generated.
|
||||||
*
|
*
|
||||||
* There is a suggested workaround and also the erratum can't strike if
|
* There is a suggested workaround and also the erratum can't strike if
|
||||||
* the compare interrupt isn't being used as the clock source device.
|
* the compare interrupt isn't being used as the clock source device.
|
||||||
@@ -63,7 +63,7 @@ static inline int can_use_mips_counter(unsigned int prid)
|
|||||||
if (!__builtin_constant_p(cpu_has_counter))
|
if (!__builtin_constant_p(cpu_has_counter))
|
||||||
asm volatile("" : "=m" (cpu_data[0].options));
|
asm volatile("" : "=m" (cpu_data[0].options));
|
||||||
if (likely(cpu_has_counter &&
|
if (likely(cpu_has_counter &&
|
||||||
prid >= (PRID_IMP_R4000 | PRID_REV_ENCODE_44(5, 0))))
|
prid > (PRID_IMP_R4000 | PRID_REV_ENCODE_44(15, 15))))
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -141,15 +141,10 @@ static __init int cpu_has_mfc0_count_bug(void)
|
|||||||
case CPU_R4400MC:
|
case CPU_R4400MC:
|
||||||
/*
|
/*
|
||||||
* The published errata for the R4400 up to 3.0 say the CPU
|
* The published errata for the R4400 up to 3.0 say the CPU
|
||||||
* has the mfc0 from count bug.
|
* has the mfc0 from count bug. This seems the last version
|
||||||
|
* produced.
|
||||||
*/
|
*/
|
||||||
if ((current_cpu_data.processor_id & 0xff) <= 0x30)
|
return 1;
|
||||||
return 1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* we assume newer revisions are ok
|
|
||||||
*/
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -2097,19 +2097,19 @@ static void *set_vi_srs_handler(int n, vi_handler_t addr, int srs)
|
|||||||
* If no shadow set is selected then use the default handler
|
* If no shadow set is selected then use the default handler
|
||||||
* that does normal register saving and standard interrupt exit
|
* that does normal register saving and standard interrupt exit
|
||||||
*/
|
*/
|
||||||
extern char except_vec_vi, except_vec_vi_lui;
|
extern const u8 except_vec_vi[], except_vec_vi_lui[];
|
||||||
extern char except_vec_vi_ori, except_vec_vi_end;
|
extern const u8 except_vec_vi_ori[], except_vec_vi_end[];
|
||||||
extern char rollback_except_vec_vi;
|
extern const u8 rollback_except_vec_vi[];
|
||||||
char *vec_start = using_rollback_handler() ?
|
const u8 *vec_start = using_rollback_handler() ?
|
||||||
&rollback_except_vec_vi : &except_vec_vi;
|
rollback_except_vec_vi : except_vec_vi;
|
||||||
#if defined(CONFIG_CPU_MICROMIPS) || defined(CONFIG_CPU_BIG_ENDIAN)
|
#if defined(CONFIG_CPU_MICROMIPS) || defined(CONFIG_CPU_BIG_ENDIAN)
|
||||||
const int lui_offset = &except_vec_vi_lui - vec_start + 2;
|
const int lui_offset = except_vec_vi_lui - vec_start + 2;
|
||||||
const int ori_offset = &except_vec_vi_ori - vec_start + 2;
|
const int ori_offset = except_vec_vi_ori - vec_start + 2;
|
||||||
#else
|
#else
|
||||||
const int lui_offset = &except_vec_vi_lui - vec_start;
|
const int lui_offset = except_vec_vi_lui - vec_start;
|
||||||
const int ori_offset = &except_vec_vi_ori - vec_start;
|
const int ori_offset = except_vec_vi_ori - vec_start;
|
||||||
#endif
|
#endif
|
||||||
const int handler_len = &except_vec_vi_end - vec_start;
|
const int handler_len = except_vec_vi_end - vec_start;
|
||||||
|
|
||||||
if (handler_len > VECTORSPACING) {
|
if (handler_len > VECTORSPACING) {
|
||||||
/*
|
/*
|
||||||
@@ -2317,7 +2317,7 @@ void per_cpu_trap_init(bool is_boot_cpu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Install CPU exception handler */
|
/* Install CPU exception handler */
|
||||||
void set_handler(unsigned long offset, void *addr, unsigned long size)
|
void set_handler(unsigned long offset, const void *addr, unsigned long size)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_CPU_MICROMIPS
|
#ifdef CONFIG_CPU_MICROMIPS
|
||||||
memcpy((void *)(ebase + offset), ((unsigned char *)addr - 1), size);
|
memcpy((void *)(ebase + offset), ((unsigned char *)addr - 1), size);
|
||||||
|
@@ -79,7 +79,7 @@ void __init plat_mem_setup(void)
|
|||||||
|
|
||||||
if (fw_passed_dtb) /* UHI interface */
|
if (fw_passed_dtb) /* UHI interface */
|
||||||
dtb = (void *)fw_passed_dtb;
|
dtb = (void *)fw_passed_dtb;
|
||||||
else if (__dtb_start != __dtb_end)
|
else if (&__dtb_start != &__dtb_end)
|
||||||
dtb = (void *)__dtb_start;
|
dtb = (void *)__dtb_start;
|
||||||
else
|
else
|
||||||
panic("no dtb found");
|
panic("no dtb found");
|
||||||
|
@@ -28,7 +28,7 @@ static ulong get_fdtaddr(void)
|
|||||||
if (fw_passed_dtb && !fw_arg2 && !fw_arg3)
|
if (fw_passed_dtb && !fw_arg2 && !fw_arg3)
|
||||||
return (ulong)fw_passed_dtb;
|
return (ulong)fw_passed_dtb;
|
||||||
|
|
||||||
if (__dtb_start < __dtb_end)
|
if (&__dtb_start < &__dtb_end)
|
||||||
ftaddr = (ulong)__dtb_start;
|
ftaddr = (ulong)__dtb_start;
|
||||||
|
|
||||||
return ftaddr;
|
return ftaddr;
|
||||||
|
@@ -61,6 +61,7 @@ static int __init ill_acc_of_setup(void)
|
|||||||
pdev = of_find_device_by_node(np);
|
pdev = of_find_device_by_node(np);
|
||||||
if (!pdev) {
|
if (!pdev) {
|
||||||
pr_err("%pOFn: failed to lookup pdev\n", np);
|
pr_err("%pOFn: failed to lookup pdev\n", np);
|
||||||
|
of_node_put(np);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -77,7 +77,7 @@ void __init plat_mem_setup(void)
|
|||||||
*/
|
*/
|
||||||
if (fw_passed_dtb)
|
if (fw_passed_dtb)
|
||||||
dtb = (void *)fw_passed_dtb;
|
dtb = (void *)fw_passed_dtb;
|
||||||
else if (__dtb_start != __dtb_end)
|
else if (&__dtb_start != &__dtb_end)
|
||||||
dtb = (void *)__dtb_start;
|
dtb = (void *)__dtb_start;
|
||||||
|
|
||||||
__dt_setup_arch(dtb);
|
__dt_setup_arch(dtb);
|
||||||
|
@@ -40,10 +40,7 @@ static void __kprobes *patch_map(void *addr, int fixmap, unsigned long *flags,
|
|||||||
|
|
||||||
*need_unmap = 1;
|
*need_unmap = 1;
|
||||||
set_fixmap(fixmap, page_to_phys(page));
|
set_fixmap(fixmap, page_to_phys(page));
|
||||||
if (flags)
|
raw_spin_lock_irqsave(&patch_lock, *flags);
|
||||||
raw_spin_lock_irqsave(&patch_lock, *flags);
|
|
||||||
else
|
|
||||||
__acquire(&patch_lock);
|
|
||||||
|
|
||||||
return (void *) (__fix_to_virt(fixmap) + (uintaddr & ~PAGE_MASK));
|
return (void *) (__fix_to_virt(fixmap) + (uintaddr & ~PAGE_MASK));
|
||||||
}
|
}
|
||||||
@@ -52,10 +49,7 @@ static void __kprobes patch_unmap(int fixmap, unsigned long *flags)
|
|||||||
{
|
{
|
||||||
clear_fixmap(fixmap);
|
clear_fixmap(fixmap);
|
||||||
|
|
||||||
if (flags)
|
raw_spin_unlock_irqrestore(&patch_lock, *flags);
|
||||||
raw_spin_unlock_irqrestore(&patch_lock, *flags);
|
|
||||||
else
|
|
||||||
__release(&patch_lock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
|
void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
|
||||||
@@ -67,8 +61,9 @@ void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
|
|||||||
int mapped;
|
int mapped;
|
||||||
|
|
||||||
/* Make sure we don't have any aliases in cache */
|
/* Make sure we don't have any aliases in cache */
|
||||||
flush_kernel_vmap_range(addr, len);
|
flush_kernel_dcache_range_asm(start, end);
|
||||||
flush_icache_range(start, end);
|
flush_kernel_icache_range_asm(start, end);
|
||||||
|
flush_tlb_kernel_range(start, end);
|
||||||
|
|
||||||
p = fixmap = patch_map(addr, FIX_TEXT_POKE0, &flags, &mapped);
|
p = fixmap = patch_map(addr, FIX_TEXT_POKE0, &flags, &mapped);
|
||||||
|
|
||||||
@@ -81,8 +76,10 @@ void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
|
|||||||
* We're crossing a page boundary, so
|
* We're crossing a page boundary, so
|
||||||
* need to remap
|
* need to remap
|
||||||
*/
|
*/
|
||||||
flush_kernel_vmap_range((void *)fixmap,
|
flush_kernel_dcache_range_asm((unsigned long)fixmap,
|
||||||
(p-fixmap) * sizeof(*p));
|
(unsigned long)p);
|
||||||
|
flush_tlb_kernel_range((unsigned long)fixmap,
|
||||||
|
(unsigned long)p);
|
||||||
if (mapped)
|
if (mapped)
|
||||||
patch_unmap(FIX_TEXT_POKE0, &flags);
|
patch_unmap(FIX_TEXT_POKE0, &flags);
|
||||||
p = fixmap = patch_map(addr, FIX_TEXT_POKE0, &flags,
|
p = fixmap = patch_map(addr, FIX_TEXT_POKE0, &flags,
|
||||||
@@ -90,10 +87,10 @@ void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
flush_kernel_vmap_range((void *)fixmap, (p-fixmap) * sizeof(*p));
|
flush_kernel_dcache_range_asm((unsigned long)fixmap, (unsigned long)p);
|
||||||
|
flush_tlb_kernel_range((unsigned long)fixmap, (unsigned long)p);
|
||||||
if (mapped)
|
if (mapped)
|
||||||
patch_unmap(FIX_TEXT_POKE0, &flags);
|
patch_unmap(FIX_TEXT_POKE0, &flags);
|
||||||
flush_icache_range(start, end);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void __kprobes __patch_text(void *addr, u32 insn)
|
void __kprobes __patch_text(void *addr, u32 insn)
|
||||||
|
@@ -419,8 +419,7 @@ show_cpuinfo (struct seq_file *m, void *v)
|
|||||||
}
|
}
|
||||||
seq_printf(m, " (0x%02lx)\n", boot_cpu_data.pdc.capabilities);
|
seq_printf(m, " (0x%02lx)\n", boot_cpu_data.pdc.capabilities);
|
||||||
|
|
||||||
seq_printf(m, "model\t\t: %s\n"
|
seq_printf(m, "model\t\t: %s - %s\n",
|
||||||
"model name\t: %s\n",
|
|
||||||
boot_cpu_data.pdc.sys_model_name,
|
boot_cpu_data.pdc.sys_model_name,
|
||||||
cpuinfo->dev ?
|
cpuinfo->dev ?
|
||||||
cpuinfo->dev->name : "Unknown");
|
cpuinfo->dev->name : "Unknown");
|
||||||
|
@@ -139,12 +139,12 @@
|
|||||||
fman@400000 {
|
fman@400000 {
|
||||||
ethernet@e6000 {
|
ethernet@e6000 {
|
||||||
phy-handle = <&phy_rgmii_0>;
|
phy-handle = <&phy_rgmii_0>;
|
||||||
phy-connection-type = "rgmii";
|
phy-connection-type = "rgmii-id";
|
||||||
};
|
};
|
||||||
|
|
||||||
ethernet@e8000 {
|
ethernet@e8000 {
|
||||||
phy-handle = <&phy_rgmii_1>;
|
phy-handle = <&phy_rgmii_1>;
|
||||||
phy-connection-type = "rgmii";
|
phy-connection-type = "rgmii-id";
|
||||||
};
|
};
|
||||||
|
|
||||||
mdio0: mdio@fc000 {
|
mdio0: mdio@fc000 {
|
||||||
|
@@ -132,7 +132,11 @@ static inline bool pfn_valid(unsigned long pfn)
|
|||||||
#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr))
|
#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr))
|
||||||
#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
|
#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
|
||||||
|
|
||||||
#define virt_addr_valid(kaddr) pfn_valid(virt_to_pfn(kaddr))
|
#define virt_addr_valid(vaddr) ({ \
|
||||||
|
unsigned long _addr = (unsigned long)vaddr; \
|
||||||
|
_addr >= PAGE_OFFSET && _addr < (unsigned long)high_memory && \
|
||||||
|
pfn_valid(virt_to_pfn(_addr)); \
|
||||||
|
})
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* On Book-E parts we need __va to parse the device tree and we can't
|
* On Book-E parts we need __va to parse the device tree and we can't
|
||||||
|
@@ -1296,6 +1296,12 @@ int __init early_init_dt_scan_rtas(unsigned long node,
|
|||||||
entryp = of_get_flat_dt_prop(node, "linux,rtas-entry", NULL);
|
entryp = of_get_flat_dt_prop(node, "linux,rtas-entry", NULL);
|
||||||
sizep = of_get_flat_dt_prop(node, "rtas-size", NULL);
|
sizep = of_get_flat_dt_prop(node, "rtas-size", NULL);
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC64
|
||||||
|
/* need this feature to decide the crashkernel offset */
|
||||||
|
if (of_get_flat_dt_prop(node, "ibm,hypertas-functions", NULL))
|
||||||
|
powerpc_firmware_features |= FW_FEATURE_LPAR;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (basep && entryp && sizep) {
|
if (basep && entryp && sizep) {
|
||||||
rtas.base = *basep;
|
rtas.base = *basep;
|
||||||
rtas.entry = *entryp;
|
rtas.entry = *entryp;
|
||||||
|
@@ -26,15 +26,18 @@ static ssize_t format_show(struct kobject *kobj, struct kobj_attribute *attr,
|
|||||||
const char *format;
|
const char *format;
|
||||||
|
|
||||||
node = of_find_compatible_node(NULL, NULL, "ibm,secvar-backend");
|
node = of_find_compatible_node(NULL, NULL, "ibm,secvar-backend");
|
||||||
if (!of_device_is_available(node))
|
if (!of_device_is_available(node)) {
|
||||||
return -ENODEV;
|
rc = -ENODEV;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
rc = of_property_read_string(node, "format", &format);
|
rc = of_property_read_string(node, "format", &format);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
goto out;
|
||||||
|
|
||||||
rc = sprintf(buf, "%s\n", format);
|
rc = sprintf(buf, "%s\n", format);
|
||||||
|
|
||||||
|
out:
|
||||||
of_node_put(node);
|
of_node_put(node);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
@@ -147,11 +147,18 @@ void __init reserve_crashkernel(void)
|
|||||||
if (!crashk_res.start) {
|
if (!crashk_res.start) {
|
||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
/*
|
/*
|
||||||
* On 64bit we split the RMO in half but cap it at half of
|
* On the LPAR platform place the crash kernel to mid of
|
||||||
* a small SLB (128MB) since the crash kernel needs to place
|
* RMA size (512MB or more) to ensure the crash kernel
|
||||||
* itself and some stacks to be in the first segment.
|
* gets enough space to place itself and some stack to be
|
||||||
|
* in the first segment. At the same time normal kernel
|
||||||
|
* also get enough space to allocate memory for essential
|
||||||
|
* system resource in the first segment. Keep the crash
|
||||||
|
* kernel starts at 128MB offset on other platforms.
|
||||||
*/
|
*/
|
||||||
crashk_res.start = min(0x8000000ULL, (ppc64_rma_size / 2));
|
if (firmware_has_feature(FW_FEATURE_LPAR))
|
||||||
|
crashk_res.start = ppc64_rma_size / 2;
|
||||||
|
else
|
||||||
|
crashk_res.start = min(0x8000000ULL, (ppc64_rma_size / 2));
|
||||||
#else
|
#else
|
||||||
crashk_res.start = KDUMP_KERNELBASE;
|
crashk_res.start = KDUMP_KERNELBASE;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -421,13 +421,19 @@ static void kvmppc_tce_put(struct kvmppc_spapr_tce_table *stt,
|
|||||||
tbl[idx % TCES_PER_PAGE] = tce;
|
tbl[idx % TCES_PER_PAGE] = tce;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void kvmppc_clear_tce(struct mm_struct *mm, struct iommu_table *tbl,
|
static void kvmppc_clear_tce(struct mm_struct *mm, struct kvmppc_spapr_tce_table *stt,
|
||||||
unsigned long entry)
|
struct iommu_table *tbl, unsigned long entry)
|
||||||
{
|
{
|
||||||
unsigned long hpa = 0;
|
unsigned long i;
|
||||||
enum dma_data_direction dir = DMA_NONE;
|
unsigned long subpages = 1ULL << (stt->page_shift - tbl->it_page_shift);
|
||||||
|
unsigned long io_entry = entry << (stt->page_shift - tbl->it_page_shift);
|
||||||
|
|
||||||
iommu_tce_xchg_no_kill(mm, tbl, entry, &hpa, &dir);
|
for (i = 0; i < subpages; ++i) {
|
||||||
|
unsigned long hpa = 0;
|
||||||
|
enum dma_data_direction dir = DMA_NONE;
|
||||||
|
|
||||||
|
iommu_tce_xchg_no_kill(mm, tbl, io_entry + i, &hpa, &dir);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static long kvmppc_tce_iommu_mapped_dec(struct kvm *kvm,
|
static long kvmppc_tce_iommu_mapped_dec(struct kvm *kvm,
|
||||||
@@ -486,6 +492,8 @@ static long kvmppc_tce_iommu_unmap(struct kvm *kvm,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iommu_tce_kill(tbl, io_entry, subpages);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -545,6 +553,8 @@ static long kvmppc_tce_iommu_map(struct kvm *kvm,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iommu_tce_kill(tbl, io_entry, subpages);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,10 +601,9 @@ long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
|
|||||||
ret = kvmppc_tce_iommu_map(vcpu->kvm, stt, stit->tbl,
|
ret = kvmppc_tce_iommu_map(vcpu->kvm, stt, stit->tbl,
|
||||||
entry, ua, dir);
|
entry, ua, dir);
|
||||||
|
|
||||||
iommu_tce_kill(stit->tbl, entry, 1);
|
|
||||||
|
|
||||||
if (ret != H_SUCCESS) {
|
if (ret != H_SUCCESS) {
|
||||||
kvmppc_clear_tce(vcpu->kvm->mm, stit->tbl, entry);
|
kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl, entry);
|
||||||
goto unlock_exit;
|
goto unlock_exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -670,13 +679,13 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
|
|||||||
*/
|
*/
|
||||||
if (get_user(tce, tces + i)) {
|
if (get_user(tce, tces + i)) {
|
||||||
ret = H_TOO_HARD;
|
ret = H_TOO_HARD;
|
||||||
goto invalidate_exit;
|
goto unlock_exit;
|
||||||
}
|
}
|
||||||
tce = be64_to_cpu(tce);
|
tce = be64_to_cpu(tce);
|
||||||
|
|
||||||
if (kvmppc_tce_to_ua(vcpu->kvm, tce, &ua)) {
|
if (kvmppc_tce_to_ua(vcpu->kvm, tce, &ua)) {
|
||||||
ret = H_PARAMETER;
|
ret = H_PARAMETER;
|
||||||
goto invalidate_exit;
|
goto unlock_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next) {
|
list_for_each_entry_lockless(stit, &stt->iommu_tables, next) {
|
||||||
@@ -685,19 +694,15 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
|
|||||||
iommu_tce_direction(tce));
|
iommu_tce_direction(tce));
|
||||||
|
|
||||||
if (ret != H_SUCCESS) {
|
if (ret != H_SUCCESS) {
|
||||||
kvmppc_clear_tce(vcpu->kvm->mm, stit->tbl,
|
kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl,
|
||||||
entry);
|
entry + i);
|
||||||
goto invalidate_exit;
|
goto unlock_exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kvmppc_tce_put(stt, entry + i, tce);
|
kvmppc_tce_put(stt, entry + i, tce);
|
||||||
}
|
}
|
||||||
|
|
||||||
invalidate_exit:
|
|
||||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next)
|
|
||||||
iommu_tce_kill(stit->tbl, entry, npages);
|
|
||||||
|
|
||||||
unlock_exit:
|
unlock_exit:
|
||||||
srcu_read_unlock(&vcpu->kvm->srcu, idx);
|
srcu_read_unlock(&vcpu->kvm->srcu, idx);
|
||||||
|
|
||||||
@@ -736,20 +741,16 @@ long kvmppc_h_stuff_tce(struct kvm_vcpu *vcpu,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (ret == H_TOO_HARD)
|
if (ret == H_TOO_HARD)
|
||||||
goto invalidate_exit;
|
return ret;
|
||||||
|
|
||||||
WARN_ON_ONCE(1);
|
WARN_ON_ONCE(1);
|
||||||
kvmppc_clear_tce(vcpu->kvm->mm, stit->tbl, entry);
|
kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl, entry + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < npages; ++i, ioba += (1ULL << stt->page_shift))
|
for (i = 0; i < npages; ++i, ioba += (1ULL << stt->page_shift))
|
||||||
kvmppc_tce_put(stt, ioba >> stt->page_shift, tce_value);
|
kvmppc_tce_put(stt, ioba >> stt->page_shift, tce_value);
|
||||||
|
|
||||||
invalidate_exit:
|
|
||||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next)
|
|
||||||
iommu_tce_kill(stit->tbl, ioba >> stt->page_shift, npages);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(kvmppc_h_stuff_tce);
|
EXPORT_SYMBOL_GPL(kvmppc_h_stuff_tce);
|
||||||
|
@@ -247,13 +247,19 @@ static void iommu_tce_kill_rm(struct iommu_table *tbl,
|
|||||||
tbl->it_ops->tce_kill(tbl, entry, pages, true);
|
tbl->it_ops->tce_kill(tbl, entry, pages, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void kvmppc_rm_clear_tce(struct kvm *kvm, struct iommu_table *tbl,
|
static void kvmppc_rm_clear_tce(struct kvm *kvm, struct kvmppc_spapr_tce_table *stt,
|
||||||
unsigned long entry)
|
struct iommu_table *tbl, unsigned long entry)
|
||||||
{
|
{
|
||||||
unsigned long hpa = 0;
|
unsigned long i;
|
||||||
enum dma_data_direction dir = DMA_NONE;
|
unsigned long subpages = 1ULL << (stt->page_shift - tbl->it_page_shift);
|
||||||
|
unsigned long io_entry = entry << (stt->page_shift - tbl->it_page_shift);
|
||||||
|
|
||||||
iommu_tce_xchg_no_kill_rm(kvm->mm, tbl, entry, &hpa, &dir);
|
for (i = 0; i < subpages; ++i) {
|
||||||
|
unsigned long hpa = 0;
|
||||||
|
enum dma_data_direction dir = DMA_NONE;
|
||||||
|
|
||||||
|
iommu_tce_xchg_no_kill_rm(kvm->mm, tbl, io_entry + i, &hpa, &dir);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static long kvmppc_rm_tce_iommu_mapped_dec(struct kvm *kvm,
|
static long kvmppc_rm_tce_iommu_mapped_dec(struct kvm *kvm,
|
||||||
@@ -316,6 +322,8 @@ static long kvmppc_rm_tce_iommu_unmap(struct kvm *kvm,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iommu_tce_kill_rm(tbl, io_entry, subpages);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -379,6 +387,8 @@ static long kvmppc_rm_tce_iommu_map(struct kvm *kvm,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iommu_tce_kill_rm(tbl, io_entry, subpages);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -424,10 +434,8 @@ long kvmppc_rm_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
|
|||||||
ret = kvmppc_rm_tce_iommu_map(vcpu->kvm, stt,
|
ret = kvmppc_rm_tce_iommu_map(vcpu->kvm, stt,
|
||||||
stit->tbl, entry, ua, dir);
|
stit->tbl, entry, ua, dir);
|
||||||
|
|
||||||
iommu_tce_kill_rm(stit->tbl, entry, 1);
|
|
||||||
|
|
||||||
if (ret != H_SUCCESS) {
|
if (ret != H_SUCCESS) {
|
||||||
kvmppc_rm_clear_tce(vcpu->kvm, stit->tbl, entry);
|
kvmppc_rm_clear_tce(vcpu->kvm, stt, stit->tbl, entry);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -569,7 +577,7 @@ long kvmppc_rm_h_put_tce_indirect(struct kvm_vcpu *vcpu,
|
|||||||
ua = 0;
|
ua = 0;
|
||||||
if (kvmppc_rm_tce_to_ua(vcpu->kvm, tce, &ua)) {
|
if (kvmppc_rm_tce_to_ua(vcpu->kvm, tce, &ua)) {
|
||||||
ret = H_PARAMETER;
|
ret = H_PARAMETER;
|
||||||
goto invalidate_exit;
|
goto unlock_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next) {
|
list_for_each_entry_lockless(stit, &stt->iommu_tables, next) {
|
||||||
@@ -578,19 +586,15 @@ long kvmppc_rm_h_put_tce_indirect(struct kvm_vcpu *vcpu,
|
|||||||
iommu_tce_direction(tce));
|
iommu_tce_direction(tce));
|
||||||
|
|
||||||
if (ret != H_SUCCESS) {
|
if (ret != H_SUCCESS) {
|
||||||
kvmppc_rm_clear_tce(vcpu->kvm, stit->tbl,
|
kvmppc_rm_clear_tce(vcpu->kvm, stt, stit->tbl,
|
||||||
entry);
|
entry + i);
|
||||||
goto invalidate_exit;
|
goto unlock_exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kvmppc_rm_tce_put(stt, entry + i, tce);
|
kvmppc_rm_tce_put(stt, entry + i, tce);
|
||||||
}
|
}
|
||||||
|
|
||||||
invalidate_exit:
|
|
||||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next)
|
|
||||||
iommu_tce_kill_rm(stit->tbl, entry, npages);
|
|
||||||
|
|
||||||
unlock_exit:
|
unlock_exit:
|
||||||
if (!prereg)
|
if (!prereg)
|
||||||
arch_spin_unlock(&kvm->mmu_lock.rlock.raw_lock);
|
arch_spin_unlock(&kvm->mmu_lock.rlock.raw_lock);
|
||||||
@@ -632,20 +636,16 @@ long kvmppc_rm_h_stuff_tce(struct kvm_vcpu *vcpu,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (ret == H_TOO_HARD)
|
if (ret == H_TOO_HARD)
|
||||||
goto invalidate_exit;
|
return ret;
|
||||||
|
|
||||||
WARN_ON_ONCE_RM(1);
|
WARN_ON_ONCE_RM(1);
|
||||||
kvmppc_rm_clear_tce(vcpu->kvm, stit->tbl, entry);
|
kvmppc_rm_clear_tce(vcpu->kvm, stt, stit->tbl, entry + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < npages; ++i, ioba += (1ULL << stt->page_shift))
|
for (i = 0; i < npages; ++i, ioba += (1ULL << stt->page_shift))
|
||||||
kvmppc_rm_tce_put(stt, ioba >> stt->page_shift, tce_value);
|
kvmppc_rm_tce_put(stt, ioba >> stt->page_shift, tce_value);
|
||||||
|
|
||||||
invalidate_exit:
|
|
||||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next)
|
|
||||||
iommu_tce_kill_rm(stit->tbl, ioba >> stt->page_shift, npages);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -5,11 +5,11 @@ ifdef CONFIG_COMPAT
|
|||||||
obj-$(CONFIG_PERF_EVENTS) += callchain_32.o
|
obj-$(CONFIG_PERF_EVENTS) += callchain_32.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
obj-$(CONFIG_PPC_PERF_CTRS) += core-book3s.o bhrb.o
|
obj-$(CONFIG_PPC_PERF_CTRS) += core-book3s.o
|
||||||
obj64-$(CONFIG_PPC_PERF_CTRS) += ppc970-pmu.o power5-pmu.o \
|
obj64-$(CONFIG_PPC_PERF_CTRS) += ppc970-pmu.o power5-pmu.o \
|
||||||
power5+-pmu.o power6-pmu.o power7-pmu.o \
|
power5+-pmu.o power6-pmu.o power7-pmu.o \
|
||||||
isa207-common.o power8-pmu.o power9-pmu.o \
|
isa207-common.o power8-pmu.o power9-pmu.o \
|
||||||
generic-compat-pmu.o power10-pmu.o
|
generic-compat-pmu.o power10-pmu.o bhrb.o
|
||||||
obj32-$(CONFIG_PPC_PERF_CTRS) += mpc7450-pmu.o
|
obj32-$(CONFIG_PPC_PERF_CTRS) += mpc7450-pmu.o
|
||||||
|
|
||||||
obj-$(CONFIG_PPC_POWERNV) += imc-pmu.o
|
obj-$(CONFIG_PPC_POWERNV) += imc-pmu.o
|
||||||
|
@@ -133,11 +133,11 @@ int p9_dd22_bl_ev[] = {
|
|||||||
|
|
||||||
/* Table of alternatives, sorted by column 0 */
|
/* Table of alternatives, sorted by column 0 */
|
||||||
static const unsigned int power9_event_alternatives[][MAX_ALT] = {
|
static const unsigned int power9_event_alternatives[][MAX_ALT] = {
|
||||||
{ PM_INST_DISP, PM_INST_DISP_ALT },
|
|
||||||
{ PM_RUN_CYC_ALT, PM_RUN_CYC },
|
|
||||||
{ PM_RUN_INST_CMPL_ALT, PM_RUN_INST_CMPL },
|
|
||||||
{ PM_LD_MISS_L1, PM_LD_MISS_L1_ALT },
|
|
||||||
{ PM_BR_2PATH, PM_BR_2PATH_ALT },
|
{ PM_BR_2PATH, PM_BR_2PATH_ALT },
|
||||||
|
{ PM_INST_DISP, PM_INST_DISP_ALT },
|
||||||
|
{ PM_RUN_CYC_ALT, PM_RUN_CYC },
|
||||||
|
{ PM_LD_MISS_L1, PM_LD_MISS_L1_ALT },
|
||||||
|
{ PM_RUN_INST_CMPL_ALT, PM_RUN_INST_CMPL },
|
||||||
};
|
};
|
||||||
|
|
||||||
static int power9_get_alternatives(u64 event, unsigned int flags, u64 alt[])
|
static int power9_get_alternatives(u64 event, unsigned int flags, u64 alt[])
|
||||||
|
@@ -100,7 +100,7 @@ static int patch_text_cb(void *data)
|
|||||||
struct patch_insn *patch = data;
|
struct patch_insn *patch = data;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (atomic_inc_return(&patch->cpu_count) == 1) {
|
if (atomic_inc_return(&patch->cpu_count) == num_online_cpus()) {
|
||||||
ret =
|
ret =
|
||||||
patch_text_nosync(patch->addr, &patch->insn,
|
patch_text_nosync(patch->addr, &patch->insn,
|
||||||
GET_INSN_LENGTH(patch->insn));
|
GET_INSN_LENGTH(patch->insn));
|
||||||
|
@@ -32,6 +32,16 @@ KBUILD_CFLAGS_DECOMPRESSOR += -fno-stack-protector
|
|||||||
KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-member)
|
KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-member)
|
||||||
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
|
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
|
||||||
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
|
KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
|
||||||
|
|
||||||
|
ifdef CONFIG_CC_IS_GCC
|
||||||
|
ifeq ($(call cc-ifversion, -ge, 1200, y), y)
|
||||||
|
ifeq ($(call cc-ifversion, -lt, 1300, y), y)
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, array-bounds)
|
||||||
|
KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, array-bounds)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
UTS_MACHINE := s390x
|
UTS_MACHINE := s390x
|
||||||
STACK_SIZE := $(if $(CONFIG_KASAN),65536,16384)
|
STACK_SIZE := $(if $(CONFIG_KASAN),65536,16384)
|
||||||
CHECKFLAGS += -D__s390__ -D__s390x__
|
CHECKFLAGS += -D__s390__ -D__s390x__
|
||||||
|
@@ -2872,6 +2872,11 @@ config IA32_AOUT
|
|||||||
config X86_X32
|
config X86_X32
|
||||||
bool "x32 ABI for 64-bit mode"
|
bool "x32 ABI for 64-bit mode"
|
||||||
depends on X86_64
|
depends on X86_64
|
||||||
|
# llvm-objcopy does not convert x86_64 .note.gnu.property or
|
||||||
|
# compressed debug sections to x86_x32 properly:
|
||||||
|
# https://github.com/ClangBuiltLinux/linux/issues/514
|
||||||
|
# https://github.com/ClangBuiltLinux/linux/issues/1141
|
||||||
|
depends on $(success,$(OBJCOPY) --version | head -n1 | grep -qv llvm)
|
||||||
help
|
help
|
||||||
Include code to run binaries for the x32 native 32-bit ABI
|
Include code to run binaries for the x32 native 32-bit ABI
|
||||||
for 64-bit processors. An x32 process gets access to the
|
for 64-bit processors. An x32 process gets access to the
|
||||||
|
@@ -29,15 +29,13 @@ typedef u32 compat_caddr_t;
|
|||||||
typedef __kernel_fsid_t compat_fsid_t;
|
typedef __kernel_fsid_t compat_fsid_t;
|
||||||
|
|
||||||
struct compat_stat {
|
struct compat_stat {
|
||||||
compat_dev_t st_dev;
|
u32 st_dev;
|
||||||
u16 __pad1;
|
|
||||||
compat_ino_t st_ino;
|
compat_ino_t st_ino;
|
||||||
compat_mode_t st_mode;
|
compat_mode_t st_mode;
|
||||||
compat_nlink_t st_nlink;
|
compat_nlink_t st_nlink;
|
||||||
__compat_uid_t st_uid;
|
__compat_uid_t st_uid;
|
||||||
__compat_gid_t st_gid;
|
__compat_gid_t st_gid;
|
||||||
compat_dev_t st_rdev;
|
u32 st_rdev;
|
||||||
u16 __pad2;
|
|
||||||
u32 st_size;
|
u32 st_size;
|
||||||
u32 st_blksize;
|
u32 st_blksize;
|
||||||
u32 st_blocks;
|
u32 st_blocks;
|
||||||
|
@@ -1340,8 +1340,9 @@ static inline int kvm_arch_flush_remote_tlb(struct kvm *kvm)
|
|||||||
return -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kvm_mmu_module_init(void);
|
void kvm_mmu_x86_module_init(void);
|
||||||
void kvm_mmu_module_exit(void);
|
int kvm_mmu_vendor_module_init(void);
|
||||||
|
void kvm_mmu_vendor_module_exit(void);
|
||||||
|
|
||||||
void kvm_mmu_destroy(struct kvm_vcpu *vcpu);
|
void kvm_mmu_destroy(struct kvm_vcpu *vcpu);
|
||||||
int kvm_mmu_create(struct kvm_vcpu *vcpu);
|
int kvm_mmu_create(struct kvm_vcpu *vcpu);
|
||||||
|
@@ -133,11 +133,13 @@ extern void load_ucode_ap(void);
|
|||||||
void reload_early_microcode(void);
|
void reload_early_microcode(void);
|
||||||
extern bool get_builtin_firmware(struct cpio_data *cd, const char *name);
|
extern bool get_builtin_firmware(struct cpio_data *cd, const char *name);
|
||||||
extern bool initrd_gone;
|
extern bool initrd_gone;
|
||||||
|
void microcode_bsp_resume(void);
|
||||||
#else
|
#else
|
||||||
static inline int __init microcode_init(void) { return 0; };
|
static inline int __init microcode_init(void) { return 0; };
|
||||||
static inline void __init load_ucode_bsp(void) { }
|
static inline void __init load_ucode_bsp(void) { }
|
||||||
static inline void load_ucode_ap(void) { }
|
static inline void load_ucode_ap(void) { }
|
||||||
static inline void reload_early_microcode(void) { }
|
static inline void reload_early_microcode(void) { }
|
||||||
|
static inline void microcode_bsp_resume(void) { }
|
||||||
static inline bool
|
static inline bool
|
||||||
get_builtin_firmware(struct cpio_data *cd, const char *name) { return false; }
|
get_builtin_firmware(struct cpio_data *cd, const char *name) { return false; }
|
||||||
#endif
|
#endif
|
||||||
|
@@ -775,9 +775,9 @@ static struct subsys_interface mc_cpu_interface = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mc_bp_resume - Update boot CPU microcode during resume.
|
* microcode_bsp_resume - Update boot CPU microcode during resume.
|
||||||
*/
|
*/
|
||||||
static void mc_bp_resume(void)
|
void microcode_bsp_resume(void)
|
||||||
{
|
{
|
||||||
int cpu = smp_processor_id();
|
int cpu = smp_processor_id();
|
||||||
struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
|
struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
|
||||||
@@ -789,7 +789,7 @@ static void mc_bp_resume(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct syscore_ops mc_syscore_ops = {
|
static struct syscore_ops mc_syscore_ops = {
|
||||||
.resume = mc_bp_resume,
|
.resume = microcode_bsp_resume,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int mc_cpu_starting(unsigned int cpu)
|
static int mc_cpu_starting(unsigned int cpu)
|
||||||
|
@@ -66,6 +66,7 @@ static DEFINE_PER_CPU_DECRYPTED(struct kvm_vcpu_pv_apf_data, apf_reason) __align
|
|||||||
DEFINE_PER_CPU_DECRYPTED(struct kvm_steal_time, steal_time) __aligned(64) __visible;
|
DEFINE_PER_CPU_DECRYPTED(struct kvm_steal_time, steal_time) __aligned(64) __visible;
|
||||||
static int has_steal_clock = 0;
|
static int has_steal_clock = 0;
|
||||||
|
|
||||||
|
static int has_guest_poll = 0;
|
||||||
/*
|
/*
|
||||||
* No need for any "IO delay" on KVM
|
* No need for any "IO delay" on KVM
|
||||||
*/
|
*/
|
||||||
@@ -624,14 +625,26 @@ static int kvm_cpu_down_prepare(unsigned int cpu)
|
|||||||
|
|
||||||
static int kvm_suspend(void)
|
static int kvm_suspend(void)
|
||||||
{
|
{
|
||||||
|
u64 val = 0;
|
||||||
|
|
||||||
kvm_guest_cpu_offline(false);
|
kvm_guest_cpu_offline(false);
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_CPUIDLE_HALTPOLL
|
||||||
|
if (kvm_para_has_feature(KVM_FEATURE_POLL_CONTROL))
|
||||||
|
rdmsrl(MSR_KVM_POLL_CONTROL, val);
|
||||||
|
has_guest_poll = !(val & 1);
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void kvm_resume(void)
|
static void kvm_resume(void)
|
||||||
{
|
{
|
||||||
kvm_cpu_online(raw_smp_processor_id());
|
kvm_cpu_online(raw_smp_processor_id());
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_CPUIDLE_HALTPOLL
|
||||||
|
if (kvm_para_has_feature(KVM_FEATURE_POLL_CONTROL) && has_guest_poll)
|
||||||
|
wrmsrl(MSR_KVM_POLL_CONTROL, 0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct syscore_ops kvm_syscore_ops = {
|
static struct syscore_ops kvm_syscore_ops = {
|
||||||
|
@@ -668,6 +668,11 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)
|
|||||||
union cpuid10_eax eax;
|
union cpuid10_eax eax;
|
||||||
union cpuid10_edx edx;
|
union cpuid10_edx edx;
|
||||||
|
|
||||||
|
if (!static_cpu_has(X86_FEATURE_ARCH_PERFMON)) {
|
||||||
|
entry->eax = entry->ebx = entry->ecx = entry->edx = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
perf_get_x86_pmu_capability(&cap);
|
perf_get_x86_pmu_capability(&cap);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -3611,8 +3611,10 @@ static int em_rdpid(struct x86_emulate_ctxt *ctxt)
|
|||||||
{
|
{
|
||||||
u64 tsc_aux = 0;
|
u64 tsc_aux = 0;
|
||||||
|
|
||||||
if (ctxt->ops->get_msr(ctxt, MSR_TSC_AUX, &tsc_aux))
|
if (!ctxt->ops->guest_has_rdpid(ctxt))
|
||||||
return emulate_ud(ctxt);
|
return emulate_ud(ctxt);
|
||||||
|
|
||||||
|
ctxt->ops->get_msr(ctxt, MSR_TSC_AUX, &tsc_aux);
|
||||||
ctxt->dst.val = tsc_aux;
|
ctxt->dst.val = tsc_aux;
|
||||||
return X86EMUL_CONTINUE;
|
return X86EMUL_CONTINUE;
|
||||||
}
|
}
|
||||||
|
@@ -225,6 +225,7 @@ struct x86_emulate_ops {
|
|||||||
bool (*guest_has_long_mode)(struct x86_emulate_ctxt *ctxt);
|
bool (*guest_has_long_mode)(struct x86_emulate_ctxt *ctxt);
|
||||||
bool (*guest_has_movbe)(struct x86_emulate_ctxt *ctxt);
|
bool (*guest_has_movbe)(struct x86_emulate_ctxt *ctxt);
|
||||||
bool (*guest_has_fxsr)(struct x86_emulate_ctxt *ctxt);
|
bool (*guest_has_fxsr)(struct x86_emulate_ctxt *ctxt);
|
||||||
|
bool (*guest_has_rdpid)(struct x86_emulate_ctxt *ctxt);
|
||||||
|
|
||||||
void (*set_nmi_mask)(struct x86_emulate_ctxt *ctxt, bool masked);
|
void (*set_nmi_mask)(struct x86_emulate_ctxt *ctxt, bool masked);
|
||||||
|
|
||||||
|
@@ -113,7 +113,8 @@ static inline u32 kvm_x2apic_id(struct kvm_lapic *apic)
|
|||||||
|
|
||||||
static bool kvm_can_post_timer_interrupt(struct kvm_vcpu *vcpu)
|
static bool kvm_can_post_timer_interrupt(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
return pi_inject_timer && kvm_vcpu_apicv_active(vcpu);
|
return pi_inject_timer && kvm_vcpu_apicv_active(vcpu) &&
|
||||||
|
(kvm_mwait_in_guest(vcpu->kvm) || kvm_hlt_in_guest(vcpu->kvm));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool kvm_can_use_hv_timer(struct kvm_vcpu *vcpu)
|
bool kvm_can_use_hv_timer(struct kvm_vcpu *vcpu)
|
||||||
@@ -2106,10 +2107,9 @@ int kvm_lapic_reg_write(struct kvm_lapic *apic, u32 reg, u32 val)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case APIC_SELF_IPI:
|
case APIC_SELF_IPI:
|
||||||
if (apic_x2apic_mode(apic)) {
|
if (apic_x2apic_mode(apic))
|
||||||
kvm_lapic_reg_write(apic, APIC_ICR,
|
kvm_apic_send_ipi(apic, APIC_DEST_SELF | (val & APIC_VECTOR_MASK), 0);
|
||||||
APIC_DEST_SELF | (val & APIC_VECTOR_MASK));
|
else
|
||||||
} else
|
|
||||||
ret = 1;
|
ret = 1;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@@ -3140,6 +3140,8 @@ static void mmu_free_root_page(struct kvm *kvm, hpa_t *root_hpa,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
sp = to_shadow_page(*root_hpa & PT64_BASE_ADDR_MASK);
|
sp = to_shadow_page(*root_hpa & PT64_BASE_ADDR_MASK);
|
||||||
|
if (WARN_ON(!sp))
|
||||||
|
return;
|
||||||
|
|
||||||
if (kvm_mmu_put_root(kvm, sp)) {
|
if (kvm_mmu_put_root(kvm, sp)) {
|
||||||
if (sp->tdp_mmu_page)
|
if (sp->tdp_mmu_page)
|
||||||
@@ -5176,14 +5178,16 @@ void kvm_mmu_invpcid_gva(struct kvm_vcpu *vcpu, gva_t gva, unsigned long pcid)
|
|||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
if (pcid == kvm_get_active_pcid(vcpu)) {
|
if (pcid == kvm_get_active_pcid(vcpu)) {
|
||||||
mmu->invlpg(vcpu, gva, mmu->root_hpa);
|
if (mmu->invlpg)
|
||||||
|
mmu->invlpg(vcpu, gva, mmu->root_hpa);
|
||||||
tlb_flush = true;
|
tlb_flush = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < KVM_MMU_NUM_PREV_ROOTS; i++) {
|
for (i = 0; i < KVM_MMU_NUM_PREV_ROOTS; i++) {
|
||||||
if (VALID_PAGE(mmu->prev_roots[i].hpa) &&
|
if (VALID_PAGE(mmu->prev_roots[i].hpa) &&
|
||||||
pcid == kvm_get_pcid(vcpu, mmu->prev_roots[i].pgd)) {
|
pcid == kvm_get_pcid(vcpu, mmu->prev_roots[i].pgd)) {
|
||||||
mmu->invlpg(vcpu, gva, mmu->prev_roots[i].hpa);
|
if (mmu->invlpg)
|
||||||
|
mmu->invlpg(vcpu, gva, mmu->prev_roots[i].hpa);
|
||||||
tlb_flush = true;
|
tlb_flush = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5876,12 +5880,24 @@ static int set_nx_huge_pages(const char *val, const struct kernel_param *kp)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kvm_mmu_module_init(void)
|
/*
|
||||||
|
* nx_huge_pages needs to be resolved to true/false when kvm.ko is loaded, as
|
||||||
|
* its default value of -1 is technically undefined behavior for a boolean.
|
||||||
|
*/
|
||||||
|
void kvm_mmu_x86_module_init(void)
|
||||||
{
|
{
|
||||||
int ret = -ENOMEM;
|
|
||||||
|
|
||||||
if (nx_huge_pages == -1)
|
if (nx_huge_pages == -1)
|
||||||
__set_nx_huge_pages(get_nx_auto_mode());
|
__set_nx_huge_pages(get_nx_auto_mode());
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The bulk of the MMU initialization is deferred until the vendor module is
|
||||||
|
* loaded as many of the masks/values may be modified by VMX or SVM, i.e. need
|
||||||
|
* to be reset when a potentially different vendor module is loaded.
|
||||||
|
*/
|
||||||
|
int kvm_mmu_vendor_module_init(void)
|
||||||
|
{
|
||||||
|
int ret = -ENOMEM;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MMU roles use union aliasing which is, generally speaking, an
|
* MMU roles use union aliasing which is, generally speaking, an
|
||||||
@@ -5955,7 +5971,7 @@ void kvm_mmu_destroy(struct kvm_vcpu *vcpu)
|
|||||||
mmu_free_memory_caches(vcpu);
|
mmu_free_memory_caches(vcpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
void kvm_mmu_module_exit(void)
|
void kvm_mmu_vendor_module_exit(void)
|
||||||
{
|
{
|
||||||
mmu_destroy_caches();
|
mmu_destroy_caches();
|
||||||
percpu_counter_destroy(&kvm_total_used_mmu_pages);
|
percpu_counter_destroy(&kvm_total_used_mmu_pages);
|
||||||
|
@@ -44,6 +44,22 @@ static struct kvm_event_hw_type_mapping amd_event_mapping[] = {
|
|||||||
[7] = { 0xd1, 0x00, PERF_COUNT_HW_STALLED_CYCLES_BACKEND },
|
[7] = { 0xd1, 0x00, PERF_COUNT_HW_STALLED_CYCLES_BACKEND },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* duplicated from amd_f17h_perfmon_event_map. */
|
||||||
|
static struct kvm_event_hw_type_mapping amd_f17h_event_mapping[] = {
|
||||||
|
[0] = { 0x76, 0x00, PERF_COUNT_HW_CPU_CYCLES },
|
||||||
|
[1] = { 0xc0, 0x00, PERF_COUNT_HW_INSTRUCTIONS },
|
||||||
|
[2] = { 0x60, 0xff, PERF_COUNT_HW_CACHE_REFERENCES },
|
||||||
|
[3] = { 0x64, 0x09, PERF_COUNT_HW_CACHE_MISSES },
|
||||||
|
[4] = { 0xc2, 0x00, PERF_COUNT_HW_BRANCH_INSTRUCTIONS },
|
||||||
|
[5] = { 0xc3, 0x00, PERF_COUNT_HW_BRANCH_MISSES },
|
||||||
|
[6] = { 0x87, 0x02, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND },
|
||||||
|
[7] = { 0x87, 0x01, PERF_COUNT_HW_STALLED_CYCLES_BACKEND },
|
||||||
|
};
|
||||||
|
|
||||||
|
/* amd_pmc_perf_hw_id depends on these being the same size */
|
||||||
|
static_assert(ARRAY_SIZE(amd_event_mapping) ==
|
||||||
|
ARRAY_SIZE(amd_f17h_event_mapping));
|
||||||
|
|
||||||
static unsigned int get_msr_base(struct kvm_pmu *pmu, enum pmu_type type)
|
static unsigned int get_msr_base(struct kvm_pmu *pmu, enum pmu_type type)
|
||||||
{
|
{
|
||||||
struct kvm_vcpu *vcpu = pmu_to_vcpu(pmu);
|
struct kvm_vcpu *vcpu = pmu_to_vcpu(pmu);
|
||||||
@@ -128,19 +144,25 @@ static inline struct kvm_pmc *get_gp_pmc_amd(struct kvm_pmu *pmu, u32 msr,
|
|||||||
|
|
||||||
static unsigned int amd_pmc_perf_hw_id(struct kvm_pmc *pmc)
|
static unsigned int amd_pmc_perf_hw_id(struct kvm_pmc *pmc)
|
||||||
{
|
{
|
||||||
|
struct kvm_event_hw_type_mapping *event_mapping;
|
||||||
u8 event_select = pmc->eventsel & ARCH_PERFMON_EVENTSEL_EVENT;
|
u8 event_select = pmc->eventsel & ARCH_PERFMON_EVENTSEL_EVENT;
|
||||||
u8 unit_mask = (pmc->eventsel & ARCH_PERFMON_EVENTSEL_UMASK) >> 8;
|
u8 unit_mask = (pmc->eventsel & ARCH_PERFMON_EVENTSEL_UMASK) >> 8;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (guest_cpuid_family(pmc->vcpu) >= 0x17)
|
||||||
|
event_mapping = amd_f17h_event_mapping;
|
||||||
|
else
|
||||||
|
event_mapping = amd_event_mapping;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(amd_event_mapping); i++)
|
for (i = 0; i < ARRAY_SIZE(amd_event_mapping); i++)
|
||||||
if (amd_event_mapping[i].eventsel == event_select
|
if (event_mapping[i].eventsel == event_select
|
||||||
&& amd_event_mapping[i].unit_mask == unit_mask)
|
&& event_mapping[i].unit_mask == unit_mask)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (i == ARRAY_SIZE(amd_event_mapping))
|
if (i == ARRAY_SIZE(amd_event_mapping))
|
||||||
return PERF_COUNT_HW_MAX;
|
return PERF_COUNT_HW_MAX;
|
||||||
|
|
||||||
return amd_event_mapping[i].event_type;
|
return event_mapping[i].event_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return PERF_COUNT_HW_MAX as AMD doesn't have fixed events */
|
/* return PERF_COUNT_HW_MAX as AMD doesn't have fixed events */
|
||||||
@@ -253,12 +275,10 @@ static int amd_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
|
|||||||
/* MSR_EVNTSELn */
|
/* MSR_EVNTSELn */
|
||||||
pmc = get_gp_pmc_amd(pmu, msr, PMU_TYPE_EVNTSEL);
|
pmc = get_gp_pmc_amd(pmu, msr, PMU_TYPE_EVNTSEL);
|
||||||
if (pmc) {
|
if (pmc) {
|
||||||
if (data == pmc->eventsel)
|
data &= ~pmu->reserved_bits;
|
||||||
return 0;
|
if (data != pmc->eventsel)
|
||||||
if (!(data & pmu->reserved_bits)) {
|
|
||||||
reprogram_gp_counter(pmc, data);
|
reprogram_gp_counter(pmc, data);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@@ -6875,6 +6875,11 @@ static bool emulator_guest_has_fxsr(struct x86_emulate_ctxt *ctxt)
|
|||||||
return guest_cpuid_has(emul_to_vcpu(ctxt), X86_FEATURE_FXSR);
|
return guest_cpuid_has(emul_to_vcpu(ctxt), X86_FEATURE_FXSR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool emulator_guest_has_rdpid(struct x86_emulate_ctxt *ctxt)
|
||||||
|
{
|
||||||
|
return guest_cpuid_has(emul_to_vcpu(ctxt), X86_FEATURE_RDPID);
|
||||||
|
}
|
||||||
|
|
||||||
static ulong emulator_read_gpr(struct x86_emulate_ctxt *ctxt, unsigned reg)
|
static ulong emulator_read_gpr(struct x86_emulate_ctxt *ctxt, unsigned reg)
|
||||||
{
|
{
|
||||||
return kvm_register_read(emul_to_vcpu(ctxt), reg);
|
return kvm_register_read(emul_to_vcpu(ctxt), reg);
|
||||||
@@ -6958,6 +6963,7 @@ static const struct x86_emulate_ops emulate_ops = {
|
|||||||
.guest_has_long_mode = emulator_guest_has_long_mode,
|
.guest_has_long_mode = emulator_guest_has_long_mode,
|
||||||
.guest_has_movbe = emulator_guest_has_movbe,
|
.guest_has_movbe = emulator_guest_has_movbe,
|
||||||
.guest_has_fxsr = emulator_guest_has_fxsr,
|
.guest_has_fxsr = emulator_guest_has_fxsr,
|
||||||
|
.guest_has_rdpid = emulator_guest_has_rdpid,
|
||||||
.set_nmi_mask = emulator_set_nmi_mask,
|
.set_nmi_mask = emulator_set_nmi_mask,
|
||||||
.get_hflags = emulator_get_hflags,
|
.get_hflags = emulator_get_hflags,
|
||||||
.set_hflags = emulator_set_hflags,
|
.set_hflags = emulator_set_hflags,
|
||||||
@@ -7999,7 +8005,7 @@ int kvm_arch_init(void *opaque)
|
|||||||
goto out_free_x86_emulator_cache;
|
goto out_free_x86_emulator_cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = kvm_mmu_module_init();
|
r = kvm_mmu_vendor_module_init();
|
||||||
if (r)
|
if (r)
|
||||||
goto out_free_percpu;
|
goto out_free_percpu;
|
||||||
|
|
||||||
@@ -8059,7 +8065,7 @@ void kvm_arch_exit(void)
|
|||||||
cancel_work_sync(&pvclock_gtod_work);
|
cancel_work_sync(&pvclock_gtod_work);
|
||||||
#endif
|
#endif
|
||||||
kvm_x86_ops.hardware_enable = NULL;
|
kvm_x86_ops.hardware_enable = NULL;
|
||||||
kvm_mmu_module_exit();
|
kvm_mmu_vendor_module_exit();
|
||||||
free_percpu(user_return_msrs);
|
free_percpu(user_return_msrs);
|
||||||
kmem_cache_destroy(x86_emulator_cache);
|
kmem_cache_destroy(x86_emulator_cache);
|
||||||
kmem_cache_destroy(x86_fpu_cache);
|
kmem_cache_destroy(x86_fpu_cache);
|
||||||
@@ -11420,3 +11426,19 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_avic_unaccelerated_access);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_avic_incomplete_ipi);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_avic_incomplete_ipi);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_avic_ga_log);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_avic_ga_log);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_apicv_update_request);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_apicv_update_request);
|
||||||
|
|
||||||
|
static int __init kvm_x86_init(void)
|
||||||
|
{
|
||||||
|
kvm_mmu_x86_module_init();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
module_init(kvm_x86_init);
|
||||||
|
|
||||||
|
static void __exit kvm_x86_exit(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* If module_init() is implemented, module_exit() must also be
|
||||||
|
* implemented to allow module unload.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
module_exit(kvm_x86_exit);
|
||||||
|
@@ -121,7 +121,7 @@ void __memcpy_flushcache(void *_dst, const void *_src, size_t size)
|
|||||||
|
|
||||||
/* cache copy and flush to align dest */
|
/* cache copy and flush to align dest */
|
||||||
if (!IS_ALIGNED(dest, 8)) {
|
if (!IS_ALIGNED(dest, 8)) {
|
||||||
unsigned len = min_t(unsigned, size, ALIGN(dest, 8) - dest);
|
size_t len = min_t(size_t, size, ALIGN(dest, 8) - dest);
|
||||||
|
|
||||||
memcpy((void *) dest, (void *) source, len);
|
memcpy((void *) dest, (void *) source, len);
|
||||||
clean_cache_range((void *) dest, len);
|
clean_cache_range((void *) dest, len);
|
||||||
|
@@ -476,7 +476,6 @@ static __init void xen_setup_pci_msi(void)
|
|||||||
xen_msi_ops.setup_msi_irqs = xen_setup_msi_irqs;
|
xen_msi_ops.setup_msi_irqs = xen_setup_msi_irqs;
|
||||||
}
|
}
|
||||||
xen_msi_ops.teardown_msi_irqs = xen_pv_teardown_msi_irqs;
|
xen_msi_ops.teardown_msi_irqs = xen_pv_teardown_msi_irqs;
|
||||||
pci_msi_ignore_mask = 1;
|
|
||||||
} else if (xen_hvm_domain()) {
|
} else if (xen_hvm_domain()) {
|
||||||
xen_msi_ops.setup_msi_irqs = xen_hvm_setup_msi_irqs;
|
xen_msi_ops.setup_msi_irqs = xen_hvm_setup_msi_irqs;
|
||||||
xen_msi_ops.teardown_msi_irqs = xen_teardown_msi_irqs;
|
xen_msi_ops.teardown_msi_irqs = xen_teardown_msi_irqs;
|
||||||
@@ -490,6 +489,11 @@ static __init void xen_setup_pci_msi(void)
|
|||||||
* in allocating the native domain and never use it.
|
* in allocating the native domain and never use it.
|
||||||
*/
|
*/
|
||||||
x86_init.irqs.create_pci_msi_domain = xen_create_pci_msi_domain;
|
x86_init.irqs.create_pci_msi_domain = xen_create_pci_msi_domain;
|
||||||
|
/*
|
||||||
|
* With XEN PIRQ/Eventchannels in use PCI/MSI[-X] masking is solely
|
||||||
|
* controlled by the hypervisor.
|
||||||
|
*/
|
||||||
|
pci_msi_ignore_mask = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* CONFIG_PCI_MSI */
|
#else /* CONFIG_PCI_MSI */
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include <asm/cpu.h>
|
#include <asm/cpu.h>
|
||||||
#include <asm/mmu_context.h>
|
#include <asm/mmu_context.h>
|
||||||
#include <asm/cpu_device_id.h>
|
#include <asm/cpu_device_id.h>
|
||||||
|
#include <asm/microcode.h>
|
||||||
|
|
||||||
#ifdef CONFIG_X86_32
|
#ifdef CONFIG_X86_32
|
||||||
__visible unsigned long saved_context_ebx;
|
__visible unsigned long saved_context_ebx;
|
||||||
@@ -40,7 +41,8 @@ static void msr_save_context(struct saved_context *ctxt)
|
|||||||
struct saved_msr *end = msr + ctxt->saved_msrs.num;
|
struct saved_msr *end = msr + ctxt->saved_msrs.num;
|
||||||
|
|
||||||
while (msr < end) {
|
while (msr < end) {
|
||||||
msr->valid = !rdmsrl_safe(msr->info.msr_no, &msr->info.reg.q);
|
if (msr->valid)
|
||||||
|
rdmsrl(msr->info.msr_no, msr->info.reg.q);
|
||||||
msr++;
|
msr++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -264,11 +266,18 @@ static void notrace __restore_processor_state(struct saved_context *ctxt)
|
|||||||
x86_platform.restore_sched_clock_state();
|
x86_platform.restore_sched_clock_state();
|
||||||
mtrr_bp_restore();
|
mtrr_bp_restore();
|
||||||
perf_restore_debug_store();
|
perf_restore_debug_store();
|
||||||
msr_restore_context(ctxt);
|
|
||||||
|
|
||||||
c = &cpu_data(smp_processor_id());
|
c = &cpu_data(smp_processor_id());
|
||||||
if (cpu_has(c, X86_FEATURE_MSR_IA32_FEAT_CTL))
|
if (cpu_has(c, X86_FEATURE_MSR_IA32_FEAT_CTL))
|
||||||
init_ia32_feat_ctl(c);
|
init_ia32_feat_ctl(c);
|
||||||
|
|
||||||
|
microcode_bsp_resume();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This needs to happen after the microcode has been updated upon resume
|
||||||
|
* because some of the MSRs are "emulated" in microcode.
|
||||||
|
*/
|
||||||
|
msr_restore_context(ctxt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Needed by apm.c */
|
/* Needed by apm.c */
|
||||||
@@ -440,8 +449,10 @@ static int msr_build_context(const u32 *msr_id, const int num)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = saved_msrs->num, j = 0; i < total_num; i++, j++) {
|
for (i = saved_msrs->num, j = 0; i < total_num; i++, j++) {
|
||||||
|
u64 dummy;
|
||||||
|
|
||||||
msr_array[i].info.msr_no = msr_id[j];
|
msr_array[i].info.msr_no = msr_id[j];
|
||||||
msr_array[i].valid = false;
|
msr_array[i].valid = !rdmsrl_safe(msr_id[j], &dummy);
|
||||||
msr_array[i].info.reg.q = 0;
|
msr_array[i].info.reg.q = 0;
|
||||||
}
|
}
|
||||||
saved_msrs->num = total_num;
|
saved_msrs->num = total_num;
|
||||||
@@ -516,10 +527,24 @@ static int pm_cpu_check(const struct x86_cpu_id *c)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void pm_save_spec_msr(void)
|
||||||
|
{
|
||||||
|
u32 spec_msr_id[] = {
|
||||||
|
MSR_IA32_SPEC_CTRL,
|
||||||
|
MSR_IA32_TSX_CTRL,
|
||||||
|
MSR_TSX_FORCE_ABORT,
|
||||||
|
MSR_IA32_MCU_OPT_CTRL,
|
||||||
|
MSR_AMD64_LS_CFG,
|
||||||
|
};
|
||||||
|
|
||||||
|
msr_build_context(spec_msr_id, ARRAY_SIZE(spec_msr_id));
|
||||||
|
}
|
||||||
|
|
||||||
static int pm_check_save_msr(void)
|
static int pm_check_save_msr(void)
|
||||||
{
|
{
|
||||||
dmi_check_system(msr_save_dmi_table);
|
dmi_check_system(msr_save_dmi_table);
|
||||||
pm_cpu_check(msr_save_cpu_table);
|
pm_cpu_check(msr_save_cpu_table);
|
||||||
|
pm_save_spec_msr();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -19,6 +19,12 @@ static void __init xen_hvm_smp_prepare_boot_cpu(void)
|
|||||||
*/
|
*/
|
||||||
xen_vcpu_setup(0);
|
xen_vcpu_setup(0);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called again in case the kernel boots on vcpu >= MAX_VIRT_CPUS.
|
||||||
|
* Refer to comments in xen_hvm_init_time_ops().
|
||||||
|
*/
|
||||||
|
xen_hvm_init_time_ops();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The alternative logic (which patches the unlock/lock) runs before
|
* The alternative logic (which patches the unlock/lock) runs before
|
||||||
* the smp bootup up code is activated. Hence we need to set this up
|
* the smp bootup up code is activated. Hence we need to set this up
|
||||||
|
@@ -556,6 +556,11 @@ static void xen_hvm_setup_cpu_clockevents(void)
|
|||||||
|
|
||||||
void __init xen_hvm_init_time_ops(void)
|
void __init xen_hvm_init_time_ops(void)
|
||||||
{
|
{
|
||||||
|
static bool hvm_time_initialized;
|
||||||
|
|
||||||
|
if (hvm_time_initialized)
|
||||||
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* vector callback is needed otherwise we cannot receive interrupts
|
* vector callback is needed otherwise we cannot receive interrupts
|
||||||
* on cpu > 0 and at this point we don't know how many cpus are
|
* on cpu > 0 and at this point we don't know how many cpus are
|
||||||
@@ -565,7 +570,22 @@ void __init xen_hvm_init_time_ops(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (!xen_feature(XENFEAT_hvm_safe_pvclock)) {
|
if (!xen_feature(XENFEAT_hvm_safe_pvclock)) {
|
||||||
pr_info("Xen doesn't support pvclock on HVM, disable pv timer");
|
pr_info_once("Xen doesn't support pvclock on HVM, disable pv timer");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Only MAX_VIRT_CPUS 'vcpu_info' are embedded inside 'shared_info'.
|
||||||
|
* The __this_cpu_read(xen_vcpu) is still NULL when Xen HVM guest
|
||||||
|
* boots on vcpu >= MAX_VIRT_CPUS (e.g., kexec), To access
|
||||||
|
* __this_cpu_read(xen_vcpu) via xen_clocksource_read() will panic.
|
||||||
|
*
|
||||||
|
* The xen_hvm_init_time_ops() should be called again later after
|
||||||
|
* __this_cpu_read(xen_vcpu) is available.
|
||||||
|
*/
|
||||||
|
if (!__this_cpu_read(xen_vcpu)) {
|
||||||
|
pr_info("Delay xen_init_time_common() as kernel is running on vcpu=%d\n",
|
||||||
|
xen_vcpu_nr(0));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -577,6 +597,8 @@ void __init xen_hvm_init_time_ops(void)
|
|||||||
x86_platform.calibrate_tsc = xen_tsc_khz;
|
x86_platform.calibrate_tsc = xen_tsc_khz;
|
||||||
x86_platform.get_wallclock = xen_get_wallclock;
|
x86_platform.get_wallclock = xen_get_wallclock;
|
||||||
x86_platform.set_wallclock = xen_set_wallclock;
|
x86_platform.set_wallclock = xen_set_wallclock;
|
||||||
|
|
||||||
|
hvm_time_initialized = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -8,19 +8,19 @@
|
|||||||
reg = <0x00000000 0x08000000>;
|
reg = <0x00000000 0x08000000>;
|
||||||
bank-width = <2>;
|
bank-width = <2>;
|
||||||
device-width = <2>;
|
device-width = <2>;
|
||||||
partition@0x0 {
|
partition@0 {
|
||||||
label = "data";
|
label = "data";
|
||||||
reg = <0x00000000 0x06000000>;
|
reg = <0x00000000 0x06000000>;
|
||||||
};
|
};
|
||||||
partition@0x6000000 {
|
partition@6000000 {
|
||||||
label = "boot loader area";
|
label = "boot loader area";
|
||||||
reg = <0x06000000 0x00800000>;
|
reg = <0x06000000 0x00800000>;
|
||||||
};
|
};
|
||||||
partition@0x6800000 {
|
partition@6800000 {
|
||||||
label = "kernel image";
|
label = "kernel image";
|
||||||
reg = <0x06800000 0x017e0000>;
|
reg = <0x06800000 0x017e0000>;
|
||||||
};
|
};
|
||||||
partition@0x7fe0000 {
|
partition@7fe0000 {
|
||||||
label = "boot environment";
|
label = "boot environment";
|
||||||
reg = <0x07fe0000 0x00020000>;
|
reg = <0x07fe0000 0x00020000>;
|
||||||
};
|
};
|
||||||
|
@@ -8,19 +8,19 @@
|
|||||||
reg = <0x08000000 0x01000000>;
|
reg = <0x08000000 0x01000000>;
|
||||||
bank-width = <2>;
|
bank-width = <2>;
|
||||||
device-width = <2>;
|
device-width = <2>;
|
||||||
partition@0x0 {
|
partition@0 {
|
||||||
label = "boot loader area";
|
label = "boot loader area";
|
||||||
reg = <0x00000000 0x00400000>;
|
reg = <0x00000000 0x00400000>;
|
||||||
};
|
};
|
||||||
partition@0x400000 {
|
partition@400000 {
|
||||||
label = "kernel image";
|
label = "kernel image";
|
||||||
reg = <0x00400000 0x00600000>;
|
reg = <0x00400000 0x00600000>;
|
||||||
};
|
};
|
||||||
partition@0xa00000 {
|
partition@a00000 {
|
||||||
label = "data";
|
label = "data";
|
||||||
reg = <0x00a00000 0x005e0000>;
|
reg = <0x00a00000 0x005e0000>;
|
||||||
};
|
};
|
||||||
partition@0xfe0000 {
|
partition@fe0000 {
|
||||||
label = "boot environment";
|
label = "boot environment";
|
||||||
reg = <0x00fe0000 0x00020000>;
|
reg = <0x00fe0000 0x00020000>;
|
||||||
};
|
};
|
||||||
|
@@ -8,11 +8,11 @@
|
|||||||
reg = <0x08000000 0x00400000>;
|
reg = <0x08000000 0x00400000>;
|
||||||
bank-width = <2>;
|
bank-width = <2>;
|
||||||
device-width = <2>;
|
device-width = <2>;
|
||||||
partition@0x0 {
|
partition@0 {
|
||||||
label = "boot loader area";
|
label = "boot loader area";
|
||||||
reg = <0x00000000 0x003f0000>;
|
reg = <0x00000000 0x003f0000>;
|
||||||
};
|
};
|
||||||
partition@0x3f0000 {
|
partition@3f0000 {
|
||||||
label = "boot environment";
|
label = "boot environment";
|
||||||
reg = <0x003f0000 0x00010000>;
|
reg = <0x003f0000 0x00010000>;
|
||||||
};
|
};
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
.if XTENSA_HAVE_COPROCESSOR(x); \
|
.if XTENSA_HAVE_COPROCESSOR(x); \
|
||||||
.align 4; \
|
.align 4; \
|
||||||
.Lsave_cp_regs_cp##x: \
|
.Lsave_cp_regs_cp##x: \
|
||||||
xchal_cp##x##_store a2 a4 a5 a6 a7; \
|
xchal_cp##x##_store a2 a3 a4 a5 a6; \
|
||||||
jx a0; \
|
jx a0; \
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
.if XTENSA_HAVE_COPROCESSOR(x); \
|
.if XTENSA_HAVE_COPROCESSOR(x); \
|
||||||
.align 4; \
|
.align 4; \
|
||||||
.Lload_cp_regs_cp##x: \
|
.Lload_cp_regs_cp##x: \
|
||||||
xchal_cp##x##_load a2 a4 a5 a6 a7; \
|
xchal_cp##x##_load a2 a3 a4 a5 a6; \
|
||||||
jx a0; \
|
jx a0; \
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@ static int patch_text_stop_machine(void *data)
|
|||||||
{
|
{
|
||||||
struct patch *patch = data;
|
struct patch *patch = data;
|
||||||
|
|
||||||
if (atomic_inc_return(&patch->cpu_count) == 1) {
|
if (atomic_inc_return(&patch->cpu_count) == num_online_cpus()) {
|
||||||
local_patch_text(patch->addr, patch->data, patch->sz);
|
local_patch_text(patch->addr, patch->data, patch->sz);
|
||||||
atomic_inc(&patch->cpu_count);
|
atomic_inc(&patch->cpu_count);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -2257,7 +2257,17 @@ static void ioc_timer_fn(struct timer_list *timer)
|
|||||||
iocg->hweight_donating = hwa;
|
iocg->hweight_donating = hwa;
|
||||||
iocg->hweight_after_donation = new_hwi;
|
iocg->hweight_after_donation = new_hwi;
|
||||||
list_add(&iocg->surplus_list, &surpluses);
|
list_add(&iocg->surplus_list, &surpluses);
|
||||||
} else {
|
} else if (!iocg->abs_vdebt) {
|
||||||
|
/*
|
||||||
|
* @iocg doesn't have enough to donate. Reset
|
||||||
|
* its inuse to active.
|
||||||
|
*
|
||||||
|
* Don't reset debtors as their inuse's are
|
||||||
|
* owned by debt handling. This shouldn't affect
|
||||||
|
* donation calculuation in any meaningful way
|
||||||
|
* as @iocg doesn't have a meaningful amount of
|
||||||
|
* share anyway.
|
||||||
|
*/
|
||||||
TRACE_IOCG_PATH(inuse_shortage, iocg, &now,
|
TRACE_IOCG_PATH(inuse_shortage, iocg, &now,
|
||||||
iocg->inuse, iocg->active,
|
iocg->inuse, iocg->active,
|
||||||
iocg->hweight_inuse, new_hwi);
|
iocg->hweight_inuse, new_hwi);
|
||||||
|
@@ -488,7 +488,7 @@ static struct bio *bio_copy_kern(struct request_queue *q, void *data,
|
|||||||
if (bytes > len)
|
if (bytes > len)
|
||||||
bytes = len;
|
bytes = len;
|
||||||
|
|
||||||
page = alloc_page(q->bounce_gfp | gfp_mask);
|
page = alloc_page(q->bounce_gfp | __GFP_ZERO | gfp_mask);
|
||||||
if (!page)
|
if (!page)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
@@ -679,7 +679,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
|
|||||||
(bdev->bd_bdi->ra_pages * PAGE_SIZE) / 512);
|
(bdev->bd_bdi->ra_pages * PAGE_SIZE) / 512);
|
||||||
case BLKGETSIZE:
|
case BLKGETSIZE:
|
||||||
size = i_size_read(bdev->bd_inode);
|
size = i_size_read(bdev->bd_inode);
|
||||||
if ((size >> 9) > ~0UL)
|
if ((size >> 9) > ~(compat_ulong_t)0)
|
||||||
return -EFBIG;
|
return -EFBIG;
|
||||||
return compat_put_ulong(argp, size >> 9);
|
return compat_put_ulong(argp, size >> 9);
|
||||||
|
|
||||||
|
@@ -1080,6 +1080,11 @@ static int flatten_lpi_states(struct acpi_processor *pr,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int __weak acpi_processor_ffh_lpi_probe(unsigned int cpu)
|
||||||
|
{
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
}
|
||||||
|
|
||||||
static int acpi_processor_get_lpi_info(struct acpi_processor *pr)
|
static int acpi_processor_get_lpi_info(struct acpi_processor *pr)
|
||||||
{
|
{
|
||||||
int ret, i;
|
int ret, i;
|
||||||
@@ -1088,6 +1093,11 @@ static int acpi_processor_get_lpi_info(struct acpi_processor *pr)
|
|||||||
struct acpi_device *d = NULL;
|
struct acpi_device *d = NULL;
|
||||||
struct acpi_lpi_states_array info[2], *tmp, *prev, *curr;
|
struct acpi_lpi_states_array info[2], *tmp, *prev, *curr;
|
||||||
|
|
||||||
|
/* make sure our architecture has support */
|
||||||
|
ret = acpi_processor_ffh_lpi_probe(pr->id);
|
||||||
|
if (ret == -EOPNOTSUPP)
|
||||||
|
return ret;
|
||||||
|
|
||||||
if (!osc_pc_lpi_support_confirmed)
|
if (!osc_pc_lpi_support_confirmed)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
@@ -1139,11 +1149,6 @@ static int acpi_processor_get_lpi_info(struct acpi_processor *pr)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __weak acpi_processor_ffh_lpi_probe(unsigned int cpu)
|
|
||||||
{
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
|
|
||||||
int __weak acpi_processor_ffh_lpi_enter(struct acpi_lpi_state *lpi)
|
int __weak acpi_processor_ffh_lpi_enter(struct acpi_lpi_state *lpi)
|
||||||
{
|
{
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@@ -271,7 +271,11 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_mm);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_from_fragment_pool);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_from_fragment_pool);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exclude_reserved_zone);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exclude_reserved_zone);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_include_reserved_zone);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_include_reserved_zone);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_slowpath_begin);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_slowpath_end);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_mem);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_mem);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_mapcount_pages);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_traversal_lruvec);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpci_override_toggling);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpci_override_toggling);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_chk_contaminant);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_chk_contaminant);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_get_vbus);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_get_vbus);
|
||||||
@@ -336,6 +340,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_attach_sd);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sdhci_get_cd);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sdhci_get_cd);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_gpio_cd_irqt);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_gpio_cd_irqt);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_vmalloc_stack);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_vmalloc_stack);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_remove_vmalloc_stack);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_stack_hash);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_stack_hash);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_track_hash);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_track_hash);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmpressure);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmpressure);
|
||||||
@@ -390,6 +395,11 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tcp_recvmsg_stat);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_pci_d3_sleep);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_pci_d3_sleep);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kmalloc_slab);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kmalloc_slab);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmap_region);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmap_region);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_update_page_mapcount);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_add_page_to_lrulist);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_del_page_from_lrulist);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_should_be_protected);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mark_page_accessed);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_try_to_unmap_one);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_try_to_unmap_one);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_id_remove);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_id_remove);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_offline);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_offline);
|
||||||
@@ -431,3 +441,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_si_swapinfo);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_si);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_si);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_pages);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_pages);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_shmem_page_flag);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_shmem_page_flag);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_pidfd_open);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmput);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_pelt_multiplier);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user