/*
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
-@@ -976,6 +976,9 @@ void build_get_pgde32(u32 **p, unsigned
+@@ -983,6 +983,9 @@ void build_get_pgde32(u32 **p, unsigned
uasm_i_srl(p, ptr, ptr, SMP_CPUID_PTRSHIFT);
uasm_i_addu(p, ptr, tmp, ptr);
#else
UASM_i_LA_mostly(p, ptr, pgdc);
#endif
uasm_i_mfc0(p, tmp, C0_BADVADDR); /* get faulting address */
-@@ -1337,6 +1340,9 @@ static void build_r4000_tlb_refill_handl
+@@ -1344,6 +1347,9 @@ static void build_r4000_tlb_refill_handl
#ifdef CONFIG_64BIT
build_get_pmde64(&p, &l, &r, K0, K1); /* get pmd in K1 */
#else
build_get_pgde32(&p, K0, K1); /* get pgd in K1 */
#endif
-@@ -1348,6 +1354,9 @@ static void build_r4000_tlb_refill_handl
+@@ -1355,6 +1361,9 @@ static void build_r4000_tlb_refill_handl
build_update_entries(&p, K0, K1);
build_tlb_write_entry(&p, &l, &r, tlb_random);
uasm_l_leave(&l, p);
uasm_i_eret(&p); /* return from trap */
}
#ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT
-@@ -2057,6 +2066,9 @@ build_r4000_tlbchange_handler_head(u32 *
+@@ -2064,6 +2073,9 @@ build_r4000_tlbchange_handler_head(u32 *
#ifdef CONFIG_64BIT
build_get_pmde64(p, l, r, wr.r1, wr.r2); /* get pmd in ptr */
#else
build_get_pgde32(p, wr.r1, wr.r2); /* get pgd in ptr */
#endif
-@@ -2103,6 +2115,9 @@ build_r4000_tlbchange_handler_tail(u32 *
+@@ -2110,6 +2122,9 @@ build_r4000_tlbchange_handler_tail(u32 *
build_tlb_write_entry(p, l, r, tlb_indexed);
uasm_l_leave(l, *p);
build_restore_work_registers(p);
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
-@@ -161,10 +161,10 @@ static int device_reorder_to_tail(struct
+@@ -162,10 +162,10 @@ static int device_reorder_to_tail(struct
* of the link. If DL_FLAG_PM_RUNTIME is not set, DL_FLAG_RPM_ACTIVE will be
* ignored.
*
*
* A side effect of the link creation is re-ordering of dpm_list and the
* devices_kset list by moving the consumer device and all devices depending
-@@ -181,7 +181,8 @@ struct device_link *device_link_add(stru
+@@ -182,7 +182,8 @@ struct device_link *device_link_add(stru
struct device_link *link;
if (!consumer || !supplier ||
return NULL;
device_links_write_lock();
-@@ -199,8 +200,10 @@ struct device_link *device_link_add(stru
+@@ -200,8 +201,10 @@ struct device_link *device_link_add(stru
}
list_for_each_entry(link, &supplier->links.consumers, s_node)
link = kzalloc(sizeof(*link), GFP_KERNEL);
if (!link)
-@@ -232,6 +235,7 @@ struct device_link *device_link_add(stru
+@@ -233,6 +236,7 @@ struct device_link *device_link_add(stru
link->consumer = consumer;
INIT_LIST_HEAD(&link->c_node);
link->flags = flags;
/* Determine the initial link state. */
if (flags & DL_FLAG_STATELESS) {
-@@ -302,8 +306,10 @@ static void __device_link_free_srcu(stru
+@@ -303,8 +307,10 @@ static void __device_link_free_srcu(stru
device_link_free(container_of(rhead, struct device_link, rcu_head));
}
dev_info(link->consumer, "Dropping the link to %s\n",
dev_name(link->supplier));
-@@ -315,8 +321,10 @@ static void __device_link_del(struct dev
+@@ -316,8 +322,10 @@ static void __device_link_del(struct dev
call_srcu(&device_links_srcu, &link->rcu_head, __device_link_free_srcu);
}
#else /* !CONFIG_SRCU */
dev_info(link->consumer, "Dropping the link to %s\n",
dev_name(link->supplier));
-@@ -334,18 +342,50 @@ static void __device_link_del(struct dev
+@@ -335,18 +343,50 @@ static void __device_link_del(struct dev
* @link: Device link to delete.
*
* The caller must ensure proper synchronization of this function with runtime
static void device_links_missing_supplier(struct device *dev)
{
struct device_link *link;
-@@ -453,8 +493,8 @@ static void __device_links_no_driver(str
+@@ -454,8 +494,8 @@ static void __device_links_no_driver(str
if (link->flags & DL_FLAG_STATELESS)
continue;
else if (link->status != DL_STATE_SUPPLIER_UNBIND)
WRITE_ONCE(link->status, DL_STATE_AVAILABLE);
}
-@@ -489,8 +529,18 @@ void device_links_driver_cleanup(struct
+@@ -490,8 +530,18 @@ void device_links_driver_cleanup(struct
if (link->flags & DL_FLAG_STATELESS)
continue;
WRITE_ONCE(link->status, DL_STATE_DORMANT);
}
-@@ -607,13 +657,13 @@ static void device_links_purge(struct de
+@@ -608,13 +658,13 @@ static void device_links_purge(struct de
list_for_each_entry_safe_reverse(link, ln, &dev->links.suppliers, c_node) {
WARN_ON(link->status == DL_STATE_ACTIVE);
}
device_links_write_unlock();
-@@ -1035,6 +1085,34 @@ static ssize_t online_store(struct devic
+@@ -1036,6 +1086,34 @@ static ssize_t online_store(struct devic
}
static DEVICE_ATTR_RW(online);
int device_add_groups(struct device *dev, const struct attribute_group **groups)
{
return sysfs_create_groups(&dev->kobj, groups);
-@@ -1206,8 +1284,20 @@ static int device_add_attrs(struct devic
+@@ -1207,8 +1285,20 @@ static int device_add_attrs(struct devic
goto err_remove_dev_groups;
}
err_remove_dev_groups:
device_remove_groups(dev, dev->groups);
err_remove_type_groups:
-@@ -1225,6 +1315,8 @@ static void device_remove_attrs(struct d
+@@ -1226,6 +1316,8 @@ static void device_remove_attrs(struct d
struct class *class = dev->class;
const struct device_type *type = dev->type;