endif
LINUX_VERSION-5.4 = .145
-LINUX_VERSION-5.10 = .64
+LINUX_VERSION-5.10 = .65
LINUX_KERNEL_HASH-5.4.145 = 5cf7782ec2e91417edf0d5e6555da6d556962c8985e33ba9e7dadba5cbdc68f9
-LINUX_KERNEL_HASH-5.10.64 = 3eb84bd24a2de2b4749314e34597c02401c5d6831b055ed5224adb405c35e30a
+LINUX_KERNEL_HASH-5.10.65 = edd3dedbce5bcaa5ba7cde62f8f3fd58b2ab21e2ec427b9d200685da5ec03e66
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
struct rpi_firmware;
enum rpi_firmware_property_status {
-@@ -159,5 +161,6 @@ static inline struct rpi_firmware *rpi_f
+@@ -161,5 +163,6 @@ static inline struct rpi_firmware *rpi_f
return NULL;
}
#endif
static int bcm2708_fb_register(struct bcm2708_fb *fb)
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
-@@ -1079,6 +1079,30 @@ fb_blank(struct fb_info *info, int blank
+@@ -1085,6 +1085,30 @@ fb_blank(struct fb_info *info, int blank
}
EXPORT_SYMBOL(fb_blank);
static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
unsigned long arg)
{
-@@ -1087,6 +1111,7 @@ static long do_fb_ioctl(struct fb_info *
+@@ -1093,6 +1117,7 @@ static long do_fb_ioctl(struct fb_info *
struct fb_fix_screeninfo fix;
struct fb_cmap cmap_from;
struct fb_cmap_user cmap;
void __user *argp = (void __user *)arg;
long ret = 0;
-@@ -1162,6 +1187,15 @@ static long do_fb_ioctl(struct fb_info *
+@@ -1168,6 +1193,15 @@ static long do_fb_ioctl(struct fb_info *
unlock_fb_info(info);
console_unlock();
break;
default:
lock_fb_info(info);
fb = info->fbops;
-@@ -1307,6 +1341,7 @@ static long fb_compat_ioctl(struct file
+@@ -1313,6 +1347,7 @@ static long fb_compat_ioctl(struct file
case FBIOPAN_DISPLAY:
case FBIOGET_CON2FBMAP:
case FBIOPUT_CON2FBMAP:
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -29,6 +29,8 @@ struct rpi_firmware {
- u32 enabled;
+@@ -32,6 +32,8 @@ struct rpi_firmware {
+ struct kref consumers;
};
+static struct platform_device *g_pdev;
static DEFINE_MUTEX(transaction_lock);
static void response_callback(struct mbox_client *cl, void *msg)
-@@ -249,6 +251,7 @@ static int rpi_firmware_probe(struct pla
- init_completion(&fw->c);
+@@ -272,6 +274,7 @@ static int rpi_firmware_probe(struct pla
+ kref_init(&fw->consumers);
platform_set_drvdata(pdev, fw);
+ g_pdev = pdev;
rpi_firmware_print_firmware_revision(fw);
rpi_register_hwmon_driver(dev, fw);
-@@ -276,6 +279,7 @@ static int rpi_firmware_remove(struct pl
- platform_device_unregister(rpi_clk);
- rpi_clk = NULL;
- mbox_free_channel(fw->chan);
-+ g_pdev = NULL;
+@@ -301,6 +304,8 @@ static int rpi_firmware_remove(struct pl
+
+ rpi_firmware_put(fw);
++ g_pdev = NULL;
++
return 0;
}
-@@ -288,7 +292,7 @@ static int rpi_firmware_remove(struct pl
+
+@@ -314,7 +319,7 @@ static int rpi_firmware_remove(struct pl
*/
struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node)
{
- struct platform_device *pdev = of_find_device_by_node(firmware_node);
+ struct platform_device *pdev = g_pdev;
+ struct rpi_firmware *fw;
if (!pdev)
- return NULL;
-@@ -312,7 +316,18 @@ static struct platform_driver rpi_firmwa
+@@ -327,12 +332,9 @@ struct rpi_firmware *rpi_firmware_get(st
+ if (!kref_get_unless_zero(&fw->consumers))
+ goto err_put_device;
+
+- put_device(&pdev->dev);
+-
+ return fw;
+
+ err_put_device:
+- put_device(&pdev->dev);
+ return NULL;
+ }
+ EXPORT_SYMBOL_GPL(rpi_firmware_get);
+@@ -352,7 +354,18 @@ static struct platform_driver rpi_firmwa
.shutdown = rpi_firmware_shutdown,
.remove = rpi_firmware_remove,
};
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -43,7 +43,7 @@ static void response_callback(struct mbo
+@@ -46,7 +46,7 @@ static void response_callback(struct mbo
* Sends a request to the firmware through the BCM2835 mailbox driver,
* and synchronously waits for the reply.
*/
rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data)
{
u32 message = MBOX_MSG(chan, data);
-@@ -68,6 +68,7 @@ rpi_firmware_transaction(struct rpi_firm
+@@ -71,6 +71,7 @@ rpi_firmware_transaction(struct rpi_firm
return ret;
}
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -11,6 +11,7 @@
+@@ -12,6 +12,7 @@
#include <linux/module.h>
#include <linux/of_platform.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <soc/bcm2835/raspberrypi-firmware.h>
-@@ -177,6 +178,26 @@ int rpi_firmware_property(struct rpi_fir
+@@ -180,6 +181,26 @@ int rpi_firmware_property(struct rpi_fir
}
EXPORT_SYMBOL_GPL(rpi_firmware_property);
static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{
-@@ -318,15 +339,32 @@ static struct platform_driver rpi_firmwa
+@@ -356,15 +377,32 @@ static struct platform_driver rpi_firmwa
.remove = rpi_firmware_remove,
};
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -28,6 +28,7 @@ struct rpi_firmware {
+@@ -29,6 +29,7 @@ struct rpi_firmware {
struct mbox_chan *chan; /* The property channel. */
struct completion c;
u32 enabled;
+ u32 get_throttled;
- };
- static struct platform_device *g_pdev;
-@@ -174,6 +175,12 @@ int rpi_firmware_property(struct rpi_fir
+ struct kref consumers;
+ };
+@@ -177,6 +178,12 @@ int rpi_firmware_property(struct rpi_fir
kfree(data);
return ret;
}
EXPORT_SYMBOL_GPL(rpi_firmware_property);
-@@ -198,6 +205,27 @@ static int rpi_firmware_notify_reboot(st
+@@ -201,6 +208,27 @@ static int rpi_firmware_notify_reboot(st
return 0;
}
static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{
-@@ -227,6 +255,11 @@ rpi_register_hwmon_driver(struct device
+@@ -230,6 +258,11 @@ rpi_register_hwmon_driver(struct device
rpi_hwmon = platform_device_register_data(dev, "raspberrypi-hwmon",
-1, NULL, 0);
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -231,6 +231,15 @@ rpi_firmware_print_firmware_revision(str
+@@ -234,6 +234,15 @@ rpi_firmware_print_firmware_revision(str
{
time64_t date_and_time;
u32 packet;
int ret = rpi_firmware_property(fw,
RPI_FIRMWARE_GET_FIRMWARE_REVISION,
&packet, sizeof(packet));
-@@ -240,7 +249,35 @@ rpi_firmware_print_firmware_revision(str
+@@ -243,7 +252,35 @@ rpi_firmware_print_firmware_revision(str
/* This is not compatible with y2038 */
date_and_time = packet;
}
static void
-@@ -309,6 +346,7 @@ static int rpi_firmware_probe(struct pla
+@@ -332,6 +369,7 @@ static int rpi_firmware_probe(struct pla
g_pdev = pdev;
rpi_firmware_print_firmware_revision(fw);
MODULE_DESCRIPTION("BCM2835 clock driver");
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -430,7 +430,7 @@ out2:
+@@ -468,7 +468,7 @@ out2:
out1:
return ret;
}
#define MAX_TUNING_LOOP 40
-@@ -3126,7 +3126,7 @@ static void sdhci_timeout_timer(struct t
+@@ -3127,7 +3127,7 @@ static void sdhci_timeout_timer(struct t
spin_lock_irqsave(&host->lock, flags);
if (host->cmd && !sdhci_data_line_cmd(host->cmd)) {
mmc_hostname(host->mmc));
sdhci_dumpregs(host);
-@@ -3148,7 +3148,7 @@ static void sdhci_timeout_data_timer(str
+@@ -3149,7 +3149,7 @@ static void sdhci_timeout_data_timer(str
if (host->data || host->data_cmd ||
(host->cmd && sdhci_data_line_cmd(host->cmd))) {
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -191,6 +191,7 @@ static int rpi_firmware_notify_reboot(st
+@@ -194,6 +194,7 @@ static int rpi_firmware_notify_reboot(st
{
struct rpi_firmware *fw;
struct platform_device *pdev = g_pdev;
if (!pdev)
return 0;
-@@ -199,8 +200,28 @@ static int rpi_firmware_notify_reboot(st
+@@ -202,8 +203,28 @@ static int rpi_firmware_notify_reboot(st
if (!fw)
return 0;
struct mdp5_crtc_state *mdp5_cstate = to_mdp5_crtc_state(crtc->state);
--- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
-@@ -303,7 +303,7 @@ static void mxsfb_crtc_atomic_flush(stru
+@@ -343,7 +343,7 @@ static void mxsfb_crtc_atomic_flush(stru
}
static void mxsfb_crtc_atomic_enable(struct drm_crtc *crtc,
{
struct mxsfb_drm_private *mxsfb = to_mxsfb_drm_private(crtc->dev);
struct drm_device *drm = mxsfb->drm;
-@@ -327,7 +327,7 @@ static void mxsfb_crtc_atomic_enable(str
+@@ -367,7 +367,7 @@ static void mxsfb_crtc_atomic_enable(str
}
static void mxsfb_crtc_atomic_disable(struct drm_crtc *crtc,
* and that we don't have conflicting mixer stages:
--- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
-@@ -270,17 +270,19 @@ static void mxsfb_crtc_mode_set_nofb(str
+@@ -310,17 +310,19 @@ static void mxsfb_crtc_mode_set_nofb(str
}
static int mxsfb_crtc_atomic_check(struct drm_crtc *crtc,
struct mdp5_crtc_state *mdp5_cstate = to_mdp5_crtc_state(crtc->state);
--- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
-@@ -286,7 +286,7 @@ static int mxsfb_crtc_atomic_check(struc
+@@ -326,7 +326,7 @@ static int mxsfb_crtc_atomic_check(struc
}
static void mxsfb_crtc_atomic_flush(struct drm_crtc *crtc,
static void drm_simple_kms_crtc_enable(struct drm_crtc *crtc,
--- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
-@@ -282,7 +282,7 @@ static int mxsfb_crtc_atomic_check(struc
+@@ -322,7 +322,7 @@ static int mxsfb_crtc_atomic_check(struc
return -EINVAL;
/* TODO: Is this needed ? */
clocks {
--- a/drivers/bcma/main.c
+++ b/drivers/bcma/main.c
-@@ -330,14 +330,6 @@ static int bcma_register_devices(struct
+@@ -328,14 +328,6 @@ static int bcma_register_devices(struct
}
#endif
#ifdef CONFIG_BCMA_NFLASH
if (bus->drv_cc.nflash.present) {
err = platform_device_register(&bcma_nflash_dev);
-@@ -415,6 +407,14 @@ int bcma_bus_register(struct bcma_bus *b
+@@ -413,6 +405,14 @@ int bcma_bus_register(struct bcma_bus *b
bcma_register_core(bus, core);
}
--- a/block/blk.h
+++ b/block/blk.h
-@@ -353,6 +353,7 @@ char *disk_name(struct gendisk *hd, int
+@@ -355,6 +355,7 @@ char *disk_name(struct gendisk *hd, int
#define ADDPART_FLAG_NONE 0
#define ADDPART_FLAG_RAID 1
#define ADDPART_FLAG_WHOLEDISK 2
+MODULE_LICENSE("GPL");
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -3049,6 +3049,7 @@ int wake_up_state(struct task_struct *p,
+@@ -3062,6 +3062,7 @@ int wake_up_state(struct task_struct *p,
{
return try_to_wake_up(p, state, 0);
}
case RTN_THROW:
case RTN_UNREACHABLE:
default:
-@@ -4426,6 +4445,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -4429,6 +4448,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -4906,7 +4936,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -4909,7 +4939,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -6076,6 +6107,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6079,6 +6110,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -6087,6 +6120,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6090,6 +6123,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
-@@ -6278,6 +6312,8 @@ static int __net_init ip6_route_net_init
+@@ -6281,6 +6315,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false;
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL);
-@@ -6288,11 +6324,21 @@ static int __net_init ip6_route_net_init
+@@ -6291,11 +6327,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
-@@ -6319,6 +6365,8 @@ out:
+@@ -6322,6 +6368,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6338,6 +6386,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6341,6 +6389,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6415,6 +6464,9 @@ void __init ip6_route_init_special_entri
+@@ -6418,6 +6467,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
if (err)
--- a/drivers/bcma/main.c
+++ b/drivers/bcma/main.c
-@@ -236,12 +236,16 @@ EXPORT_SYMBOL(bcma_core_irq);
-
- void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core)
- {
-+ struct device *dev = &core->dev;
-+
- core->dev.release = bcma_release_core_dev;
+@@ -241,8 +241,10 @@ void bcma_prepare_core(struct bcma_bus *
core->dev.bus = &bcma_bus_type;
dev_set_name(&core->dev, "bcma%d:%d", bus->num, core->core_index);
core->dev.parent = bus->dev;
- if (bus->dev)
+ if (bus->dev) {
bcma_of_fill_device(bus->dev, core);
-+ dma_coerce_mask_and_coherent(dev, bus->dev->coherent_dma_mask);
++ dma_coerce_mask_and_coherent(&core->dev, bus->dev->coherent_dma_mask);
+ }
switch (bus->hosttype) {
+#include <linux/of.h>
#include <linux/platform_data/x86/apple.h>
#include <linux/pm_runtime.h>
- #include <linux/switchtec.h>
-@@ -5625,3 +5626,34 @@ static void apex_pci_fixup_class(struct
+ #include <linux/suspend.h>
+@@ -5707,3 +5708,34 @@ static void apex_pci_fixup_class(struct
}
DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a,
PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class);