Snap for 10386213 from 5547371953 to android13-5.15-keystone-qcom-release
Change-Id: Ia007457d1ea38a27c72a6c2e49c661d680850555
This commit is contained in:
@@ -2914,6 +2914,7 @@
|
||||
<elf-symbol name='genphy_c45_pma_setup_forced' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xa3c6c386'/>
|
||||
<elf-symbol name='genphy_c45_read_link' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x62efc471'/>
|
||||
<elf-symbol name='genphy_c45_read_lpa' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x16f3df01'/>
|
||||
<elf-symbol name='genphy_c45_read_status' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xefb8b074'/>
|
||||
<elf-symbol name='genphy_check_and_restart_aneg' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x643dc3b7'/>
|
||||
<elf-symbol name='genphy_handle_interrupt_no_ack' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x89f6e9fb'/>
|
||||
<elf-symbol name='genphy_read_abilities' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xc30cafca'/>
|
||||
@@ -51661,7 +51662,7 @@
|
||||
</class-decl>
|
||||
<pointer-type-def type-id='3e1d184a' size-in-bits='64' id='6aee814c'/>
|
||||
<pointer-type-def type-id='74e7a035' size-in-bits='64' id='6af64a09'/>
|
||||
<class-decl name='uncached_list' size-in-bits='192' is-struct='yes' visibility='default' filepath='net/ipv6/route.c' line='130' column='1' id='6b1203e5'>
|
||||
<class-decl name='uncached_list' size-in-bits='192' is-struct='yes' visibility='default' filepath='net/ipv4/route.c' line='1505' column='1' id='6b1203e5'>
|
||||
<data-member access='public' layout-offset-in-bits='0'>
|
||||
<var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='net/ipv4/route.c' line='1506' column='1'/>
|
||||
</data-member>
|
||||
@@ -142496,6 +142497,10 @@
|
||||
<parameter type-id='7efbcaaf' name='phydev' filepath='drivers/net/phy/phy-c45.c' line='320' column='1'/>
|
||||
<return type-id='95e97e5e'/>
|
||||
</function-decl>
|
||||
<function-decl name='genphy_c45_read_status' mangled-name='genphy_c45_read_status' filepath='drivers/net/phy/phy-c45.c' line='545' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='genphy_c45_read_status'>
|
||||
<parameter type-id='7efbcaaf' name='phydev' filepath='drivers/net/phy/phy-c45.c' line='545' column='1'/>
|
||||
<return type-id='95e97e5e'/>
|
||||
</function-decl>
|
||||
<function-decl name='genphy_check_and_restart_aneg' mangled-name='genphy_check_and_restart_aneg' filepath='drivers/net/phy/phy_device.c' line='2135' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='genphy_check_and_restart_aneg'>
|
||||
<parameter type-id='7efbcaaf' name='phydev' filepath='drivers/net/phy/phy_device.c' line='2135' column='1'/>
|
||||
<parameter type-id='b50a4934' name='restart' filepath='drivers/net/phy/phy_device.c' line='2135' column='1'/>
|
||||
@@ -162921,7 +162926,6 @@
|
||||
</abi-instr>
|
||||
</abi-corpus>
|
||||
</abi-corpus-group>
|
||||
|
||||
<!--
|
||||
libabigail: abidw: 2.1.0SOONG BUILD NUMBER PLACEHOLDER
|
||||
-->
|
||||
|
||||
@@ -780,6 +780,7 @@
|
||||
geni_se_tx_dma_unprep
|
||||
genphy_check_and_restart_aneg
|
||||
__genphy_config_aneg
|
||||
genphy_c45_read_status
|
||||
genphy_read_abilities
|
||||
genphy_read_lpa
|
||||
genphy_read_mmd_unsupported
|
||||
|
||||
@@ -781,7 +781,7 @@ static pkvm_id completer_owner_id(const struct pkvm_mem_transition *tx)
|
||||
|
||||
struct check_walk_data {
|
||||
enum pkvm_page_state desired;
|
||||
enum pkvm_page_state (*get_page_state)(kvm_pte_t pte);
|
||||
enum pkvm_page_state (*get_page_state)(kvm_pte_t pte, u64 addr);
|
||||
};
|
||||
|
||||
static int __check_page_state_visitor(u64 addr, u64 end, u32 level,
|
||||
@@ -792,10 +792,7 @@ static int __check_page_state_visitor(u64 addr, u64 end, u32 level,
|
||||
struct check_walk_data *d = arg;
|
||||
kvm_pte_t pte = *ptep;
|
||||
|
||||
if (kvm_pte_valid(pte) && !addr_is_allowed_memory(kvm_pte_to_phys(pte)))
|
||||
return -EINVAL;
|
||||
|
||||
return d->get_page_state(pte) == d->desired ? 0 : -EPERM;
|
||||
return d->get_page_state(pte, addr) == d->desired ? 0 : -EPERM;
|
||||
}
|
||||
|
||||
static int check_page_state_range(struct kvm_pgtable *pgt, u64 addr, u64 size,
|
||||
@@ -810,8 +807,11 @@ static int check_page_state_range(struct kvm_pgtable *pgt, u64 addr, u64 size,
|
||||
return kvm_pgtable_walk(pgt, addr, size, &walker);
|
||||
}
|
||||
|
||||
static enum pkvm_page_state host_get_page_state(kvm_pte_t pte)
|
||||
static enum pkvm_page_state host_get_page_state(kvm_pte_t pte, u64 addr)
|
||||
{
|
||||
if (!addr_is_allowed_memory(addr))
|
||||
return PKVM_NOPAGE;
|
||||
|
||||
if (!kvm_pte_valid(pte) && pte)
|
||||
return PKVM_NOPAGE;
|
||||
|
||||
@@ -954,7 +954,7 @@ static int host_complete_donation(u64 addr, const struct pkvm_mem_transition *tx
|
||||
return host_stage2_set_owner_locked(addr, size, host_id);
|
||||
}
|
||||
|
||||
static enum pkvm_page_state hyp_get_page_state(kvm_pte_t pte)
|
||||
static enum pkvm_page_state hyp_get_page_state(kvm_pte_t pte, u64 addr)
|
||||
{
|
||||
if (!kvm_pte_valid(pte))
|
||||
return PKVM_NOPAGE;
|
||||
@@ -1066,7 +1066,7 @@ static int hyp_complete_donation(u64 addr,
|
||||
return pkvm_create_mappings_locked(start, end, prot);
|
||||
}
|
||||
|
||||
static enum pkvm_page_state guest_get_page_state(kvm_pte_t pte)
|
||||
static enum pkvm_page_state guest_get_page_state(kvm_pte_t pte, u64 addr)
|
||||
{
|
||||
if (!kvm_pte_valid(pte))
|
||||
return PKVM_NOPAGE;
|
||||
@@ -1180,7 +1180,7 @@ static int __guest_request_page_transition(u64 *completer_addr,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
state = guest_get_page_state(pte);
|
||||
state = guest_get_page_state(pte, tx->initiator.addr);
|
||||
if (state == PKVM_NOPAGE)
|
||||
return -EFAULT;
|
||||
|
||||
@@ -1946,7 +1946,7 @@ int __pkvm_host_reclaim_page(u64 pfn)
|
||||
if (ret)
|
||||
goto unlock;
|
||||
|
||||
if (host_get_page_state(pte) == PKVM_PAGE_OWNED)
|
||||
if (host_get_page_state(pte, addr) == PKVM_PAGE_OWNED)
|
||||
goto unlock;
|
||||
|
||||
page = hyp_phys_to_page(addr);
|
||||
|
||||
@@ -102,6 +102,15 @@
|
||||
16, 4, buf, __len, false); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* ANDROID: this mutex is used to serialize devfreq and sysfs write booster
|
||||
* toggling, it was taken out of struct ufs_hba from commit b03f7ed9af6e ("scsi:
|
||||
* ufs: core: Fix devfreq deadlocks") and made static here in order to preserve
|
||||
* the ABI.
|
||||
* Bug: 286803489
|
||||
*/
|
||||
static DEFINE_MUTEX(wb_mutex);
|
||||
|
||||
int ufshcd_dump_regs(struct ufs_hba *hba, size_t offset, size_t len,
|
||||
const char *prefix)
|
||||
{
|
||||
@@ -1207,12 +1216,14 @@ static int ufshcd_clock_scaling_prepare(struct ufs_hba *hba)
|
||||
* clock scaling is in progress
|
||||
*/
|
||||
ufshcd_scsi_block_requests(hba);
|
||||
mutex_lock(&wb_mutex);
|
||||
down_write(&hba->clk_scaling_lock);
|
||||
|
||||
if (!hba->clk_scaling.is_allowed ||
|
||||
ufshcd_wait_for_doorbell_clr(hba, DOORBELL_CLR_TOUT_US)) {
|
||||
ret = -EBUSY;
|
||||
up_write(&hba->clk_scaling_lock);
|
||||
mutex_unlock(&wb_mutex);
|
||||
ufshcd_scsi_unblock_requests(hba);
|
||||
goto out;
|
||||
}
|
||||
@@ -1224,17 +1235,15 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void ufshcd_clock_scaling_unprepare(struct ufs_hba *hba, bool writelock)
|
||||
static void ufshcd_clock_scaling_unprepare(struct ufs_hba *hba, int err, bool scale_up)
|
||||
{
|
||||
/* Enable Write Booster if we have scaled up else disable it */
|
||||
if (ufshcd_enable_wb_if_scaling_up(hba)) {
|
||||
if (writelock)
|
||||
up_write(&hba->clk_scaling_lock);
|
||||
else
|
||||
up_read(&hba->clk_scaling_lock);
|
||||
up_write(&hba->clk_scaling_lock);
|
||||
|
||||
ufshcd_wb_toggle(hba, writelock);
|
||||
}
|
||||
/* Enable Write Booster if we have scaled up else disable it */
|
||||
if (ufshcd_enable_wb_if_scaling_up(hba) && !err)
|
||||
ufshcd_wb_toggle(hba, scale_up);
|
||||
|
||||
mutex_unlock(&wb_mutex);
|
||||
|
||||
ufshcd_scsi_unblock_requests(hba);
|
||||
ufshcd_release(hba);
|
||||
@@ -1252,7 +1261,6 @@ static void ufshcd_clock_scaling_unprepare(struct ufs_hba *hba, bool writelock)
|
||||
static int ufshcd_devfreq_scale(struct ufs_hba *hba, bool scale_up)
|
||||
{
|
||||
int ret = 0;
|
||||
bool is_writelock = true;
|
||||
|
||||
ret = ufshcd_clock_scaling_prepare(hba);
|
||||
if (ret)
|
||||
@@ -1281,13 +1289,8 @@ static int ufshcd_devfreq_scale(struct ufs_hba *hba, bool scale_up)
|
||||
}
|
||||
}
|
||||
|
||||
/* Enable Write Booster if we have scaled up else disable it */
|
||||
downgrade_write(&hba->clk_scaling_lock);
|
||||
is_writelock = false;
|
||||
ufshcd_wb_toggle(hba, scale_up);
|
||||
|
||||
out_unprepare:
|
||||
ufshcd_clock_scaling_unprepare(hba, is_writelock);
|
||||
ufshcd_clock_scaling_unprepare(hba, ret, scale_up);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -6030,9 +6033,11 @@ static void ufshcd_force_error_recovery(struct ufs_hba *hba)
|
||||
|
||||
static void ufshcd_clk_scaling_allow(struct ufs_hba *hba, bool allow)
|
||||
{
|
||||
mutex_lock(&wb_mutex);
|
||||
down_write(&hba->clk_scaling_lock);
|
||||
hba->clk_scaling.is_allowed = allow;
|
||||
up_write(&hba->clk_scaling_lock);
|
||||
mutex_unlock(&wb_mutex);
|
||||
}
|
||||
|
||||
static void ufshcd_clk_scaling_suspend(struct ufs_hba *hba, bool suspend)
|
||||
|
||||
Reference in New Issue
Block a user