Commit 49ffdb4c authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'char-misc-5.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc

Pull char/misc driver fixes from Greg KH:
 "Here are some small char and misc driver fixes for reported issues for
  5.3-rc7

  Also included in here is the documentation for how we are handling
  hardware issues under embargo that everyone has finally agreed on, as
  well as a MAINTAINERS update for the suckers who agreed to handle the
  LICENSES/ files.

  All of these have been in linux-next last week with no reported
  issues"

* tag 'char-misc-5.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
  fsi: scom: Don't abort operations for minor errors
  vmw_balloon: Fix offline page marking with compaction
  VMCI: Release resource if the work is already queued
  Documentation/process: Embargoed hardware security issues
  lkdtm/bugs: fix build error in lkdtm_EXHAUST_STACK
  mei: me: add Tiger Lake point LP device ID
  intel_th: pci: Add Tiger Lake support
  intel_th: pci: Add support for another Lewisburg PCH
  stm class: Fix a double free of stm_source_device
  MAINTAINERS: add entry for LICENSES and SPDX stuff
  fpga: altera-ps-spi: Fix getting of optional confd gpio
parents 2c248f92 8919dfcb
This diff is collapsed.
...@@ -45,6 +45,7 @@ Other guides to the community that are of interest to most developers are: ...@@ -45,6 +45,7 @@ Other guides to the community that are of interest to most developers are:
submit-checklist submit-checklist
kernel-docs kernel-docs
deprecated deprecated
embargoed-hardware-issues
These are some overall technical guides that have been put here for now for These are some overall technical guides that have been put here for now for
lack of a better place. lack of a better place.
......
...@@ -9229,6 +9229,18 @@ F: include/linux/nd.h ...@@ -9229,6 +9229,18 @@ F: include/linux/nd.h
F: include/linux/libnvdimm.h F: include/linux/libnvdimm.h
F: include/uapi/linux/ndctl.h F: include/uapi/linux/ndctl.h
LICENSES and SPDX stuff
M: Thomas Gleixner <tglx@linutronix.de>
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
L: linux-spdx@vger.kernel.org
S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/spdx.git
F: COPYING
F: Documentation/process/license-rules.rst
F: LICENSES/
F: scripts/spdxcheck-test.sh
F: scripts/spdxcheck.py
LIGHTNVM PLATFORM SUPPORT LIGHTNVM PLATFORM SUPPORT
M: Matias Bjorling <mb@lightnvm.io> M: Matias Bjorling <mb@lightnvm.io>
W: http://github/OpenChannelSSD W: http://github/OpenChannelSSD
......
...@@ -210,7 +210,7 @@ static int altera_ps_write_complete(struct fpga_manager *mgr, ...@@ -210,7 +210,7 @@ static int altera_ps_write_complete(struct fpga_manager *mgr,
return -EIO; return -EIO;
} }
if (!IS_ERR(conf->confd)) { if (conf->confd) {
if (!gpiod_get_raw_value_cansleep(conf->confd)) { if (!gpiod_get_raw_value_cansleep(conf->confd)) {
dev_err(&mgr->dev, "CONF_DONE is inactive!\n"); dev_err(&mgr->dev, "CONF_DONE is inactive!\n");
return -EIO; return -EIO;
...@@ -289,10 +289,13 @@ static int altera_ps_probe(struct spi_device *spi) ...@@ -289,10 +289,13 @@ static int altera_ps_probe(struct spi_device *spi)
return PTR_ERR(conf->status); return PTR_ERR(conf->status);
} }
conf->confd = devm_gpiod_get(&spi->dev, "confd", GPIOD_IN); conf->confd = devm_gpiod_get_optional(&spi->dev, "confd", GPIOD_IN);
if (IS_ERR(conf->confd)) { if (IS_ERR(conf->confd)) {
dev_warn(&spi->dev, "Not using confd gpio: %ld\n", dev_err(&spi->dev, "Failed to get confd gpio: %ld\n",
PTR_ERR(conf->confd)); PTR_ERR(conf->confd));
return PTR_ERR(conf->confd);
} else if (!conf->confd) {
dev_warn(&spi->dev, "Not using confd gpio");
} }
/* Register manager with unique name */ /* Register manager with unique name */
......
...@@ -38,8 +38,7 @@ ...@@ -38,8 +38,7 @@
#define SCOM_STATUS_PIB_RESP_MASK 0x00007000 #define SCOM_STATUS_PIB_RESP_MASK 0x00007000
#define SCOM_STATUS_PIB_RESP_SHIFT 12 #define SCOM_STATUS_PIB_RESP_SHIFT 12
#define SCOM_STATUS_ANY_ERR (SCOM_STATUS_ERR_SUMMARY | \ #define SCOM_STATUS_ANY_ERR (SCOM_STATUS_PROTECTION | \
SCOM_STATUS_PROTECTION | \
SCOM_STATUS_PARITY | \ SCOM_STATUS_PARITY | \
SCOM_STATUS_PIB_ABORT | \ SCOM_STATUS_PIB_ABORT | \
SCOM_STATUS_PIB_RESP_MASK) SCOM_STATUS_PIB_RESP_MASK)
...@@ -251,11 +250,6 @@ static int handle_fsi2pib_status(struct scom_device *scom, uint32_t status) ...@@ -251,11 +250,6 @@ static int handle_fsi2pib_status(struct scom_device *scom, uint32_t status)
/* Return -EBUSY on PIB abort to force a retry */ /* Return -EBUSY on PIB abort to force a retry */
if (status & SCOM_STATUS_PIB_ABORT) if (status & SCOM_STATUS_PIB_ABORT)
return -EBUSY; return -EBUSY;
if (status & SCOM_STATUS_ERR_SUMMARY) {
fsi_device_write(scom->fsi_dev, SCOM_FSI2PIB_RESET_REG, &dummy,
sizeof(uint32_t));
return -EIO;
}
return 0; return 0;
} }
......
...@@ -164,6 +164,11 @@ static const struct pci_device_id intel_th_pci_id_table[] = { ...@@ -164,6 +164,11 @@ static const struct pci_device_id intel_th_pci_id_table[] = {
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa1a6), PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa1a6),
.driver_data = (kernel_ulong_t)0, .driver_data = (kernel_ulong_t)0,
}, },
{
/* Lewisburg PCH */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa226),
.driver_data = (kernel_ulong_t)0,
},
{ {
/* Gemini Lake */ /* Gemini Lake */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x318e), PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x318e),
...@@ -199,6 +204,11 @@ static const struct pci_device_id intel_th_pci_id_table[] = { ...@@ -199,6 +204,11 @@ static const struct pci_device_id intel_th_pci_id_table[] = {
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x45c5), PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x45c5),
.driver_data = (kernel_ulong_t)&intel_th_2x, .driver_data = (kernel_ulong_t)&intel_th_2x,
}, },
{
/* Tiger Lake PCH */
PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa0a6),
.driver_data = (kernel_ulong_t)&intel_th_2x,
},
{ 0 }, { 0 },
}; };
......
...@@ -1276,7 +1276,6 @@ int stm_source_register_device(struct device *parent, ...@@ -1276,7 +1276,6 @@ int stm_source_register_device(struct device *parent,
err: err:
put_device(&src->dev); put_device(&src->dev);
kfree(src);
return err; return err;
} }
......
...@@ -22,7 +22,7 @@ struct lkdtm_list { ...@@ -22,7 +22,7 @@ struct lkdtm_list {
* recurse past the end of THREAD_SIZE by default. * recurse past the end of THREAD_SIZE by default.
*/ */
#if defined(CONFIG_FRAME_WARN) && (CONFIG_FRAME_WARN > 0) #if defined(CONFIG_FRAME_WARN) && (CONFIG_FRAME_WARN > 0)
#define REC_STACK_SIZE (CONFIG_FRAME_WARN / 2) #define REC_STACK_SIZE (_AC(CONFIG_FRAME_WARN, UL) / 2)
#else #else
#define REC_STACK_SIZE (THREAD_SIZE / 8) #define REC_STACK_SIZE (THREAD_SIZE / 8)
#endif #endif
...@@ -91,7 +91,7 @@ void lkdtm_LOOP(void) ...@@ -91,7 +91,7 @@ void lkdtm_LOOP(void)
void lkdtm_EXHAUST_STACK(void) void lkdtm_EXHAUST_STACK(void)
{ {
pr_info("Calling function with %d frame size to depth %d ...\n", pr_info("Calling function with %lu frame size to depth %d ...\n",
REC_STACK_SIZE, recur_count); REC_STACK_SIZE, recur_count);
recursive_loop(recur_count); recursive_loop(recur_count);
pr_info("FAIL: survived without exhausting stack?!\n"); pr_info("FAIL: survived without exhausting stack?!\n");
......
...@@ -81,6 +81,8 @@ ...@@ -81,6 +81,8 @@
#define MEI_DEV_ID_ICP_LP 0x34E0 /* Ice Lake Point LP */ #define MEI_DEV_ID_ICP_LP 0x34E0 /* Ice Lake Point LP */
#define MEI_DEV_ID_TGP_LP 0xA0E0 /* Tiger Lake Point LP */
#define MEI_DEV_ID_MCC 0x4B70 /* Mule Creek Canyon (EHL) */ #define MEI_DEV_ID_MCC 0x4B70 /* Mule Creek Canyon (EHL) */
#define MEI_DEV_ID_MCC_4 0x4B75 /* Mule Creek Canyon 4 (EHL) */ #define MEI_DEV_ID_MCC_4 0x4B75 /* Mule Creek Canyon 4 (EHL) */
......
...@@ -98,6 +98,8 @@ static const struct pci_device_id mei_me_pci_tbl[] = { ...@@ -98,6 +98,8 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
{MEI_PCI_DEVICE(MEI_DEV_ID_ICP_LP, MEI_ME_PCH12_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_ICP_LP, MEI_ME_PCH12_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_TGP_LP, MEI_ME_PCH12_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_MCC, MEI_ME_PCH12_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_MCC, MEI_ME_PCH12_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_MCC_4, MEI_ME_PCH8_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_MCC_4, MEI_ME_PCH8_CFG)},
......
...@@ -691,7 +691,6 @@ static int vmballoon_alloc_page_list(struct vmballoon *b, ...@@ -691,7 +691,6 @@ static int vmballoon_alloc_page_list(struct vmballoon *b,
} }
if (page) { if (page) {
vmballoon_mark_page_offline(page, ctl->page_size);
/* Success. Add the page to the list and continue. */ /* Success. Add the page to the list and continue. */
list_add(&page->lru, &ctl->pages); list_add(&page->lru, &ctl->pages);
continue; continue;
...@@ -930,7 +929,6 @@ static void vmballoon_release_page_list(struct list_head *page_list, ...@@ -930,7 +929,6 @@ static void vmballoon_release_page_list(struct list_head *page_list,
list_for_each_entry_safe(page, tmp, page_list, lru) { list_for_each_entry_safe(page, tmp, page_list, lru) {
list_del(&page->lru); list_del(&page->lru);
vmballoon_mark_page_online(page, page_size);
__free_pages(page, vmballoon_page_order(page_size)); __free_pages(page, vmballoon_page_order(page_size));
} }
...@@ -1005,6 +1003,7 @@ static void vmballoon_enqueue_page_list(struct vmballoon *b, ...@@ -1005,6 +1003,7 @@ static void vmballoon_enqueue_page_list(struct vmballoon *b,
enum vmballoon_page_size_type page_size) enum vmballoon_page_size_type page_size)
{ {
unsigned long flags; unsigned long flags;
struct page *page;
if (page_size == VMW_BALLOON_4K_PAGE) { if (page_size == VMW_BALLOON_4K_PAGE) {
balloon_page_list_enqueue(&b->b_dev_info, pages); balloon_page_list_enqueue(&b->b_dev_info, pages);
...@@ -1014,6 +1013,11 @@ static void vmballoon_enqueue_page_list(struct vmballoon *b, ...@@ -1014,6 +1013,11 @@ static void vmballoon_enqueue_page_list(struct vmballoon *b,
* for the balloon compaction mechanism. * for the balloon compaction mechanism.
*/ */
spin_lock_irqsave(&b->b_dev_info.pages_lock, flags); spin_lock_irqsave(&b->b_dev_info.pages_lock, flags);
list_for_each_entry(page, pages, lru) {
vmballoon_mark_page_offline(page, VMW_BALLOON_2M_PAGE);
}
list_splice_init(pages, &b->huge_pages); list_splice_init(pages, &b->huge_pages);
__count_vm_events(BALLOON_INFLATE, *n_pages * __count_vm_events(BALLOON_INFLATE, *n_pages *
vmballoon_page_in_frames(VMW_BALLOON_2M_PAGE)); vmballoon_page_in_frames(VMW_BALLOON_2M_PAGE));
...@@ -1056,6 +1060,8 @@ static void vmballoon_dequeue_page_list(struct vmballoon *b, ...@@ -1056,6 +1060,8 @@ static void vmballoon_dequeue_page_list(struct vmballoon *b,
/* 2MB pages */ /* 2MB pages */
spin_lock_irqsave(&b->b_dev_info.pages_lock, flags); spin_lock_irqsave(&b->b_dev_info.pages_lock, flags);
list_for_each_entry_safe(page, tmp, &b->huge_pages, lru) { list_for_each_entry_safe(page, tmp, &b->huge_pages, lru) {
vmballoon_mark_page_online(page, VMW_BALLOON_2M_PAGE);
list_move(&page->lru, pages); list_move(&page->lru, pages);
if (++i == n_req_pages) if (++i == n_req_pages)
break; break;
......
...@@ -310,7 +310,8 @@ int vmci_dbell_host_context_notify(u32 src_cid, struct vmci_handle handle) ...@@ -310,7 +310,8 @@ int vmci_dbell_host_context_notify(u32 src_cid, struct vmci_handle handle)
entry = container_of(resource, struct dbell_entry, resource); entry = container_of(resource, struct dbell_entry, resource);
if (entry->run_delayed) { if (entry->run_delayed) {
schedule_work(&entry->work); if (!schedule_work(&entry->work))
vmci_resource_put(resource);
} else { } else {
entry->notify_cb(entry->client_data); entry->notify_cb(entry->client_data);
vmci_resource_put(resource); vmci_resource_put(resource);
...@@ -361,7 +362,8 @@ static void dbell_fire_entries(u32 notify_idx) ...@@ -361,7 +362,8 @@ static void dbell_fire_entries(u32 notify_idx)
atomic_read(&dbell->active) == 1) { atomic_read(&dbell->active) == 1) {
if (dbell->run_delayed) { if (dbell->run_delayed) {
vmci_resource_get(&dbell->resource); vmci_resource_get(&dbell->resource);
schedule_work(&dbell->work); if (!schedule_work(&dbell->work))
vmci_resource_put(&dbell->resource);
} else { } else {
dbell->notify_cb(dbell->client_data); dbell->notify_cb(dbell->client_data);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment