5.10.52-rc1 review
Subsystems (3)
Greg Kroah-Hartman
maintainerPATCH 154/243 NFSv4: Initialise connection to the server in nfs4_alloc_client()
In reply to Greg Kroah-HartmanFrom: Trond Myklebust <[email protected]>
[ Upstream commit dd99e9f98fbf423ff6d365b37a98e8879170f17c ]
Set up the connection to the NFSv4 server in nfs4_alloc_client(), before we've added the struct nfs_client to the net-namespace's nfs_client_list so that a downed server won't cause other mounts to hang in the trunking detection code.
--- fs/nfs/nfs4client.c | 82 +++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 40 deletions(-)
fs/nfs/nfs4client.c +42 -40
@@ -197,8 +197,11 @@ void nfs40_shutdown_client(struct nfs_client *clp)struct nfs_client *nfs4_alloc_client (const struct nfs_client_initdata *cl_init) { -int err; +char buf[INET6_ADDRSTRLEN +1 ]; +const char *ip_addr = cl_init->ip_addr;struct nfs_client *clp =nfs_alloc_client (cl_init); +int err; +if (IS_ERR (clp))return clp;
@@ -222,6 +225,44 @@ struct nfs_client *nfs4_alloc_client(const struct nfs_client_initdata *cl_init)init_waitqueue_head (&clp->cl_lock_waitq);#endif INIT_LIST_HEAD (&clp->pending_cb_stateids); + +if (cl_init->minorversion !=0 ) +__set_bit (NFS_CS_INFINITE_SLOTS , &clp->cl_flags); +__set_bit (NFS_CS_DISCRTRY , &clp->cl_flags); +__set_bit (NFS_CS_NO_RETRANS_TIMEOUT , &clp->cl_flags); + +/* +* Set up the connection to the server before we add add to the +* global list. +*/ + err =nfs_create_rpc_client (clp, cl_init,RPC_AUTH_GSS_KRB5I ); +if (err == -EINVAL ) + err =nfs_create_rpc_client (clp, cl_init,RPC_AUTH_UNIX ); +if (err <0 ) + goto error; + +/* If no clientaddr= option was specified, find a usable cb address */ +if (ip_addr ==NULL ) { +struct sockaddr_storage cb_addr; +struct sockaddr *sap = (struct sockaddr *)&cb_addr; + + err =rpc_localaddr (clp->cl_rpcclient, sap,sizeof (cb_addr)); +if (err <0 ) + goto error; + err =rpc_ntop (sap, buf,sizeof (buf)); +if (err <0 ) + goto error; + ip_addr = (const char *)buf; + } +strlcpy (clp->cl_ipaddr, ip_addr,sizeof (clp->cl_ipaddr)); + + err =nfs_idmap_new (clp); +if (err <0 ) { +dprintk ("%s: failed to create idmapper. Error = %d\n" , + __func__, err); + goto error; + } +__set_bit (NFS_CS_IDMAP , &clp->cl_res_state);return clp; error:
@@ -372,8 +413,6 @@ static int nfs4_init_client_minor_version(struct nfs_client *clp)struct nfs_client *nfs4_init_client (struct nfs_client *clp,const struct nfs_client_initdata *cl_init) { -char buf[INET6_ADDRSTRLEN +1 ]; -const char *ip_addr = cl_init->ip_addr;struct nfs_client *old;int error;
@@ -381,43 +420,6 @@ struct nfs_client *nfs4_init_client(struct nfs_client *clp,/* the client is initialised already */ return clp; -/* Check NFS protocol revision and initialize RPC op vector */ - clp->rpc_ops = &nfs_v4_clientops; - -if (clp->cl_minorversion !=0 ) -__set_bit (NFS_CS_INFINITE_SLOTS , &clp->cl_flags); -__set_bit (NFS_CS_DISCRTRY , &clp->cl_flags); -__set_bit (NFS_CS_NO_RETRANS_TIMEOUT , &clp->cl_flags); - - error =nfs_create_rpc_client (clp, cl_init,RPC_AUTH_GSS_KRB5I ); -if (error == -EINVAL ) - error =nfs_create_rpc_client (clp, cl_init,RPC_AUTH_UNIX ); -if (error <0 ) - goto error; - -/* If no clientaddr= option was specified, find a usable cb address */ -if (ip_addr ==NULL ) { -struct sockaddr_storage cb_addr; -struct sockaddr *sap = (struct sockaddr *)&cb_addr; - - error =rpc_localaddr (clp->cl_rpcclient, sap,sizeof (cb_addr)); -if (error <0 ) - goto error; - error =rpc_ntop (sap, buf,sizeof (buf)); -if (error <0 ) - goto error; - ip_addr = (const char *)buf; - } -strlcpy (clp->cl_ipaddr, ip_addr,sizeof (clp->cl_ipaddr)); - - error =nfs_idmap_new (clp); -if (error <0 ) { -dprintk ("%s: failed to create idmapper. Error = %d\n" , - __func__, error); - goto error; - } -__set_bit (NFS_CS_IDMAP , &clp->cl_res_state); - error =nfs4_init_client_minor_version (clp);if (error <0 ) goto error;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 155/243 NFSv4: Fix an Oops in pnfs_mark_request_commit() when doing O_DIRECT
In reply to Greg Kroah-HartmanFrom: Trond Myklebust <[email protected]>
[ Upstream commit 3731d44bba8e0116b052b1b374476c5f6dd9a456 ]
Fix an Oopsable condition in pnfs_mark_request_commit() when we're putting a set of writes on the commit list to reschedule them after a failed pNFS attempt.
--- fs/nfs/direct.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-)
fs/nfs/direct.c +7 -10
@@ -700,8 +700,8 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr) {struct nfs_direct_req *dreq = hdr->dreq;struct nfs_commit_info cinfo; -bool request_commit = false;struct nfs_page *req =nfs_list_entry (hdr->pages.next); +int flags =NFS_ODIRECT_DONE ;nfs_init_cinfo_from_dreq (&cinfo, dreq);
@@ -713,15 +713,9 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr)nfs_direct_count_bytes (dreq, hdr);if (hdr->good_bytes !=0 &&nfs_write_need_commit (hdr)) { -switch (dreq->flags) { -case 0 : +if (!dreq->flags) dreq->flags =NFS_ODIRECT_DO_COMMIT ; - request_commit = true; -break ; -case NFS_ODIRECT_RESCHED_WRITES : -case NFS_ODIRECT_DO_COMMIT : - request_commit = true; - } + flags = dreq->flags; }spin_unlock (&dreq->lock);
@@ -729,12 +723,15 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr) req =nfs_list_entry (hdr->pages.next);nfs_list_remove_request (req); -if (request_commit) { +if (flags ==NFS_ODIRECT_DO_COMMIT ) {kref_get (&req->wb_kref);memcpy (&req->wb_verf, &hdr->verf.verifier,sizeof (req->wb_verf));nfs_mark_request_commit (req, hdr->lseg, &cinfo, hdr->ds_commit_idx); + }else if (flags ==NFS_ODIRECT_RESCHED_WRITES ) { +kref_get (&req->wb_kref); +nfs_mark_request_commit (req,NULL , &cinfo,0 ); }nfs_unlock_and_release_request (req); }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 156/243 misc: alcor_pci: fix inverted branch condition
In reply to Greg Kroah-HartmanFrom: Tong Zhang <[email protected]>
commit 281e468446994a7672733af2bf941f4110d4a895 upstream.
This patch fixes a trivial mistake that I made in the previous attempt in fixing the null bridge issue. The branch condition is inverted and we should call alcor_pci_find_cap_offset() only if bridge is not null.
--- drivers/misc/cardreader/alcor_pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/misc/cardreader/alcor_pci.c +1 -1
@@ -144,7 +144,7 @@ static void alcor_pci_init_check_aspm(st* priv->parent_pdev will be NULL. In this case we don't check its * capability and disable ASPM completely. */ -if (!priv->parent_pdev) +if (priv->parent_pdev) priv->parent_cap_off =alcor_pci_find_cap_offset (priv, priv->parent_pdev);
Greg Kroah-Hartman
maintainerPATCH 157/243 um: fix error return code in slip_open()
In reply to Greg Kroah-HartmanFrom: Zhen Lei <[email protected]>
[ Upstream commit b77e81fbe5f5fb4ad9a61ec80f6d1e30b6da093a ]
Fix to return a negative error code from the error handling case instead of 0, as done elsewhere in this function.
--- arch/um/drivers/slip_user.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
arch/um/drivers/slip_user.c +2 -1
@@ -145,7 +145,8 @@ static int slip_open(void *data) } sfd = err; -if (set_up_tty (sfd)) + err =set_up_tty (sfd); +if (err) goto out_close2; pri->slave = sfd;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 158/243 um: fix error return code in winch_tramp()
In reply to Greg Kroah-HartmanFrom: Zhen Lei <[email protected]>
[ Upstream commit ccf1236ecac476d9d2704866d9a476c86e387971 ]
Fix to return a negative error code from the error handling case instead of 0, as done elsewhere in this function.
--- arch/um/drivers/chan_user.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
arch/um/drivers/chan_user.c +2 -1
@@ -256,7 +256,8 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out, goto out_close; } -if (os_set_fd_block (*fd_out,0 )) { + err =os_set_fd_block (*fd_out,0 ); +if (err) {printk (UM_KERN_ERR "winch_tramp: failed to set thread_fd " "non-blocking.\n" ); goto out_close;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 159/243 ubifs: Fix off-by-one error
In reply to Greg Kroah-HartmanFrom: Sascha Hauer <[email protected]>
[ Upstream commit d984bcf5766dbdbe95d325bb8a1b49a996fecfd4 ]
An inode is allowed to have ubifs_xattr_max_cnt() xattrs, so we must complain only when an inode has more xattrs, having exactly ubifs_xattr_max_cnt() xattrs is fine.
With this the maximum number of xattrs can be created without hitting the "has too many xattrs" warning when removing it.
--- fs/ubifs/journal.c | 2 +- fs/ubifs/xattr.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
fs/ubifs/journal.c +1 -1
@@ -881,7 +881,7 @@ int ubifs_jnl_write_inode(struct ubifs_info *c, const struct inode *inode)struct inode *xino;struct ubifs_dent_node *xent, *pxent =NULL ; -if (ui->xattr_cnt >=ubifs_xattr_max_cnt (c)) { +if (ui->xattr_cnt >ubifs_xattr_max_cnt (c)) {ubifs_err (c,"Cannot delete inode, it has too much xattrs!" ); goto out_release; }
fs/ubifs/xattr.c +1 -1
@@ -512,7 +512,7 @@ int ubifs_purge_xattrs(struct inode *host)struct fscrypt_name nm = {0 };int err; -if (ubifs_inode (host)->xattr_cnt <ubifs_xattr_max_cnt (c)) +if (ubifs_inode (host)->xattr_cnt <=ubifs_xattr_max_cnt (c))return 0 ; ubifs_warn(c, "inode %lu has too many xattrs, doing a non-atomic deletion",
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 160/243 ubifs: journal: Fix error return code in ubifs_jnl_write_inode()
In reply to Greg Kroah-HartmanFrom: Zhen Lei <[email protected]>
[ Upstream commit a2c2a622d41168f9fea2aa3f76b9fbaa88531aac ]
Fix to return a negative error code from the error handling case instead of 0, as done elsewhere in this function.
--- fs/ubifs/journal.c | 1 + 1 file changed, 1 insertion(+)
fs/ubifs/journal.c +1 -0
@@ -882,6 +882,7 @@ int ubifs_jnl_write_inode(struct ubifs_info *c, const struct inode *inode)struct ubifs_dent_node *xent, *pxent =NULL ;if (ui->xattr_cnt >ubifs_xattr_max_cnt (c)) { + err = -EPERM ;ubifs_err (c,"Cannot delete inode, it has too much xattrs!" ); goto out_release; }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 161/243 watchdog: aspeed: fix hardware timeout calculation
In reply to Greg Kroah-HartmanFrom: Tao Ren <[email protected]>
[ Upstream commit e7dc481c92060f9ce872878b0b7a08c24713a7e5 ]
Fix hardware timeout calculation in aspeed_wdt_set_timeout function to ensure the reload value does not exceed the hardware limit.
--- drivers/watchdog/aspeed_wdt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/watchdog/aspeed_wdt.c +1 -1
@@ -147,7 +147,7 @@ static int aspeed_wdt_set_timeout(struct watchdog_device *wdd, wdd->timeout = timeout; - actual =min (timeout, wdd->max_hw_heartbeat_ms *1000 ); + actual =min (timeout, wdd->max_hw_heartbeat_ms /1000 );writel (actual *WDT_RATE_1MHZ , wdt->base +WDT_RELOAD_VALUE );writel (WDT_RESTART_MAGIC , wdt->base +WDT_RESTART );
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 162/243 watchdog: jz4740: Fix return value check in jz4740_wdt_probe()
In reply to Greg Kroah-HartmanFrom: Wei Yongjun <[email protected]>
[ Upstream commit 29e85f53fb58b45b9e9276dcdf1f1cb762dd1c9f ]
In case of error, the function device_node_to_regmap() returns ERR_PTR() and never returns NULL. The NULL test in the return value check should be replaced with IS_ERR().
--- drivers/watchdog/jz4740_wdt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/watchdog/jz4740_wdt.c +2 -2
@@ -176,9 +176,9 @@ static int jz4740_wdt_probe(struct platform_device *pdev)watchdog_set_drvdata (jz4740_wdt, drvdata); drvdata->map =device_node_to_regmap (dev->parent->of_node); -if (!drvdata->map) { +if (IS_ERR (drvdata->map)) {dev_err (dev,"regmap not found\n" ); -return -EINVAL ; +return PTR_ERR (drvdata->map); }return devm_watchdog_register_device (dev, &drvdata->wdt);
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 163/243 SUNRPC: prevent port reuse on transports which dont request it.
In reply to Greg Kroah-HartmanFrom: NeilBrown <[email protected]>
[ Upstream commit bc1c56e9bbe92766d017efb5f0a0c71f80da5570 ]
If an RPC client is created without RPC_CLNT_CREATE_REUSEPORT, it should not reuse the source port when a TCP connection is re-established. This is currently implemented by preventing the source port being recorded after a successful connection (the call to xs_set_srcport()).
However the source port is also recorded after a successful bind in xs_bind(). This may not be needed at all and certainly is not wanted when RPC_CLNT_CREATE_REUSEPORT wasn't requested.
So avoid that assignment when xprt.reuseport is not set.
With this change, NFSv4.1 and later mounts use a different port number on each connection. This is helpful with some firewalls which don't cope well with port reuse.
--- net/sunrpc/xprtsock.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
net/sunrpc/xprtsock.c +2 -1
@@ -1680,7 +1680,8 @@ static int xs_bind(struct sock_xprt *transport, struct socket *sock) err =kernel_bind (sock, (struct sockaddr *)&myaddr, transport->xprt.addrlen);if (err ==0 ) { - transport->srcport = port; +if (transport->xprt.reuseport) + transport->srcport = port;break ; } last = port;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 164/243 nfs: fix acl memory leak of posix_acl_create()
In reply to Greg Kroah-HartmanFrom: Gao Xiang <[email protected]>
[ Upstream commit 1fcb6fcd74a222d9ead54d405842fc763bb86262 ]
When looking into another nfs xfstests report, I found acl and default_acl in nfs3_proc_create() and nfs3_proc_mknod() error paths are possibly leaked. Fix them in advance.
--- fs/nfs/nfs3proc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/nfs/nfs3proc.c +2 -2
@@ -360,7 +360,7 @@ nfs3_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,break ;case NFS3_CREATE_UNCHECKED : - goto out; + goto out_release_acls; }nfs_fattr_init (data->res.dir_attr);nfs_fattr_init (data->res.fattr);
@@ -727,7 +727,7 @@ nfs3_proc_mknod(struct inode *dir, struct dentry *dentry, struct iattr *sattr,break ;default : status = -EINVAL ; - goto out; + goto out_release_acls; } d_alias =nfs3_do_create (dir, dentry, data);
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 165/243 ubifs: Set/Clear I_LINKABLE under i_lock for whiteout inode
In reply to Greg Kroah-HartmanFrom: Zhihao Cheng <[email protected]>
[ Upstream commit a801fcfeef96702fa3f9b22ad56c5eb1989d9221 ]
xfstests-generic/476 reports a warning message as below:
WARNING: CPU: 2 PID: 30347 at fs/inode.c:361 inc_nlink+0x52/0x70 Call Trace: do_rename+0x502/0xd40 [ubifs] ubifs_rename+0x8b/0x180 [ubifs] vfs_rename+0x476/0x1080 do_renameat2+0x67c/0x7b0 __x64_sys_renameat2+0x6e/0x90 do_syscall_64+0x66/0xe0 entry_SYSCALL_64_after_hwframe+0x44/0xae
Following race case can cause this:
rename_whiteout(Thread 1) wb_workfn(Thread 2)ubifs_rename
do_rename
__writeback_single_inode
spin_lock(&inode->i_lock)
whiteout->i_state |= I_LINKABLE
inode->i_state &= ~dirty;
---- How race happens on i_state:
(tmp = whiteout->i_state | I_LINKABLE)
(tmp = inode->i_state & ~dirty)
(whiteout->i_state = tmp)
(inode->i_state = tmp)
----
spin_unlock(&inode->i_lock)
inc_nlink(whiteout)
WARN_ON(!(inode->i_state & I_LINKABLE)) !!!Fix to add i_lock to avoid i_state update race condition.
--- fs/ubifs/dir.c | 7 +++++++ 1 file changed, 7 insertions(+)
fs/ubifs/dir.c +7 -0
@@ -1335,7 +1335,10 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, goto out_release; } +spin_lock (&whiteout->i_lock); whiteout->i_state |=I_LINKABLE ; +spin_unlock (&whiteout->i_lock); + whiteout_ui =ubifs_inode (whiteout); whiteout_ui->data = dev; whiteout_ui->data_len =ubifs_encode_dev (dev,MKDEV (0 ,0 ));
@@ -1428,7 +1431,11 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry,inc_nlink (whiteout);mark_inode_dirty (whiteout); + +spin_lock (&whiteout->i_lock); whiteout->i_state &= ~I_LINKABLE ; +spin_unlock (&whiteout->i_lock); +iput (whiteout); }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 166/243 PCI: iproc: Fix multi-MSI base vector number allocation
In reply to Greg Kroah-HartmanFrom: Sandor Bodo-Merle <[email protected]>
[ Upstream commit e673d697b9a234fc3544ac240e173cef8c82b349 ]
Commit fc54bae28818 ("PCI: iproc: Allow allocation of multiple MSIs") introduced multi-MSI support with a broken allocation mechanism (it failed to reserve the proper number of bits from the inner domain). Natural alignment of the base vector number was also not guaranteed.
--- drivers/pci/controller/pcie-iproc-msi.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-)
drivers/pci/controller/pcie-iproc-msi.c +11 -10
@@ -252,18 +252,18 @@ static int iproc_msi_irq_domain_alloc(struct irq_domain *domain,mutex_lock (&msi->bitmap_lock); -/* Allocate 'nr_cpus' number of MSI vectors each time */ - hwirq =bitmap_find_next_zero_area (msi->bitmap, msi->nr_msi_vecs,0 , - msi->nr_cpus,0 ); -if (hwirq < msi->nr_msi_vecs) { -bitmap_set (msi->bitmap, hwirq, msi->nr_cpus); - }else { -mutex_unlock (&msi->bitmap_lock); -return -ENOSPC ; - } +/* +* Allocate 'nr_irqs' multiplied by 'nr_cpus' number of MSI vectors +* each time +*/ + hwirq =bitmap_find_free_region (msi->bitmap, msi->nr_msi_vecs, +order_base_2 (msi->nr_cpus * nr_irqs));mutex_unlock (&msi->bitmap_lock); +if (hwirq <0 ) +return -ENOSPC ; +for (i =0 ; i < nr_irqs; i++) { irq_domain_set_info(domain, virq + i, hwirq + i, &iproc_msi_bottom_irq_chip,
@@ -284,7 +284,8 @@ static void iproc_msi_irq_domain_free(struct irq_domain *domain,mutex_lock (&msi->bitmap_lock); hwirq =hwirq_to_canonical_hwirq (msi, data->hwirq); -bitmap_clear (msi->bitmap, hwirq, msi->nr_cpus); +bitmap_release_region (msi->bitmap, hwirq, +order_base_2 (msi->nr_cpus * nr_irqs));mutex_unlock (&msi->bitmap_lock);
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 167/243 PCI: iproc: Support multi-MSI only on uniprocessor kernel
In reply to Greg Kroah-HartmanFrom: Sandor Bodo-Merle <[email protected]>
[ Upstream commit 2dc0a201d0f59e6818ef443609f0850a32910844 ]
The interrupt affinity scheme used by this driver is incompatible with multi-MSI as it implies moving the doorbell address to that of another MSI group. This isn't possible for multi-MSI, as all the MSIs must have the same doorbell address. As such it is restricted to systems with a single CPU.
--- drivers/pci/controller/pcie-iproc-msi.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/pci/controller/pcie-iproc-msi.c +7 -1
@@ -171,7 +171,7 @@ static struct irq_chip iproc_msi_irq_chip = {static struct msi_domain_info iproc_msi_domain_info = { .flags =MSI_FLAG_USE_DEF_DOM_OPS |MSI_FLAG_USE_DEF_CHIP_OPS | -MSI_FLAG_MULTI_PCI_MSI |MSI_FLAG_PCI_MSIX , +MSI_FLAG_PCI_MSIX , .chip = &iproc_msi_irq_chip, };
@@ -250,6 +250,9 @@ static int iproc_msi_irq_domain_alloc(struct irq_domain *domain,struct iproc_msi *msi = domain->host_data;int hwirq, i; +if (msi->nr_cpus >1 && nr_irqs >1 ) +return -EINVAL ; +mutex_lock (&msi->bitmap_lock);/*
@@ -540,6 +543,9 @@ int iproc_msi_init(struct iproc_pcie *pcie, struct device_node *node)mutex_init (&msi->bitmap_lock); msi->nr_cpus =num_possible_cpus (); +if (msi->nr_cpus ==1 ) + iproc_msi_domain_info.flags |=MSI_FLAG_MULTI_PCI_MSI ; + msi->nr_irqs =of_irq_count (node);if (!msi->nr_irqs) {dev_err (pcie->dev,"found no MSI GIC interrupt\n" );
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 168/243 f2fs: fix to avoid adding tab before doc section
In reply to Greg Kroah-HartmanFrom: Chao Yu <[email protected]>
[ Upstream commit 3c16dc40aab84bab9cf54c2b61a458bb86b180c3 ]
Otherwise whole section after tab will be invisible in compiled html format document.
--- Documentation/filesystems/f2fs.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
Documentation/filesystems/f2fs.rst +8 -8
@@ -688,10 +688,10 @@ users. ===================== ======================== =================== User F2FS Block ===================== ======================== =================== - META WRITE_LIFE_NOT_SET - HOT_NODE " - WARM_NODE " - COLD_NODE " +N/A META WRITE_LIFE_NOT_SET +N/A HOT_NODE " +N/A WARM_NODE " +N/A COLD_NODE " ioctl(COLD) COLD_DATA WRITE_LIFE_EXTREME extension list " "
@@ -717,10 +717,10 @@ WRITE_LIFE_LONG " WRITE_LIFE_LONG ===================== ======================== =================== User F2FS Block ===================== ======================== =================== - META WRITE_LIFE_MEDIUM; - HOT_NODE WRITE_LIFE_NOT_SET - WARM_NODE " - COLD_NODE WRITE_LIFE_NONE +N/A META WRITE_LIFE_MEDIUM; +N/A HOT_NODE WRITE_LIFE_NOT_SET +N/A WARM_NODE " +N/A COLD_NODE WRITE_LIFE_NONE ioctl(COLD) COLD_DATA WRITE_LIFE_EXTREME extension list " "
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 169/243 x86/fpu: Fix copy_xstate_to_kernel() gap handling
In reply to Greg Kroah-HartmanFrom: Thomas Gleixner <[email protected]>
[ Upstream commit 9625895011d130033d1bc7aac0d77a9bf68ff8a6 ]
The gap handling in copy_xstate_to_kernel() is wrong when XSAVES is in use.
Using init_fpstate for copying the init state of features which are not set in the xstate header is only correct for the legacy area, but not for the extended features area because when XSAVES is in use then init_fpstate is in compacted form which means the xstate offsets which are used to copy from init_fpstate are not valid.
Fortunately, this is not a real problem today because all extended features in use have an all-zeros init state, but it is wrong nevertheless and with a potentially dynamically sized init_fpstate this would result in an access outside of the init_fpstate.
Fix this by keeping track of the last copied state in the target buffer and explicitly zero it when there is a feature or alignment gap.
Use the compacted offset when accessing the extended feature space in init_fpstate.
As this is not a functional issue on older kernels this is intentionally not tagged for stable.
--- arch/x86/kernel/fpu/xstate.c | 105 ++++++++++++++++++++--------------- 1 file changed, 61 insertions(+), 44 deletions(-)
arch/x86/kernel/fpu/xstate.c +61 -44
@@ -1084,20 +1084,10 @@ static inline bool xfeatures_mxcsr_quirk(u64 xfeatures)return true; } -static void fill_gap (struct membuf *to,unsigned *last,unsigned offset) +static void copy_feature (bool from_xstate,struct membuf *to,void *xstate, +void *init_xstate,unsigned int size) { -if (*last >= offset) -return ; -membuf_write (to, (void *)&init_fpstate.xsave + *last, offset - *last); - *last = offset; -} - -static void copy_part (struct membuf *to,unsigned *last,unsigned offset, -unsigned size,void *from) -{ -fill_gap (to, last, offset); -membuf_write (to, from, size); - *last = offset + size; +membuf_write (to, from_xstate ? xstate : init_xstate, size); }/*
@@ -1109,10 +1099,10 @@ static void copy_part(struct membuf *to, unsigned *last, unsigned offset,*/ void copy_xstate_to_kernel (struct membuf to,struct xregs_state *xsave) { +const unsigned int off_mxcsr = offsetof(struct fxregs_state , mxcsr); +struct xregs_state *xinit = &init_fpstate.xsave;struct xstate_header header; -const unsigned off_mxcsr = offsetof(struct fxregs_state , mxcsr); -unsigned size = to.left; -unsigned last =0 ; +unsigned int zerofrom;int i;/*
@@ -1122,41 +1112,68 @@ void copy_xstate_to_kernel(struct membuf to, struct xregs_state *xsave) header.xfeatures = xsave->header.xfeatures; header.xfeatures &=xfeatures_mask_user (); -if (header.xfeatures &XFEATURE_MASK_FP ) -copy_part (&to, &last,0 , off_mxcsr, &xsave->i387); -if (header.xfeatures & (XFEATURE_MASK_SSE |XFEATURE_MASK_YMM )) -copy_part (&to, &last, off_mxcsr, -MXCSR_AND_FLAGS_SIZE , &xsave->i387.mxcsr); -if (header.xfeatures &XFEATURE_MASK_FP ) -copy_part (&to, &last, offsetof(struct fxregs_state , st_space), -128 , &xsave->i387.st_space); -if (header.xfeatures &XFEATURE_MASK_SSE ) -copy_part (&to, &last, xstate_offsets[XFEATURE_SSE ], -256 , &xsave->i387.xmm_space); -/* -* Fill xsave->i387.sw_reserved value for ptrace frame: -*/ -copy_part (&to, &last, offsetof(struct fxregs_state , sw_reserved), -48 , xstate_fx_sw_bytes); -/* -* Copy xregs_state->header: -*/ -copy_part (&to, &last, offsetof(struct xregs_state , header), -sizeof (header), &header); +/* Copy FP state up to MXCSR */ +copy_feature (header.xfeatures &XFEATURE_MASK_FP , &to, &xsave->i387, + &xinit->i387, off_mxcsr); + +/* Copy MXCSR when SSE or YMM are set in the feature mask */ +copy_feature (header.xfeatures & (XFEATURE_MASK_SSE |XFEATURE_MASK_YMM ), + &to, &xsave->i387.mxcsr, &xinit->i387.mxcsr, +MXCSR_AND_FLAGS_SIZE ); + +/* Copy the remaining FP state */ +copy_feature (header.xfeatures &XFEATURE_MASK_FP , + &to, &xsave->i387.st_space, &xinit->i387.st_space, +sizeof (xsave->i387.st_space)); + +/* Copy the SSE state - shared with YMM, but independently managed */ +copy_feature (header.xfeatures &XFEATURE_MASK_SSE , + &to, &xsave->i387.xmm_space, &xinit->i387.xmm_space, +sizeof (xsave->i387.xmm_space)); + +/* Zero the padding area */ +membuf_zero (&to,sizeof (xsave->i387.padding)); + +/* Copy xsave->i387.sw_reserved */ +membuf_write (&to, xstate_fx_sw_bytes,sizeof (xsave->i387.sw_reserved)); + +/* Copy the user space relevant state of @xsave->header */ +membuf_write (&to, &header,sizeof (header)); + + zerofrom = offsetof(struct xregs_state , extended_state_area);for (i =FIRST_EXTENDED_XFEATURE ; i <XFEATURE_MAX ; i++) {/* -* Copy only in-use xstates: +* The ptrace buffer is in non-compacted XSAVE format. +* In non-compacted format disabled features still occupy +* state space, but there is no state to copy from in the +* compacted init_fpstate. The gap tracking will zero this +* later. */ -if ((header.xfeatures >> i) &1 ) { -void *src =__raw_xsave_addr (xsave, i); +if (!(xfeatures_mask_user () &BIT_ULL (i))) +continue ; -copy_part (&to, &last, xstate_offsets[i], - xstate_sizes[i], src); - } +/* +* If there was a feature or alignment gap, zero the space +* in the destination buffer. +*/ +if (zerofrom < xstate_offsets[i]) +membuf_zero (&to, xstate_offsets[i] - zerofrom); + +copy_feature (header.xfeatures &BIT_ULL (i), &to, +__raw_xsave_addr (xsave, i), +__raw_xsave_addr (xinit, i), + xstate_sizes[i]); +/* +* Keep track of the last copied state in the non-compacted +* target buffer for gap zeroing. +*/ + zerofrom = xstate_offsets[i] + xstate_sizes[i]; } -fill_gap (&to, &last, size); + +if (to.left) +membuf_zero (&to, to.left); }/*
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 170/243 x86/fpu: Limit xstate copy size in xstateregs_set()
In reply to Greg Kroah-HartmanFrom: Thomas Gleixner <[email protected]>
[ Upstream commit 07d6688b22e09be465652cf2da0da6bf86154df6 ]
If the count argument is larger than the xstate size, this will happily copy beyond the end of xstate.
--- arch/x86/kernel/fpu/regset.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/kernel/fpu/regset.c +1 -1
@@ -117,7 +117,7 @@ int xstateregs_set(struct task_struct *target, const struct user_regset *regset,/* * A whole standard-format XSAVE buffer is needed: */ -if ((pos !=0 ) || (count < fpu_user_xstate_size)) +if (pos !=0 || count != fpu_user_xstate_size)return -EFAULT ; xsave = &fpu->state.xsave;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 171/243 PCI: intel-gw: Fix INTx enable
In reply to Greg Kroah-HartmanFrom: Martin Blumenstingl <[email protected]>
[ Upstream commit 655832d12f2251e04031294f547c86935a0a126d ]
The legacy PCI interrupt lines need to be enabled using PCIE_APP_IRNEN bits 13 (INTA), 14 (INTB), 15 (INTC) and 16 (INTD). The old code however was taking (for example) "13" as raw value instead of taking BIT(13). Define the legacy PCI interrupt bits using the BIT() macro and then use these in PCIE_APP_IRN_INT.
--- drivers/pci/controller/dwc/pcie-intel-gw.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
drivers/pci/controller/dwc/pcie-intel-gw.c +6 -4
@@ -39,6 +39,10 @@#define PCIE_APP_IRN_PM_TO_ACK BIT(9)#define PCIE_APP_IRN_LINK_AUTO_BW_STAT BIT(11)#define PCIE_APP_IRN_BW_MGT BIT(12) +#define PCIE_APP_IRN_INTA BIT(13) +#define PCIE_APP_IRN_INTB BIT(14) +#define PCIE_APP_IRN_INTC BIT(15) +#define PCIE_APP_IRN_INTD BIT(16)#define PCIE_APP_IRN_MSG_LTR BIT(18)#define PCIE_APP_IRN_SYS_ERR_RC BIT(29)#define PCIE_APP_INTX_OFST 12
@@ -48,10 +52,8 @@ PCIE_APP_IRN_RX_VDM_MSG | PCIE_APP_IRN_SYS_ERR_RC | \ PCIE_APP_IRN_PM_TO_ACK | PCIE_APP_IRN_MSG_LTR | \ PCIE_APP_IRN_BW_MGT | PCIE_APP_IRN_LINK_AUTO_BW_STAT | \ - (PCIE_APP_INTX_OFST + PCI_INTERRUPT_INTA) | \ - (PCIE_APP_INTX_OFST + PCI_INTERRUPT_INTB) | \ - (PCIE_APP_INTX_OFST + PCI_INTERRUPT_INTC) | \ - (PCIE_APP_INTX_OFST + PCI_INTERRUPT_INTD)) + PCIE_APP_IRN_INTA | PCIE_APP_IRN_INTB | \ + PCIE_APP_IRN_INTC | PCIE_APP_IRN_INTD)#define BUS_IATU_OFFSET SZ_256M#define RESET_INTERVAL_MS 100
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 172/243 pwm: imx1: Dont disable clocks at device remove time
In reply to Greg Kroah-HartmanFrom: Uwe Kleine-König <[email protected]>
[ Upstream commit 1bc6ea31cb41d50302a3c9b401964cf0a88d41f9 ]
The .remove() callback disables clocks that were not enabled in .probe(). So just probing and then unbinding the driver results in a clk enable imbalance.
So just drop the call to disable the clocks. (Which BTW was also in the wrong order because the call makes the PWM unfunctional and so should have come only after pwmchip_remove()).
--- drivers/pwm/pwm-imx1.c | 2 -- 1 file changed, 2 deletions(-)
drivers/pwm/pwm-imx1.c +0 -2
@@ -180,8 +180,6 @@ static int pwm_imx1_remove(struct platform_device *pdev) {struct pwm_imx1_chip *imx =platform_get_drvdata (pdev); -pwm_imx1_clk_disable_unprepare (&imx->chip); -return pwmchip_remove (&imx->chip); }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 173/243 PCI: tegra194: Fix tegra_pcie_ep_raise_msi_irq() ill-defined shift
In reply to Greg Kroah-HartmanFrom: Jon Hunter <[email protected]>
[ Upstream commit f67092eff2bd40650aad54a1a1910160f41d864a ]
tegra_pcie_ep_raise_msi_irq() shifted a signed 32-bit value left by 31 bits. The behavior of this is implementation-defined.
Replace the shift by BIT(), which is well-defined.
Found by cppcheck:
$ cppcheck --enable=all drivers/pci/controller/dwc/pcie-tegra194.c Checking drivers/pci/controller/dwc/pcie-tegra194.c ...
drivers/pci/controller/dwc/pcie-tegra194.c:1829:23: portability: Shifting signed 32-bit value by 31 bits is implementation-defined behaviour. See condition at line 1826. [shiftTooManyBitsSigned]
appl_writel(pcie, (1 << irq), APPL_MSI_CTRL_1);
^--- drivers/pci/controller/dwc/pcie-tegra194.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/pci/controller/dwc/pcie-tegra194.c +1 -1
@@ -1841,7 +1841,7 @@ static int tegra_pcie_ep_raise_msi_irq(struct tegra_pcie_dw *pcie, u16 irq)if (unlikely (irq >31 ))return -EINVAL ; -appl_writel (pcie, (1 << irq),APPL_MSI_CTRL_1 ); +appl_writel (pcie,BIT (irq),APPL_MSI_CTRL_1 );return 0 ; }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 174/243 vdpa/mlx5: Fix umem sizes assignments on VQ create
In reply to Greg Kroah-HartmanFrom: Eli Cohen <[email protected]>
[ Upstream commit e3011776af16caf423f2c36d0047acd624c274fa ]
Fix copy paste bug assigning umem1 size to umem2 and umem3. The issue was discovered when trying to use a 1:1 MR that covers the entire address space where firmware complained that provided sizes are not large enough. 1:1 MRs are required to support virtio_vdpa.
--- drivers/vdpa/mlx5/net/mlx5_vnet.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/vdpa/mlx5/net/mlx5_vnet.c +2 -2
@@ -814,9 +814,9 @@ static int create_virtqueue(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtqueMLX5_SET (virtio_q, vq_ctx, umem_1_id, mvq->umem1.id);MLX5_SET (virtio_q, vq_ctx, umem_1_size, mvq->umem1.size);MLX5_SET (virtio_q, vq_ctx, umem_2_id, mvq->umem2.id); -MLX5_SET (virtio_q, vq_ctx, umem_2_size, mvq->umem1.size); +MLX5_SET (virtio_q, vq_ctx, umem_2_size, mvq->umem2.size);MLX5_SET (virtio_q, vq_ctx, umem_3_id, mvq->umem3.id); -MLX5_SET (virtio_q, vq_ctx, umem_3_size, mvq->umem1.size); +MLX5_SET (virtio_q, vq_ctx, umem_3_size, mvq->umem3.size);MLX5_SET (virtio_q, vq_ctx, pd, ndev->mvdev.res.pdn);if (MLX5_CAP_DEV_VDPA_EMULATION (ndev->mvdev.mdev, eth_frame_offload_type))MLX5_SET (virtio_q, vq_ctx, virtio_version_1_0,1 );
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 175/243 vdpa/mlx5: Fix possible failure in umem size calculation
In reply to Greg Kroah-HartmanFrom: Eli Cohen <[email protected]>
[ Upstream commit 71ab6a7cfbae27f86a3901daab10bfe13b3a1e3a ]
umem size is a 32 bit unsigned value so assigning it to an int could cause false failures. Set the calculated value inside the function and modify function name to reflect the fact it updates the size.
This bug was found during code review but never had real impact to this date.
--- drivers/vdpa/mlx5/net/mlx5_vnet.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-)
drivers/vdpa/mlx5/net/mlx5_vnet.c +5 -10
@@ -596,8 +596,8 @@ static void cq_destroy(struct mlx5_vdpa_net *ndev, u16 idx)mlx5_db_free (ndev->mvdev.mdev, &vcq->db); } -static int umem_size (struct mlx5_vdpa_net *ndev,struct mlx5_vdpa_virtqueue *mvq,int num, -struct mlx5_vdpa_umem **umemp) +static void set_umem_size (struct mlx5_vdpa_net *ndev,struct mlx5_vdpa_virtqueue *mvq,int num, +struct mlx5_vdpa_umem **umemp) {struct mlx5_core_dev *mdev = ndev->mvdev.mdev;int p_a;
@@ -620,7 +620,7 @@ static int umem_size(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtqueue *mvq *umemp = &mvq->umem3;break ; } -return p_a * mvq->num_ent + p_b; + (*umemp)->size = p_a * mvq->num_ent + p_b; }static void umem_frag_buf_free (struct mlx5_vdpa_net *ndev,struct mlx5_vdpa_umem *umem)
@@ -636,15 +636,10 @@ static int create_umem(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtqueue *mvoid *in;int err;__be64 *pas; -int size;struct mlx5_vdpa_umem *umem; - size =umem_size (ndev, mvq, num, &umem); -if (size <0 ) -return size; - - umem->size = size; - err =umem_frag_buf_alloc (ndev, umem, size); +set_umem_size (ndev, mvq, num, &umem); + err =umem_frag_buf_alloc (ndev, umem, umem->size);if (err)return err;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 176/243 virtio_net: move tx vq operation under tx queue lock
In reply to Greg Kroah-HartmanFrom: Michael S. Tsirkin <[email protected]>
[ Upstream commit 5a2f966d0f3fa0ef6dada7ab9eda74cacee96b8a ]
It's unsafe to operate a vq from multiple threads. Unfortunately this is exactly what we do when invoking clean tx poll from rx napi.
Same happens with napi-tx even without the opportunistic cleaning from the receive interrupt: that races with processing the vq in start_xmit.
As a fix move everything that deals with the vq to under tx lock.
--- drivers/net/virtio_net.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-)
drivers/net/virtio_net.c +21 -1
@@ -1519,6 +1519,8 @@ static int virtnet_poll_tx(struct napi_struct *napi, int budget)struct virtnet_info *vi = sq->vq->vdev->priv;unsigned int index =vq2txq (sq->vq);struct netdev_queue *txq; +int opaque; +bool done;if (unlikely (is_xdp_raw_buffer_queue (vi, index))) {/* We don't need to enable cb for XDP */
@@ -1528,10 +1530,28 @@ static int virtnet_poll_tx(struct napi_struct *napi, int budget) txq =netdev_get_tx_queue (vi->dev, index);__netif_tx_lock (txq,raw_smp_processor_id ()); +virtqueue_disable_cb (sq->vq);free_old_xmit_skbs (sq, true); + + opaque =virtqueue_enable_cb_prepare (sq->vq); + + done =napi_complete_done (napi,0 ); + +if (!done) +virtqueue_disable_cb (sq->vq); +__netif_tx_unlock (txq); -virtqueue_napi_complete (napi, sq->vq,0 ); +if (done) { +if (unlikely (virtqueue_poll (sq->vq, opaque))) { +if (napi_schedule_prep (napi)) { +__netif_tx_lock (txq,raw_smp_processor_id ()); +virtqueue_disable_cb (sq->vq); +__netif_tx_unlock (txq); +__napi_schedule (napi); + } + } + }if (sq->vq->num_free >=2 +MAX_SKB_FRAGS )netif_tx_wake_queue (txq);
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 177/243 nvme-tcp: cant set sk_user_data without write_lock
In reply to Greg Kroah-HartmanFrom: Maurizio Lombardi <[email protected]>
[ Upstream commit 0755d3be2d9bb6ea38598ccd30d6bbaa1a5c3a50 ]
The sk_user_data pointer is supposed to be modified only while holding the write_lock "sk_callback_lock", otherwise we could race with other threads and crash the kernel.
we can't take the write_lock in nvmet_tcp_state_change() because it would cause a deadlock, but the release_work queue will set the pointer to NULL later so we can simply remove the assignment.
--- drivers/nvme/target/tcp.c | 1 - 1 file changed, 1 deletion(-)
drivers/nvme/target/tcp.c +0 -1
@@ -1467,7 +1467,6 @@ static void nvmet_tcp_state_change(struct sock *sk)case TCP_CLOSE_WAIT :case TCP_CLOSE :/* FALLTHRU */ - sk->sk_user_data =NULL ;nvmet_tcp_schedule_release_queue (queue);break ;default :
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 178/243 nfsd: Reduce contention for the nfsd_file nf_rwsem
In reply to Greg Kroah-HartmanFrom: Trond Myklebust <[email protected]>
[ Upstream commit 474bc334698df98ce07c890f1898c7e7f389b0c7 ]
When flushing out the unstable file writes as part of a COMMIT call, try to perform most of of the data writes and waits outside the semaphore.
This means that if the client is sending the COMMIT as part of a memory reclaim operation, then it can continue performing I/O, with contention for the lock occurring only once the data sync is finished.
--- fs/nfsd/vfs.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-)
fs/nfsd/vfs.c +16 -2
@@ -1113,6 +1113,19 @@ out: }#ifdef CONFIG_NFSD_V3 +static int +nfsd_filemap_write_and_wait_range (struct nfsd_file *nf,loff_t offset, +loff_t end) +{ +struct address_space *mapping = nf->nf_file->f_mapping; +int ret =filemap_fdatawrite_range (mapping, offset, end); + +if (ret) +return ret; +filemap_fdatawait_range_keep_errors (mapping, offset, end); +return 0 ; +} +/* * Commit all pending writes to stable storage. *
@@ -1143,10 +1156,11 @@ nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp,if (err) goto out;if (EX_ISSYNC (fhp->fh_export)) { -int err2; +int err2 =nfsd_filemap_write_and_wait_range (nf, offset, end);down_write (&nf->nf_rwsem); - err2 =vfs_fsync_range (nf->nf_file, offset, end,0 ); +if (!err2) + err2 =vfs_fsync_range (nf->nf_file, offset, end,0 );switch (err2) {case 0 : nfsd_copy_boot_verifier(verf, net_generic(nf->nf_net,
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 179/243 ALSA: isa: Fix error return code in snd_cmi8330_probe()
In reply to Greg Kroah-HartmanFrom: Zhen Lei <[email protected]>
[ Upstream commit 31028cbed26a8afa25533a10425ffa2ab794c76c ]
When 'SB_HW_16' check fails, the error code -ENODEV instead of 0 should be returned, which is the same as that returned when 'WSS_HW_CMI8330' check fails.
--- sound/isa/cmi8330.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/isa/cmi8330.c +1 -1
@@ -548,7 +548,7 @@ static int snd_cmi8330_probe(struct snd_card *card, int dev) }if (acard->sb->hardware !=SB_HW_16 ) { snd_printk(KERN_ERR PFX "SB16 not found during probe\n"); -return err; +return -ENODEV ; }snd_wss_out (acard->wss,CS4231_MISC_INFO ,0x40 );/* switch on MODE2 */
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 180/243 vdpa/mlx5: Clear vq ready indication upon device reset
In reply to Greg Kroah-HartmanFrom: Eli Cohen <[email protected]>
[ Upstream commit e3aadf2e1614174dc81d52cbb9dabb77913b11c6 ]
After device reset, the virtqueues are not ready so clear the ready field.
Failing to do so can result in virtio_vdpa failing to load if the device was previously used by vhost_vdpa and the old values are ready. virtio_vdpa expects to find VQs in "not ready" state.
--- drivers/vdpa/mlx5/net/mlx5_vnet.c | 9 +++++++++ 1 file changed, 9 insertions(+)
drivers/vdpa/mlx5/net/mlx5_vnet.c +9 -0
@@ -1752,6 +1752,14 @@ out:mutex_unlock (&ndev->reslock); } +static void clear_vqs_ready (struct mlx5_vdpa_net *ndev) +{ +int i; + +for (i =0 ; i < ndev->mvdev.max_vqs; i++) + ndev->vqs[i].ready = false; +} +static void mlx5_vdpa_set_status (struct vdpa_device *vdev,u8 status) {struct mlx5_vdpa_dev *mvdev =to_mvdev (vdev);
@@ -1762,6 +1770,7 @@ static void mlx5_vdpa_set_status(struct vdpa_device *vdev, u8 status)if (!status) {mlx5_vdpa_info (mvdev,"performing device reset\n" );teardown_driver (ndev); +clear_vqs_ready (ndev);mlx5_vdpa_destroy_mr (&ndev->mvdev); ndev->mvdev.status =0 ; ndev->mvdev.mlx_features =0 ;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 181/243 NFSv4/pnfs: Fix the layout barrier update
In reply to Greg Kroah-HartmanFrom: Trond Myklebust <[email protected]>
[ Upstream commit aa95edf309ef31e2df4a37ebf0e5c2ca2a6772ab ]
If we have multiple outstanding layoutget requests, the current code to update the layout barrier assumes that the outstanding layout stateids are updated in order. That's not necessarily the case.
Instead of using the value of lo->plh_outstanding as a guesstimate for the window of values we need to accept, just wait to update the window until we're processing the last one. The intention here is just to ensure that we don't process 2^31 seqid updates without also updating the barrier.
--- fs/nfs/pnfs.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-)
fs/nfs/pnfs.c +15 -15
@@ -966,10 +966,8 @@ void pnfs_set_layout_stateid(struct pnfs_layout_hdr *lo, const nfs4_stateid *new, const struct cred *cred, bool update_barrier) { - u32 oldseq, newseq, new_barrier = 0; - - oldseq =be32_to_cpu (lo->plh_stateid.seqid); - newseq =be32_to_cpu (new->seqid); + u32 oldseq = be32_to_cpu(lo->plh_stateid.seqid); +u32 newseq =be32_to_cpu (new->seqid);if (!pnfs_layout_is_valid (lo)) {pnfs_set_layout_cred (lo, cred);
@@ -979,19 +977,21 @@ pnfs_set_layout_stateid(struct pnfs_layout_hdr *lo, const nfs4_stateid *new,clear_bit (NFS_LAYOUT_INVALID_STID , &lo->plh_flags);return ; } -if (pnfs_seqid_is_newer (newseq, oldseq)) { + +if (pnfs_seqid_is_newer (newseq, oldseq))nfs4_stateid_copy (&lo->plh_stateid, new); -/* -* Because of wraparound, we want to keep the barrier -* "close" to the current seqids. -*/ - new_barrier = newseq -atomic_read (&lo->plh_outstanding); - } -if (update_barrier) - new_barrier =be32_to_cpu (new->seqid); -else if (new_barrier ==0 ) + +if (update_barrier) { +pnfs_barrier_update (lo, newseq);return ; -pnfs_barrier_update (lo, new_barrier); + } +/* +* Because of wraparound, we want to keep the barrier +* "close" to the current seqids. We really only want to +* get here from a layoutget call. +*/ +if (atomic_read (&lo->plh_outstanding) ==1 ) +pnfs_barrier_update (lo,be32_to_cpu (lo->plh_stateid.seqid)); } static bool
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 182/243 NFSv4/pnfs: Fix layoutget behaviour after invalidation
In reply to Greg Kroah-HartmanFrom: Trond Myklebust <[email protected]>
[ Upstream commit 0b77f97a7e42adc72bd566ff8cb733ea426f74f6 ]
If the layout gets invalidated, we should wait for any outstanding layoutget requests for that layout to complete, and we should resend them only after re-establishing the layout stateid.
--- fs/nfs/pnfs.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
fs/nfs/pnfs.c +5 -5
@@ -2015,7 +2015,7 @@ lookup_again:* If the layout segment list is empty, but there are outstanding * layoutget calls, then they might be subject to a layoutrecall. */ -if (list_empty (&lo->plh_segs) && +if ((list_empty (&lo->plh_segs) || !pnfs_layout_is_valid (lo)) &&atomic_read (&lo->plh_outstanding) !=0 ) {spin_unlock (&ino->i_lock); lseg = ERR_PTR(wait_var_event_killable(&lo->plh_outstanding,
@@ -2391,11 +2391,13 @@ pnfs_layout_process(struct nfs4_layoutget *lgp) goto out_forget; } +if (!pnfs_layout_is_valid (lo) && !pnfs_is_first_layoutget (lo)) + goto out_forget; +if (nfs4_stateid_match_other (&lo->plh_stateid, &res->stateid)) {/* existing state ID, make sure the sequence number matches. */ if (pnfs_layout_stateid_blocked (lo, &res->stateid)) { -if (!pnfs_layout_is_valid (lo) && -pnfs_is_first_layoutget (lo)) +if (!pnfs_layout_is_valid (lo)) lo->plh_barrier =0 ;dprintk ("%s forget reply due to sequence\n" , __func__); goto out_forget;
@@ -2416,8 +2418,6 @@ pnfs_layout_process(struct nfs4_layoutget *lgp) goto out_forget; }else {/* We have a completely new layout */ -if (!pnfs_is_first_layoutget (lo)) - goto out_forget;pnfs_set_layout_stateid (lo, &res->stateid, lgp->cred, true); }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 183/243 NFSv4/pNFS: Dont call _nfs4_pnfs_v3_ds_connect multiple times
In reply to Greg Kroah-HartmanFrom: Trond Myklebust <[email protected]>
[ Upstream commit f46f84931a0aa344678efe412d4b071d84d8a805 ]
After we grab the lock in nfs4_pnfs_ds_connect(), there is no check for whether or not ds->ds_clp has already been initialised, so we can end up adding the same transports multiple times.
--- fs/nfs/pnfs_nfs.c | 52 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-)
fs/nfs/pnfs_nfs.c +26 -26
@@ -791,19 +791,16 @@ out: }EXPORT_SYMBOL_GPL (nfs4_pnfs_ds_add); -static void nfs4_wait_ds_connect (struct nfs4_pnfs_ds *ds) +static int nfs4_wait_ds_connect (struct nfs4_pnfs_ds *ds) {might_sleep (); -wait_on_bit (&ds->ds_state,NFS4DS_CONNECTING , -TASK_KILLABLE ); +return wait_on_bit (&ds->ds_state,NFS4DS_CONNECTING ,TASK_KILLABLE ); }static void nfs4_clear_ds_conn_bit (struct nfs4_pnfs_ds *ds) {smp_mb__before_atomic (); -clear_bit (NFS4DS_CONNECTING , &ds->ds_state); -smp_mb__after_atomic (); -wake_up_bit (&ds->ds_state,NFS4DS_CONNECTING ); +clear_and_wake_up_bit (NFS4DS_CONNECTING , &ds->ds_state); } static struct nfs_client *(*get_v3_ds_connect)(
@@ -969,30 +966,33 @@ int nfs4_pnfs_ds_connect(struct nfs_server *mds_srv, struct nfs4_pnfs_ds *ds, {int err; -again: - err =0 ; -if (test_and_set_bit (NFS4DS_CONNECTING , &ds->ds_state) ==0 ) { -if (version ==3 ) { - err =_nfs4_pnfs_v3_ds_connect (mds_srv, ds, timeo, - retrans); - }else if (version ==4 ) { - err =_nfs4_pnfs_v4_ds_connect (mds_srv, ds, timeo, - retrans, minor_version); - }else { -dprintk ("%s: unsupported DS version %d\n" , __func__, - version); - err = -EPROTONOSUPPORT ; - } +do { + err =nfs4_wait_ds_connect (ds); +if (err || ds->ds_clp) + goto out; +if (nfs4_test_deviceid_unavailable (devid)) +return -ENODEV ; + }while (test_and_set_bit (NFS4DS_CONNECTING , &ds->ds_state) !=0 ); -nfs4_clear_ds_conn_bit (ds); - }else { -nfs4_wait_ds_connect (ds); +if (ds->ds_clp) + goto connect_done; -/* what was waited on didn't connect AND didn't mark unavail */ -if (!ds->ds_clp && !nfs4_test_deviceid_unavailable (devid)) - goto again; +switch (version) { +case 3 : + err =_nfs4_pnfs_v3_ds_connect (mds_srv, ds, timeo, retrans); +break ; +case 4 : + err =_nfs4_pnfs_v4_ds_connect (mds_srv, ds, timeo, retrans, + minor_version); +break ; +default : +dprintk ("%s: unsupported DS version %d\n" , __func__, version); + err = -EPROTONOSUPPORT ; } +connect_done: +nfs4_clear_ds_conn_bit (ds); +out:/* * At this point the ds->ds_clp should be ready, but it might have * hit an error.
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 184/243 hexagon: handle {,SOFT}IRQENTRY_TEXT in linker script
In reply to Greg Kroah-HartmanFrom: Nathan Chancellor <[email protected]>
[ Upstream commit 6fef087d0d37ba7dba8f3d75566eb4c256cd6742 ]
Patch series "hexagon: Fix build error with CONFIG_STACKDEPOT and select CONFIG_ARCH_WANT_LD_ORPHAN_WARN".
This series fixes an error with ARCH=hexagon that was pointed out by the patch "mm/slub: use stackdepot to save stack trace in objects".
The first patch fixes that error by handling the '.irqentry.text' and '.softirqentry.text' sections.
The second patch switches Hexagon over to the common DISCARDS macro, which should have been done when Hexagon was merged into the tree to match commit 023bf6f1b8bf ("linker script: unify usage of discard definition").
The third patch selects CONFIG_ARCH_WANT_LD_ORPHAN_WARN so that something like this does not happen again.
This patch (of 3):
Patch "mm/slub: use stackdepot to save stack trace in objects" in -mm selects CONFIG_STACKDEPOT when CONFIG_STACKTRACE_SUPPORT is selected and CONFIG_STACKDEPOT requires IRQENTRY_TEXT and SOFTIRQENTRY_TEXT to be handled after commit 505a0ef15f96 ("kasan: stackdepot: move filter_irq_stacks() to stackdepot.c") due to the use of the __{,soft}irqentry_text_{start,end} section symbols. If those sections are not handled, the build is broken.
$ make ARCH=hexagon CROSS_COMPILE=hexagon-linux- LLVM=1 LLVM_IAS=1 defconfig all ... ld.lld: error: undefined symbol: __irqentry_text_start
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
referenced by
stackdepot.c
stackdepot.o:(filter_irq_stacks) in archivelib/built-in.a
referenced bystackdepot.c
stackdepot.o:(filter_irq_stacks) in archivelib/built-in.a
ld.lld: error: undefined symbol: __irqentry_text_end
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
referenced by
stackdepot.c
stackdepot.o:(filter_irq_stacks) in archivelib/built-in.a
referenced bystackdepot.c
stackdepot.o:(filter_irq_stacks) in archivelib/built-in.a
ld.lld: error: undefined symbol: __softirqentry_text_start
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
referenced by
stackdepot.c
stackdepot.o:(filter_irq_stacks) in archivelib/built-in.a
referenced bystackdepot.c
stackdepot.o:(filter_irq_stacks) in archivelib/built-in.a
ld.lld: error: undefined symbol: __softirqentry_text_end
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
referenced by
stackdepot.c
stackdepot.o:(filter_irq_stacks) in archivelib/built-in.a
referenced bystackdepot.c
stackdepot.o:(filter_irq_stacks) in archivelib/built-in.a
...
Add these sections to the Hexagon linker script so the build continues to work. ld.lld's orphan section warning would have caught this prior to the -mm commit mentioned above:
ld.lld: warning: kernel/built-in.a(softirq.o):(.softirqentry.text) is being placed in '.softirqentry.text' ld.lld: warning: kernel/built-in.a(softirq.o):(.softirqentry.text) is being placed in '.softirqentry.text' ld.lld: warning: kernel/built-in.a(softirq.o):(.softirqentry.text) is being placed in '.softirqentry.text'
--- arch/hexagon/kernel/vmlinux.lds.S | 2 ++ 1 file changed, 2 insertions(+)
arch/hexagon/kernel/vmlinux.lds.S +2 -0
@@ -38,6 +38,8 @@ SECTIONS .text : AT(ADDR(.text)) { _text = .; TEXT_TEXT + IRQENTRY_TEXT + SOFTIRQENTRY_TEXT SCHED_TEXT CPUIDLE_TEXT LOCK_TEXT
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 185/243 hexagon: use common DISCARDS macro
In reply to Greg Kroah-HartmanFrom: Nathan Chancellor <[email protected]>
[ Upstream commit 681ba73c72302214686401e707e2087ed11a6556 ]
ld.lld warns that the '.modinfo' section is not currently handled:
ld.lld: warning: kernel/built-in.a(workqueue.o):(.modinfo) is being placed in '.modinfo' ld.lld: warning: kernel/built-in.a(printk/printk.o):(.modinfo) is being placed in '.modinfo' ld.lld: warning: kernel/built-in.a(irq/spurious.o):(.modinfo) is being placed in '.modinfo' ld.lld: warning: kernel/built-in.a(rcu/update.o):(.modinfo) is being placed in '.modinfo'
The '.modinfo' section was added in commit 898490c010b5 ("moduleparam:
Save information about built-in modules in separate file") to the DISCARDS macro but Hexagon has never used that macro. The unification of DISCARDS happened in commit 023bf6f1b8bf ("linker script: unify usage of discard definition") in 2009, prior to Hexagon being added in 2011.
Switch Hexagon over to the DISCARDS macro so that anything that is expected to be discarded gets discarded.
--- arch/hexagon/kernel/vmlinux.lds.S | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)
arch/hexagon/kernel/vmlinux.lds.S +1 -6
@@ -61,14 +61,9 @@ SECTIONS _end = .; - /DISCARD/ : { - EXIT_TEXT - EXIT_DATA - EXIT_CALL - } - STABS_DEBUG DWARF_DEBUG ELF_DETAILS + DISCARDS }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 186/243 ARM: dts: gemini-rut1xx: remove duplicate ethernet node
In reply to Greg Kroah-HartmanFrom: Corentin Labbe <[email protected]>
[ Upstream commit 3d3bb3d27cd371d3edb43eeb1beb8ae4e92a356d ]
Two ethernet node was added by
commit 95220046a62c ("ARM: dts: Add ethernet to a bunch of platforms") and commit d6d0cef55e5b ("ARM: dts: Add the FOTG210 USB host to Gemini boards")
This patch removes the duplicate one.
--- arch/arm/boot/dts/gemini-rut1xx.dts | 12 ------------ 1 file changed, 12 deletions(-)
arch/arm/boot/dts/gemini-rut1xx.dts +0 -12
@@ -125,18 +125,6 @@ }; }; - ethernet@60000000 { - status = "okay"; - - ethernet-port@0 { - phy-mode = "rgmii"; - phy-handle = <&phy0>; - }; - ethernet-port@1 { - /* Not used in this platform */ - }; - }; - usb@68000000 { status = "okay"; };
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 187/243 reset: RESET_BRCMSTB_RESCAL should depend on ARCH_BRCMSTB
In reply to Greg Kroah-HartmanFrom: Geert Uytterhoeven <[email protected]>
[ Upstream commit 42f6a76fbe85e5243f83a3ed76809b1ebbb7087e ]
The Broadcom STB RESCAL reset controller is only present on Broadcom BCM7216 platforms. Hence add a dependency on ARCH_BRCMSTB, to prevent asking the user about this driver when configuring a kernel without BCM7216 support.
Also, merely enabling CONFIG_COMPILE_TEST should not enable additional code, and thus should not enable this driver by default.
--- drivers/reset/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/reset/Kconfig +2 -1
@@ -52,7 +52,8 @@ config RESET_BRCMSTB config RESET_BRCMSTB_RESCAL bool "Broadcom STB RESCAL reset controller" depends on HAS_IOMEM - default ARCH_BRCMSTB || COMPILE_TEST + depends on ARCH_BRCMSTB || COMPILE_TEST + default ARCH_BRCMSTB help This enables the RESCAL reset controller for SATA, PCIe0, or PCIe1 on BCM7216.
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 188/243 reset: RESET_INTEL_GW should depend on X86
In reply to Greg Kroah-HartmanFrom: Geert Uytterhoeven <[email protected]>
[ Upstream commit 6ab9d6219f86f0db916105444813aafce626a2f4 ]
The Intel Gateway reset controller is only present on Intel Gateway platforms. Hence add a dependency on X86, to prevent asking the user about this driver when configuring a kernel without Intel Gateway support.
--- drivers/reset/Kconfig | 1 + 1 file changed, 1 insertion(+)
drivers/reset/Kconfig +1 -0
@@ -76,6 +76,7 @@ config RESET_IMX7 config RESET_INTEL_GW bool "Intel Reset Controller Driver" + depends on X86 || COMPILE_TEST depends on OF && HAS_IOMEM select REGMAP_MMIO help
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 189/243 reset: a10sr: add missing of_match_table reference
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit 466ba3c8ff4fae39e455ff8d080b3d5503302765 ]
The driver defined of_device_id table but did not use it with of_match_table. This prevents usual matching via devicetree and causes a W=1 warning:
drivers/reset/reset-a10sr.c:111:34: warning:
‘a10sr_reset_of_match’ defined but not used [-Wunused-const-variable=]
--- drivers/reset/reset-a10sr.c | 1 + 1 file changed, 1 insertion(+)
drivers/reset/reset-a10sr.c +1 -0
@@ -118,6 +118,7 @@ static struct platform_driver a10sr_reset_driver = { .probe = a10sr_reset_probe, .driver = { .name = "altr_a10sr_reset", + .of_match_table = a10sr_reset_of_match, }, };module_platform_driver (a10sr_reset_driver);
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 190/243 ARM: exynos: add missing of_node_put for loop iteration
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit 48d551bf20858240f38a0276be3016ff379918ac ]
Early exits from for_each_compatible_node() should decrement the node reference counter. Reported by Coccinelle:
arch/arm/mach-exynos/exynos.c:52:1-25: WARNING:
Function "for_each_compatible_node" should have of_node_put() before break around line 58.
--- arch/arm/mach-exynos/exynos.c | 2 ++ 1 file changed, 2 insertions(+)
arch/arm/mach-exynos/exynos.c +2 -0
@@ -55,6 +55,7 @@ void __init exynos_sysram_init(void) sysram_base_addr =of_iomap (node,0 ); sysram_base_phys =of_translate_address (node,of_get_address (node,0 ,NULL ,NULL )); +of_node_put (node);break ; }
@@ -62,6 +63,7 @@ void __init exynos_sysram_init(void)if (!of_device_is_available (node))continue ; sysram_ns_base_addr =of_iomap (node,0 ); +of_node_put (node);break ; } }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 191/243 ARM: dts: exynos: fix PWM LED max brightness on Odroid XU/XU3
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit 75121e1dc9fe4def41e63d57f6a53749b88006ed ]
There is no "max_brightness" property. This brings the intentional brightness reduce of green LED and dtschema checks as well:
arch/arm/boot/dts/exynos5410-odroidxu.dt.yaml: led-controller-1: led-1: 'max-brightness' is a required property
--- arch/arm/boot/dts/exynos54xx-odroidxu-leds.dtsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/boot/dts/exynos54xx-odroidxu-leds.dtsi +2 -2
@@ -22,7 +22,7 @@ * Green LED is much brighter than the others * so limit its max brightness */ - max_brightness = <127>; + max-brightness = <127>; linux,default-trigger = "mmc0"; };
@@ -30,7 +30,7 @@ label = "blue:heartbeat"; pwms = <&pwm 2 2000000 0>; pwm-names = "pwm2"; - max_brightness = <255>; + max-brightness = <255>; linux,default-trigger = "heartbeat"; }; };
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 192/243 ARM: dts: exynos: fix PWM LED max brightness on Odroid HC1
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit a7e59c84cf2055a1894f45855c8319191f2fa59e ]
There is no "max_brightness" property as pointed out by dtschema:
arch/arm/boot/dts/exynos5422-odroidhc1.dt.yaml: led-controller: led-1: 'max-brightness' is a required property
--- arch/arm/boot/dts/exynos5422-odroidhc1.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/exynos5422-odroidhc1.dts +1 -1
@@ -22,7 +22,7 @@ label = "blue:heartbeat"; pwms = <&pwm 2 2000000 0>; pwm-names = "pwm2"; - max_brightness = <255>; + max-brightness = <255>; linux,default-trigger = "heartbeat"; }; };
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 193/243 ARM: dts: exynos: fix PWM LED max brightness on Odroid XU4
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit fd2f1717966535b7d0b6fe45cf0d79e94330da5f ]
There is no "max_brightness" property as pointed out by dtschema:
arch/arm/boot/dts/exynos5422-odroidxu4.dt.yaml: led-controller: led-1: 'max-brightness' is a required property
--- arch/arm/boot/dts/exynos5422-odroidxu4.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/exynos5422-odroidxu4.dts +1 -1
@@ -24,7 +24,7 @@ label = "blue:heartbeat"; pwms = <&pwm 2 2000000 0>; pwm-names = "pwm2"; - max_brightness = <255>; + max-brightness = <255>; linux,default-trigger = "heartbeat"; }; };
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 194/243 memory: stm32-fmc2-ebi: add missing of_node_put for loop iteration
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit 2f9dc6a357ff3b82c1e54d29fb5d52b8d4a0c587 ]
Early exits from for_each_available_child_of_node() should decrement the node reference counter. Reported by Coccinelle:
drivers/memory/stm32-fmc2-ebi.c:1046:1-33: WARNING:
Function "for_each_available_child_of_node" should have of_node_put() before return around line 1051.
--- drivers/memory/stm32-fmc2-ebi.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/memory/stm32-fmc2-ebi.c +4 -0
@@ -1048,16 +1048,19 @@ static int stm32_fmc2_ebi_parse_dt(struct stm32_fmc2_ebi *ebi)if (ret) {dev_err (dev,"could not retrieve reg property: %d\n" , ret); +of_node_put (child);return ret; }if (bank >=FMC2_MAX_BANKS ) {dev_err (dev,"invalid reg value: %d\n" , bank); +of_node_put (child);return -EINVAL ; }if (ebi->bank_assigned &BIT (bank)) {dev_err (dev,"bank already assigned: %d\n" , bank); +of_node_put (child);return -EINVAL ; }
@@ -1066,6 +1069,7 @@ static int stm32_fmc2_ebi_parse_dt(struct stm32_fmc2_ebi *ebi)if (ret) {dev_err (dev,"setup chip select %d failed: %d\n" , bank, ret); +of_node_put (child);return ret; } }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 195/243 memory: atmel-ebi: add missing of_node_put for loop iteration
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit 907c5bbb514a4676160e79764522fff56ce3448e ]
Early exits from for_each_available_child_of_node() should decrement the node reference counter. Reported by Coccinelle:
drivers/memory/atmel-ebi.c:593:1-33: WARNING:
Function "for_each_available_child_of_node" should have of_node_put() before return around line 604.
--- drivers/memory/atmel-ebi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/memory/atmel-ebi.c +3 -1
@@ -600,8 +600,10 @@ static int atmel_ebi_probe(struct platform_device *pdev) child); ret =atmel_ebi_dev_disable (ebi, child); -if (ret) +if (ret) { +of_node_put (child);return ret; + } } }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 196/243 reset: brcmstb: Add missing MODULE_DEVICE_TABLE
In reply to Greg Kroah-HartmanFrom: Zou Wei <[email protected]>
[ Upstream commit e207457f9045343a24d936fbb67eb4b412f1c6ad ]
This patch adds missing MODULE_DEVICE_TABLE definition which generates correct modalias for automatic loading of this driver when it is built as an external module.
--- drivers/reset/reset-brcmstb.c | 1 + 1 file changed, 1 insertion(+)
drivers/reset/reset-brcmstb.c +1 -0
@@ -111,6 +111,7 @@ static const struct of_device_id brcmstb_reset_of_match[] = { { .compatible = "brcm,brcmstb-reset" }, {/* sentinel */ } }; +MODULE_DEVICE_TABLE (of, brcmstb_reset_of_match);static struct platform_driver brcmstb_reset_driver = { .probe = brcmstb_reset_probe,
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 197/243 memory: pl353: Fix error return code in pl353_smc_probe()
In reply to Greg Kroah-HartmanFrom: Zhen Lei <[email protected]>
[ Upstream commit 76e5624f3f9343a621dd3f4006f4e4d9c3f91e33 ]
When no child nodes are matched, an appropriate error code -ENODEV should be returned. However, we currently do not explicitly assign this error code to 'err'. As a result, 0 was incorrectly returned.
--- drivers/memory/pl353-smc.c | 1 + 1 file changed, 1 insertion(+)
drivers/memory/pl353-smc.c +1 -0
@@ -407,6 +407,7 @@ static int pl353_smc_probe(struct amba_device *adev, const struct amba_id *id)break ; }if (!match) { + err = -ENODEV ;dev_err (&adev->dev,"no matching children\n" ); goto out_clk_disable; }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 198/243 ARM: dts: sun8i: h3: orangepi-plus: Fix ethernet phy-mode
In reply to Greg Kroah-HartmanFrom: Salvatore Bonaccorso <[email protected]>
[ Upstream commit b19d3479f25e8a0ff24df0b46c82e50ef0f900dd ]
Commit bbc4d71d6354 ("net: phy: realtek: fix rtl8211e rx/tx delay config") sets the RX/TX delay according to the phy-mode property in the device tree. For the Orange Pi Plus board this is "rgmii", which is the wrong setting.
Following the example of a900cac3750b ("ARM: dts: sun7i: a20: bananapro:
Fix ethernet phy-mode") the phy-mode is changed to "rgmii-id" which gets the Ethernet working again on this board.
--- arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts +1 -1
@@ -85,7 +85,7 @@ pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; };
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 199/243 rtc: fix snprintf() checking in is_rtc_hctosys()
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit 54b909436ede47e0ee07f1765da27ec2efa41e84 ]
The scnprintf() function silently truncates the printf() and returns the number bytes that it was able to copy (not counting the NUL terminator). Thus, the highest value it can return here is "NAME_SIZE - 1" and the overflow check is dead code. Fix this by using the snprintf() function which returns the number of bytes that would have been copied if there was enough space and changing the condition from "> NAME_SIZE" to ">= NAME_SIZE".
--- drivers/rtc/proc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/rtc/proc.c +2 -2
@@ -23,8 +23,8 @@ static bool is_rtc_hctosys(struct rtc_device *rtc)int size;char name[NAME_SIZE ]; - size =scnprintf (name,NAME_SIZE ,"rtc%d" , rtc->id); -if (size >NAME_SIZE ) + size =snprintf (name,NAME_SIZE ,"rtc%d" , rtc->id); +if (size >=NAME_SIZE )return false;return !strncmp (name,CONFIG_RTC_HCTOSYS_DEVICE ,NAME_SIZE );
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 200/243 arm64: dts: renesas: v3msk: Fix memory size
In reply to Greg Kroah-HartmanFrom: Valentine Barshak <[email protected]>
[ Upstream commit a422ec20caef6a50cf3c1efa93538888ebd576a6 ]
The V3MSK board has 2 GiB RAM according to the datasheet and schematics.
--- arch/arm64/boot/dts/renesas/r8a77970-v3msk.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/renesas/r8a77970-v3msk.dts +1 -1
@@ -59,7 +59,7 @@ memory@48000000 { device_type = "memory"; /* first 128MB is reserved for secure area. */ - reg = <0x0 0x48000000 0x0 0x38000000>; + reg = <0x0 0x48000000 0x0 0x78000000>; }; osc5_clk: osc5-clock {
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 201/243 ARM: dts: r8a7779, marzen: Fix DU clock names
In reply to Greg Kroah-HartmanFrom: Geert Uytterhoeven <[email protected]>
[ Upstream commit 6ab8c23096a29b69044209a5925758a6f88bd450 ]
"make dtbs_check" complains:
arch/arm/boot/dts/r8a7779-marzen.dt.yaml: display@fff80000: clock-names:0: 'du.0' was expected
Change the first clock name to match the DT bindings.
This has no effect on actual operation, as the Display Unit driver in Linux does not use the first clock name on R-Car H1, but just grabs the first clock.
--- arch/arm/boot/dts/r8a7779-marzen.dts | 2 +- arch/arm/boot/dts/r8a7779.dtsi | 1 + 2 files changed, 2 insertions(+), 1 deletion(-)
arch/arm/boot/dts/r8a7779-marzen.dts +1 -1
@@ -145,7 +145,7 @@ status = "okay"; clocks = <&mstp1_clks R8A7779_CLK_DU>, <&x3_clk>; - clock-names = "du", "dclkin.0"; + clock-names = "du.0", "dclkin.0"; ports { port@0 {
arch/arm/boot/dts/r8a7779.dtsi +1 -0
@@ -463,6 +463,7 @@ reg = <0xfff80000 0x40000>; interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; clocks = <&mstp1_clks R8A7779_CLK_DU>; + clock-names = "du.0"; power-domains = <&sysc R8A7779_PD_ALWAYS_ON>; status = "disabled";
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 202/243 arm64: dts: ti: j7200-main: Enable USB2 PHY RX sensitivity workaround
In reply to Greg Kroah-HartmanFrom: Roger Quadros <[email protected]>
[ Upstream commit a2894d85f44ba3f2bdf5806c8dc62e2ec40c1c09 ]
Enable work around feature built into the controller to address issue with RX Sensitivity for USB2 PHY.
--- arch/arm64/boot/dts/ti/k3-j7200-main.dtsi | 1 + 1 file changed, 1 insertion(+)
arch/arm64/boot/dts/ti/k3-j7200-main.dtsi +1 -0
@@ -446,6 +446,7 @@ "otg"; maximum-speed = "super-speed"; dr_mode = "otg"; + cdns,phyrst-a-enable; }; }; };
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 203/243 arm64: dts: renesas: Add missing opp-suspend properties
In reply to Greg Kroah-HartmanFrom: Geert Uytterhoeven <[email protected]>
[ Upstream commit 44b615ac9fab16d1552cd8360454077d411e3c35 ]
Tag the highest "Power Optimized" (1.5 GHz) Cortex-A57 operating point table entries for the RZ/G2M, R-Car M3-W and M3-W+ SoCs with the "opp-suspend" property. This makes sure the system will enter suspend in the same performance state as it will be resumed by the firmware later, avoiding state inconsistencies after resume.
Based on a patch for R-Car M3-W in the BSP by Takeshi Kihara <[email protected]>.
--- arch/arm64/boot/dts/renesas/r8a774a1.dtsi | 1 + arch/arm64/boot/dts/renesas/r8a77960.dtsi | 1 + arch/arm64/boot/dts/renesas/r8a77961.dtsi | 1 + 3 files changed, 3 insertions(+)
arch/arm64/boot/dts/renesas/r8a774a1.dtsi +1 -0
@@ -76,6 +76,7 @@ opp-hz = /bits/ 64 <1500000000>; opp-microvolt = <820000>; clock-latency-ns = <300000>; + opp-suspend; }; };
arch/arm64/boot/dts/renesas/r8a77960.dtsi +1 -0
@@ -75,6 +75,7 @@ opp-hz = /bits/ 64 <1500000000>; opp-microvolt = <820000>; clock-latency-ns = <300000>; + opp-suspend; }; opp-1600000000 { opp-hz = /bits/ 64 <1600000000>;
arch/arm64/boot/dts/renesas/r8a77961.dtsi +1 -0
@@ -64,6 +64,7 @@ opp-hz = /bits/ 64 <1500000000>; opp-microvolt = <820000>; clock-latency-ns = <300000>; + opp-suspend; }; opp-1600000000 { opp-hz = /bits/ 64 <1600000000>;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 204/243 arm64: dts: renesas: r8a7796[01]: Fix OPP table entry voltages
In reply to Greg Kroah-HartmanFrom: Geert Uytterhoeven <[email protected]>
[ Upstream commit 659b38203f04f5c3d1dc60f1a3e54b582ad3841c ]
Correct the voltages in the "Power Optimized" (<= 1.5 GHz) Cortex-A57 operating point table entries for the R-Car M3-W and M3-W+ SoCs from 0.82V to 0.83V, as per the R-Car Gen3 EC Manual Errata for Revision 0.53.
Based on a patch for R-Car M3-W in the BSP by Takeshi Kihara <[email protected]>.
--- arch/arm64/boot/dts/renesas/r8a77960.dtsi | 6 +++--- arch/arm64/boot/dts/renesas/r8a77961.dtsi | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-)
arch/arm64/boot/dts/renesas/r8a77960.dtsi +3 -3
@@ -63,17 +63,17 @@ opp-500000000 { opp-hz = /bits/ 64 <500000000>; - opp-microvolt = <820000>; + opp-microvolt = <830000>; clock-latency-ns = <300000>; }; opp-1000000000 { opp-hz = /bits/ 64 <1000000000>; - opp-microvolt = <820000>; + opp-microvolt = <830000>; clock-latency-ns = <300000>; }; opp-1500000000 { opp-hz = /bits/ 64 <1500000000>; - opp-microvolt = <820000>; + opp-microvolt = <830000>; clock-latency-ns = <300000>; opp-suspend; };
arch/arm64/boot/dts/renesas/r8a77961.dtsi +3 -3
@@ -52,17 +52,17 @@ opp-500000000 { opp-hz = /bits/ 64 <500000000>; - opp-microvolt = <820000>; + opp-microvolt = <830000>; clock-latency-ns = <300000>; }; opp-1000000000 { opp-hz = /bits/ 64 <1000000000>; - opp-microvolt = <820000>; + opp-microvolt = <830000>; clock-latency-ns = <300000>; }; opp-1500000000 { opp-hz = /bits/ 64 <1500000000>; - opp-microvolt = <820000>; + opp-microvolt = <830000>; clock-latency-ns = <300000>; opp-suspend; };
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 205/243 ARM: dts: stm32: Connect PHY IRQ line on DH STM32MP1 SoM
In reply to Greg Kroah-HartmanFrom: Marek Vasut <[email protected]>
[ Upstream commit 516728273ddfbf51b3d0fcaac05d26e299a7b456 ]
On the production DHCOM STM32MP15xx SoM, the PHY IRQ line is connected to the PI11 pin. Describe it in the DT as well, so the PHY IRQ can be used e.g. to detect cable insertion and removal.
--- arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi | 2 ++ 1 file changed, 2 insertions(+)
arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi +2 -0
@@ -127,6 +127,8 @@ phy0: ethernet-phy@1 { reg = <1>; + interrupt-parent = <&gpioi>; + interrupts = <11 IRQ_TYPE_LEVEL_LOW>; }; }; };
Signature · 9 lines
2.30.2 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Greg Kroah-Hartman
maintainerPATCH 206/243 ARM: dts: stm32: Rework LAN8710Ai PHY reset on DHCOM SoM
In reply to Greg Kroah-HartmanFrom: Marek Vasut <[email protected]>
[ Upstream commit 1cebcf9932ab76102e8cfc555879574693ba8956 ]
The Microchip LAN8710Ai PHY requires XTAL1/CLKIN external clock to be enabled when the nRST is toggled according to datasheet Microchip LAN8710A/LAN8710Ai DS00002164B page 35 section 3.8.5.1 Hardware Reset:
"
A Hardware reset is asserted by driving the nRST input pin low. When driven, nRST should be held low for the minimum time detailed in Section 5.5.3, "Power-On nRST & Configuration Strap Timing," on page 59 to ensure a proper transceiver reset. During a Hardware reset, an external clock must be supplied to the XTAL1/CLKIN signal.
"
This is accidentally fulfilled in the current setup, where ETHCK_K is used to supply both PHY XTAL1/CLKIN and is also fed back through eth_clk_fb to supply ETHRX clock of the DWMAC. Hence, the DWMAC enables ETHRX clock, that has ETHCK_K as parent, so ETHCK_K clock are also enabled, and then the PHY reset toggles.
However, this is not always the case, e.g. in case the PHY XTAL1/CLKIN clock are supplied by some other clock source than ETHCK_K or in case ETHRX clock are not supplied by ETHCK_K. In the later case, ETHCK_K would be kept disabled, while ETHRX clock would be enabled, so the PHY would not be receiving XTAL1/CLKIN clock and the reset would fail.
Improve the DT by adding the PHY clock phandle into the PHY node, which then also requires moving the PHY reset GPIO specifier in the same place and that then also requires correct PHY reset GPIO timing, so add that too.
A brief note regarding the timing, the datasheet says the reset should stay asserted for at least 100uS and software should wait at least 200nS after deassertion. Set both delays to 500uS which should be plenty.
--- arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi +7 -1
@@ -118,7 +118,6 @@ max-speed = <100>; phy-handle = <&phy0>; st,eth-ref-clk-sel; - phy-reset-gpios = <&gpioh 3 GPIO_ACTIVE_LOW>; mdio0 { #address-cells = <1>;
@@ -127,6 +126,13 @@ phy0: ethernet-phy@1 { reg = <1>; + /* LAN8710Ai */ + compatible = "ethernet-phy-id0007.c0f0", + "ethernet-phy-ieee802.3-c22"; + clocks = <&rcc ETHCK_K>; + reset-gpios = <&gpioh 3 GPIO_ACTIVE_LOW>; + reset-assert-us = <500>; + reset-deassert-us = <500>; interrupt-parent = <&gpioi>; interrupts = <11 IRQ_TYPE_LEVEL_LOW>; };
Signature · 9 lines
2.30.2 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Greg Kroah-Hartman
maintainerPATCH 207/243 arm64: dts: qcom: msm8994-angler: Fix gpio-reserved-ranges 85-88
In reply to Greg Kroah-HartmanFrom: Petr Vorel <[email protected]>
[ Upstream commit f890f89d9a80fffbfa7ca791b78927e5b8aba869 ]
Reserve GPIO pins 85-88 as these aren't meant to be accessible from the application CPUs (causes reboot). Yet another fix similar to 9134586715e3, 5f8d3ab136d0, which is needed to allow angler to boot after 3edfb7bd76bd ("gpiolib: Show correct direction from the beginning").
--- arch/arm64/boot/dts/qcom/msm8994-angler-rev-101.dts | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm64/boot/dts/qcom/msm8994-angler-rev-101.dts +4 -0
@@ -32,3 +32,7 @@ }; }; }; + +&tlmm { + gpio-reserved-ranges = <85 4>; +};
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 208/243 arm64: dts: qcom: trogdor: Add no-hpd to DSI bridge node
In reply to Greg Kroah-HartmanFrom: Stephen Boyd <[email protected]>
[ Upstream commit 5f551b5ce55575b14c26933fe9b49365ea246b3d ]
We should indicate that we're not using the HPD pin on this device, per the binding document. Otherwise if code in the future wants to enable HPD in the bridge when this property is absent we'll be wasting power powering hpd when we don't use it on trogdor boards. We didn't notice this before because the kernel driver blindly disables hpd, but that won't be true for much longer.
--- arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi +2 -0
@@ -622,6 +622,8 @@ edp_brij_i2c: &i2c2 { clocks = <&rpmhcc RPMH_LN_BB_CLK3>; clock-names = "refclk"; + no-hpd; + ports { #address-cells = <1>; #size-cells = <0>;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 209/243 firmware: tegra: Fix error return code in tegra210_bpmp_init()
In reply to Greg Kroah-HartmanFrom: Zhen Lei <[email protected]>
[ Upstream commit 7fea67710e9f6a111a2c9440576f2396ccd92d57 ]
When call irq_get_irq_data() to get the IRQ's irq_data failed, an appropriate error code -ENOENT should be returned. However, we directly return 'err', which records the IRQ number instead of the error code.
--- drivers/firmware/tegra/bpmp-tegra210.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/firmware/tegra/bpmp-tegra210.c +1 -1
@@ -210,7 +210,7 @@ static int tegra210_bpmp_init(struct tegra_bpmp *bpmp) priv->tx_irq_data =irq_get_irq_data (err);if (!priv->tx_irq_data) {dev_err (&pdev->dev,"failed to get IRQ data for TX IRQ\n" ); -return err; +return -ENOENT ; } err =platform_get_irq_byname (pdev,"rx" );
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 210/243 firmware: arm_scmi: Reset Rx buffer to max size during async commands
In reply to Greg Kroah-HartmanFrom: Cristian Marussi <[email protected]>
[ Upstream commit 0cb7af474e0dbb2f500c67aa62b6db9fafa74de2 ]
During an async commands execution the Rx buffer length is at first set to max_msg_sz when the synchronous part of the command is first sent. However once the synchronous part completes the transport layer waits for the delayed response which will be processed using the same xfer descriptor initially allocated. Since synchronous response received at the end of the xfer will shrink the Rx buffer length to the effective payload response length, it needs to be reset again.
Raise the Rx buffer length again to max_msg_sz before fetching the delayed response to ensure full response is read correctly from the shared memory.
[sudeep.holla: moved reset to scmi_handle_response as it could race with
do_xfer_with_response]
--- drivers/firmware/arm_scmi/driver.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/firmware/arm_scmi/driver.c +4 -0
@@ -268,6 +268,10 @@ static void scmi_handle_response(struct scmi_chan_info *cinfo,return ; } +/* rx.len could be shrunk in the sync do_xfer, so reset to maxsz */ +if (msg_type ==MSG_TYPE_DELAYED_RESP ) + xfer->rx.len = info->desc->max_msg_size; +scmi_dump_header_dbg (dev, &xfer->hdr); info->desc->ops->fetch_response (cinfo, xfer);
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 211/243 dt-bindings: i2c: at91: fix example for scl-gpios
In reply to Greg Kroah-HartmanFrom: Nicolas Ferre <[email protected]>
[ Upstream commit 92e669017ff1616ba7d8ba3c65f5193bc2a7acbe ]
The SCL gpio pin used by I2C bus for recovery needs to be configured as open drain, so fix the binding example accordingly.
In relation with fix c5a283802573 ("ARM: dts: at91: Configure I2C SCL gpio as open drain").
--- Documentation/devicetree/bindings/i2c/i2c-at91.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Documentation/devicetree/bindings/i2c/i2c-at91.txt +1 -1
@@ -73,7 +73,7 @@ i2c0: i2c@f8034600 { pinctrl-0 = <&pinctrl_i2c0>; pinctrl-1 = <&pinctrl_i2c0_gpio>; sda-gpios = <&pioA 30 GPIO_ACTIVE_HIGH>; - scl-gpios = <&pioA 31 GPIO_ACTIVE_HIGH>; + scl-gpios = <&pioA 31 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; wm8731: wm8731@1a { compatible = "wm8731";
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 212/243 ARM: dts: BCM5301X: Fixup SPI binding
In reply to Greg Kroah-HartmanFrom: Rafał Miłecki <[email protected]>
[ Upstream commit d5aede3e6dd1b8ca574600a1ecafe1e580c53f2f ]
1. Reorder interrupts
2. Fix typo: s/spi_lr_overhead/spi_lr_overread/
3. Rename node: s/spi-nor@0/flash@0/
This fixes:arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dt.yaml: spi@18029200: interrupt-names: 'oneOf' conditional failed, one must be fixed:
['spi_lr_fullness_reached', 'spi_lr_session_aborted', 'spi_lr_impatient', 'spi_lr_session_done', 'spi_lr_overhead', 'mspi_done', 'mspi_halted'] is too long Additional items are not allowed ('spi_lr_session_aborted', 'spi_lr_impatient', 'spi_lr_session_done', 'spi_lr_overhead', 'mspi_done', 'mspi_halted' were unexpected) 'mspi_done' was expected
'spi_l1_intr' was expected
'mspi_halted' was expected
'spi_lr_fullness_reached' was expected
'spi_lr_session_aborted' was expected
'spi_lr_impatient' was expected
'spi_lr_session_done' was expected
'spi_lr_overread' was expected
From schema: Documentation/devicetree/bindings/spi/brcm,spi-bcm-qspi.yamlarch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dt.yaml: spi-nor@0: $nodename:0: 'spi-nor@0' does not match '^flash(@.*)?$'
From schema: Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml
--- arch/arm/boot/dts/bcm5301x.dtsi | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
arch/arm/boot/dts/bcm5301x.dtsi +9 -9
@@ -515,27 +515,27 @@ <0x1811b408 0x004>, <0x180293a0 0x01c>; reg-names = "mspi", "bspi", "intr_regs", "intr_status_reg"; - interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, + interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "spi_lr_fullness_reached", + <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "mspi_done", + "mspi_halted", + "spi_lr_fullness_reached", "spi_lr_session_aborted", "spi_lr_impatient", "spi_lr_session_done", - "spi_lr_overhead", - "mspi_done", - "mspi_halted"; + "spi_lr_overread"; clocks = <&iprocmed>; clock-names = "iprocmed"; num-cs = <2>; #address-cells = <1>; #size-cells = <0>; - spi_nor: spi-nor@0 { + spi_nor: flash@0 { compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <20000000>;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 213/243 reset: bail if try_module_get() fails
In reply to Greg Kroah-HartmanFrom: Philipp Zabel <[email protected]>
[ Upstream commit 4fb26fb83f0def3d39c14e268bcd4003aae8fade ]
Abort instead of returning a new reset control for a reset controller device that is going to have its module unloaded.
--- drivers/reset/core.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/reset/core.c +4 -1
@@ -567,7 +567,10 @@ static struct reset_control *__reset_control_get_internal(if (!rstc)return ERR_PTR (-ENOMEM ); -try_module_get (rcdev->owner); +if (!try_module_get (rcdev->owner)) { +kfree (rstc); +return ERR_PTR (-ENODEV ); + } rstc->rcdev = rcdev;list_add (&rstc->list, &rcdev->reset_control_head);
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 214/243 arm64: dts: renesas: r8a779a0: Drop power-domains property from GIC node
In reply to Greg Kroah-HartmanFrom: Geert Uytterhoeven <[email protected]>
[ Upstream commit 1771a33b34421050c7b830f0a8af703178ba9d36 ]
"make dtbs_check":
arm64/boot/dts/renesas/r8a779a0-falcon.dt.yaml: interrupt-controller@f1000000: 'power-domains' does not match any of the regexes: '^(msi-controller|gic-its|interrupt-controller)@[0-9a-f]+$', '^gic-its@', '^interrupt-controller@[0-9a-f]+$', 'pinctrl-[0-9]+'
From schema: Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.yaml
Remove the "power-domains" property, as the GIC on R-Car V3U is always-on, and not part of a clock domain.
--- arch/arm64/boot/dts/renesas/r8a779a0.dtsi | 1 - 1 file changed, 1 deletion(-)
arch/arm64/boot/dts/renesas/r8a779a0.dtsi +0 -1
@@ -111,7 +111,6 @@ <0x0 0xf1060000 0 0x110000>; interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_HIGH)>; - power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>; }; prr: chipid@fff00044 {
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 215/243 arm64: dts: ti: k3-j721e-main: Fix external refclk input to SERDES
In reply to Greg Kroah-HartmanFrom: Kishon Vijay Abraham I <[email protected]>
[ Upstream commit 5c6d0b55b46aeb91355e6a9616decf50a3778c91 ]
Rename the external refclk inputs to the SERDES from dummy_cmn_refclk/dummy_cmn_refclk1 to cmn_refclk/cmn_refclk1 respectively. Also move the external refclk DT nodes outside the cbass_main DT node. Since in j721e common processor board, only the cmn_refclk1 is connected to 100MHz clock, fix the clock frequency.
--- .../dts/ti/k3-j721e-common-proc-board.dts | 4 ++ arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 58 ++++++++++--------- 2 files changed, 34 insertions(+), 28 deletions(-)
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +4 -0
@@ -560,6 +560,10 @@ status = "okay"; }; +&cmn_refclk1 { + clock-frequency = <100000000>; +}; + &serdes0 { serdes0_pcie_link: link@0 { reg = <0>;
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi +30 -28
165 lines not on this page · raw message
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 216/243 arm64: dts: ti: k3-j721e-common-proc-board: Use external clock for SERDES
In reply to Greg Kroah-HartmanFrom: Kishon Vijay Abraham I <[email protected]>
[ Upstream commit f2a7657ad7a821de9cc77d071a5587b243144cd5 ]
Use external clock for all the SERDES used by PCIe controller. This will make the same clock used by the local SERDES as well as the clock provided to the PCIe connector.
--- .../dts/ti/k3-j721e-common-proc-board.dts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+)
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +40 -0
@@ -9,6 +9,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> #include <dt-bindings/net/ti-dp83867.h> +#include <dt-bindings/phy/phy-cadence.h> / { chosen {
@@ -564,7 +565,40 @@ clock-frequency = <100000000>; }; +&wiz0_pll1_refclk { + assigned-clocks = <&wiz0_pll1_refclk>; + assigned-clock-parents = <&cmn_refclk1>; +}; + +&wiz0_refclk_dig { + assigned-clocks = <&wiz0_refclk_dig>; + assigned-clock-parents = <&cmn_refclk1>; +}; + +&wiz1_pll1_refclk { + assigned-clocks = <&wiz1_pll1_refclk>; + assigned-clock-parents = <&cmn_refclk1>; +}; + +&wiz1_refclk_dig { + assigned-clocks = <&wiz1_refclk_dig>; + assigned-clock-parents = <&cmn_refclk1>; +}; + +&wiz2_pll1_refclk { + assigned-clocks = <&wiz2_pll1_refclk>; + assigned-clock-parents = <&cmn_refclk1>; +}; + +&wiz2_refclk_dig { + assigned-clocks = <&wiz2_refclk_dig>; + assigned-clock-parents = <&cmn_refclk1>; +}; + &serdes0 { + assigned-clocks = <&serdes0 CDNS_SIERRA_PLL_CMNLC>; + assigned-clock-parents = <&wiz0_pll1_refclk>; + serdes0_pcie_link: link@0 { reg = <0>; cdns,num-lanes = <1>;
@@ -575,6 +609,9 @@ }; &serdes1 { + assigned-clocks = <&serdes1 CDNS_SIERRA_PLL_CMNLC>; + assigned-clock-parents = <&wiz1_pll1_refclk>; + serdes1_pcie_link: link@0 { reg = <0>; cdns,num-lanes = <2>;
@@ -585,6 +622,9 @@ }; &serdes2 { + assigned-clocks = <&serdes2 CDNS_SIERRA_PLL_CMNLC>; + assigned-clock-parents = <&wiz2_pll1_refclk>; + serdes2_pcie_link: link@0 { reg = <0>; cdns,num-lanes = <2>;
Signature · 1 line
2.30.2
Re: [PATCH 5.10 216/243] arm64: dts: ti: k3-j721e-common-proc-board: Use external clock for SERDES
Quoted 23 lines · Greg Kroah-Hartman
From: Kishon Vijay Abraham I <[email protected]>
[ Upstream commit
f2a7657ad7a821de9cc77d071a5587b243144cd5]Use external clock for all the SERDES used by PCIe controller. This will make the same clock used by the local SERDES as well as the clock provided to the PCIe connector.
Signed-off-by Kishon Vijay Abraham I <[email protected]>Reviewed-by Aswath Govindraju <[email protected]>Signed-off-by Nishanth Menon <[email protected]>Signed-off-by Sasha Levin <[email protected]>--- .../dts/ti/k3-j721e-common-proc-board.dts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+)arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +0
-0
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts line 12
Quoted 4 lines
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +1
-0@@ -9,6 +9,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> #include <dt-bindings/net/ti-dp83867.h> +#include <dt-bindings/phy/phy-cadence.h>
Following build errors noticed on arm64 architecture on 5.10 branch.
make --silent --keep-going --jobs=8 O=/home/tuxbuild/.cache/tuxmake/builds/current ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- 'CC=sccache aarch64-linux-gnu-gcc' 'HOSTCC=sccache gcc' /builds/linux/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts:12:10:
fatal error: dt-bindings/phy/phy-cadence.h: No such file or directory
12 | #include <dt-bindings/phy/phy-cadence.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [scripts/Makefile.lib:326:arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dtb] Error 1 make[3]: Target '__build' not remade because of errors. make[2]: *** [/builds/linux/scripts/Makefile.build:497:arch/arm64/boot/dts/ti] Error 2
make[2]: Target '__build' not remade because of errors. make[1]: *** [/builds/linux/Makefile:1358: dtbs] Error 2
ref:
https://builds.tuxbuild.com/1vXT3b334rT9K155TzUSkMWobkx/
https://builds.tuxbuild.com/1vXT3b334rT9K155TzUSkMWobkx/config
Steps to reproduce:
--------------------
# TuxMake is a command line tool and Python library that provides
# portable and repeatable Linux kernel builds across a variety of # architectures, toolchains, kernel configurations, and make targets. # # TuxMake supports the concept of runtimes. # See https://docs.tuxmake.org/runtimes/, for that to work it requires # that you install podman or docker on your system. # # To install tuxmake on your system globally: # sudo pip3 install -U tuxmake # # See https://docs.tuxmake.org/ for complete documentation.
tuxmake --runtime podman --target-arch arm64 --toolchain gcc-11 --kconfig defconfig --kconfig-add
https://builds.tuxbuild.com/1vXT3b334rT9K155TzUSkMWobkx/config
--
Linaro LKFT
https://lkft.linaro.org
Re: [PATCH 5.10 216/243] arm64: dts: ti: k3-j721e-common-proc-board: Use external clock for SERDES
Quoted 21 lines · Naresh Kamboju
Quoted 18 lines · Greg Kroah-Hartman
From: Kishon Vijay Abraham I <[email protected]>
[ Upstream commit
f2a7657ad7a821de9cc77d071a5587b243144cd5]Use external clock for all the SERDES used by PCIe controller. This will make the same clock used by the local SERDES as well as the clock provided to the PCIe connector.
Signed-off-by Kishon Vijay Abraham I <[email protected]>Reviewed-by Aswath Govindraju <[email protected]>Signed-off-by Nishanth Menon <[email protected]>Signed-off-by Sasha Levin <[email protected]>--- .../dts/ti/k3-j721e-common-proc-board.dts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+)
Quoted 11 lines
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts line 12
Quoted 9 lines
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +1
-0@@ -9,6 +9,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> #include <dt-bindings/net/ti-dp83867.h> +#include <dt-bindings/phy/phy-cadence.h>Following build errors noticed on arm64 architecture on 5.10 branch.
also noticed on stable-rc 5.12.
Quoted 47 lines
make --silent --keep-going --jobs=8 O=/home/tuxbuild/.cache/tuxmake/builds/current ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- 'CC=sccache aarch64-linux-gnu-gcc' 'HOSTCC=sccache gcc' /builds/linux/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts:12:10:
fatal error:dt-bindings/phy/phy-cadence.h: No such file or directory
12 | #include <dt-bindings/phy/phy-cadence.h>| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~compilation terminated.
make[3]: *** [scripts/Makefile.lib:326:arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dtb] Error 1 make[3]: Target '__build' not remade because of errors. make[2]: *** [/builds/linux/scripts/Makefile.build:497:arch/arm64/boot/dts/ti] Error 2
make[2]: Target '__build' not remade because of errors. make[1]: *** [/builds/linux/Makefile:1358: dtbs] Error 2ref:
https://builds.tuxbuild.com/1vXT3b334rT9K155TzUSkMWobkx/
https://builds.tuxbuild.com/1vXT3b334rT9K155TzUSkMWobkx/configSteps to reproduce:
--------------------
# TuxMake is a command line tool and Python library that provides# portable and repeatable Linux kernel builds across a variety of # architectures, toolchains, kernel configurations, and make targets. # # TuxMake supports the concept of runtimes. # See https://docs.tuxmake.org/runtimes/, for that to work it requires # that you install podman or docker on your system. # # To install tuxmake on your system globally: # sudo pip3 install -U tuxmake # # See https://docs.tuxmake.org/ for complete documentation.tuxmake --runtime podman --target-arch arm64 --toolchain gcc-11 --kconfig defconfig --kconfig-add
https://builds.tuxbuild.com/1vXT3b334rT9K155TzUSkMWobkx/config--
Linaro LKFT
https://lkft.linaro.org
Sasha Levin
maintainerRe: [PATCH 5.10 216/243] arm64: dts: ti: k3-j721e-common-proc-board: Use external clock for SERDES
Quoted 34 lines · Naresh Kamboju
Quoted 21 lines · Naresh Kamboju
Quoted 18 lines · Greg Kroah-Hartman
From: Kishon Vijay Abraham I <[email protected]>
[ Upstream commit
f2a7657ad7a821de9cc77d071a5587b243144cd5]Use external clock for all the SERDES used by PCIe controller. This will make the same clock used by the local SERDES as well as the clock provided to the PCIe connector.
Signed-off-by Kishon Vijay Abraham I <[email protected]>Reviewed-by Aswath Govindraju <[email protected]>Signed-off-by Nishanth Menon <[email protected]>Signed-off-by Sasha Levin <[email protected]>--- .../dts/ti/k3-j721e-common-proc-board.dts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+)Quoted 11 lines
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts line 12
Quoted 9 lines
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +1
-0@@ -9,6 +9,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> #include <dt-bindings/net/ti-dp83867.h> +#include <dt-bindings/phy/phy-cadence.h>Following build errors noticed on arm64 architecture on 5.10 branch.
Quoted 1 line
also noticed on stable-rc 5.12.
Dropped from both, thanks!
Signature · 2 lines
Thanks, Sasha
Re: [PATCH 5.10 216/243] arm64: dts: ti: k3-j721e-common-proc-board: Use external clock for SERDES
Quoted 35 lines · Sasha Levin
Quoted 34 lines · Naresh Kamboju
Quoted 32 lines · Naresh Kamboju
Quoted 23 lines · Greg Kroah-Hartman
From: Kishon Vijay Abraham I <[email protected]>
[ Upstream commit
f2a7657ad7a821de9cc77d071a5587b243144cd5]Use external clock for all the SERDES used by PCIe controller. This will make the same clock used by the local SERDES as well as the clock provided to the PCIe connector.
Signed-off-by Kishon Vijay Abraham I <[email protected]>Reviewed-by Aswath Govindraju <[email protected]>Signed-off-by Nishanth Menon <[email protected]>Signed-off-by Sasha Levin <[email protected]>--- .../dts/ti/k3-j721e-common-proc-board.dts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+)arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +0
-0arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts line 12
Quoted 4 lines
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +1
-0@@ -9,6 +9,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> #include <dt-bindings/net/ti-dp83867.h> +#include <dt-bindings/phy/phy-cadence.h>Following build errors noticed on arm64 architecture on 5.10 branch.
Quoted 3 lines
Quoted 1 line
also noticed on stable-rc 5.12.
Dropped from both, thanks!
Sorry about that.
Kishon: You might want to send the fixes separately to stable for fixup.
Signature · 3 lines
Regards, Nishanth Menon Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D
Greg Kroah-Hartman
maintainerPATCH 217/243 arm64: dts: ti: k3-j721e-common-proc-board: Re-name "link" name as "phy"
In reply to Greg Kroah-HartmanFrom: Kishon Vijay Abraham I <[email protected]>
[ Upstream commit 02b4d9186121d842a53e347f53a86ec7f2c6b0c7 ]
Commit 66db854b1f62d ("arm64: dts: ti: k3-j721e-common-proc-board:
Configure the PCIe instances") and
commit 02c35dca2b488 ("arm64: dts: ti: k3-j721e: Enable Super-Speed support for USB0") added PHY DT nodes with node name as "link" However nodes with #phy-cells should be named 'phy' as discussed in [1]. Re-name subnodes of serdes in J721E to 'phy'.
[1] -> http://lore.kernel.org/r/20200909203631.GA3026331@bogus
--- arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts +4 -4
@@ -326,7 +326,7 @@ }; &serdes3 { - serdes3_usb_link: link@0 { + serdes3_usb_link: phy@0 { reg = <0>; cdns,num-lanes = <2>; #phy-cells = <0>;
@@ -599,7 +599,7 @@ assigned-clocks = <&serdes0 CDNS_SIERRA_PLL_CMNLC>; assigned-clock-parents = <&wiz0_pll1_refclk>; - serdes0_pcie_link: link@0 { + serdes0_pcie_link: phy@0 { reg = <0>; cdns,num-lanes = <1>; #phy-cells = <0>;
@@ -612,7 +612,7 @@ assigned-clocks = <&serdes1 CDNS_SIERRA_PLL_CMNLC>; assigned-clock-parents = <&wiz1_pll1_refclk>; - serdes1_pcie_link: link@0 { + serdes1_pcie_link: phy@0 { reg = <0>; cdns,num-lanes = <2>; #phy-cells = <0>;
@@ -625,7 +625,7 @@ assigned-clocks = <&serdes2 CDNS_SIERRA_PLL_CMNLC>; assigned-clock-parents = <&wiz2_pll1_refclk>; - serdes2_pcie_link: link@0 { + serdes2_pcie_link: phy@0 { reg = <0>; cdns,num-lanes = <2>; #phy-cells = <0>;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 218/243 memory: fsl_ifc: fix leak of IO mapping on probe failure
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit 3b132ab67fc7a358fff35e808fa65d4bea452521 ]
On probe error the driver should unmap the IO memory. Smatch reports:
drivers/memory/fsl_ifc.c:298 fsl_ifc_ctrl_probe() warn: 'fsl_ifc_ctrl_dev->gregs' not released on lines: 298.
--- drivers/memory/fsl_ifc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/memory/fsl_ifc.c +2 -2
@@ -219,8 +219,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev) fsl_ifc_ctrl_dev->gregs =of_iomap (dev->dev.of_node,0 );if (!fsl_ifc_ctrl_dev->gregs) {dev_err (&dev->dev,"failed to get memory region\n" ); - ret = -ENODEV ; - goto err; +return -ENODEV ; }if (of_property_read_bool (dev->dev.of_node,"little-endian" )) {
@@ -295,6 +294,7 @@ err_irq:free_irq (fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev);irq_dispose_mapping (fsl_ifc_ctrl_dev->irq); err: +iounmap (fsl_ifc_ctrl_dev->gregs);return ret; }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 219/243 memory: fsl_ifc: fix leak of private memory on probe failure
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit 8e0d09b1232d0538066c40ed4c13086faccbdff6 ]
On probe error the driver should free the memory allocated for private structure. Fix this by using resource-managed allocation.
--- drivers/memory/fsl_ifc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/memory/fsl_ifc.c +2 -2
@@ -97,7 +97,6 @@ static int fsl_ifc_ctrl_remove(struct platform_device *dev)iounmap (ctrl->gregs);dev_set_drvdata (&dev->dev,NULL ); -kfree (ctrl);return 0 ; }
@@ -209,7 +208,8 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)dev_info (&dev->dev,"Freescale Integrated Flash Controller\n" ); - fsl_ifc_ctrl_dev =kzalloc (sizeof (*fsl_ifc_ctrl_dev),GFP_KERNEL ); + fsl_ifc_ctrl_dev =devm_kzalloc (&dev->dev,sizeof (*fsl_ifc_ctrl_dev), +GFP_KERNEL );if (!fsl_ifc_ctrl_dev)return -ENOMEM ;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 220/243 arm64: dts: allwinner: a64-sopine-baseboard: change RGMII mode to TXID
In reply to Greg Kroah-HartmanFrom: Icenowy Zheng <[email protected]>
[ Upstream commit bd5431b2f9b30a70f6ed964dd5ee9a6d1c397c06 ]
Although the schematics of Pine A64-LTS and SoPine Baseboard shows both the RX and TX internal delay are enabled, they're using the same broken RTL8211E chip batch with Pine A64+, so they should use TXID instead, not ID.
In addition, by checking the real components soldered on both a SoPine Baseboard and a Pine A64-LTS, RX delay is not enabled (GR69 soldered and GR70 NC) despite the schematics says it's enabled. It's a common situation for Pine64 boards that the NC information on schematics is not the same with the board.
So the RGMII delay mode should be TXID on these boards.
--- arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts +1 -1
@@ -79,7 +79,7 @@ &emac { pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; - phy-mode = "rgmii-id"; + phy-mode = "rgmii-txid"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_dc1sw>; status = "okay";
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 221/243 ARM: dts: dra7: Fix duplicate USB4 target module node
In reply to Greg Kroah-HartmanFrom: Gowtham Tammana <[email protected]>
[ Upstream commit 78b4b165280d3d70e7a217599f0c06a4c0bb11f9 ]
With [1] USB4 target-module node got defined in dra74x.dtsi file. However, the earlier definition in [2] was not removed, and this duplication of the target module is causing boot failure on dra74 variant boards - dra7-evm, dra76-evm.
USB4 is only present in DRA74x variants, so keeping the entry in dra74x.dtsi and removing it from the top level interconnect hierarchy dra7-l4.dtsi file. This change makes the USB4 target module no longer visible to AM5718, DRA71x and DRA72x so removing references to it in their respective dts files.
[1]: commit c7b72abca61ec ("ARM: OMAP2+: Drop legacy platform data for dra7 dwc3")
[2]: commit 549fce068a311 ("ARM: dts: dra7: Add l4 interconnect hierarchy and ti-sysc data")
--- arch/arm/boot/dts/am5718.dtsi | 6 +-- arch/arm/boot/dts/dra7-l4.dtsi | 22 -------- arch/arm/boot/dts/dra71x.dtsi | 4 -- arch/arm/boot/dts/dra72x.dtsi | 4 -- arch/arm/boot/dts/dra74x.dtsi | 92 ++++++++++++++++++---------------- 5 files changed, 50 insertions(+), 78 deletions(-)
arch/arm/boot/dts/am5718.dtsi +1 -5
@@ -17,17 +17,13 @@ * VCP1, VCP2 * MLB * ISS - * USB3, USB4 + * USB3 */ &usb3_tm { status = "disabled"; }; -&usb4_tm { - status = "disabled"; -}; - &atl_tm { status = "disabled"; };
arch/arm/boot/dts/dra7-l4.dtsi +0 -22
@@ -4095,28 +4095,6 @@ }; }; - usb4_tm: target-module@140000 { /* 0x48940000, ap 75 3c.0 */ - compatible = "ti,sysc-omap4", "ti,sysc"; - reg = <0x140000 0x4>, - <0x140010 0x4>; - reg-names = "rev", "sysc"; - ti,sysc-mask = <SYSC_OMAP4_DMADISABLE>; - ti,sysc-midle = <SYSC_IDLE_FORCE>, - <SYSC_IDLE_NO>, - <SYSC_IDLE_SMART>, - <SYSC_IDLE_SMART_WKUP>; - ti,sysc-sidle = <SYSC_IDLE_FORCE>, - <SYSC_IDLE_NO>, - <SYSC_IDLE_SMART>, - <SYSC_IDLE_SMART_WKUP>; - /* Domains (P, C): l3init_pwrdm, l3init_clkdm */ - clocks = <&l3init_clkctrl DRA7_L3INIT_USB_OTG_SS4_CLKCTRL 0>; - clock-names = "fck"; - #address-cells = <1>; - #size-cells = <1>; - ranges = <0x0 0x140000 0x20000>; - }; - target-module@170000 { /* 0x48970000, ap 21 0a.0 */ compatible = "ti,sysc-omap4", "ti,sysc"; reg = <0x170010 0x4>;
arch/arm/boot/dts/dra71x.dtsi +0 -4
@@ -11,7 +11,3 @@ &rtctarget { status = "disabled"; }; - -&usb4_tm { - status = "disabled"; -};
arch/arm/boot/dts/dra72x.dtsi +0 -4
@@ -108,7 +108,3 @@ &pcie2_rc { compatible = "ti,dra726-pcie-rc", "ti,dra7-pcie"; }; - -&usb4_tm { - status = "disabled"; -};
arch/arm/boot/dts/dra74x.dtsi +49 -43
101 lines not on this page · raw message
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 222/243 ARM: dts: am335x: align ti,pindir-d0-out-d1-in property with dt-shema
In reply to Greg Kroah-HartmanFrom: Aswath Govindraju <[email protected]>
[ Upstream commit 414bfe1d26b60ef20b58e36efd5363188a694bab ]
ti,pindir-d0-out-d1-in property is expected to be of type boolean. Therefore, fix the property accordingly.
--- arch/arm/boot/dts/am335x-cm-t335.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/am335x-cm-t335.dts +1 -1
@@ -496,7 +496,7 @@ status = "okay"; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&spi0_pins>; - ti,pindir-d0-out-d1-in = <1>; + ti,pindir-d0-out-d1-in; /* WLS1271 WiFi */ wlcore: wlcore@1 { compatible = "ti,wl1271";
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 223/243 ARM: dts: am437x: align ti,pindir-d0-out-d1-in property with dt-shema
In reply to Greg Kroah-HartmanFrom: Aswath Govindraju <[email protected]>
[ Upstream commit 9b11fec7345f21995f4ea4bafb0e108b9a620238 ]
ti,pindir-d0-out-d1-in property is expected to be of type boolean. Therefore, fix the property accordingly.
--- arch/arm/boot/dts/am43x-epos-evm.dts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/boot/dts/am43x-epos-evm.dts +2 -2
@@ -860,7 +860,7 @@ pinctrl-names = "default", "sleep"; pinctrl-0 = <&spi0_pins_default>; pinctrl-1 = <&spi0_pins_sleep>; - ti,pindir-d0-out-d1-in = <1>; + ti,pindir-d0-out-d1-in; }; &spi1 {
@@ -868,7 +868,7 @@ pinctrl-names = "default", "sleep"; pinctrl-0 = <&spi1_pins_default>; pinctrl-1 = <&spi1_pins_sleep>; - ti,pindir-d0-out-d1-in = <1>; + ti,pindir-d0-out-d1-in; }; &usb2_phy1 {
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 224/243 thermal/drivers/sprd: Add missing MODULE_DEVICE_TABLE
In reply to Greg Kroah-HartmanFrom: Chunyan Zhang <[email protected]>
[ Upstream commit 4d57fd9aeaa013a245bf1fade81e2c30a5efd491 ]
MODULE_DEVICE_TABLE is used to extract the device information out of the driver and builds a table when being compiled. If using this macro, kernel can find the driver if available when the device is plugged in, and then loads that driver and initializes the device.
--- drivers/thermal/sprd_thermal.c | 1 + 1 file changed, 1 insertion(+)
drivers/thermal/sprd_thermal.c +1 -0
@@ -532,6 +532,7 @@ static const struct of_device_id sprd_thermal_of_match[] = { { .compatible = "sprd,ums512-thermal", .data = &ums512_data }, { }, }; +MODULE_DEVICE_TABLE (of, sprd_thermal_of_match);static const struct dev_pm_ops sprd_thermal_pm_ops = {SET_SYSTEM_SLEEP_PM_OPS (sprd_thm_suspend, sprd_thm_resume)
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 225/243 ARM: dts: imx6q-dhcom: Fix ethernet reset time properties
In reply to Greg Kroah-HartmanFrom: Christoph Niedermaier <[email protected]>
[ Upstream commit c016c26c1631f539c652b5d82242a3ca402545c1 ]
Fix ethernet reset time properties as described in Documentation/devicetree/bindings/net/ethernet-phy.yaml
--- arch/arm/boot/dts/imx6q-dhcom-som.dtsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/boot/dts/imx6q-dhcom-som.dtsi +2 -2
@@ -96,8 +96,8 @@ reg = <0>; max-speed = <100>; reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>; - reset-delay-us = <1000>; - reset-post-delay-us = <1000>; + reset-assert-us = <1000>; + reset-deassert-us = <1000>; }; }; };
Signature · 9 lines
2.30.2 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Greg Kroah-Hartman
maintainerPATCH 226/243 ARM: dts: imx6q-dhcom: Fix ethernet plugin detection problems
In reply to Greg Kroah-HartmanFrom: Christoph Niedermaier <[email protected]>
[ Upstream commit e2bdd3484890441b9cc2560413a86e8f2aa04157 ]
To make the ethernet cable plugin detection reliable the power detection of the smsc phy has been disabled.
--- arch/arm/boot/dts/imx6q-dhcom-som.dtsi | 1 + 1 file changed, 1 insertion(+)
arch/arm/boot/dts/imx6q-dhcom-som.dtsi +1 -0
@@ -98,6 +98,7 @@ reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>; reset-assert-us = <1000>; reset-deassert-us = <1000>; + smsc,disable-energy-detect; /* Make plugin detection reliable */ }; }; };
Signature · 9 lines
2.30.2 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Greg Kroah-Hartman
maintainerPATCH 227/243 ARM: dts: imx6q-dhcom: Add gpios pinctrl for i2c bus recovery
In reply to Greg Kroah-HartmanFrom: Christoph Niedermaier <[email protected]>
[ Upstream commit ddc873cd3c0af4faad6a00bffda21c3f775126dd ]
The i2c bus can freeze at the end of transaction so the bus can no longer work. This scenario is improved by adding scl/sda gpios definitions to implement the i2c bus recovery mechanism.
--- arch/arm/boot/dts/imx6q-dhcom-som.dtsi | 36 +++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-)
arch/arm/boot/dts/imx6q-dhcom-som.dtsi +33 -3
@@ -105,22 +105,31 @@ &i2c1 { clock-frequency = <100000>; - pinctrl-names = "default"; + pinctrl-names = "default", "gpio"; pinctrl-0 = <&pinctrl_i2c1>; + pinctrl-1 = <&pinctrl_i2c1_gpio>; + scl-gpios = <&gpio3 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios = <&gpio3 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; status = "okay"; }; &i2c2 { clock-frequency = <100000>; - pinctrl-names = "default"; + pinctrl-names = "default", "gpio"; pinctrl-0 = <&pinctrl_i2c2>; + pinctrl-1 = <&pinctrl_i2c2_gpio>; + scl-gpios = <&gpio4 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios = <&gpio4 13 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; status = "okay"; }; &i2c3 { clock-frequency = <100000>; - pinctrl-names = "default"; + pinctrl-names = "default", "gpio"; pinctrl-0 = <&pinctrl_i2c3>; + pinctrl-1 = <&pinctrl_i2c3_gpio>; + scl-gpios = <&gpio1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios = <&gpio1 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; status = "okay"; ltc3676: pmic@3c {
@@ -286,6 +295,13 @@ >; }; + pinctrl_i2c1_gpio: i2c1-gpio-grp { + fsl,pins = < + MX6QDL_PAD_EIM_D21__GPIO3_IO21 0x4001b8b1 + MX6QDL_PAD_EIM_D28__GPIO3_IO28 0x4001b8b1 + >; + }; + pinctrl_i2c2: i2c2-grp { fsl,pins = < MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
@@ -293,6 +309,13 @@ >; }; + pinctrl_i2c2_gpio: i2c2-gpio-grp { + fsl,pins = < + MX6QDL_PAD_KEY_COL3__GPIO4_IO12 0x4001b8b1 + MX6QDL_PAD_KEY_ROW3__GPIO4_IO13 0x4001b8b1 + >; + }; + pinctrl_i2c3: i2c3-grp { fsl,pins = < MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1
@@ -300,6 +323,13 @@ >; }; + pinctrl_i2c3_gpio: i2c3-gpio-grp { + fsl,pins = < + MX6QDL_PAD_GPIO_3__GPIO1_IO03 0x4001b8b1 + MX6QDL_PAD_GPIO_6__GPIO1_IO06 0x4001b8b1 + >; + }; + pinctrl_pmic_hw300: pmic-hw300-grp { fsl,pins = < MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x1B0B0
Signature · 9 lines
2.30.2 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Greg Kroah-Hartman
maintainerPATCH 228/243 thermal/drivers/rcar_gen3_thermal: Fix coefficient calculations
In reply to Greg Kroah-HartmanFrom: Niklas Söderlund <[email protected]>
[ Upstream commit 8946187ab57ffd02088e50256c73dd31f49db06d ]
The fixed value of 157 used in the calculations are only correct for M3-W, on other Gen3 SoC it should be 167. The constant can be derived correctly from the static TJ_3 constant and the SoC specific TJ_1 value. Update the calculation be correct on all Gen3 SoCs.
--- drivers/thermal/rcar_gen3_thermal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/thermal/rcar_gen3_thermal.c +1 -1
@@ -141,7 +141,7 @@ static void rcar_gen3_thermal_calc_coefs(struct rcar_gen3_thermal_tsc *tsc,* Division is not scaled in BSP and if scaled it might overflow * the dividend (4095 * 4095 << 14 > INT_MAX) so keep it unscaled */ - tsc->tj_t = (FIXPT_INT ((ptat[1 ] - ptat[2 ]) *157 ) + tsc->tj_t = (FIXPT_INT ((ptat[1 ] - ptat[2 ]) * (ths_tj_1 -TJ_3 )) / (ptat[0 ] - ptat[2 ])) +FIXPT_INT (TJ_3 ); tsc->coef.a1 = FIXPT_DIV(FIXPT_INT(thcode[1] - thcode[2]),
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 229/243 firmware: turris-mox-rwtm: fix reply status decoding function
In reply to Greg Kroah-HartmanFrom: Marek Behún <[email protected]>
[ Upstream commit e34e60253d9272311831daed8a2d967cf80ca3dc ]
The status decoding function mox_get_status() currently contains an incorrect check: if the error status is not MBOX_STS_SUCCESS, it always returns -EIO, so the comparison to MBOX_STS_FAIL is never executed and we don't get the actual error code sent by the firmware.
Fix this.
--- drivers/firmware/turris-mox-rwtm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
drivers/firmware/turris-mox-rwtm.c +5 -2
@@ -147,11 +147,14 @@ MOX_ATTR_RO(pubkey, "%s\n", pubkey);static int mox_get_status (enum mbox_cmd cmd,u32 retval) { -if (MBOX_STS_CMD (retval) != cmd || -MBOX_STS_ERROR (retval) !=MBOX_STS_SUCCESS ) +if (MBOX_STS_CMD (retval) != cmd)return -EIO ;else if (MBOX_STS_ERROR (retval) ==MBOX_STS_FAIL )return -(int )MBOX_STS_VALUE (retval); +else if (MBOX_STS_ERROR (retval) ==MBOX_STS_BADCMD ) +return -ENOSYS ; +else if (MBOX_STS_ERROR (retval) !=MBOX_STS_SUCCESS ) +return -EIO ;else return MBOX_STS_VALUE (retval); }
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 230/243 firmware: turris-mox-rwtm: report failures better
In reply to Greg Kroah-HartmanFrom: Marek Behún <[email protected]>
[ Upstream commit 72f99888944c44de1c899bbe44db1e53bdc9d994 ]
Report a notice level message if a command is not supported by the rWTM firmware.
This should not be an error, merely a notice, because the firmware can be used on boards that do not have manufacturing information burned.
--- drivers/firmware/turris-mox-rwtm.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-)
drivers/firmware/turris-mox-rwtm.c +12 -6
@@ -204,11 +204,14 @@ static int mox_get_board_info(struct mox_rwtm *rwtm)return ret; ret =mox_get_status (MBOX_CMD_BOARD_INFO , reply->retval); -if (ret <0 && ret != -ENODATA ) { -return ret; - }else if (ret == -ENODATA ) { +if (ret == -ENODATA ) {dev_warn (rwtm->dev,"Board does not have manufacturing information burned!\n" ); + }else if (ret == -ENOSYS ) { +dev_notice (rwtm->dev, +"Firmware does not support the BOARD_INFO command\n" ); + }else if (ret <0 ) { +return ret; }else { rwtm->serial_number = reply->status[1 ]; rwtm->serial_number <<=32 ;
@@ -237,10 +240,13 @@ static int mox_get_board_info(struct mox_rwtm *rwtm)return ret; ret =mox_get_status (MBOX_CMD_ECDSA_PUB_KEY , reply->retval); -if (ret <0 && ret != -ENODATA ) { -return ret; - }else if (ret == -ENODATA ) { +if (ret == -ENODATA ) {dev_warn (rwtm->dev,"Board has no public key burned!\n" ); + }else if (ret == -ENOSYS ) { +dev_notice (rwtm->dev, +"Firmware does not support the ECDSA_PUB_KEY command\n" ); + }else if (ret <0 ) { +return ret; }else {u32 *s = reply->status;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 231/243 firmware: turris-mox-rwtm: fail probing when firmware does not support hwrng
In reply to Greg Kroah-HartmanFrom: Pali Rohár <[email protected]>
[ Upstream commit 2eab59cf0d2036a5a9e264f719b71c21ccf679c2 ]
When Marvell's rWTM firmware, which does not support the GET_RANDOM command, is used, kernel prints an error message
hwrng: no data available
every 10 seconds.
Fail probing of this driver if the rWTM firmware does not support the GET_RANDOM command.
--- drivers/firmware/turris-mox-rwtm.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
drivers/firmware/turris-mox-rwtm.c +28 -0
@@ -260,6 +260,27 @@ static int mox_get_board_info(struct mox_rwtm *rwtm)return 0 ; } +static int check_get_random_support (struct mox_rwtm *rwtm) +{ +struct armada_37xx_rwtm_tx_msg msg; +int ret; + + msg.command =MBOX_CMD_GET_RANDOM ; + msg.args[0 ] =1 ; + msg.args[1 ] = rwtm->buf_phys; + msg.args[2 ] =4 ; + + ret =mbox_send_message (rwtm->mbox, &msg); +if (ret <0 ) +return ret; + + ret =wait_for_completion_timeout (&rwtm->cmd_done,HZ /2 ); +if (ret <0 ) +return ret; + +return mox_get_status (MBOX_CMD_GET_RANDOM , rwtm->reply.retval); +} +static int mox_hwrng_read (struct hwrng *rng,void *data,size_t max,bool wait) {struct mox_rwtm *rwtm = (struct mox_rwtm *) rng->priv;
@@ -497,6 +518,13 @@ static int turris_mox_rwtm_probe(struct platform_device *pdev)if (ret <0 )dev_warn (dev,"Cannot read board information: %i\n" , ret); + ret =check_get_random_support (rwtm); +if (ret <0 ) { +dev_notice (dev, +"Firmware does not support the GET_RANDOM command\n" ); + goto free_channel; + } + rwtm->hwrng.name =DRIVER_NAME "_hwrng" ; rwtm->hwrng.read = mox_hwrng_read; rwtm->hwrng.priv = (unsigned long ) rwtm;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 232/243 firmware: turris-mox-rwtm: show message about HWRNG registration
In reply to Greg Kroah-HartmanFrom: Pali Rohár <[email protected]>
[ Upstream commit fae20160992269431507708fb74c1fd9f3c309c1 ]
Currently it is hard to determinate if on Armada 3720 device is HWRNG by running kernel accessible or not. So print information message into dmesg when HWRNG is available and registration was successful.
--- drivers/firmware/turris-mox-rwtm.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/firmware/turris-mox-rwtm.c +2 -0
@@ -542,6 +542,8 @@ static int turris_mox_rwtm_probe(struct platform_device *pdev) goto free_channel; } +dev_info (dev,"HWRNG successfully registered\n" ); +return 0 ; free_channel:
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 233/243 arm64: dts: rockchip: Re-add regulator-boot-on, regulator-always-on for vdd_gpu on rk3399-roc-pc
In reply to Greg Kroah-HartmanFrom: Alex Bee <[email protected]>
[ Upstream commit 06b2818678d9b35102c9816ffaf6893caf306ed0 ]
This might be a limitation of either the current panfrost driver devfreq implementation or how the gpu is implemented in RK3399 SoC. The gpu regulator must never get disabled or the registers get (randomly?) inaccessable by the driver. (see all other RK3399 boards)
--- arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi +2 -0
@@ -488,6 +488,8 @@ regulator-min-microvolt = <712500>; regulator-max-microvolt = <1500000>; regulator-ramp-delay = <1000>; + regulator-always-on; + regulator-boot-on; vin-supply = <&vcc3v3_sys>; regulator-state-mem {
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 234/243 arm64: dts: rockchip: Re-add regulator-always-on for vcc_sdio for rk3399-roc-pc
In reply to Greg Kroah-HartmanFrom: Alex Bee <[email protected]>
[ Upstream commit eb607cd4957fb0ef97beb2a8293478be6a54240a ]
Re-add the regulator-always-on property for vcc_sdio which supplies sdmmc, since it gets disabled during reboot now and the bootrom expects it to be enabled when booting from SD card. This makes rebooting impossible in that case and requires a hard reset to boot again.
--- arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi | 1 + 1 file changed, 1 insertion(+)
arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi +1 -0
@@ -384,6 +384,7 @@ vcc_sdio: LDO_REG4 { regulator-name = "vcc_sdio"; + regulator-always-on; regulator-boot-on; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3000000>;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 235/243 scsi: be2iscsi: Fix an error handling path in beiscsi_dev_probe()
In reply to Greg Kroah-HartmanFrom: Christophe JAILLET <[email protected]>
[ Upstream commit 030e4138d11fced3b831c2761e4cecf347bae99c ]
If an error occurs after a pci_enable_pcie_error_reporting() call, it must be undone by a corresponding pci_disable_pcie_error_reporting() call, as already done in the remove function.
--- drivers/scsi/be2iscsi/be_main.c | 1 + 1 file changed, 1 insertion(+)
drivers/scsi/be2iscsi/be_main.c +1 -0
@@ -5745,6 +5745,7 @@ free_hba:pci_disable_msix (phba->pcidev);pci_dev_put (phba->pcidev);iscsi_host_free (phba->shost); +pci_disable_pcie_error_reporting (pcidev);pci_set_drvdata (pcidev,NULL ); disable_pci:pci_release_regions (pcidev);
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 236/243 sched/uclamp: Ignore max aggregation if rq is idle
In reply to Greg Kroah-HartmanFrom: Xuewen Yan <[email protected]>
[ Upstream commit 3e1493f46390618ea78607cb30c58fc19e2a5035 ]
When a task wakes up on an idle rq, uclamp_rq_util_with() would max aggregate with rq value. But since there is no task enqueued yet, the values are stale based on the last task that was running. When the new task actually wakes up and enqueued, then the rq uclamp values should reflect that of the newly woken up task effective uclamp values.
This is a problem particularly for uclamp_max because it default to 1024. If a task p with uclamp_max = 512 wakes up, then max aggregation would ignore the capping that should apply when this task is enqueued, which is wrong.
Fix that by ignoring max aggregation if the rq is idle since in that case the effective uclamp value of the rq will be the ones of the task that will wake up.
--- kernel/sched/sched.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-)
kernel/sched/sched.h +14 -7
@@ -2422,20 +2422,27 @@ static __always_inlineunsigned long uclamp_rq_util_with (struct rq *rq,unsigned long util,struct task_struct *p) { -unsigned long min_util; -unsigned long max_util; +unsigned long min_util =0 ; +unsigned long max_util =0 ;if (!static_branch_likely (&sched_uclamp_used))return util; - min_util =READ_ONCE (rq->uclamp[UCLAMP_MIN ].value); - max_util =READ_ONCE (rq->uclamp[UCLAMP_MAX ].value); -if (p) { - min_util =max (min_util,uclamp_eff_value (p,UCLAMP_MIN )); - max_util =max (max_util,uclamp_eff_value (p,UCLAMP_MAX )); + min_util =uclamp_eff_value (p,UCLAMP_MIN ); + max_util =uclamp_eff_value (p,UCLAMP_MAX ); + +/* +* Ignore last runnable task's max clamp, as this task will +* reset it. Similarly, no need to read the rq's min clamp. +*/ +if (rq->uclamp_flags &UCLAMP_FLAG_IDLE ) + goto out; } + min_util = max_t(unsigned long, min_util, READ_ONCE(rq->uclamp[UCLAMP_MIN].value)); + max_util = max_t(unsigned long, max_util, READ_ONCE(rq->uclamp[UCLAMP_MAX].value)); +out:/* * Since CPU's {min,max}_util clamps are MAX aggregated considering * RUNNABLE tasks with _different_ clamps, we can end up with an
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 237/243 jump_label: Fix jump_label_text_reserved() vs __init
In reply to Greg Kroah-HartmanFrom: Peter Zijlstra <[email protected]>
[ Upstream commit 9e667624c291753b8a5128f620f493d0b5226063 ]
It turns out that jump_label_text_reserved() was reporting __init text as being reserved past the time when the __init text was freed and re-used.
For a long time, this resulted in, at worst, not being able to kprobe text that happened to land at the re-used address. However a recent commit e7bf1ba97afd ("jump_label, x86: Emit short JMP") made it a fatal mistake because it now needs to read the instruction in order to determine the conflict -- an instruction that's no longer there.
--- kernel/jump_label.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
kernel/jump_label.c +8 -5
@@ -316,14 +316,16 @@ static int addr_conflict(struct jump_entry *entry, void *start, void *end) }static int __jump_label_text_reserved (struct jump_entry *iter_start, -struct jump_entry *iter_stop,void *start,void *end) +struct jump_entry *iter_stop,void *start,void *end,bool init) {struct jump_entry *iter; iter = iter_start;while (iter < iter_stop) { -if (addr_conflict (iter, start, end)) -return 1 ; +if (init || !jump_entry_is_init (iter)) { +if (addr_conflict (iter, start, end)) +return 1 ; + } iter++; }
@@ -561,7 +563,7 @@ static int __jump_label_mod_text_reserved(void *start, void *end) ret =__jump_label_text_reserved (mod->jump_entries, mod->jump_entries + mod->num_jump_entries, - start, end); + start, end, mod->state ==MODULE_STATE_COMING );module_put (mod);
@@ -786,8 +788,9 @@ early_initcall(jump_label_init_module);*/ int jump_label_text_reserved (void *start,void *end) { +bool init = system_state <SYSTEM_RUNNING ;int ret =__jump_label_text_reserved (__start___jump_table, - __stop___jump_table, start, end); + __stop___jump_table, start, end, init);if (ret)return ret;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 238/243 static_call: Fix static_call_text_reserved() vs __init
In reply to Greg Kroah-HartmanFrom: Peter Zijlstra <[email protected]>
[ Upstream commit 2bee6d16e4379326b1eea454e68c98b17456769e ]
It turns out that static_call_text_reserved() was reporting __init text as being reserved past the time when the __init text was freed and re-used.
This is mostly harmless and will at worst result in refusing a kprobe.
--- kernel/static_call.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
kernel/static_call.c +8 -5
@@ -292,13 +292,15 @@ static int addr_conflict(struct static_call_site *site, void *start, void *end)static int __static_call_text_reserved (struct static_call_site *iter_start,struct static_call_site *iter_stop, -void *start,void *end) +void *start,void *end,bool init) {struct static_call_site *iter = iter_start;while (iter < iter_stop) { -if (addr_conflict (iter, start, end)) -return 1 ; +if (init || !static_call_is_init (iter)) { +if (addr_conflict (iter, start, end)) +return 1 ; + } iter++; }
@@ -324,7 +326,7 @@ static int __static_call_mod_text_reserved(void *start, void *end) ret =__static_call_text_reserved (mod->static_call_sites, mod->static_call_sites + mod->num_static_call_sites, - start, end); + start, end, mod->state ==MODULE_STATE_COMING );module_put (mod);
@@ -459,8 +461,9 @@ static inline int __static_call_mod_text_reserved(void *start, void *end)int static_call_text_reserved (void *start,void *end) { +bool init = system_state <SYSTEM_RUNNING ;int ret =__static_call_text_reserved (__start_static_call_sites, - __stop_static_call_sites, start, end); + __stop_static_call_sites, start, end, init);if (ret)return ret;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 239/243 mips: always link byteswap helpers into decompressor
In reply to Greg Kroah-HartmanFrom: Arnd Bergmann <[email protected]>
[ Upstream commit cddc40f5617e53f97ef019d5b29c1bd6cbb031ec ]
My series to clean up the unaligned access implementation across architectures caused some mips randconfig builds to fail with:
mips64-linux-ld: arch/mips/boot/compressed/decompress.o: in function `decompress_kernel':
decompress.c:(.text.decompress_kernel+0x54): undefined reference to `__bswapsi2'
It turns out that this problem has already been fixed for the XZ decompressor but now it also shows up in (at least) LZO and LZ4. From my analysis I concluded that the compiler could always have emitted those calls, but the different implementation allowed it to make otherwise better decisions about not inlining the byteswap, which results in the link error when the out-of-line code is missing.
While it could be addressed by adding it to the two decompressor implementations that are known to be affected, but as this only adds 112 bytes to the kernel, the safer choice is to always add them.
--- arch/mips/boot/compressed/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/mips/boot/compressed/Makefile +2 -2
@@ -39,7 +39,7 @@ KCOV_INSTRUMENT := n UBSAN_SANITIZE := n # decompressor objects (linked with vmlinuz) -vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o +vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/bswapsi.o ifdef CONFIG_DEBUG_ZBOOT vmlinuzobjs-$(CONFIG_DEBUG_ZBOOT) += $(obj)/dbg.o
@@ -53,7 +53,7 @@ extra-y += uart-ath79.c $(obj)/uart-ath79.c: $(srctree)/arch/mips/ath79/early_printk.c $(call cmd,shipped) -vmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o $(obj)/bswapsi.o +vmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o extra-y += ashldi3.c $(obj)/ashldi3.c: $(obj)/%.c: $(srctree)/lib/%.c FORCE
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 240/243 mips: disable branch profiling in boot/decompress.o
In reply to Greg Kroah-HartmanFrom: Randy Dunlap <[email protected]>
[ Upstream commit 97e488073cfca0eea84450169ca4cbfcc64e33e3 ]
Use DISABLE_BRANCH_PROFILING for arch/mips/boot/compressed/decompress.o to prevent linkage errors.
mips64-linux-ld: arch/mips/boot/compressed/decompress.o: in function `LZ4_decompress_fast_extDict':
decompress.c:(.text+0x8c): undefined reference to `ftrace_likely_update'
mips64-linux-ld: decompress.c:(.text+0xf4): undefined reference to `ftrace_likely_update'
mips64-linux-ld: decompress.c:(.text+0x200): undefined reference to `ftrace_likely_update'
mips64-linux-ld: decompress.c:(.text+0x230): undefined reference to `ftrace_likely_update'
mips64-linux-ld: decompress.c:(.text+0x320): undefined reference to `ftrace_likely_update'
mips64-linux-ld: arch/mips/boot/compressed/decompress.o:decompress.c:(.text+0x3f4): more undefined references to `ftrace_likely_update' follow
--- arch/mips/boot/compressed/decompress.c | 2 ++ 1 file changed, 2 insertions(+)
arch/mips/boot/compressed/decompress.c +2 -0
@@ -7,6 +7,8 @@* Author: Wu Zhangjin <[email protected]> */ +#define DISABLE_BRANCH_PROFILING +#include <linux/types.h> #include <linux/kernel.h> #include <linux/string.h>
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 241/243 perf report: Fix --task and --stat with pipe input
In reply to Greg Kroah-HartmanFrom: Namhyung Kim <[email protected]>
[ Upstream commit 892ba7f18621a02af4428c58d97451f64685dba4 ]
Current 'perf report' fails to process a pipe input when --task or --stat options are used. This is because they reset all the tool callbacks and fails to find a matching event for a sample.
When pipe input is used, the event info is passed via ATTR records so it needs to handle that operation. Otherwise the following error occurs. Note, -14 (= -EFAULT) comes from evlist__parse_sample():
# perf record -a -o- sleep 1 | perf report -i- --stat Can't parse sample, err = -14 0x271044 [0x38]: failed to process type: 9 Error: failed to process sample #
Committer testing:
Before:
$ perf record -o- sleep 1 | perf report -i- --stat Can't parse sample, err = -14 [ perf record: Woken up 1 times to write data ] 0x1350 [0x30]: failed to process type: 9 Error: failed to process sample [ perf record: Captured and wrote 0.000 MB - ] $
After:
$ perf record -o- sleep 1 | perf report -i- --stat [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.000 MB - ]
Aggregated stats:
TOTAL events: 41
COMM events: 2 ( 4.9%)
EXIT events: 1 ( 2.4%)
SAMPLE events: 9 (22.0%)
MMAP2 events: 4 ( 9.8%)
ATTR events: 1 ( 2.4%)
FINISHED_ROUND events: 1 ( 2.4%)
THREAD_MAP events: 1 ( 2.4%)
CPU_MAP events: 1 ( 2.4%)
EVENT_UPDATE events: 1 ( 2.4%)
TIME_CONV events: 1 ( 2.4%)
FEATURE events: 19 (46.3%)
cycles:uhH stats:
SAMPLE events: 9
$
--- tools/perf/builtin-report.c | 6 ++++++ 1 file changed, 6 insertions(+)
tools/perf/builtin-report.c +6 -0
@@ -710,9 +710,14 @@ static void report__output_resort(struct report *rep)ui_progress__finish (); } +static int process_attr (struct perf_tool *tool__maybe_unused , +union perf_event *event, +struct evlist **pevlist); +static void stats_setup (struct report *rep) {memset (&rep->tool,0 ,sizeof (rep->tool)); + rep->tool.attr = process_attr; rep->tool.no_warn = true; }
@@ -732,6 +737,7 @@ static void tasks_setup(struct report *rep) rep->tool.mmap = perf_event__process_mmap; rep->tool.mmap2 = perf_event__process_mmap2; } + rep->tool.attr = process_attr; rep->tool.comm = perf_event__process_comm; rep->tool.exit = perf_event__process_exit; rep->tool.fork = perf_event__process_fork;
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 242/243 MIPS: vdso: Invalid GIC access through VDSO
In reply to Greg Kroah-HartmanFrom: Martin Fäcknitz <[email protected]>
[ Upstream commit 47ce8527fbba145a7723685bc9a27d9855e06491 ]
Accessing raw timers (currently only CLOCK_MONOTONIC_RAW) through VDSO doesn't return the correct time when using the GIC as clock source. The address of the GIC mapped page is in this case not calculated correctly. The GIC mapped page is calculated from the VDSO data by subtracting PAGE_SIZE:
void *get_gic(const struct vdso_data *data) {
return (void __iomem *)data - PAGE_SIZE;
}However, the data pointer is not page aligned for raw clock sources. This is because the VDSO data for raw clock sources (CS_RAW = 1) is stored after the VDSO data for coarse clock sources (CS_HRES_COARSE = 0). Therefore, only the VDSO data for CS_HRES_COARSE is page aligned:
+--------------------+ | | | vd[CS_RAW] | ---+ | vd[CS_HRES_COARSE] | | +--------------------+ | -PAGE_SIZE | | | | GIC mapped page | <--+ | | +--------------------+
When __arch_get_hw_counter() is called with &vd[CS_RAW], get_gic returns the wrong address (somewhere inside the GIC mapped page). The GIC counter values are not returned which results in an invalid time.
--- arch/mips/include/asm/vdso/vdso.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/mips/include/asm/vdso/vdso.h +1 -1
@@ -67,7 +67,7 @@ static inline const struct vdso_data *get_vdso_data(void)static inline void __iomem *get_gic (const struct vdso_data *data) { -return (void __iomem *)data -PAGE_SIZE ; +return (void __iomem *)((unsigned long )data &PAGE_MASK ) -PAGE_SIZE ; }#endif /* CONFIG_CLKSRC_MIPS_GIC */
Signature · 1 line
2.30.2
Greg Kroah-Hartman
maintainerPATCH 243/243 scsi: scsi_dh_alua: Fix signedness bug in alua_rtpg()
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
commit 80927822e8b6be46f488524cd7d5fe683de97fc4 upstream.
The "retval" variable needs to be signed for the error handling to work.
--- drivers/scsi/device_handler/scsi_dh_alua.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/scsi/device_handler/scsi_dh_alua.c +2 -1
@@ -508,7 +508,8 @@ static int alua_rtpg(struct scsi_devicestruct alua_port_group *tmp_pg;int len, k, off, bufflen =ALUA_RTPG_SIZE ;unsigned char *desc, *buff; -unsigned err, retval; +unsigned err; +int retval;unsigned int tpg_desc_tbl_off;unsigned char orig_transition_tmo;unsigned long flags;
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.52 release. There are 243 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 21 Jul 2021 14:47:42 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.52-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.thanks,
greg k-h
Following build errors noticed on arm64 architecture on 5.10 branch.
Quoted 2 lines
Kishon Vijay Abraham I <[email protected]>
arm64: dts: ti: k3-j721e-common-proc-board: Use external clock for SERDES
make --silent --keep-going --jobs=8 O=/home/tuxbuild/.cache/tuxmake/builds/current ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- 'CC=sccache aarch64-linux-gnu-gcc' 'HOSTCC=sccache gcc' /builds/linux/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts:12:10:
fatal error: dt-bindings/phy/phy-cadence.h: No such file or directory
12 | #include <dt-bindings/phy/phy-cadence.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [scripts/Makefile.lib:326:arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dtb] Error 1 make[3]: Target '__build' not remade because of errors. make[2]: *** [/builds/linux/scripts/Makefile.build:497:arch/arm64/boot/dts/ti] Error 2
make[2]: Target '__build' not remade because of errors. make[1]: *** [/builds/linux/Makefile:1358: dtbs] Error 2
--
Linaro LKFT
https://lkft.linaro.org
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.52 release. There are 243 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 21 Jul 2021 14:47:42 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.52-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.thanks,
greg k-h
On ARCH_BRCMSTB, using 32-bit and 64-bit ARM kernels:
Signature · 1 line
Florian