mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
This is the 5.4.184 stable release
-----BEGIN PGP SIGNATURE----- iQIyBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmIrIvMACgkQONu9yGCS aT5qMw/1Fs4QrT8/iJMlTGBK3gH683wAA9/+5MD/fMJRLnr4t0fTNaHBjUR+njTu 3CW5UWkTpFvcJMPBdWuZLA1F6WScEUPQ09nnKzoErWCu2kYdR0QuNgwqdhOsxrmV zEIsvjWBxKt0uWVH7OEUEWvEtoFVP35MJkpNfDVOoBUgKRIVmUdjxUTq3NewNbfW dI4o+waIkYFAUYUGpIqknY5x8jzhP14FGaihMiVNt6bSsQfUXwQdCluHwtwjW01+ 37fmoK1cEnFkcmebnQ9xBDoibMrgO/q/PePPitrYyLxvOk7v675C750YpLaAZrMI kRPYqUzb5ZXQPnc7VsSjSKdW+0SMrB8Lu7/l+J36unnv9h7ujoY41PV2z+Ad8RzW Uy9lIKQxBAbdXpML/zs16tM8dL/aiZ65+no3XtUwytFvFkUX7Jpuvj1tpBdF/HYo QWifAGm8u7zbfQQe427cN1iA0qoeehWWzUDV6a8MnotVB5FrteHKCAd3AQwXvTKc y1i8mpn8DCmshgmbOK8Xf5jHS7eZH93/3Mze6ZHRVfa/GH3uDjhEufy3pU+pjjR2 K+u6998jld6yqtH05cJoUh90n920GDrxM5CfP6qiBIpxELdATI28jOYVio/5ip9R RXslzLq4okvIAf3kpg621XIv0w4CQSxrlu1iMKPmiA1Iur4z6g== =567U -----END PGP SIGNATURE----- Merge 5.4.184 into android11-5.4-lts Changes in 5.4.184 x86/speculation: Merge one test in spectre_v2_user_select_mitigation() x86,bugs: Unconditionally allow spectre_v2=retpoline,amd x86/speculation: Rename RETPOLINE_AMD to RETPOLINE_LFENCE x86/speculation: Add eIBRS + Retpoline options Documentation/hw-vuln: Update spectre doc x86/speculation: Include unprivileged eBPF status in Spectre v2 mitigation reporting x86/speculation: Use generic retpoline by default on AMD x86/speculation: Update link to AMD speculation whitepaper x86/speculation: Warn about Spectre v2 LFENCE mitigation x86/speculation: Warn about eIBRS + LFENCE + Unprivileged eBPF + SMT arm/arm64: Provide a wrapper for SMCCC 1.1 calls arm/arm64: smccc/psci: add arm_smccc_1_1_get_conduit() ARM: report Spectre v2 status through sysfs ARM: early traps initialisation ARM: use LOADADDR() to get load address of sections ARM: Spectre-BHB workaround ARM: include unprivileged BPF status in Spectre V2 reporting ARM: fix build error when BPF_SYSCALL is disabled ARM: fix co-processor register typo ARM: Do not use NOCROSSREFS directive with ld.lld ARM: fix build warning in proc-v7-bugs.c xen/xenbus: don't let xenbus_grant_ring() remove grants in error case xen/grant-table: add gnttab_try_end_foreign_access() xen/blkfront: don't use gnttab_query_foreign_access() for mapped status xen/netfront: don't use gnttab_query_foreign_access() for mapped status xen/scsifront: don't use gnttab_query_foreign_access() for mapped status xen/gntalloc: don't use gnttab_query_foreign_access() xen: remove gnttab_query_foreign_access() xen/9p: use alloc/free_pages_exact() xen/pvcalls: use alloc/free_pages_exact() xen/gnttab: fix gnttab_end_foreign_access() without page specified xen/netfront: react properly to failing gnttab_end_foreign_access_ref() Revert "ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE" Linux 5.4.184 Signed-off-by: Greg Kroah-Hartman <[email protected]> Change-Id: I1451c7f2c1d777ad1d1823189ba8dbc3110db0b1
This commit is contained in:
commit
9ed911a069
32 changed files with 969 additions and 276 deletions
|
|
@ -1344,7 +1344,8 @@ free_shadow:
|
|||
rinfo->ring_ref[i] = GRANT_INVALID_REF;
|
||||
}
|
||||
}
|
||||
free_pages((unsigned long)rinfo->ring.sring, get_order(info->nr_ring_pages * XEN_PAGE_SIZE));
|
||||
free_pages_exact(rinfo->ring.sring,
|
||||
info->nr_ring_pages * XEN_PAGE_SIZE);
|
||||
rinfo->ring.sring = NULL;
|
||||
|
||||
if (rinfo->irq)
|
||||
|
|
@ -1428,9 +1429,15 @@ static int blkif_get_final_status(enum blk_req_status s1,
|
|||
return BLKIF_RSP_OKAY;
|
||||
}
|
||||
|
||||
static bool blkif_completion(unsigned long *id,
|
||||
struct blkfront_ring_info *rinfo,
|
||||
struct blkif_response *bret)
|
||||
/*
|
||||
* Return values:
|
||||
* 1 response processed.
|
||||
* 0 missing further responses.
|
||||
* -1 error while processing.
|
||||
*/
|
||||
static int blkif_completion(unsigned long *id,
|
||||
struct blkfront_ring_info *rinfo,
|
||||
struct blkif_response *bret)
|
||||
{
|
||||
int i = 0;
|
||||
struct scatterlist *sg;
|
||||
|
|
@ -1453,7 +1460,7 @@ static bool blkif_completion(unsigned long *id,
|
|||
|
||||
/* Wait the second response if not yet here. */
|
||||
if (s2->status < REQ_DONE)
|
||||
return false;
|
||||
return 0;
|
||||
|
||||
bret->status = blkif_get_final_status(s->status,
|
||||
s2->status);
|
||||
|
|
@ -1504,42 +1511,43 @@ static bool blkif_completion(unsigned long *id,
|
|||
}
|
||||
/* Add the persistent grant into the list of free grants */
|
||||
for (i = 0; i < num_grant; i++) {
|
||||
if (gnttab_query_foreign_access(s->grants_used[i]->gref)) {
|
||||
if (!gnttab_try_end_foreign_access(s->grants_used[i]->gref)) {
|
||||
/*
|
||||
* If the grant is still mapped by the backend (the
|
||||
* backend has chosen to make this grant persistent)
|
||||
* we add it at the head of the list, so it will be
|
||||
* reused first.
|
||||
*/
|
||||
if (!info->feature_persistent)
|
||||
pr_alert_ratelimited("backed has not unmapped grant: %u\n",
|
||||
s->grants_used[i]->gref);
|
||||
if (!info->feature_persistent) {
|
||||
pr_alert("backed has not unmapped grant: %u\n",
|
||||
s->grants_used[i]->gref);
|
||||
return -1;
|
||||
}
|
||||
list_add(&s->grants_used[i]->node, &rinfo->grants);
|
||||
rinfo->persistent_gnts_c++;
|
||||
} else {
|
||||
/*
|
||||
* If the grant is not mapped by the backend we end the
|
||||
* foreign access and add it to the tail of the list,
|
||||
* so it will not be picked again unless we run out of
|
||||
* persistent grants.
|
||||
* If the grant is not mapped by the backend we add it
|
||||
* to the tail of the list, so it will not be picked
|
||||
* again unless we run out of persistent grants.
|
||||
*/
|
||||
gnttab_end_foreign_access(s->grants_used[i]->gref, 0, 0UL);
|
||||
s->grants_used[i]->gref = GRANT_INVALID_REF;
|
||||
list_add_tail(&s->grants_used[i]->node, &rinfo->grants);
|
||||
}
|
||||
}
|
||||
if (s->req.operation == BLKIF_OP_INDIRECT) {
|
||||
for (i = 0; i < INDIRECT_GREFS(num_grant); i++) {
|
||||
if (gnttab_query_foreign_access(s->indirect_grants[i]->gref)) {
|
||||
if (!info->feature_persistent)
|
||||
pr_alert_ratelimited("backed has not unmapped grant: %u\n",
|
||||
s->indirect_grants[i]->gref);
|
||||
if (!gnttab_try_end_foreign_access(s->indirect_grants[i]->gref)) {
|
||||
if (!info->feature_persistent) {
|
||||
pr_alert("backed has not unmapped grant: %u\n",
|
||||
s->indirect_grants[i]->gref);
|
||||
return -1;
|
||||
}
|
||||
list_add(&s->indirect_grants[i]->node, &rinfo->grants);
|
||||
rinfo->persistent_gnts_c++;
|
||||
} else {
|
||||
struct page *indirect_page;
|
||||
|
||||
gnttab_end_foreign_access(s->indirect_grants[i]->gref, 0, 0UL);
|
||||
/*
|
||||
* Add the used indirect page back to the list of
|
||||
* available pages for indirect grefs.
|
||||
|
|
@ -1554,7 +1562,7 @@ static bool blkif_completion(unsigned long *id,
|
|||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static irqreturn_t blkif_interrupt(int irq, void *dev_id)
|
||||
|
|
@ -1620,12 +1628,17 @@ static irqreturn_t blkif_interrupt(int irq, void *dev_id)
|
|||
}
|
||||
|
||||
if (bret.operation != BLKIF_OP_DISCARD) {
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* We may need to wait for an extra response if the
|
||||
* I/O request is split in 2
|
||||
*/
|
||||
if (!blkif_completion(&id, rinfo, &bret))
|
||||
ret = blkif_completion(&id, rinfo, &bret);
|
||||
if (!ret)
|
||||
continue;
|
||||
if (unlikely(ret < 0))
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (add_id_to_freelist(rinfo, id)) {
|
||||
|
|
@ -1731,8 +1744,7 @@ static int setup_blkring(struct xenbus_device *dev,
|
|||
for (i = 0; i < info->nr_ring_pages; i++)
|
||||
rinfo->ring_ref[i] = GRANT_INVALID_REF;
|
||||
|
||||
sring = (struct blkif_sring *)__get_free_pages(GFP_NOIO | __GFP_HIGH,
|
||||
get_order(ring_size));
|
||||
sring = alloc_pages_exact(ring_size, GFP_NOIO);
|
||||
if (!sring) {
|
||||
xenbus_dev_fatal(dev, -ENOMEM, "allocating shared ring");
|
||||
return -ENOMEM;
|
||||
|
|
@ -1742,7 +1754,7 @@ static int setup_blkring(struct xenbus_device *dev,
|
|||
|
||||
err = xenbus_grant_ring(dev, rinfo->ring.sring, info->nr_ring_pages, gref);
|
||||
if (err < 0) {
|
||||
free_pages((unsigned long)sring, get_order(ring_size));
|
||||
free_pages_exact(sring, ring_size);
|
||||
rinfo->ring.sring = NULL;
|
||||
goto fail;
|
||||
}
|
||||
|
|
@ -2720,11 +2732,10 @@ static void purge_persistent_grants(struct blkfront_info *info)
|
|||
list_for_each_entry_safe(gnt_list_entry, tmp, &rinfo->grants,
|
||||
node) {
|
||||
if (gnt_list_entry->gref == GRANT_INVALID_REF ||
|
||||
gnttab_query_foreign_access(gnt_list_entry->gref))
|
||||
!gnttab_try_end_foreign_access(gnt_list_entry->gref))
|
||||
continue;
|
||||
|
||||
list_del(&gnt_list_entry->node);
|
||||
gnttab_end_foreign_access(gnt_list_entry->gref, 0, 0UL);
|
||||
rinfo->persistent_gnts_c--;
|
||||
gnt_list_entry->gref = GRANT_INVALID_REF;
|
||||
list_add_tail(&gnt_list_entry->node, &rinfo->grants);
|
||||
|
|
|
|||
Loading…
Reference in a new issue