4.19.77-stable review
Subsystems (6)
Greg Kroah-Hartman
maintainerPATCH 156/211 randstruct: Check member structs in is_pure_ops_struct()
In reply to Greg Kroah-HartmanFrom: Joonwon Kang <[email protected]>
commit 60f2c82ed20bde57c362e66f796cf9e0e38a6dbb upstream.
While no uses in the kernel triggered this case, it was possible to have a false negative where a struct contains other structs which contain only function pointers because of unreachable code in is_pure_ops_struct().
--- scripts/gcc-plugins/randomize_layout_plugin.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
scripts/gcc-plugins/randomize_layout_plugin.c +5 -5
@@ -443,13 +443,13 @@ static int is_pure_ops_struct(const_treeif (node == fieldtype)continue ; -if (!is_fptr (fieldtype)) -return 0 ; - -if (code !=RECORD_TYPE && code !=UNION_TYPE ) +if (code ==RECORD_TYPE || code ==UNION_TYPE ) { +if (!is_pure_ops_struct (fieldtype)) +return 0 ;continue ; + } -if (!is_pure_ops_struct (fieldtype)) +if (!is_fptr (fieldtype))return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 157/211 Revert "ceph: use ceph_evict_inode to cleanup inodes resource"
In reply to Greg Kroah-HartmanThis reverts commit 812810399999a673d30f9d04d38659030a28051a.
The backport was incorrect and was causing kernel panics. Revert and re-apply a correct backport from Jeff Layton.
--- fs/ceph/inode.c | 7 ++----- fs/ceph/super.c | 2 +- fs/ceph/super.h | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-)
fs/ceph/inode.c +2 -5
@@ -528,16 +528,13 @@ static void ceph_i_callback(struct rcu_head *head)kmem_cache_free (ceph_inode_cachep, ci); } -void ceph_evict_inode (struct inode *inode) +void ceph_destroy_inode (struct inode *inode) {struct ceph_inode_info *ci =ceph_inode (inode);struct ceph_inode_frag *frag;struct rb_node *n; -dout ("evict_inode %p ino %llx.%llx\n" , inode,ceph_vinop (inode)); - -truncate_inode_pages_final (&inode->i_data); -clear_inode (inode); +dout ("destroy_inode %p ino %llx.%llx\n" , inode,ceph_vinop (inode));ceph_fscache_unregister_inode_cookie (ci);
fs/ceph/super.c +1 -1
@@ -827,9 +827,9 @@ static int ceph_remount(struct super_block *sb, int *flags, char *data)static const struct super_operations ceph_super_ops = { .alloc_inode = ceph_alloc_inode, + .destroy_inode = ceph_destroy_inode, .write_inode = ceph_write_inode, .drop_inode = ceph_drop_inode, - .evict_inode = ceph_evict_inode, .sync_fs = ceph_sync_fs, .put_super = ceph_put_super, .remount_fs = ceph_remount,
fs/ceph/super.h +1 -1
@@ -854,7 +854,7 @@ static inline bool __ceph_have_pending_cap_snap(struct ceph_inode_info *ci)extern const struct inode_operations ceph_file_iops;extern struct inode *ceph_alloc_inode (struct super_block *sb); -extern void ceph_evict_inode (struct inode *inode); +extern void ceph_destroy_inode (struct inode *inode);extern int ceph_drop_inode (struct inode *inode); extern struct inode *ceph_get_inode(struct super_block *sb,
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 158/211 ceph: use ceph_evict_inode to cleanup inodes resource
In reply to Greg Kroah-HartmanFrom: Yan, Zheng <[email protected]>
[ Upstream commit 87bc5b895d94a0f40fe170d4cf5771c8e8f85d15 ]
remove_session_caps() relies on __wait_on_freeing_inode(), to wait for freeing inode to remove its caps. But VFS wakes freeing inode waiters before calling destroy_inode().
[ jlayton: mainline moved to ->free_inode before the original patch was
merged. This backport reinstates ceph_destroy_inode and just has it do the call_rcu call. ]
--- fs/ceph/inode.c | 10 ++++++++-- fs/ceph/super.c | 1 + fs/ceph/super.h | 1 + 3 files changed, 10 insertions(+), 2 deletions(-)
fs/ceph/inode.c +8 -2
@@ -528,13 +528,16 @@ static void ceph_i_callback(struct rcu_head *head)kmem_cache_free (ceph_inode_cachep, ci); } -void ceph_destroy_inode (struct inode *inode) +void ceph_evict_inode (struct inode *inode) {struct ceph_inode_info *ci =ceph_inode (inode);struct ceph_inode_frag *frag;struct rb_node *n; -dout ("destroy_inode %p ino %llx.%llx\n" , inode,ceph_vinop (inode)); +dout ("evict_inode %p ino %llx.%llx\n" , inode,ceph_vinop (inode)); + +truncate_inode_pages_final (&inode->i_data); +clear_inode (inode);ceph_fscache_unregister_inode_cookie (ci);
@@ -576,7 +579,10 @@ void ceph_destroy_inode(struct inode *inode)ceph_buffer_put (ci->i_xattrs.prealloc_blob);ceph_put_string (rcu_dereference_raw (ci->i_layout.pool_ns)); +} +void ceph_destroy_inode (struct inode *inode) +{call_rcu (&inode->i_rcu, ceph_i_callback); }
fs/ceph/super.c +1 -0
@@ -830,6 +830,7 @@ static const struct super_operations ceph_super_ops = { .destroy_inode = ceph_destroy_inode, .write_inode = ceph_write_inode, .drop_inode = ceph_drop_inode, + .evict_inode = ceph_evict_inode, .sync_fs = ceph_sync_fs, .put_super = ceph_put_super, .remount_fs = ceph_remount,
fs/ceph/super.h +1 -0
@@ -854,6 +854,7 @@ static inline bool __ceph_have_pending_cap_snap(struct ceph_inode_info *ci)extern const struct inode_operations ceph_file_iops;extern struct inode *ceph_alloc_inode (struct super_block *sb); +extern void ceph_evict_inode (struct inode *inode);extern void ceph_destroy_inode (struct inode *inode);extern int ceph_drop_inode (struct inode *inode);
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 159/211 ALSA: hda/realtek - PCI quirk for Medion E4254
In reply to Greg Kroah-HartmanFrom: Jan-Marek Glogowski <[email protected]>
[ Upstream commit bd9c10bc663dd2eaac8fe39dad0f18cd21527446 ]
The laptop has a combined jack to attach headsets on the right. The BIOS encodes them as two different colored jacks at the front, but otherwise it seems to be configured ok. But any adaption of the pins config on its own doesn't fix the jack detection to work in Linux. Still Windows works correct.
This is somehow fixed by chaining ALC256_FIXUP_ASUS_HEADSET_MODE, which seems to register the microphone jack as a headset part and also results in fixing jack sensing, visible in dmesg as:
-snd_hda_codec_realtek hdaudioC0D0: Mic=0x19
+snd_hda_codec_realtek hdaudioC0D0: Headset Mic=0x19
[ Actually the essential change is the location of the jack; the
driver created "Front Mic Jack" without the matching volume / mute control element due to its jack location, which confused PA. -- tiwai ]
--- sound/pci/hda/patch_realtek.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
sound/pci/hda/patch_realtek.c +13 -0
@@ -5679,6 +5679,7 @@ enum {ALC256_FIXUP_ASUS_MIC_NO_PRESENCE ,ALC299_FIXUP_PREDATOR_SPK ,ALC294_FIXUP_ASUS_INTSPK_HEADSET_MIC , + ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE, }; static const struct hda_fixup alc269_fixups[] = {
@@ -6717,6 +6718,16 @@ static const struct hda_fixup alc269_fixups[] = { .chained = true, .chain_id =ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC }, + [ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl []) { + {0x19 ,0x04a11040 }, + {0x21 ,0x04211020 }, + { } + }, + .chained = true, + .chain_id =ALC256_FIXUP_ASUS_HEADSET_MODE + }, };static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -6980,6 +6991,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x17aa ,0x9e54 ,"LENOVO NB" ,ALC269_FIXUP_LENOVO_EAPD ),SND_PCI_QUIRK (0x19e5 ,0x3204 ,"Huawei MBXP" ,ALC256_FIXUP_HUAWEI_MBXP_PINS ),SND_PCI_QUIRK (0x1b7d ,0xa831 ,"Ordissimo EVE2 " ,ALC269VB_FIXUP_ORDISSIMO_EVE2 ),/* Also known as Malata PC-B1303 */ +SND_PCI_QUIRK (0x10ec ,0x118c ,"Medion EE4254 MD62100" ,ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE ), #if 0/* Below is a quirk table taken from the old code.
@@ -7144,6 +7156,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { {.id = ALC255_FIXUP_DELL_HEADSET_MIC, .name = "alc255-dell-headset"}, {.id = ALC295_FIXUP_HP_X360, .name = "alc295-hp-x360"}, {.id = ALC299_FIXUP_PREDATOR_SPK, .name = "predator-spk"}, + {.id = ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE, .name = "alc256-medion-headset"}, {} };#define ALC225_STANDARD_PINS \
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 160/211 blk-mq: add callback of .cleanup_rq
In reply to Greg Kroah-HartmanFrom: Ming Lei <[email protected]>
[ Upstream commit 226b4fc75c78f9c497c5182d939101b260cfb9f3 ]
SCSI maintains its own driver private data hooked off of each SCSI request, and the pridate data won't be freed after scsi_queue_rq() returns BLK_STS_RESOURCE or BLK_STS_DEV_RESOURCE. An upper layer driver (e.g. dm-rq) may need to retry these SCSI requests, before SCSI has fully dispatched them, due to a lower level SCSI driver's resource limitation identified in scsi_queue_rq(). Currently SCSI's per-request private data is leaked when the upper layer driver (dm-rq) frees and then retries these requests in response to BLK_STS_RESOURCE or BLK_STS_DEV_RESOURCE returns from scsi_queue_rq().
This usecase is so specialized that it doesn't warrant training an existing blk-mq interface (e.g. blk_mq_free_request) to allow SCSI to account for freeing its driver private data -- doing so would add an extra branch for handling a special case that all other consumers of SCSI (and blk-mq) won't ever need to worry about.
So the most pragmatic way forward is to delegate freeing SCSI driver private data to the upper layer driver (dm-rq). Do so by adding new .cleanup_rq callback and calling a new blk_mq_cleanup_rq() method from dm-rq. A following commit will implement the .cleanup_rq() hook in scsi_mq_ops.
--- drivers/md/dm-rq.c | 1 + include/linux/blk-mq.h | 13 +++++++++++++ 2 files changed, 14 insertions(+)
drivers/md/dm-rq.c +1 -0
@@ -505,6 +505,7 @@ static int map_request(struct dm_rq_target_io *tio) ret =dm_dispatch_clone_request (clone, rq);if (ret ==BLK_STS_RESOURCE || ret ==BLK_STS_DEV_RESOURCE ) {blk_rq_unprep_clone (clone); +blk_mq_cleanup_rq (clone); tio->ti->type->release_clone_rq (clone, &tio->info); tio->clone =NULL ;if (!rq->q->mq_ops)
include/linux/blk-mq.h +13 -0
@@ -114,6 +114,7 @@ typedef void (busy_iter_fn)(struct blk_mq_hw_ctx *, struct request *, void *,typedef void (busy_tag_iter_fn )(struct request *,void *,bool );typedef int (poll_fn )(struct blk_mq_hw_ctx *,unsigned int );typedef int (map_queues_fn )(struct blk_mq_tag_set *set); +typedef void (cleanup_rq_fn )(struct request *);struct blk_mq_ops {
@@ -165,6 +166,12 @@ struct blk_mq_ops {/* Called from inside blk_get_request() */ void (*initialize_rq_fn)(struct request *rq); +/* +* Called before freeing one request which isn't completed yet, +* and usually for freeing the driver private data +*/ +cleanup_rq_fn *cleanup_rq; +map_queues_fn *map_queues;#ifdef CONFIG_BLK_DEBUG_FS
@@ -324,4 +331,10 @@ static inline void *blk_mq_rq_to_pdu(struct request *rq)for ((i) =0 ; (i) < (hctx)->nr_ctx && \ ({ ctx = (hctx)->ctxs[(i)];1 ; }); (i)++) +static inline void blk_mq_cleanup_rq(struct request *rq) +{ +if (rq->q->mq_ops->cleanup_rq) + rq->q->mq_ops->cleanup_rq (rq); +} +#endif
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 161/211 scsi: implement .cleanup_rq callback
In reply to Greg Kroah-HartmanFrom: Ming Lei <[email protected]>
[ Upstream commit b7e9e1fb7a9227be34ad4a5e778022c3164494cf ]
Implement .cleanup_rq() callback for freeing driver private part of the request. Then we can avoid to leak this part if the request isn't completed by SCSI, and freed by blk-mq or upper layer(such as dm-rq) finally.
--- drivers/scsi/scsi_lib.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
drivers/scsi/scsi_lib.c +13 -0
@@ -1252,6 +1252,18 @@ static void scsi_initialize_rq(struct request *rq) cmd->retries =0 ; } +/* +* Only called when the request isn't completed by SCSI, and not freed by +* SCSI +*/ +static void scsi_cleanup_rq (struct request *rq) +{ +if (rq->rq_flags &RQF_DONTPREP ) { +scsi_mq_uninit_cmd (blk_mq_rq_to_pdu (rq)); + rq->rq_flags &= ~RQF_DONTPREP ; + } +} +/* Add a command to the list used by the aacraid and dpt_i2o drivers */ void scsi_add_cmd_to_list (struct scsi_cmnd *cmd) {
@@ -2339,6 +2351,7 @@ static const struct blk_mq_ops scsi_mq_ops = { .init_request = scsi_mq_init_request, .exit_request = scsi_mq_exit_request, .initialize_rq_fn = scsi_initialize_rq, + .cleanup_rq = scsi_cleanup_rq, .map_queues = scsi_map_queues, };
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 162/211 powerpc/imc: Dont create debugfs files for cpu-less nodes
In reply to Greg Kroah-HartmanFrom: Madhavan Srinivasan <[email protected]>
commit 41ba17f20ea835c489e77bd54e2da73184e22060 upstream.
Commit <684d984038aa> ('powerpc/powernv: Add debugfs interface for imc-mode and imc') added debugfs interface for the nest imc pmu devices to support changing of different ucode modes. Primarily adding this capability for debug. But when doing so, the code did not consider the case of cpu-less nodes. So when reading the _cmd_ or _mode_ file of a cpu-less node will create this crash.
Faulting instruction address: 0xc0000000000d0d58
Oops: Kernel access of bad area, sig: 11 [#1]
...
CPU: 67 PID: 5301 Comm: cat Not tainted 5.2.0-rc6-next-20190627+ #19
NIP: c0000000000d0d58 LR: c00000000049aa18 CTR:c0000000000d0d50
REGS: c00020194548f9e0 TRAP: 0300 Not tainted (5.2.0-rc6-next-20190627+)
MSR: 9000000000009033 <SF,HV,EE,ME,IR,DR,RI,LE> CR:28022822 XER: 00000000
CFAR: c00000000049aa14 DAR: 000000000003fc08 DSISR:40000000 IRQMASK: 0
...
NIP imc_mem_get+0x8/0x20
LR simple_attr_read+0x118/0x170
Call Trace:
simple_attr_read+0x70/0x170 (unreliable)
debugfs_attr_read+0x6c/0xb0
__vfs_read+0x3c/0x70
vfs_read+0xbc/0x1a0
ksys_read+0x7c/0x140
system_call+0x5c/0x70Patch fixes the issue with a more robust check for vbase to NULL.
Before patch, ls output for the debugfs imc directory
# ls /sys/kernel/debug/powerpc/imc/ imc_cmd_0 imc_cmd_251 imc_cmd_253 imc_cmd_255 imc_mode_0 imc_mode_251 imc_mode_253 imc_mode_255 imc_cmd_250 imc_cmd_252 imc_cmd_254 imc_cmd_8 imc_mode_250 imc_mode_252 imc_mode_254 imc_mode_8
After patch, ls output for the debugfs imc directory
# ls /sys/kernel/debug/powerpc/imc/ imc_cmd_0 imc_cmd_8 imc_mode_0 imc_mode_8
Actual bug here is that, we have two loops with potentially different loop counts. That is, in imc_get_mem_addr_nest(), loop count is obtained from the dt entries. But in case of export_imc_mode_and_cmd(), loop was based on for_each_nid() count. Patch fixes the loop count in latter based on the struct mem_info. Ideally it would be better to have array size in struct imc_pmu.
--- arch/powerpc/platforms/powernv/opal-imc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
arch/powerpc/platforms/powernv/opal-imc.c +6 -6
@@ -57,9 +57,9 @@ static void export_imc_mode_and_cmd(stru struct imc_pmu *pmu_ptr) {static u64 loc, *imc_mode_addr, *imc_cmd_addr; -int chip =0 , nid;char mode[16 ], cmd[16 ];u32 cb_offset; +struct imc_mem_info *ptr = pmu_ptr->mem_info; imc_debugfs_parent =debugfs_create_dir ("imc" , powerpc_debugfs_root);
@@ -73,20 +73,20 @@ static void export_imc_mode_and_cmd(struif (of_property_read_u32 (node,"cb_offset" , &cb_offset)) cb_offset =IMC_CNTL_BLK_OFFSET ; -for_each_node (nid) { - loc = (u64)(pmu_ptr->mem_info[chip].vbase) + cb_offset; +while (ptr->vbase !=NULL ) { + loc = (u64)(ptr->vbase) + cb_offset; imc_mode_addr = (u64 *)(loc +IMC_CNTL_BLK_MODE_OFFSET ); -sprintf (mode,"imc_mode_%d" , nid); +sprintf (mode,"imc_mode_%d" , (u32)(ptr->id));if (!imc_debugfs_create_x64 (mode,0600 , imc_debugfs_parent, imc_mode_addr)) goto err; imc_cmd_addr = (u64 *)(loc +IMC_CNTL_BLK_CMD_OFFSET ); -sprintf (cmd,"imc_cmd_%d" , nid); +sprintf (cmd,"imc_cmd_%d" , (u32)(ptr->id));if (!imc_debugfs_create_x64 (cmd,0600 , imc_debugfs_parent, imc_cmd_addr)) goto err; - chip++; + ptr++; }return ;
Greg Kroah-Hartman
maintainerPATCH 163/211 fuse: fix missing unlock_page in fuse_writepage()
In reply to Greg Kroah-HartmanFrom: Vasily Averin <[email protected]>
commit d5880c7a8620290a6c90ced7a0e8bd0ad9419601 upstream.
unlock_page() was missing in case of an already in-flight write against the same page.
--- fs/fuse/file.c | 1 + 1 file changed, 1 insertion(+)
fs/fuse/file.c +1 -0
@@ -1700,6 +1700,7 @@ static int fuse_writepage(struct page *pWARN_ON (wbc->sync_mode ==WB_SYNC_ALL );redirty_page_for_writepage (wbc, page); +unlock_page (page);return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 164/211 parisc: Disable HP HSC-PCI Cards to prevent kernel crash
In reply to Greg Kroah-HartmanFrom: Helge Deller <[email protected]>
commit 5fa1659105fac63e0f3c199b476025c2e04111ce upstream.
The HP Dino PCI controller chip can be used in two variants: as on-board controller (e.g. in B160L), or on an Add-On card ("Card-Mode") to bridge PCI components to systems without a PCI bus, e.g. to a HSC/GSC bus. One such Add-On card is the HP HSC-PCI Card which has one or more DEC Tulip PCI NIC chips connected to the on-card Dino PCI controller.
Dino in Card-Mode has a big disadvantage: All PCI memory accesses need to go through the DINO_MEM_DATA register, so Linux drivers will not be able to use the ioremap() function. Without ioremap() many drivers will not work, one example is the tulip driver which then simply crashes the kernel if it tries to access the ports on the HP HSC card.
This patch disables the HP HSC card if it finds one, and as such fixes the kernel crash on a HP D350/2 machine.
--- drivers/parisc/dino.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
drivers/parisc/dino.c +24 -0
@@ -160,6 +160,15 @@ struct dino_device (struct dino_device *)__pdata; }) +/* Check if PCI device is behind a Card-mode Dino. */ +static int pci_dev_is_behind_card_dino (struct pci_dev *dev) +{ +struct dino_device *dino_dev; + + dino_dev =DINO_DEV (parisc_walk_tree (dev->bus->bridge)); +return is_card_dino (&dino_dev->hba.dev->id); +} +/* * Dino Configuration Space Accessor Functions */
@@ -442,6 +451,21 @@ static void quirk_cirrus_cardbus(struct }DECLARE_PCI_FIXUP_ENABLE (PCI_VENDOR_ID_CIRRUS ,PCI_DEVICE_ID_CIRRUS_6832 , quirk_cirrus_cardbus ); +#ifdef CONFIG_TULIP +static void pci_fixup_tulip (struct pci_dev *dev) +{ +if (!pci_dev_is_behind_card_dino (dev)) +return ; +if (!(pci_resource_flags (dev,1 ) &IORESOURCE_MEM )) +return ; +pr_warn ("%s: HP HSC-PCI Cards with card-mode Dino not yet supported.\n" , +pci_name (dev)); +/* Disable this card by zeroing the PCI resources */ +memset (&dev->resource[0 ],0 ,sizeof (dev->resource[0 ])); +memset (&dev->resource[1 ],0 ,sizeof (dev->resource[1 ])); +} +DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_DEC ,PCI_ANY_ID , pci_fixup_tulip); +#endif /* CONFIG_TULIP */ static void __init dino_bios_init (void )
Greg Kroah-Hartman
maintainerPATCH 165/211 KVM: x86: always stop emulation on page fault
In reply to Greg Kroah-HartmanFrom: Jan Dakinevich <[email protected]>
commit 8530a79c5a9f4e29e6ffb35ec1a79d81f4968ec8 upstream.
inject_emulated_exception() returns true if and only if nested page fault happens. However, page fault can come from guest page tables walk, either nested or not nested. In both cases we should stop an attempt to read under RIP and give guest to step over its own page fault handler.
This is also visible when an emulated instruction causes a #GP fault and the VMware backdoor is enabled. To handle the VMware backdoor, KVM intercepts #GP faults; with only the next patch applied, x86_emulate_instruction() injects a #GP but returns EMULATE_FAIL
instead of EMULATE_DONE. EMULATE_FAIL causes handle_exception_nmi()
(or gp_interception() for SVM) to re-inject the original #GP because it thinks emulation failed due to a non-VMware opcode. This patch prevents the issue as x86_emulate_instruction() will return EMULATE_DONE after injecting the #GP.
--- arch/x86/kvm/x86.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
arch/x86/kvm/x86.c +3 -1
@@ -6244,8 +6244,10 @@ int x86_emulate_instruction(struct kvm_vif (reexecute_instruction (vcpu, cr2, write_fault_to_spt, emulation_type))return EMULATE_DONE ; -if (ctxt->have_exception &&inject_emulated_exception (vcpu)) +if (ctxt->have_exception) { +inject_emulated_exception (vcpu);return EMULATE_DONE ; + }if (emulation_type &EMULTYPE_SKIP )return EMULATE_FAIL ;return handle_emulation_failure (vcpu, emulation_type);
Greg Kroah-Hartman
maintainerPATCH 166/211 KVM: x86: set ctxt->have_exception in x86_decode_insn()
In reply to Greg Kroah-HartmanFrom: Jan Dakinevich <[email protected]>
commit c8848cee74ff05638e913582a476bde879c968ad upstream.
x86_emulate_instruction() takes into account ctxt->have_exception flag during instruction decoding, but in practice this flag is never set in x86_decode_insn().
--- arch/x86/kvm/emulate.c | 2 ++ arch/x86/kvm/x86.c | 6 ++++++ 2 files changed, 8 insertions(+)
arch/x86/kvm/emulate.c +2 -0
@@ -5368,6 +5368,8 @@ done_prefixes: ctxt->memopp->addr.mem.ea + ctxt->_eip); done: +if (rc ==X86EMUL_PROPAGATE_FAULT ) + ctxt->have_exception = true;return (rc !=X86EMUL_CONTINUE ) ?EMULATION_FAILED :EMULATION_OK ; }
arch/x86/kvm/x86.c +6 -0
@@ -6245,6 +6245,12 @@ int x86_emulate_instruction(struct kvm_v emulation_type))return EMULATE_DONE ;if (ctxt->have_exception) { +/* +* #UD should result in just EMULATION_FAILED, and trap-like +* exception should not be encountered during decode. +*/ +WARN_ON_ONCE (ctxt->exception.vector ==UD_VECTOR || +exception_type (ctxt->exception.vector) ==EXCPT_TRAP );inject_emulated_exception (vcpu);return EMULATE_DONE ; }
Greg Kroah-Hartman
maintainerPATCH 167/211 KVM: x86: Manually calculate reserved bits when loading PDPTRS
In reply to Greg Kroah-HartmanFrom: Sean Christopherson <[email protected]>
commit 16cfacc8085782dab8e365979356ce1ca87fd6cc upstream.
Manually generate the PDPTR reserved bit mask when explicitly loading PDPTRs. The reserved bits that are being tracked by the MMU reflect the current paging mode, which is unlikely to be PAE paging in the vast majority of flows that use load_pdptrs(), e.g. CR0 and CR4 emulation, __set_sregs(), etc... This can cause KVM to incorrectly signal a bad PDPTR, or more likely, miss a reserved bit check and subsequently fail a VM-Enter due to a bad VMCS.GUEST_PDPTR.
Add a one off helper to generate the reserved bits instead of sharing code across the MMU's calculations and the PDPTR emulation. The PDPTR reserved bits are basically set in stone, and pushing a helper into the MMU's calculation adds unnecessary complexity without improving readability.
Oppurtunistically fix/update the comment for load_pdptrs().
Note, the buggy commit also introduced a deliberate functional change, "Also remove bit 5-6 from rsvd_bits_mask per latest SDM.", which was effectively (and correctly) reverted by commit cd9ae5fe47df ("KVM: x86:
Fix page-tables reserved bits"). A bit of SDM archaeology shows that the SDM from late 2008 had a bug (likely a copy+paste error) where it listed bits 6:5 as AVL and A for PDPTEs used for 4k entries but reserved for 2mb entries. I.e. the SDM contradicted itself, and bits 6:5 are and always have been reserved.
--- arch/x86/kvm/x86.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
arch/x86/kvm/x86.c +8 -3
@@ -581,8 +581,14 @@ static int kvm_read_nested_guest_page(st data, offset, len, access); } +static inline u64 pdptr_rsvd_bits (struct kvm_vcpu *vcpu) +{ +return rsvd_bits (cpuid_maxphyaddr (vcpu),63 ) |rsvd_bits (5 ,8 ) | +rsvd_bits (1 ,2 ); +} +/* -* Load the pae pdptrs. Return true is they are all valid. +* Load the pae pdptrs. Return 1 if they are all valid, 0 otherwise. */ int load_pdptrs (struct kvm_vcpu *vcpu,struct kvm_mmu *mmu,unsigned long cr3) {
@@ -601,8 +607,7 @@ int load_pdptrs(struct kvm_vcpu *vcpu, s }for (i =0 ; i <ARRAY_SIZE (pdpte); ++i) {if ((pdpte[i] &PT_PRESENT_MASK ) && - (pdpte[i] & - vcpu->arch.mmu.guest_rsvd_check.rsvd_bits_mask[0 ][2 ])) { + (pdpte[i] &pdptr_rsvd_bits (vcpu))) { ret =0 ; goto out; }
Re: [PATCH 4.19 167/211] KVM: x86: Manually calculate reserved bits when loading PDPTRS
Quoted 64 lines · Greg Kroah-Hartman
From: Sean Christopherson <[email protected]>
commit
16cfacc8085782dab8e365979356ce1ca87fd6ccupstream.Manually generate the PDPTR reserved bit mask when explicitly loading PDPTRs. The reserved bits that are being tracked by the MMU reflect the current paging mode, which is unlikely to be PAE paging in the vast majority of flows that use
load_pdptrs(), e.g. CR0 and CR4 emulation,__set_sregs(), etc... This can cause KVM to incorrectly signal a bad PDPTR, or more likely, miss a reserved bit check and subsequently fail a VM-Enter due to a bad VMCS.GUEST_PDPTR.Add a one off helper to generate the reserved bits instead of sharing code across the MMU's calculations and the PDPTR emulation. The PDPTR reserved bits are basically set in stone, and pushing a helper into the MMU's calculation adds unnecessary complexity without improving readability.
Oppurtunistically fix/update the comment for
load_pdptrs().Note, the buggy commit also introduced a deliberate functional change, "Also remove bit 5-6 from
rsvd_bits_maskper latest SDM.", which was effectively (and correctly) reverted by commitcd9ae5fe47df("KVM: x86:
Fix page-tables reserved bits"). A bit of SDM archaeology shows that the SDM from late 2008 had a bug (likely a copy+paste error) where it listed bits 6:5 as AVL and A for PDPTEs used for 4k entries but reserved for 2mb entries. I.e. the SDM contradicted itself, and bits 6:5 are and always have been reserved.Fixes 20c466b56168d ("KVM: Use rsvd_bits_mask in load_pdptrs()")Cc Nadav Amit <[email protected]>Reported-by Doug Reiland <[email protected]>Signed-off-by Sean Christopherson <[email protected]>Reviewed-by Peter Xu <[email protected]>Signed-off-by Paolo Bonzini <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- arch/x86/kvm/x86.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)arch/x86/kvm/x86.c +7
-1@@ -581,8 +581,14 @@ static int kvm_read_nested_guest_page(st data, offset, len, access); } +static inline u64 pdptr_rsvd_bits (struct kvm_vcpu *vcpu) +{ +return rsvd_bits (cpuid_maxphyaddr (vcpu),63 ) |rsvd_bits (5 ,8 ) | +rsvd_bits (1 ,2 ); +} +/* -* Load the pae pdptrs. Return true is they are all valid. +* Load the pae pdptrs. Return 1 if they are all valid, 0 otherwise. */ int load_pdptrs (struct kvm_vcpu *vcpu,struct kvm_mmu *mmu,unsigned long cr3) {
arch/x86/kvm/x86.c int load_pdptrs(struct kvm_vcpu *vcpu, s · line 613
Quoted 9 lines
arch/x86/kvm/x86.c +1
-2@@ -601,8 +607,7 @@ int load_pdptrs(struct kvm_vcpu *vcpu, s }for (i =0 ; i <ARRAY_SIZE (pdpte); ++i) {if ((pdpte[i] &PT_PRESENT_MASK ) && - (pdpte[i] & - vcpu->arch.mmu.guest_rsvd_check.rsvd_bits_mask[0 ][2 ])) { + (pdpte[i] &pdptr_rsvd_bits (vcpu))) { ret =0 ; goto out; }
first off, I hope that I'm not a bit blunt to just message you all here :)
It seems that a backport of this to stable and distro kernels tickled out some issue[0] for KVM Linux 64bit guests on older than about 8-10 year old Intel CPUs[1].
Basically, booting this kernel as host, then running an KVM guest distro or kernel fails it that guest kernel early in the boot phase without any error or other log to serial console, earlyprintk.
Quickest test here, boot the booted kernel with QEMU/KVM, e.g.:
# qemu-system-x86_64 -enable-kvm -kernel /boot/vmlinuz-4.19.77 -nographic -append console=ttyS0
FYI: booting a "problematic" kernel (e.g., 4.19.77) as guest kernel while having a good host kernel (e.g., 4.19.76) works just fine.
As this does not happen when applying it on a 5.3.7 kernel (e.g., Ubuntu-5.3.0-21.22 which includes this works just fine), so IMO the questions is: what other patch is missing from the backport of this one?
I did not immediately find a fix or some related change which seemed like the reason for above working with 5.3.7 but not with the stable 4.19.77 to 4.19.81 or Ubuntu's Disco 5.0.21 based kernel, so I started a reverse bisect between the known-bad 5.2 and the known-good 5.3-rc1, at each step cherry-picking this "manual calculate reserved bits when loading PDPTRS" commit, which made the issues show up.
But I could not single out a definitive (supporting) commit for this, albeit, as you see in the rev-bisect log[2], I had found some promising commit, but once I only applied that one as single cherry-pick, the "reboot looping KVM Linux guest" issue did show up again... But maybe I also just made an error during bisecting, and came to wrong conclusions..
In a act of desperation I then tried to cherry-pick all "arch/x86/kvm" commits, i.e., those found with:
# git log --no-merges --oneline v5.2..v5.3-rc1 -- arch/x86/kvm/ but to no avail, so there may be more than one supporting commit needed, but that's just guessing. I think you people have surely an better idea about what the underlying issue could be.
cheers,
Thomas
[0]: https://bugzilla.kernel.org/show_bug.cgi?id=205441
[1]: models tested as problematic are: intel core2duo E8500; Xeon E5420; so
westmere, conroe and that stuff. AFAICT anything from about pre-2010 which
has VMX support (i.e. is 64bit based)
[2]: git reverse bisect log:
git bisect start '--term-new=fixed' '--term-old=broken'
# fixed: [4d856f72c10ecb060868ed10ff1b1453943fc6c8] Linux 5.3
git bisect fixed 4d856f72c10ecb060868ed10ff1b1453943fc6c8
# broken: [0ecfebd2b52404ae0c54a878c872bb93363ada36] Linux 5.2
git bisect broken 0ecfebd2b52404ae0c54a878c872bb93363ada36
# fixed: [43c95d3694cc448fdf50bd53b7ff3a5bb4655883] Merge tag 'pinctrl-v5.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
git bisect fixed 43c95d3694cc448fdf50bd53b7ff3a5bb4655883
# broken: [8f6ccf6159aed1f04c6d179f61f6fb2691261e84] Merge tag 'clone3-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux
git bisect broken 8f6ccf6159aed1f04c6d179f61f6fb2691261e84
# broken: [753c8d9b7d81206bb5d011b28abe829d364b028e] Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
git bisect broken 753c8d9b7d81206bb5d011b28abe829d364b028e
# broken: [d72619706abc4aa7e540ea882dae883cee7cc3b3] Merge tag 'tty-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
git bisect broken d72619706abc4aa7e540ea882dae883cee7cc3b3
# broken: [f632a8170a6b667ee4e3f552087588f0fe13c4bb] Merge tag 'driver-core-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
git bisect broken f632a8170a6b667ee4e3f552087588f0fe13c4bb
# fixed: [5010fe9f095414b959fd6fda63986dc90fd0c419] Merge tag 'vfs-fix-ioctl-checking-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
git bisect fixed 5010fe9f095414b959fd6fda63986dc90fd0c419
# fixed: [a45ff5994c9cde41af627c46abb9f32beae68943] Merge tag 'kvm-arm-for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD git bisect fixed a45ff5994c9cde41af627c46abb9f32beae68943
# fixed: [2183f5645ae7e074ed1777f3de9a782dd23db248] KVM: VMX: Shadow VMCS primary execution controls
git bisect fixed 2183f5645ae7e074ed1777f3de9a782dd23db248
# fixed: [2ea72039808d50c909c2eb00eaebfaaaa743927a] kvm: nVMX: small cleanup in handle_exception
git bisect fixed 2ea72039808d50c909c2eb00eaebfaaaa743927a
# fixed: [fb89f4ea7feb1e605f8f405d256c56d8ad69125c] kvm: selftests: introduce aarch64_vcpu_add_default
git bisect fixed fb89f4ea7feb1e605f8f405d256c56d8ad69125c
# fixed: [f257d6dcda0187693407e0c2e5dab69bdab3223f] KVM: Directly return result from kvm_arch_check_processor_compat()
git bisect fixed f257d6dcda0187693407e0c2e5dab69bdab3223f
# fixed: [84ea3acaa01fb90861b341038998e27a5198e1a0] KVM: LAPIC: Extract adaptive tune timer advancement logic
git bisect fixed 84ea3acaa01fb90861b341038998e27a5198e1a0
# fixed: [f3ecb59dd49f1742b97df6ba071aaa3d031154ac] kvm: x86: Fix reserved bits related calculation errors caused by MKTME
git bisect fixed f3ecb59dd49f1742b97df6ba071aaa3d031154ac
Re: [PATCH 4.19 167/211] KVM: x86: Manually calculate reserved bits when loading PDPTRS
Quoted 10 lines · Thomas Lamprecht
Quoted 6 lines · Greg Kroah-Hartman
From: Sean Christopherson <[email protected]>
commit
16cfacc8085782dab8e365979356ce1ca87fd6ccupstream.Manually generate the PDPTR reserved bit mask when explicitly loading PDPTRs. The reserved bits that are being tracked by the MMU reflect the
It seems that a backport of this to stable and distro kernels tickled out some issue[0] for KVM Linux 64bit guests on older than about 8-10 year old Intel CPUs[1].
It manifests specifically when running with EPT disabled (no surprise there). Actually, it probably would reproduce simply with unrestricted guest disabled, but that's beside the point.
The issue is a flawed PAE-paging check in kvm_set_cr3(), which causes KVM to incorrectly load PDPTRs in 64-bit mode and inject a #GP. It's a sneaky little bugger because the "if (is_long_mode() ..." makes it appear to be correct at first glance.
if (is_long_mode(vcpu) && (cr3 & rsvd_bits(cpuid_maxphyaddr(vcpu), 63))) return 1; else if (is_pae(vcpu) && is_paging(vcpu) && <--- needs !is_long_mode() !load_pdptrs(vcpu, vcpu->arch.walk_mmu, cr3)) return 1;
With unrestricted guest, KVM doesn't intercept writes to CR3 and so doesn't trigger the buggy code. This doesn't fail upstream because the offending code was refactored to encapsulate the PAE checks in a single helper, precisely to avoid this type of headache.
commit bf03d4f9334728bf7c8ffc7de787df48abd6340e
Author: Paolo Bonzini <[email protected]>
Date: Thu Jun 6 18:52:44 2019 +0200
KVM: x86: introduce is_pae_paging
Checking for 32-bit PAE is quite common around code that fiddles with the PDPTRs. Add a function to compress all checks into a single invocation.
Commit bf03d4f93347 ("KVM: x86: introduce is_pae_paging") doesn't apply cleanly to 4.19 or earlier because of the VMX file movement in 4.20. But, the revelant changes in x86.c do apply cleanly, and I've quadruple checked that the PAE checks in vmx.c are correct, i.e. applying the patch and ignoring the nested.c/vmx.c conflicts would be a viable lazy option.
Quoted 3 lines
Basically, booting this kernel as host, then running an KVM guest distro or kernel fails it that guest kernel early in the boot phase without any error or other log to serial console, earlyprintk.
...
Quoted 5 lines
[0]: https://bugzilla.kernel.org/show_bug.cgi?id=205441
[1]: models tested as problematic are: intel core2duo E8500; Xeon E5420; so
westmere, conroe and that stuff. AFAICT anything from about pre-2010 which has VMX support (i.e. is 64bit based)
Note, not Westmere, which has EPT and unrestricted guest. Xeon E5420 is Harpertown, a.k.a. Penryn, the shrink of Conroe.
Greg Kroah-Hartman
maintainerRe: [PATCH 4.19 167/211] KVM: x86: Manually calculate reserved bits when loading PDPTRS
Quoted 57 lines · Sean Christopherson
Quoted 10 lines · Thomas Lamprecht
Quoted 6 lines · Greg Kroah-Hartman
From: Sean Christopherson <[email protected]>
commit
16cfacc8085782dab8e365979356ce1ca87fd6ccupstream.Manually generate the PDPTR reserved bit mask when explicitly loading PDPTRs. The reserved bits that are being tracked by the MMU reflect the
It seems that a backport of this to stable and distro kernels tickled out some issue[0] for KVM Linux 64bit guests on older than about 8-10 year old Intel CPUs[1].
It manifests specifically when running with EPT disabled (no surprise there). Actually, it probably would reproduce simply with unrestricted guest disabled, but that's beside the point.
The issue is a flawed PAE-paging check in
kvm_set_cr3(), which causes KVM to incorrectly load PDPTRs in 64-bit mode and inject a #GP. It's a sneaky little bugger because the "if (is_long_mode()..." makes it appear to be correct at first glance.if (is_long_mode(vcpu) && (cr3 & rsvd_bits(cpuid_maxphyaddr(vcpu), 63))) return 1; else if (is_pae(vcpu) && is_paging(vcpu) && <--- needs !is_long_mode() !load_pdptrs(vcpu, vcpu->arch.walk_mmu, cr3)) return 1;With unrestricted guest, KVM doesn't intercept writes to CR3 and so doesn't trigger the buggy code. This doesn't fail upstream because the offending code was refactored to encapsulate the PAE checks in a single helper, precisely to avoid this type of headache.
commit
bf03d4f9334728bf7c8ffc7de787df48abd6340e
Author: Paolo Bonzini <[email protected]>
Date: Thu Jun 6 18:52:44 2019 +0200KVM: x86: introduce
is_pae_pagingChecking for 32-bit PAE is quite common around code that fiddles with the PDPTRs. Add a function to compress all checks into a single invocation.
Commit
bf03d4f93347("KVM: x86: introduceis_pae_paging") doesn't apply cleanly to 4.19 or earlier because of the VMX file movement in 4.20. But, the revelant changes inx86.cdo apply cleanly, and I've quadruple checked that the PAE checks invmx.care correct, i.e. applying the patch and ignoring thenested.c/vmx.cconflicts would be a viable lazy option.Quoted 3 lines
Basically, booting this kernel as host, then running an KVM guest distro or kernel fails it that guest kernel early in the boot phase without any error or other log to serial console, earlyprintk.
...
Quoted 1 line
Quoted 7 lines
Quoted 4 lines
[0]: https://bugzilla.kernel.org/show_bug.cgi?id=205441
[1]: models tested as problematic are: intel core2duo E8500; Xeon E5420; so
westmere, conroe and that stuff. AFAICT anything from about pre-2010 which has VMX support (i.e. is 64bit based)Note, not Westmere, which has EPT and unrestricted guest. Xeon E5420 is Harpertown, a.k.a. Penryn, the shrink of Conroe.
Thanks for figuring this out, can you send us a patch that we can apply to fix this issue in the stable tree?
greg k-h
Re: [PATCH 4.19 167/211] KVM: x86: Manually calculate reserved bits when loading PDPTRS
Quoted 63 lines · Greg Kroah-Hartman
Quoted 62 lines · Sean Christopherson
Quoted 10 lines · Thomas Lamprecht
Quoted 6 lines · Greg Kroah-Hartman
From: Sean Christopherson <[email protected]>
commit
16cfacc8085782dab8e365979356ce1ca87fd6ccupstream.Manually generate the PDPTR reserved bit mask when explicitly loading PDPTRs. The reserved bits that are being tracked by the MMU reflect the
It seems that a backport of this to stable and distro kernels tickled out some issue[0] for KVM Linux 64bit guests on older than about 8-10 year old Intel CPUs[1].
It manifests specifically when running with EPT disabled (no surprise there). Actually, it probably would reproduce simply with unrestricted guest disabled, but that's beside the point.
The issue is a flawed PAE-paging check in
kvm_set_cr3(), which causes KVM to incorrectly load PDPTRs in 64-bit mode and inject a #GP. It's a sneaky little bugger because the "if (is_long_mode()..." makes it appear to be correct at first glance.if (is_long_mode(vcpu) && (cr3 & rsvd_bits(cpuid_maxphyaddr(vcpu), 63))) return 1; else if (is_pae(vcpu) && is_paging(vcpu) && <--- needs !is_long_mode() !load_pdptrs(vcpu, vcpu->arch.walk_mmu, cr3)) return 1;With unrestricted guest, KVM doesn't intercept writes to CR3 and so doesn't trigger the buggy code. This doesn't fail upstream because the offending code was refactored to encapsulate the PAE checks in a single helper, precisely to avoid this type of headache.
commit
bf03d4f9334728bf7c8ffc7de787df48abd6340e
Author: Paolo Bonzini <[email protected]>
Date: Thu Jun 6 18:52:44 2019 +0200KVM: x86: introduce
is_pae_pagingChecking for 32-bit PAE is quite common around code that fiddles with the PDPTRs. Add a function to compress all checks into a single invocation.
Commit
bf03d4f93347("KVM: x86: introduceis_pae_paging") doesn't apply cleanly to 4.19 or earlier because of the VMX file movement in 4.20. But, the revelant changes inx86.cdo apply cleanly, and I've quadruple checked that the PAE checks invmx.care correct, i.e. applying the patch and ignoring thenested.c/vmx.cconflicts would be a viable lazy option.Quoted 3 lines
Basically, booting this kernel as host, then running an KVM guest distro or kernel fails it that guest kernel early in the boot phase without any error or other log to serial console, earlyprintk.
...
Quoted 5 lines
[0]: https://bugzilla.kernel.org/show_bug.cgi?id=205441
[1]: models tested as problematic are: intel core2duo E8500; Xeon E5420; so
westmere, conroe and that stuff. AFAICT anything from about pre-2010 which has VMX support (i.e. is 64bit based)
Quoted 6 lines
Quoted 2 lines
Note, not Westmere, which has EPT and unrestricted guest. Xeon E5420 is Harpertown, a.k.a. Penryn, the shrink of Conroe.
Thanks for figuring this out, can you send us a patch that we can apply to fix this issue in the stable tree?
Can do. A custom backport will be need for 4.20 and earlier, not 4.19 and earlier. I misremembered when we did the VMX refactoring.
For 5.0, 5.1 and 5.2, commit bf03d4f93347 can be applied directly.
Greg Kroah-Hartman
maintainerRe: [PATCH 4.19 167/211] KVM: x86: Manually calculate reserved bits when loading PDPTRS
Quoted 68 lines · Sean Christopherson
Quoted 67 lines · Greg Kroah-Hartman
Quoted 64 lines · Sean Christopherson
Quoted 10 lines · Thomas Lamprecht
Quoted 6 lines · Greg Kroah-Hartman
From: Sean Christopherson <[email protected]>
commit
16cfacc8085782dab8e365979356ce1ca87fd6ccupstream.Manually generate the PDPTR reserved bit mask when explicitly loading PDPTRs. The reserved bits that are being tracked by the MMU reflect the
It seems that a backport of this to stable and distro kernels tickled out some issue[0] for KVM Linux 64bit guests on older than about 8-10 year old Intel CPUs[1].
It manifests specifically when running with EPT disabled (no surprise there). Actually, it probably would reproduce simply with unrestricted guest disabled, but that's beside the point.
The issue is a flawed PAE-paging check in
kvm_set_cr3(), which causes KVM to incorrectly load PDPTRs in 64-bit mode and inject a #GP. It's a sneaky little bugger because the "if (is_long_mode()..." makes it appear to be correct at first glance.if (is_long_mode(vcpu) && (cr3 & rsvd_bits(cpuid_maxphyaddr(vcpu), 63))) return 1; else if (is_pae(vcpu) && is_paging(vcpu) && <--- needs !is_long_mode() !load_pdptrs(vcpu, vcpu->arch.walk_mmu, cr3)) return 1;With unrestricted guest, KVM doesn't intercept writes to CR3 and so doesn't trigger the buggy code. This doesn't fail upstream because the offending code was refactored to encapsulate the PAE checks in a single helper, precisely to avoid this type of headache.
commit
bf03d4f9334728bf7c8ffc7de787df48abd6340e
Author: Paolo Bonzini <[email protected]>
Date: Thu Jun 6 18:52:44 2019 +0200KVM: x86: introduce
is_pae_pagingChecking for 32-bit PAE is quite common around code that fiddles with the PDPTRs. Add a function to compress all checks into a single invocation.
Commit
bf03d4f93347("KVM: x86: introduceis_pae_paging") doesn't apply cleanly to 4.19 or earlier because of the VMX file movement in 4.20. But, the revelant changes inx86.cdo apply cleanly, and I've quadruple checked that the PAE checks invmx.care correct, i.e. applying the patch and ignoring thenested.c/vmx.cconflicts would be a viable lazy option.Quoted 3 lines
Basically, booting this kernel as host, then running an KVM guest distro or kernel fails it that guest kernel early in the boot phase without any error or other log to serial console, earlyprintk.
...
Quoted 5 lines
[0]: https://bugzilla.kernel.org/show_bug.cgi?id=205441
[1]: models tested as problematic are: intel core2duo E8500; Xeon E5420; so
westmere, conroe and that stuff. AFAICT anything from about pre-2010 which has VMX support (i.e. is 64bit based)Note, not Westmere, which has EPT and unrestricted guest. Xeon E5420 is Harpertown, a.k.a. Penryn, the shrink of Conroe.
Quoted 7 lines
Quoted 2 lines
Thanks for figuring this out, can you send us a patch that we can apply to fix this issue in the stable tree?
Can do. A custom backport will be need for 4.20 and earlier, not 4.19 and earlier. I misremembered when we did the VMX refactoring.
For 5.0, 5.1 and 5.2, commit
bf03d4f93347can be applied directly.
5.0, 5.1, and 5.2 are all long end-of-life, they are not getting any updates and no one should be using them, so nothing to worry about there.
Look at the releases page on kernel.org to see the currently active trees.
thanks,
greg k-h
Re: [PATCH 4.19 167/211] KVM: x86: Manually calculate reserved bits when loading PDPTRS
Quoted 5 lines · Greg Kroah-Hartman
Quoted 4 lines · Sean Christopherson
Quoted 2 lines · Greg Kroah-Hartman
Thanks for figuring this out, can you send us a patch that we can apply to fix this issue in the stable tree?
Quoted 8 lines
Quoted 4 lines
Can do. A custom backport will be need for 4.20 and earlier, not 4.19 and earlier. I misremembered when we did the VMX refactoring.
For 5.0, 5.1 and 5.2, commit
bf03d4f93347can be applied directly.5.0, 5.1, and 5.2 are all long end-of-life, they are not getting any updates and no one should be using them, so nothing to worry about there.
Backports sent for 4.14 and 4.19. 4.9 and 4.4 aren't affected as the bug was introduced in 4.14. by commit d1cd3ce90044 ("KVM: MMU: check guest CR3 reserved bits based on its physical address width.").
I did send patches for 4.9 and 4.4 for another PAE bug fix that I ran into while backporting; commit d35b34a9a70e ("kvm: mmu: Don't read PDPTEs when paging is not enabled"). I'm not aware of bug reports, but the patch is quite safe and should have been tagged for stable.
Greg Kroah-Hartman
maintainerPATCH 168/211 media: sn9c20x: Add MSI MS-1039 laptop to flip_dmi_table
In reply to Greg Kroah-HartmanFrom: Hans de Goede <[email protected]>
commit 7e0bb5828311f811309bed5749528ca04992af2f upstream.
Like a bunch of other MSI laptops the MS-1039 uses a 0c45:627b SN9C201 + OV7660 webcam which is mounted upside down.
Add it to the sn9c20x flip_dmi_table to deal with this.
--- drivers/media/usb/gspca/sn9c20x.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/media/usb/gspca/sn9c20x.c +7 -0
@@ -133,6 +133,13 @@ static const struct dmi_system_id flip_d } }, { + .ident = "MSI MS-1039", + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"MICRO-STAR INT'L CO.,LTD." ), + DMI_MATCH(DMI_PRODUCT_NAME, "MS-1039"), + } + }, + { .ident ="MSI MS-1632" , .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "MSI"),
Greg Kroah-Hartman
maintainerPATCH 169/211 media: dont drop front-end reference count for ->detach
In reply to Greg Kroah-HartmanFrom: Arnd Bergmann <[email protected]>
commit 14e3cdbb00a885eedc95c0cf8eda8fe28d26d6b4 upstream.
A bugfix introduce a link failure in configurations without CONFIG_MODULES:
In file included from drivers/media/usb/dvb-usb/pctv452e.c:20:0:drivers/media/usb/dvb-usb/pctv452e.c: In function 'pctv452e_frontend_attach':drivers/media/dvb-frontends/stb0899_drv.h:151:36: error: weak declaration of 'stb0899_attach' being applied to a already existing, static definition
The problem is that the !IS_REACHABLE() declaration of stb0899_attach() is a 'static inline' definition that clashes with the weak definition.
I further observed that the bugfix was only done for one of the five users of stb0899_attach(), the other four still have the problem. This reverts the bugfix and instead addresses the problem by not dropping the reference count when calling '->detach()', instead we call this function directly in dvb_frontend_put() before dropping the kref on the front-end.
I first submitted this in early 2018, and after some discussion it was apparently discarded. While there is a long-term plan in place, that plan is obviously not nearing completion yet, and the current kernel is still broken unless this patch is applied.
--- drivers/media/dvb-core/dvb_frontend.c | 4 +++- drivers/media/usb/dvb-usb/pctv452e.c | 8 -------- 2 files changed, 3 insertions(+), 9 deletions(-)
drivers/media/dvb-core/dvb_frontend.c +3 -1
@@ -164,6 +164,9 @@ static void dvb_frontend_free(struct krestatic void dvb_frontend_put (struct dvb_frontend *fe) { +/* call detach before dropping the reference count */ +if (fe->ops.detach) + fe->ops.detach (fe);/* * Check if the frontend was registered, as otherwise * kref was not initialized yet.
@@ -3035,7 +3038,6 @@ void dvb_frontend_detach(struct dvb_frondvb_frontend_invoke_release (fe, fe->ops.release_sec);dvb_frontend_invoke_release (fe, fe->ops.tuner_ops.release);dvb_frontend_invoke_release (fe, fe->ops.analog_ops.release); -dvb_frontend_invoke_release (fe, fe->ops.detach);dvb_frontend_put (fe); }EXPORT_SYMBOL (dvb_frontend_detach);
drivers/media/usb/dvb-usb/pctv452e.c +0 -8
@@ -913,14 +913,6 @@ static int pctv452e_frontend_attach(stru &a->dev->i2c_adap);if (!a->fe_adap[0 ].fe)return -ENODEV ; - -/* -* dvb_frontend will call dvb_detach for both stb0899_detach -* and stb0899_release but we only do dvb_attach(stb0899_attach). -* Increment the module refcount instead. -*/ -symbol_get (stb0899_attach); -if ((dvb_attach (lnbp22_attach, a->fe_adap[0 ].fe, &a->dev->i2c_adap)) ==NULL )err ("Cannot attach lnbp22\n" );
Greg Kroah-Hartman
maintainerPATCH 170/211 binfmt_elf: Do not move brk for INTERP-less ET_EXEC
In reply to Greg Kroah-HartmanFrom: Kees Cook <[email protected]>
commit 7be3cb019db1cbd5fd5ffe6d64a23fefa4b6f229 upstream.
When brk was moved for binaries without an interpreter, it should have been limited to ET_DYN only. In other words, the special case was an ET_DYN that lacks an INTERP, not just an executable that lacks INTERP. The bug manifested for giant static executables, where the brk would end up in the middle of the text area on 32-bit architectures.
--- fs/binfmt_elf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/binfmt_elf.c +2 -1
@@ -1144,7 +1144,8 @@ static int load_elf_binary(struct linux_* (since it grows up, and may collide early with the stack * growing down), and into the unused ELF_ET_DYN_BASE region. */ -if (IS_ENABLED (CONFIG_ARCH_HAS_ELF_RANDOMIZE ) && !interpreter) +if (IS_ENABLED (CONFIG_ARCH_HAS_ELF_RANDOMIZE ) && + loc->elf_ex.e_type ==ET_DYN && !interpreter) current->mm->brk = current->mm->start_brk =ELF_ET_DYN_BASE ;
Greg Kroah-Hartman
maintainerPATCH 171/211 ASoC: Intel: NHLT: Fix debug print format
In reply to Greg Kroah-HartmanFrom: Amadeusz Sławiński <[email protected]>
commit 855a06da37a773fd073d51023ac9d07988c87da8 upstream.
oem_table_id is 8 chars long, so we need to limit it, otherwise it may print some unprintable characters into dmesg.
--- sound/soc/intel/skylake/skl-nhlt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/intel/skylake/skl-nhlt.c +1 -1
@@ -231,7 +231,7 @@ int skl_nhlt_update_topology_bin(structstruct hdac_bus *bus =skl_to_bus (skl);struct device *dev = bus->dev; -dev_dbg (dev,"oem_id %.6s, oem_table_id %8s oem_revision %d\n" , +dev_dbg (dev,"oem_id %.6s, oem_table_id %.8s oem_revision %d\n" , nhlt->header.oem_id, nhlt->header.oem_table_id, nhlt->header.oem_revision);
Greg Kroah-Hartman
maintainerPATCH 172/211 ASoC: Intel: Skylake: Use correct function to access iomem space
In reply to Greg Kroah-HartmanFrom: Amadeusz Sławiński <[email protected]>
commit 17d29ff98fd4b70e9ccdac5e95e18a087e2737ef upstream.
For copying from __iomem, we should use __ioread32_copy.
reported by sparse:sound/soc/intel/skylake/skl-debug.c:437:34: warning: incorrect type in argument 1 (different address spaces)sound/soc/intel/skylake/skl-debug.c:437:34: expected void [noderef] <asn:2> *tosound/soc/intel/skylake/skl-debug.c:437:34: got unsigned char *sound/soc/intel/skylake/skl-debug.c:437:51: warning: incorrect type in argument 2 (different address spaces)sound/soc/intel/skylake/skl-debug.c:437:51: expected void const *fromsound/soc/intel/skylake/skl-debug.c:437:51: got void [noderef] <asn:2> *[assigned] fw_reg_addr
--- sound/soc/intel/skylake/skl-debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/intel/skylake/skl-debug.c +1 -1
@@ -196,7 +196,7 @@ static ssize_t fw_softreg_read(struct fimemset (d->fw_read_buff,0 ,FW_REG_BUF );if (w0_stat_sz >0 ) -__iowrite32_copy (d->fw_read_buff, fw_reg_addr, w0_stat_sz >>2 ); +__ioread32_copy (d->fw_read_buff, fw_reg_addr, w0_stat_sz >>2 );for (offset =0 ; offset <FW_REG_SIZE ; offset +=16 ) { ret +=snprintf (tmp + ret,FW_REG_BUF - ret,"%#.4x: " , offset);
Greg Kroah-Hartman
maintainerPATCH 173/211 ASoC: Intel: Fix use of potentially uninitialized variable
In reply to Greg Kroah-HartmanFrom: Amadeusz Sławiński <[email protected]>
commit 810f3b860850148788fc1ed8a6f5f807199fed65 upstream.
If ipc->ops.reply_msg_match is NULL, we may end up using uninitialized mask value.
reported by smatch:sound/soc/intel/common/sst-ipc.c:266 sst_ipc_reply_find_msg() error: uninitialized symbol 'mask'.
--- sound/soc/intel/common/sst-ipc.c | 2 ++ 1 file changed, 2 insertions(+)
sound/soc/intel/common/sst-ipc.c +2 -0
@@ -231,6 +231,8 @@ struct ipc_message *sst_ipc_reply_find_mif (ipc->ops.reply_msg_match !=NULL ) header = ipc->ops.reply_msg_match (header, &mask); +else + mask = (u64)-1 ;if (list_empty (&ipc->rx_list)) { dev_err(ipc->dev, "error: rx list empty but received 0x%llx\n",
Greg Kroah-Hartman
maintainerPATCH 174/211 ARM: samsung: Fix system restart on S3C6410
In reply to Greg Kroah-HartmanFrom: Lihua Yao <[email protected]>
commit 16986074035cc0205472882a00d404ed9d213313 upstream.
S3C6410 system restart is triggered by watchdog reset.
--- arch/arm/plat-samsung/watchdog-reset.c | 1 + 1 file changed, 1 insertion(+)
arch/arm/plat-samsung/watchdog-reset.c +1 -0
@@ -62,6 +62,7 @@ void samsung_wdt_reset(void)#ifdef CONFIG_OF static const struct of_device_id s3c2410_wdt_match[] = { { .compatible ="samsung,s3c2410-wdt" }, + { .compatible ="samsung,s3c6410-wdt" }, {}, };
Greg Kroah-Hartman
maintainerPATCH 175/211 ARM: zynq: Use memcpy_toio instead of memcpy on smp bring-up
In reply to Greg Kroah-HartmanFrom: Luis Araneda <[email protected]>
commit b7005d4ef4f3aa2dc24019ffba03a322557ac43d upstream.
This fixes a kernel panic on memcpy whenFORTIFY_SOURCE is enabled.
The initial smp implementation on commit aa7eb2bb4e4a ("arm: zynq: Add smp support")
used memcpy, which worked fine until commit ee333554fed5 ("ARM: 8749/1: Kconfig: Add ARCH_HAS_FORTIFY_SOURCE") enabled overflow checks at runtime, producing a read overflow panic.
The computed size of memcpy args are:
- p_size (dst): 4294967295 = (size_t) -1
- q_size (src): 1
- size (len): 8
Additionally, the memory is marked as __iomem, so one of the memcpy_* functions should be used for read/write.
--- arch/arm/mach-zynq/platsmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-zynq/platsmp.c +1 -1
@@ -65,7 +65,7 @@ int zynq_cpun_start(u32 address, int cpu* 0x4: Jump by mov instruction * 0x8: Jumping address */ -memcpy ((__force void *)zero, &zynq_secondary_trampoline, +memcpy_toio (zero, &zynq_secondary_trampoline, trampoline_size);writel (address, zero + trampoline_size);
Greg Kroah-Hartman
maintainerPATCH 176/211 Revert "arm64: Remove unnecessary ISBs from set_{pte,pmd,pud}"
In reply to Greg Kroah-HartmanFrom: Will Deacon <[email protected]>
commit d0b7a302d58abe24ed0f32a0672dd4c356bb73db upstream.
This reverts commit 24fe1b0efad4fcdd32ce46cffeab297f22581707.
Commit 24fe1b0efad4fcdd ("arm64: Remove unnecessary ISBs from set_{pte,pmd,pud}") removed ISB instructions immediately following updates to the page table, on the grounds that they are not required by the architecture and a DSB alone is sufficient to ensure that subsequent data accesses use the new translation:
DDI0487E_a, B2-128:
| ... no instruction that appears in program order after the DSB | instruction can alter any state of the system or perform any part of | its functionality until the DSB completes other than: | | * Being fetched from memory and decoded | * Reading the general-purpose, SIMD and floating-point, | Special-purpose, or System registers that are directly or indirectly | read without causing side-effects.
However, the same document also states the following:
DDI0487E_a, B2-125:
| DMB and DSB instructions affect reads and writes to the memory system | generated by Load/Store instructions and data or unified cache | maintenance instructions being executed by the PE. Instruction fetches | or accesses caused by a hardware translation table access are not | explicit accesses.
which appears to claim that the DSB alone is insufficient. Unfortunately, some CPU designers have followed the second clause above, whereas in Linux we've been relying on the first. This means that our mapping sequence:
MOV X0, <valid pte>
STR X0, [Xptep] // Store new PTE to page table
DSB ISHST
LDR X1, [X2] // Translates using the new PTE
can actually raise a translation fault on the load instruction because the translation can be performed speculatively before the page table update and then marked as "faulting" by the CPU. For user PTEs, this is ok because we can handle the spurious fault, but for kernel PTEs and intermediate table entries this results in a panic().
Revert the offending commit to reintroduce the missing barriers.
--- arch/arm64/include/asm/pgtable.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
arch/arm64/include/asm/pgtable.h +5 -1
@@ -224,8 +224,10 @@ static inline void set_pte(pte_t *ptep,* Only if the new pte is valid and kernel, otherwise TLB maintenance * or update_mmu_cache() have the necessary barriers. */ -if (pte_valid_not_user (pte)) +if (pte_valid_not_user (pte)) {dsb (ishst); +isb (); + } }extern void __sync_icache_dcache (pte_t pteval);
@@ -432,6 +434,7 @@ static inline void set_pmd(pmd_t *pmdp, {WRITE_ONCE (*pmdp, pmd);dsb (ishst); +isb (); }static inline void pmd_clear (pmd_t *pmdp)
@@ -483,6 +486,7 @@ static inline void set_pud(pud_t *pudp, {WRITE_ONCE (*pudp, pud);dsb (ishst); +isb (); }static inline void pud_clear (pud_t *pudp)
Greg Kroah-Hartman
maintainerPATCH 177/211 arm64: tlb: Ensure we execute an ISB following walk cache invalidation
In reply to Greg Kroah-HartmanFrom: Will Deacon <[email protected]>
commit 51696d346c49c6cf4f29e9b20d6e15832a2e3408 upstream.
05f2d2f83b5a ("arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable") added a new TLB invalidation helper which is used when freeing intermediate levels of page table used for kernel mappings, but is missing the required ISB instruction after completion of the TLBI instruction.
Add the missing barrier.
--- arch/arm64/include/asm/tlbflush.h | 1 + 1 file changed, 1 insertion(+)
arch/arm64/include/asm/tlbflush.h +1 -0
@@ -224,6 +224,7 @@ static inline void __flush_tlb_kernel_pg__tlbi (vaae1is, addr);dsb (ish); + isb(); }#endif
Greg Kroah-Hartman
maintainerPATCH 178/211 arm64: dts: rockchip: limit clock rate of MMC controllers for RK3328
In reply to Greg Kroah-HartmanFrom: Shawn Lin <[email protected]>
commit 03e61929c0d227ed3e1c322fc3804216ea298b7e upstream.
150MHz is a fundamental limitation of RK3328 Soc, w/o this limitation, eMMC, for instance, will run into 200MHz clock rate in HS200 mode, which makes the RK3328 boards not always boot properly. By adding it in rk3328.dtsi would also obviate the worry of missing it when adding new boards.
--- arch/arm64/boot/dts/rockchip/rk3328.dtsi | 3 +++ 1 file changed, 3 insertions(+)
arch/arm64/boot/dts/rockchip/rk3328.dtsi +3 -0
@@ -708,6 +708,7 @@ <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>; clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; fifo-depth = <0x100>; + max-frequency = <150000000>; status = "disabled"; };
@@ -719,6 +720,7 @@ <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>; clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; fifo-depth = <0x100>; + max-frequency = <150000000>; status = "disabled"; };
@@ -730,6 +732,7 @@ <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>; clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; fifo-depth = <0x100>; + max-frequency = <150000000>; status = "disabled"; };
Greg Kroah-Hartman
maintainerPATCH 179/211 alarmtimer: Use EOPNOTSUPP instead of ENOTSUPP
In reply to Greg Kroah-HartmanFrom: Thadeu Lima de Souza Cascardo <[email protected]>
commit f18ddc13af981ce3c7b7f26925f099e7c6929aba upstream.
ENOTSUPP is not supposed to be returned to userspace. This was found on an OpenPower machine, where the RTC does not support set_alarm.
On that system, a clock_nanosleep(CLOCK_REALTIME_ALARM, ...) results in "524 Unknown error 524"
Replace it with EOPNOTSUPP which results in the expected "95 Operation not supported" error.
--- kernel/time/alarmtimer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
kernel/time/alarmtimer.c +2 -2
@@ -676,7 +676,7 @@ static int alarm_timer_create(struct k_ienum alarmtimer_type type;if (!alarmtimer_get_rtcdev ()) -return -ENOTSUPP ; +return -EOPNOTSUPP ;if (!capable (CAP_WAKE_ALARM ))return -EPERM ;
@@ -794,7 +794,7 @@ static int alarm_timer_nsleep(const clocint ret =0 ;if (!alarmtimer_get_rtcdev ()) -return -ENOTSUPP ; +return -EOPNOTSUPP ;if (flags & ~TIMER_ABSTIME )return -EINVAL ;
Greg Kroah-Hartman
maintainerPATCH 180/211 regulator: Defer init completion for a while after late_initcall
In reply to Greg Kroah-HartmanFrom: Mark Brown <[email protected]>
commit 55576cf1853798e86f620766e23b604c9224c19c upstream.
The kernel has no way of knowing when we have finished instantiating drivers, between deferred probe and systems that build key drivers as modules we might be doing this long after userspace has booted. This has always been a bit of an issue with regulator_init_complete since it can power off hardware that's not had it's driver loaded which can result in user visible effects, the main case is powering off displays. Practically speaking it's not been an issue in real systems since most systems that use the regulator API are embedded and build in key drivers anyway but with Arm laptops coming on the market it's becoming more of an issue so let's do something about it.
In the absence of any better idea just defer the powering off for 30s after late_initcall(), this is obviously a hack but it should mask the issue for now and it's no more arbitrary than late_initcall() itself. Ideally we'd have some heuristics to detect if we're on an affected system and tune or skip the delay appropriately, and there may be some need for a command line option to be added.
--- drivers/regulator/core.c | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-)
drivers/regulator/core.c +31 -11
@@ -4789,7 +4789,7 @@ static int __init regulator_init(void)/* init early to allow our consumers to complete system booting */ core_initcall (regulator_init); -static int __init regulator_late_cleanup (struct device *dev,void *data) +static int regulator_late_cleanup (struct device *dev,void *data) {struct regulator_dev *rdev =dev_to_rdev (dev);const struct regulator_ops *ops = rdev->desc->ops;
@@ -4838,18 +4838,9 @@ unlock:return 0 ; } -static int __init regulator_init_complete (void ) +static void regulator_init_complete_work_function (struct work_struct *work) {/* -* Since DT doesn't provide an idiomatic mechanism for -* enabling full constraints and since it's much more natural -* with DT to provide them just assume that a DT enabled -* system has full constraints. -*/ -if (of_have_populated_dt ()) - has_full_constraints = true; - -/* * Regulators may had failed to resolve their input supplies * when were registered, either because the input supply was * not registered yet or because its parent device was not
@@ -4866,6 +4857,35 @@ static int __init regulator_init_complet*/ class_for_each_device (®ulator_class,NULL ,NULL , regulator_late_cleanup); +} + +static DECLARE_DELAYED_WORK(regulator_init_complete_work, + regulator_init_complete_work_function); + +static int __init regulator_init_complete (void ) +{ +/* +* Since DT doesn't provide an idiomatic mechanism for +* enabling full constraints and since it's much more natural +* with DT to provide them just assume that a DT enabled +* system has full constraints. +*/ +if (of_have_populated_dt ()) + has_full_constraints = true; + +/* +* We punt completion for an arbitrary amount of time since +* systems like distros will load many drivers from userspace +* so consumers might not always be ready yet, this is +* particularly an issue with laptops where this might bounce +* the display off then on. Ideally we'd get a notification +* from userspace when this happens but we don't so just wait +* a bit and hope we waited long enough. It'd be better if +* we'd only do this on systems that need it, and a kernel +* command line option might be useful. +*/ +schedule_delayed_work (®ulator_init_complete_work, +msecs_to_jiffies (30000 ));class_for_each_device (®ulator_class,NULL ,NULL , regulator_register_fill_coupling_array);
Greg Kroah-Hartman
maintainerPATCH 181/211 efifb: BGRT: Improve efifb_bgrt_sanity_check
In reply to Greg Kroah-HartmanFrom: Hans de Goede <[email protected]>
commit 51677dfcc17f88ed754143df670ff064eae67f84 upstream.
For various reasons, at least with x86 EFI firmwares, the xoffset and yoffset in the BGRT info are not always reliable.
Extensive testing has shown that when the info is correct, the BGRT image is always exactly centered horizontally (the yoffset variable is more variable and not always predictable).
This commit simplifies / improves the bgrt_sanity_check to simply check that the BGRT image is exactly centered horizontally and skips (re)drawing it when it is not.
This fixes the BGRT image sometimes being drawn in the wrong place.
--- drivers/video/fbdev/efifb.c | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-)
drivers/video/fbdev/efifb.c +6 -21
@@ -122,28 +122,13 @@ static void efifb_copy_bmp(u8 *src, u32*/ static bool efifb_bgrt_sanity_check (struct screen_info *si,u32 bmp_width) { -static const int default_resolutions[][2 ] = { - {800 ,600 }, - {1024 ,768 }, - {1280 ,1024 }, - }; -u32 i, right_margin; +/* +* All x86 firmwares horizontally center the image (the yoffset +* calculations differ between boards, but xoffset is predictable). +*/ +u32 expected_xoffset = (si->lfb_width - bmp_width) /2 ; -for (i =0 ; i <ARRAY_SIZE (default_resolutions); i++) { -if (default_resolutions[i][0 ] == si->lfb_width && - default_resolutions[i][1 ] == si->lfb_height) -break ; - } -/* If not a default resolution used for textmode, this should be fine */ -if (i >=ARRAY_SIZE (default_resolutions)) -return true; - -/* If the right margin is 5 times smaller then the left one, reject */ - right_margin = si->lfb_width - (bgrt_tab.image_offset_x + bmp_width); -if (right_margin < (bgrt_tab.image_offset_x /5 )) -return false; - -return true; +return bgrt_tab.image_offset_x == expected_xoffset; }#else static bool efifb_bgrt_sanity_check (struct screen_info *si,u32 bmp_width)
Greg Kroah-Hartman
maintainerPATCH 182/211 gfs2: clear buf_in_tr when ending a transaction in sweep_bh_for_rgrps
In reply to Greg Kroah-HartmanFrom: Bob Peterson <[email protected]>
commit f0b444b349e33ae0d3dd93e25ca365482a5d17d4 upstream.
In function sweep_bh_for_rgrps, which is a helper for punch_hole, it uses variable buf_in_tr to keep track of when it needs to commit pending block frees on a partial delete that overflows the transaction created for the delete. The problem is that the variable was initialized at the start of function sweep_bh_for_rgrps but it was never cleared, even when starting a new transaction.
This patch reinitializes the variable when the transaction is ended, so the next transaction starts out with it cleared.
--- fs/gfs2/bmap.c | 1 + 1 file changed, 1 insertion(+)
fs/gfs2/bmap.c +1 -0
@@ -1630,6 +1630,7 @@ out_unlock:brelse (dibh);up_write (&ip->i_rw_mutex);gfs2_trans_end (sdp); + buf_in_tr = false; }gfs2_glock_dq_uninit (rd_gh);cond_resched ();
Greg Kroah-Hartman
maintainerPATCH 183/211 memcg, oom: dont require __GFP_FS when invoking memcg OOM killer
In reply to Greg Kroah-HartmanFrom: Tetsuo Handa <[email protected]>
commit f9c645621a28e37813a1de96d9cbd89cde94a1e4 upstream.
Masoud Sharbiani noticed that commit 29ef680ae7c21110 ("memcg, oom: move out_of_memory back to the charge path") broke memcg OOM called from __xfs_filemap_fault() path. It turned out that try_charge() is retrying forever without making forward progress because mem_cgroup_oom(GFP_NOFS) cannot invoke the OOM killer due to commit 3da88fb3bacfaa33 ("mm, oom:
move GFP_NOFS check to out_of_memory").
Allowing forced charge due to being unable to invoke memcg OOM killer will lead to global OOM situation. Also, just returning -ENOMEM will be risky because OOM path is lost and some paths (e.g. get_user_pages()) will leak -ENOMEM. Therefore, invoking memcg OOM killer (despite GFP_NOFS) will be the only choice we can choose for now.
Until 29ef680ae7c21110, we were able to invoke memcg OOM killer when GFP_KERNEL reclaim failed [1]. But since 29ef680ae7c21110, we need to invoke memcg OOM killer when GFP_NOFS reclaim failed [2]. Although in the past we did invoke memcg OOM killer for GFP_NOFS [3], we might get pre-mature memcg OOM reports due to this patch.
[1]
leaker invoked oom-killer: gfp_mask=0x6200ca(GFP_HIGHUSER_MOVABLE), nodemask=(null), order=0, oom_score_adj=0
CPU: 0 PID: 2746 Comm: leaker Not tainted 4.18.0+ #19 Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/13/2018 Call Trace: dump_stack+0x63/0x88 dump_header+0x67/0x27a ? mem_cgroup_scan_tasks+0x91/0xf0 oom_kill_process+0x210/0x410 out_of_memory+0x10a/0x2c0 mem_cgroup_out_of_memory+0x46/0x80 mem_cgroup_oom_synchronize+0x2e4/0x310 ? high_work_func+0x20/0x20 pagefault_out_of_memory+0x31/0x76 mm_fault_error+0x55/0x115 ? handle_mm_fault+0xfd/0x220 __do_page_fault+0x433/0x4e0 do_page_fault+0x22/0x30 ? page_fault+0x8/0x30 page_fault+0x1e/0x30 RIP: 0033:0x4009f0 Code: 03 00 00 00 e8 71 fd ff ff 48 83 f8 ff 49 89 c6 74 74 48 89 c6 bf c0 0c 40 00 31 c0 e8 69 fd ff ff 45 85 ff 7e 21 31 c9 66 90 <41> 0f be 14 0e 01 d3 f7 c1 ff 0f 00 00 75 05 41 c6 04 0e 2a 48 83 RSP: 002b:00007ffe29ae96f0 EFLAGS: 00010206 RAX: 000000000000001b RBX: 0000000000000000 RCX: 0000000001ce1000 RDX: 0000000000000000 RSI: 000000007fffffe5 RDI: 0000000000000000 RBP: 000000000000000c R08: 0000000000000000 R09: 00007f94be09220d R10: 0000000000000002 R11: 0000000000000246 R12: 00000000000186a0 R13: 0000000000000003 R14: 00007f949d845000 R15: 0000000002800000 Task in /leaker killed as a result of limit of /leaker memory: usage 524288kB, limit 524288kB, failcnt 158965 memory+swap: usage 0kB, limit 9007199254740988kB, failcnt 0 kmem: usage 2016kB, limit 9007199254740988kB, failcnt 0 Memory cgroup stats for /leaker: cache:844KB rss:521136KB rss_huge:0KB shmem:0KB mapped_file:0KB dirty:132KB writeback:0KB inactive_anon:0KB active_anon:521224KB inactive_file:1012KB active_file:8KB unevictable:0KB Memory cgroup out of memory: Kill process 2746 (leaker) score 998 or sacrifice child Killed process 2746 (leaker) total-vm:536704kB, anon-rss:521176kB, file-rss:1208kB, shmem-rss:0kB oom_reaper: reaped process 2746 (leaker), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[2]
leaker invoked oom-killer: gfp_mask=0x600040(GFP_NOFS), nodemask=(null), order=0, oom_score_adj=0
CPU: 1 PID: 2746 Comm: leaker Not tainted 4.18.0+ #20 Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/13/2018 Call Trace: dump_stack+0x63/0x88 dump_header+0x67/0x27a ? mem_cgroup_scan_tasks+0x91/0xf0 oom_kill_process+0x210/0x410 out_of_memory+0x109/0x2d0 mem_cgroup_out_of_memory+0x46/0x80 try_charge+0x58d/0x650 ? __radix_tree_replace+0x81/0x100 mem_cgroup_try_charge+0x7a/0x100 __add_to_page_cache_locked+0x92/0x180 add_to_page_cache_lru+0x4d/0xf0 iomap_readpages_actor+0xde/0x1b0 ? iomap_zero_range_actor+0x1d0/0x1d0 iomap_apply+0xaf/0x130 iomap_readpages+0x9f/0x150 ? iomap_zero_range_actor+0x1d0/0x1d0 xfs_vm_readpages+0x18/0x20 [xfs] read_pages+0x60/0x140 __do_page_cache_readahead+0x193/0x1b0 ondemand_readahead+0x16d/0x2c0 page_cache_async_readahead+0x9a/0xd0 filemap_fault+0x403/0x620 ? alloc_set_pte+0x12c/0x540 ? _cond_resched+0x14/0x30 __xfs_filemap_fault+0x66/0x180 [xfs] xfs_filemap_fault+0x27/0x30 [xfs] __do_fault+0x19/0x40 __handle_mm_fault+0x8e8/0xb60 handle_mm_fault+0xfd/0x220 __do_page_fault+0x238/0x4e0 do_page_fault+0x22/0x30 ? page_fault+0x8/0x30 page_fault+0x1e/0x30 RIP: 0033:0x4009f0 Code: 03 00 00 00 e8 71 fd ff ff 48 83 f8 ff 49 89 c6 74 74 48 89 c6 bf c0 0c 40 00 31 c0 e8 69 fd ff ff 45 85 ff 7e 21 31 c9 66 90 <41> 0f be 14 0e 01 d3 f7 c1 ff 0f 00 00 75 05 41 c6 04 0e 2a 48 83 RSP: 002b:00007ffda45c9290 EFLAGS: 00010206 RAX: 000000000000001b RBX: 0000000000000000 RCX: 0000000001a1e000 RDX: 0000000000000000 RSI: 000000007fffffe5 RDI: 0000000000000000 RBP: 000000000000000c R08: 0000000000000000 R09: 00007f6d061ff20d R10: 0000000000000002 R11: 0000000000000246 R12: 00000000000186a0 R13: 0000000000000003 R14: 00007f6ce59b2000 R15: 0000000002800000 Task in /leaker killed as a result of limit of /leaker memory: usage 524288kB, limit 524288kB, failcnt 7221 memory+swap: usage 0kB, limit 9007199254740988kB, failcnt 0 kmem: usage 1944kB, limit 9007199254740988kB, failcnt 0 Memory cgroup stats for /leaker: cache:3632KB rss:518232KB rss_huge:0KB shmem:0KB mapped_file:0KB dirty:0KB writeback:0KB inactive_anon:0KB active_anon:518408KB inactive_file:3908KB active_file:12KB unevictable:0KB Memory cgroup out of memory: Kill process 2746 (leaker) score 992 or sacrifice child Killed process 2746 (leaker) total-vm:536704kB, anon-rss:518264kB, file-rss:1188kB, shmem-rss:0kB oom_reaper: reaped process 2746 (leaker), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[3]
leaker invoked oom-killer: gfp_mask=0x50, order=0, oom_score_adj=0 leaker cpuset=/ mems_allowed=0
CPU: 1 PID: 3206 Comm: leaker Not tainted 3.10.0-957.27.2.el7.x86_64 #1 Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/13/2018 Call Trace: [<ffffffffaf364147>] dump_stack+0x19/0x1b [<ffffffffaf35eb6a>] dump_header+0x90/0x229 [<ffffffffaedbb456>] ? find_lock_task_mm+0x56/0xc0 [<ffffffffaee32a38>] ? try_get_mem_cgroup_from_mm+0x28/0x60 [<ffffffffaedbb904>] oom_kill_process+0x254/0x3d0 [<ffffffffaee36c36>] mem_cgroup_oom_synchronize+0x546/0x570 [<ffffffffaee360b0>] ? mem_cgroup_charge_common+0xc0/0xc0 [<ffffffffaedbc194>] pagefault_out_of_memory+0x14/0x90 [<ffffffffaf35d072>] mm_fault_error+0x6a/0x157 [<ffffffffaf3717c8>] __do_page_fault+0x3c8/0x4f0 [<ffffffffaf371925>] do_page_fault+0x35/0x90 [<ffffffffaf36d768>] page_fault+0x28/0x30 Task in /leaker killed as a result of limit of /leaker memory: usage 524288kB, limit 524288kB, failcnt 20628 memory+swap: usage 524288kB, limit 9007199254740988kB, failcnt 0 kmem: usage 0kB, limit 9007199254740988kB, failcnt 0 Memory cgroup stats for /leaker: cache:840KB rss:523448KB rss_huge:0KB mapped_file:0KB swap:0KB inactive_anon:0KB active_anon:523448KB inactive_file:464KB active_file:376KB unevictable:0KB Memory cgroup out of memory: Kill process 3206 (leaker) score 970 or sacrifice child Killed process 3206 (leaker) total-vm:536692kB, anon-rss:523304kB, file-rss:412kB, shmem-rss:0kB
Bisected by Masoud Sharbiani.
--- mm/oom_kill.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
mm/oom_kill.c +3 -2
@@ -1089,9 +1089,10 @@ bool out_of_memory(struct oom_control *o* The OOM killer does not compensate for IO-less reclaim. * pagefault_out_of_memory lost its gfp context so we have to * make sure exclude 0 mask - all other users should have at least -* ___GFP_DIRECT_RECLAIM to get here. +* ___GFP_DIRECT_RECLAIM to get here. But mem_cgroup_oom() has to +* invoke the OOM killer even if it is a GFP_NOFS allocation. */ -if (oc->gfp_mask && !(oc->gfp_mask & __GFP_FS)) +if (oc->gfp_mask && !(oc->gfp_mask & __GFP_FS) && !is_memcg_oom (oc))return true;/*
Greg Kroah-Hartman
maintainerPATCH 184/211 memcg, kmem: do not fail __GFP_NOFAIL charges
In reply to Greg Kroah-HartmanFrom: Michal Hocko <[email protected]>
commit e55d9d9bfb69405bd7615c0f8d229d8fafb3e9b8 upstream.
Thomas has noticed the following NULL ptr dereference when using cgroup v1 kmem limit:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI CPU: 3 PID: 16923 Comm: gtk-update-icon Not tainted 4.19.51 #42 Hardware name: Gigabyte Technology Co., Ltd. Z97X-Gaming G1/Z97X-Gaming G1, BIOS F9 07/31/2015 RIP: 0010:create_empty_buffers+0x24/0x100 Code: cd 0f 1f 44 00 00 0f 1f 44 00 00 41 54 49 89 d4 ba 01 00 00 00 55 53 48 89 fb e8 97 fe ff ff 48 89 c5 48 89 c2 eb 03 48 89 ca <48> 8b 4a 08 4c 09 22 48 85 c9 75 f1 48 89 6a 08 48 8b 43 18 48 8d RSP: 0018:ffff927ac1b37bf8 EFLAGS: 00010286 RAX: 0000000000000000 RBX: fffff2d4429fd740 RCX: 0000000100097149 RDX: 0000000000000000 RSI: 0000000000000082 RDI: ffff9075a99fbe00 RBP: 0000000000000000 R08: fffff2d440949cc8 R09: 00000000000960c0 R10: 0000000000000002 R11: 0000000000000000 R12: 0000000000000000 R13: ffff907601f18360 R14: 0000000000002000 R15: 0000000000001000 FS: 00007fb55b288bc0(0000) GS:ffff90761f8c0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000008 CR3: 000000007aebc002 CR4: 00000000001606e0 Call Trace: create_page_buffers+0x4d/0x60 __block_write_begin_int+0x8e/0x5a0 ? ext4_inode_attach_jinode.part.82+0xb0/0xb0 ? jbd2__journal_start+0xd7/0x1f0 ext4_da_write_begin+0x112/0x3d0 generic_perform_write+0xf1/0x1b0 ? file_update_time+0x70/0x140 __generic_file_write_iter+0x141/0x1a0 ext4_file_write_iter+0xef/0x3b0 __vfs_write+0x17e/0x1e0 vfs_write+0xa5/0x1a0 ksys_write+0x57/0xd0 do_syscall_64+0x55/0x160 entry_SYSCALL_64_after_hwframe+0x44/0xa9
Tetsuo then noticed that this is because the __memcg_kmem_charge_memcg fails __GFP_NOFAIL charge when the kmem limit is reached. This is a wrong behavior because nofail allocations are not allowed to fail. Normal charge path simply forces the charge even if that means to cross the limit. Kmem accounting should be doing the same.
--- mm/memcontrol.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
mm/memcontrol.c +10 -0
@@ -2637,6 +2637,16 @@ int memcg_kmem_charge_memcg(struct pageif (!cgroup_subsys_on_dfl (memory_cgrp_subsys) && !page_counter_try_charge (&memcg->kmem, nr_pages, &counter)) { + +/* +* Enforce __GFP_NOFAIL allocation because callers are not +* prepared to see failures and likely do not have any failure +* handling code. +*/ +if (gfp & __GFP_NOFAIL) { +page_counter_charge (&memcg->kmem, nr_pages); +return 0 ; + }cancel_charge (memcg, nr_pages);return -ENOMEM ; }
Greg Kroah-Hartman
maintainerPATCH 185/211 i40e: check __I40E_VF_DISABLE bit in i40e_sync_filters_subtask
In reply to Greg Kroah-HartmanFrom: Stefan Assmann <[email protected]>
commit a7542b87607560d0b89e7ff81d870bd6ff8835cb upstream.
While testing VF spawn/destroy the following panic occurred.
BUG: unable to handle kernel NULL pointer dereference at 0000000000000029 [...] Workqueue: i40e i40e_service_task [i40e] RIP: 0010:i40e_sync_vsi_filters+0x6fd/0xc60 [i40e] [...] Call Trace: ? __switch_to_asm+0x35/0x70 ? __switch_to_asm+0x41/0x70 ? __switch_to_asm+0x35/0x70 ? _cond_resched+0x15/0x30 i40e_sync_filters_subtask+0x56/0x70 [i40e] i40e_service_task+0x382/0x11b0 [i40e] ? __switch_to_asm+0x41/0x70 ? __switch_to_asm+0x41/0x70 process_one_work+0x1a7/0x3b0 worker_thread+0x30/0x390 ? create_worker+0x1a0/0x1a0 kthread+0x112/0x130 ? kthread_bind+0x30/0x30 ret_from_fork+0x35/0x40
Investigation revealed a race where pf->vf[vsi->vf_id].trusted may get accessed by the watchdog via i40e_sync_filters_subtask() although i40e_free_vfs() already free'd pf->vf.
To avoid this the call to i40e_sync_vsi_filters() in i40e_sync_filters_subtask() needs to be guarded by __I40E_VF_DISABLE, which is also used by i40e_free_vfs().
Note: put the __I40E_VF_DISABLE check after the __I40E_MACVLAN_SYNC_PENDING check as the latter is more likely to trigger.
--- drivers/net/ethernet/intel/i40e/i40e_main.c | 5 +++++ 1 file changed, 5 insertions(+)
drivers/net/ethernet/intel/i40e/i40e_main.c +5 -0
@@ -2566,6 +2566,10 @@ static void i40e_sync_filters_subtask(streturn ;if (!test_and_clear_bit (__I40E_MACVLAN_SYNC_PENDING, pf->state))return ; +if (test_and_set_bit (__I40E_VF_DISABLE, pf->state)) { +set_bit (__I40E_MACVLAN_SYNC_PENDING, pf->state); +return ; + }for (v =0 ; v < pf->num_alloc_vsi; v++) { if (pf->vsi[v] &&
@@ -2580,6 +2584,7 @@ static void i40e_sync_filters_subtask(st } } } +clear_bit (__I40E_VF_DISABLE, pf->state); }/**
Greg Kroah-Hartman
maintainerPATCH 186/211 block: fix null pointer dereference in blk_mq_rq_timed_out()
In reply to Greg Kroah-HartmanFrom: Yufen Yu <[email protected]>
commit 8d6996630c03d7ceeabe2611378fea5ca1c3f1b3 upstream.
We got a null pointer deference BUG_ON in blk_mq_rq_timed_out() as following:
[ 108.825472] BUG: kernel NULL pointer dereference, address: 0000000000000040 [ 108.827059] PGD 0 P4D 0 [ 108.827313] Oops: 0000 [#1] SMP PTI [ 108.827657] CPU: 6 PID: 198 Comm: kworker/6:1H Not tainted 5.3.0-rc8+ #431 [ 108.829503] Workqueue: kblockd blk_mq_timeout_work [ 108.829913] RIP: 0010:blk_mq_check_expired+0x258/0x330 [ 108.838191] Call Trace: [ 108.838406] bt_iter+0x74/0x80 [ 108.838665] blk_mq_queue_tag_busy_iter+0x204/0x450 [ 108.839074] ? __switch_to_asm+0x34/0x70 [ 108.839405] ? blk_mq_stop_hw_queue+0x40/0x40 [ 108.839823] ? blk_mq_stop_hw_queue+0x40/0x40 [ 108.840273] ? syscall_return_via_sysret+0xf/0x7f [ 108.840732] blk_mq_timeout_work+0x74/0x200 [ 108.841151] process_one_work+0x297/0x680 [ 108.841550] worker_thread+0x29c/0x6f0 [ 108.841926] ? rescuer_thread+0x580/0x580 [ 108.842344] kthread+0x16a/0x1a0 [ 108.842666] ? kthread_flush_work+0x170/0x170 [ 108.843100] ret_from_fork+0x35/0x40
The bug is caused by the race between timeout handle and completion for flush request.
When timeout handle function blk_mq_rq_timed_out() try to read 'req->q->mq_ops', the 'req' have completed and reinitiated by next flush request, which would call blk_rq_init() to clear 'req' as 0.
After commit 12f5b93145 ("blk-mq: Remove generation seqeunce"), normal requests lifetime are protected by refcount. Until 'rq->ref' drop to zero, the request can really be free. Thus, these requests cannot been reused before timeout handle finish.
However, flush request has defined .end_io and rq->end_io() is still called even if 'rq->ref' doesn't drop to zero. After that, the 'flush_rq' can be reused by the next flush request handle, resulting in null pointer deference BUG ON.
We fix this problem by covering flush request with 'rq->ref'. If the refcount is not zero, flush_end_io() return and wait the last holder recall it. To record the request status, we add a new entry 'rq_status', which will be used in flush_end_io().
-------
v2:
- move rq_status from struct request to struct blk_flush_queue
v3:
- remove unnecessary '{}' pair.
v4:
- let spinlock to protect 'fq->rq_status'
v5:
- move rq_status after flush_running_idx member of struct blk_flush_queue
--- block/blk-flush.c | 10 ++++++++++ block/blk-mq.c | 5 ++++- block/blk.h | 7 +++++++ 3 files changed, 21 insertions(+), 1 deletion(-)
block/blk-flush.c +10 -0
@@ -232,6 +232,16 @@ static void flush_end_io(struct request/* release the tag's ownership to the req cloned from */ spin_lock_irqsave (&fq->mq_flush_lock, flags); + +if (!refcount_dec_and_test (&flush_rq->ref)) { + fq->rq_status = error; +spin_unlock_irqrestore (&fq->mq_flush_lock, flags); +return ; + } + +if (fq->rq_status !=BLK_STS_OK ) + error = fq->rq_status; + hctx =blk_mq_map_queue (q, flush_rq->mq_ctx->cpu);if (!q->elevator) {blk_mq_tag_set_rq (hctx, flush_rq->tag, fq->orig_rq);
block/blk-mq.c +4 -1
@@ -844,7 +844,10 @@ static void blk_mq_check_expired(struct*/ if (blk_mq_req_expired (rq, next))blk_mq_rq_timed_out (rq, reserved); -if (refcount_dec_and_test (&rq->ref)) + +if (is_flush_rq (rq, hctx)) + rq->end_io (rq,0 ); +else if (refcount_dec_and_test (&rq->ref))__blk_mq_free_request (rq); }
block/blk.h +7 -0
@@ -23,6 +23,7 @@ struct blk_flush_queue { unsigned int flush_queue_delayed:1; unsigned int flush_pending_idx:1; unsigned int flush_running_idx:1; +blk_status_t rq_status;unsigned long flush_pending_since;struct list_head flush_queue[2 ];struct list_head flush_data_in_flight;
@@ -123,6 +124,12 @@ static inline void __blk_get_queue(struckobject_get (&q->kobj); } +static inline bool +is_flush_rq (struct request *req,struct blk_mq_hw_ctx *hctx) +{ +return hctx->fq->flush_rq == req; +} +struct blk_flush_queue *blk_alloc_flush_queue (struct request_queue *q,int node,int cmd_size,gfp_t flags);void blk_free_flush_queue (struct blk_flush_queue *q);
Greg Kroah-Hartman
maintainerPATCH 187/211 smb3: allow disabling requesting leases
In reply to Greg Kroah-HartmanFrom: Steve French <[email protected]>
commit 3e7a02d47872081f4b6234a9f72500f1d10f060c upstream.
In some cases to work around server bugs or performance problems it can be helpful to be able to disable requesting SMB2.1/SMB3 leases on a particular mount (not to all servers and all shares we are mounted to). Add new mount parm "nolease" which turns off requesting leases on directory or file opens. Currently the only way to disable leases is globally through a module load parameter. This is more granular.
--- fs/cifs/cifsfs.c | 2 ++ fs/cifs/cifsglob.h | 2 ++ fs/cifs/connect.c | 9 ++++++++- fs/cifs/smb2pdu.c | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-)
fs/cifs/cifsfs.c +2 -0
@@ -428,6 +428,8 @@ cifs_show_options(struct seq_file *s, stcifs_show_security (s, tcon->ses);cifs_show_cache_flavor (s, cifs_sb); +if (tcon->no_lease) +seq_puts (s,",nolease" );if (cifs_sb->mnt_cifs_flags &CIFS_MOUNT_MULTIUSER )seq_puts (s,",multiuser" );else if (tcon->ses->user_name)
fs/cifs/cifsglob.h +2 -0
@@ -543,6 +543,7 @@ struct smb_vol { bool noblocksnd:1; bool noautotune:1; bool nostrictsync:1; /* do not force expensive SMBflush on every sync */ + bool no_lease:1; /* disable requesting leases */ bool fsc:1; /* enable fscache */ bool mfsymlinks:1; /* use Minshall+French Symlinks */ bool multiuser:1;
@@ -1004,6 +1005,7 @@ struct cifs_tcon { bool need_reopen_files:1; /* need to reopen tcon file handles */ bool use_resilient:1; /* use resilient instead of durable handles */ bool use_persistent:1; /* use persistent instead of durable handles */ + bool no_lease:1; /* Do not request leases on files or directories */__le32 capabilities;__u32 share_flags;__u32 maximal_access;
fs/cifs/connect.c +8 -1
@@ -70,7 +70,7 @@ enum { Opt_user_xattr, Opt_nouser_xattr, Opt_forceuid, Opt_noforceuid, Opt_forcegid, Opt_noforcegid, - Opt_noblocksend, Opt_noautotune, + Opt_noblocksend, Opt_noautotune, Opt_nolease, Opt_hard, Opt_soft, Opt_perm, Opt_noperm, Opt_mapposix, Opt_nomapposix, Opt_mapchars, Opt_nomapchars, Opt_sfu,
@@ -129,6 +129,7 @@ static const match_table_t cifs_mount_op { Opt_noforcegid, "noforcegid" }, { Opt_noblocksend, "noblocksend" }, { Opt_noautotune, "noautotune" }, + { Opt_nolease, "nolease" }, { Opt_hard, "hard" }, { Opt_soft, "soft" }, { Opt_perm, "perm" },
@@ -1542,6 +1543,9 @@ cifs_parse_mount_options(const char *moucase Opt_noautotune: vol->noautotune =1 ;break ; +case Opt_nolease: + vol->no_lease =1 ; +break ;case Opt_hard: vol->retry =1 ;break ;
@@ -3023,6 +3027,8 @@ static int match_tcon(struct cifs_tcon *return 0 ;if (tcon->snapshot_time != volume_info->snapshot_time)return 0 ; +if (tcon->no_lease != volume_info->no_lease) +return 0 ;return 1 ; }
@@ -3231,6 +3237,7 @@ cifs_get_tcon(struct cifs_ses *ses, stru tcon->nocase = volume_info->nocase; tcon->nohandlecache = volume_info->nohandlecache; tcon->local_lease = volume_info->local_lease; + tcon->no_lease = volume_info->no_lease;INIT_LIST_HEAD (&tcon->pending_opens);spin_lock (&cifs_tcp_ses_lock);
fs/cifs/smb2pdu.c +1 -1
@@ -2192,7 +2192,7 @@ SMB2_open_init(struct cifs_tcon *tcon, s iov[1 ].iov_len = uni_path_len; iov[1 ].iov_base = path; -if (!server->oplocks) +if ((!server->oplocks) || (tcon->no_lease)) *oplock =SMB2_OPLOCK_LEVEL_NONE ; if (!(server->capabilities & SMB2_GLOBAL_CAP_LEASING) ||
Greg Kroah-Hartman
maintainerPATCH 188/211 ovl: Fix dereferencing possible ERR_PTR()
In reply to Greg Kroah-HartmanFrom: Ding Xiang <[email protected]>
commit 97f024b9171e74c4443bbe8a8dce31b917f97ac5 upstream.
if ovl_encode_real_fh() fails, no memory was allocated and the error in the error-valued pointer should be returned.
--- fs/overlayfs/export.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
fs/overlayfs/export.c +1 -2
@@ -230,9 +230,8 @@ static int ovl_d_to_fh(struct dentry *de/* Encode an upper or lower file handle */ fh =ovl_encode_real_fh (enc_lower ?ovl_dentry_lower (dentry) :ovl_dentry_upper (dentry), !enc_lower); - err =PTR_ERR (fh);if (IS_ERR (fh)) - goto fail; +return PTR_ERR (fh); err = -EOVERFLOW ;if (fh->len > buflen)
Greg Kroah-Hartman
maintainerPATCH 189/211 ovl: filter of trusted xattr results in audit
In reply to Greg Kroah-HartmanFrom: Mark Salyzyn <[email protected]>
commit 5c2e9f346b815841f9bed6029ebcb06415caf640 upstream.
When filtering xattr list for reading, presence of trusted xattr results in a security audit log. However, if there is other content no errno will be set, and if there isn't, the errno will be -ENODATA and not -EPERM as is usually associated with a lack of capability. The check does not block the request to list the xattrs present.
Switch to ns_capable_noaudit to reflect a more appropriate check.
--- fs/overlayfs/inode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/overlayfs/inode.c +2 -1
@@ -386,7 +386,8 @@ static bool ovl_can_list(const char *s)return true;/* Never list trusted.overlay, list other trusted for superuser only */ -return !ovl_is_private_xattr (s) &&capable (CAP_SYS_ADMIN ); +return !ovl_is_private_xattr (s) && +ns_capable_noaudit (&init_user_ns,CAP_SYS_ADMIN ); }ssize_t ovl_listxattr (struct dentry *dentry,char *list,size_t size)
Greg Kroah-Hartman
maintainerPATCH 190/211 btrfs: fix allocation of free space cache v1 bitmap pages
In reply to Greg Kroah-HartmanFrom: Christophe Leroy <[email protected]>
commit 3acd48507dc43eeeb0a1fe965b8bad91cab904a7 upstream.
Various notifications of type "BUG kmalloc-4096 () : Redzone overwritten" have been observed recently in various parts of the kernel. After some time, it has been made a relation with the use of BTRFS filesystem and with SLUB_DEBUG turned on.
[ 22.809700] BUG kmalloc-4096 (Tainted: G W ): Redzone overwritten
[ 22.810286] INFO: 0xbe1a5921-0xfbfc06cd. First byte 0x0 instead of 0xcc [ 22.810866] INFO: Allocated in __load_free_space_cache+0x588/0x780 [btrfs] age=22 cpu=0 pid=224 [ 22.811193] __slab_alloc.constprop.26+0x44/0x70 [ 22.811345] kmem_cache_alloc_trace+0xf0/0x2ec [ 22.811588] __load_free_space_cache+0x588/0x780 [btrfs] [ 22.811848] load_free_space_cache+0xf4/0x1b0 [btrfs] [ 22.812090] cache_block_group+0x1d0/0x3d0 [btrfs] [ 22.812321] find_free_extent+0x680/0x12a4 [btrfs] [ 22.812549] btrfs_reserve_extent+0xec/0x220 [btrfs] [ 22.812785] btrfs_alloc_tree_block+0x178/0x5f4 [btrfs] [ 22.813032] __btrfs_cow_block+0x150/0x5d4 [btrfs] [ 22.813262] btrfs_cow_block+0x194/0x298 [btrfs] [ 22.813484] commit_cowonly_roots+0x44/0x294 [btrfs] [ 22.813718] btrfs_commit_transaction+0x63c/0xc0c [btrfs] [ 22.813973] close_ctree+0xf8/0x2a4 [btrfs] [ 22.814107] generic_shutdown_super+0x80/0x110 [ 22.814250] kill_anon_super+0x18/0x30 [ 22.814437] btrfs_kill_super+0x18/0x90 [btrfs] [ 22.814590] INFO: Freed in proc_cgroup_show+0xc0/0x248 age=41 cpu=0 pid=83 [ 22.814841] proc_cgroup_show+0xc0/0x248 [ 22.814967] proc_single_show+0x54/0x98 [ 22.815086] seq_read+0x278/0x45c [ 22.815190] __vfs_read+0x28/0x17c [ 22.815289] vfs_read+0xa8/0x14c [ 22.815381] ksys_read+0x50/0x94 [ 22.815475] ret_from_syscall+0x0/0x38
Commit 69d2480456d1 ("btrfs: use copy_page for copying pages instead of memcpy") changed the way bitmap blocks are copied. But allthough bitmaps have the size of a page, they were allocated with kzalloc().
Most of the time, kzalloc() allocates aligned blocks of memory, so copy_page() can be used. But when some debug options like SLAB_DEBUG are activated, kzalloc() may return unaligned pointer.
On powerpc, memcpy(), copy_page() and other copying functions use 'dcbz' instruction which provides an entire zeroed cacheline to avoid memory read when the intention is to overwrite a full line. Functions like memcpy() are writen to care about partial cachelines at the start and end of the destination, but copy_page() assumes it gets pages. As pages are naturally cache aligned, copy_page() doesn't care about partial lines. This means that when copy_page() is called with a misaligned pointer, a few leading bytes are zeroed.
To fix it, allocate bitmaps through kmem_cache instead of using kzalloc() The cache pool is created with PAGE_SIZE alignment constraint.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=204371
--- fs/btrfs/ctree.h | 1 + fs/btrfs/free-space-cache.c | 18 +++++++++++------- fs/btrfs/inode.c | 8 ++++++++ 3 files changed, 20 insertions(+), 7 deletions(-)
fs/btrfs/ctree.h +1 -0
@@ -39,6 +39,7 @@ extern struct kmem_cache *btrfs_trans_haextern struct kmem_cache *btrfs_bit_radix_cachep;extern struct kmem_cache *btrfs_path_cachep;extern struct kmem_cache *btrfs_free_space_cachep; +extern struct kmem_cache *btrfs_free_space_bitmap_cachep;struct btrfs_ordered_sum ;#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
fs/btrfs/free-space-cache.c +11 -7
@@ -763,7 +763,8 @@ static int __load_free_space_cache(struc }else {ASSERT (num_bitmaps); num_bitmaps--; - e->bitmap =kzalloc (PAGE_SIZE ,GFP_NOFS ); + e->bitmap =kmem_cache_zalloc ( + btrfs_free_space_bitmap_cachep,GFP_NOFS );if (!e->bitmap) {kmem_cache_free ( btrfs_free_space_cachep, e);
@@ -1864,7 +1865,7 @@ static void free_bitmap(struct btrfs_fre struct btrfs_free_space *bitmap_info) {unlink_free_space (ctl, bitmap_info); -kfree (bitmap_info->bitmap); +kmem_cache_free (btrfs_free_space_bitmap_cachep, bitmap_info->bitmap);kmem_cache_free (btrfs_free_space_cachep, bitmap_info); ctl->total_bitmaps--; ctl->op->recalc_thresholds (ctl);
@@ -2118,7 +2119,8 @@ new_bitmap: }/* allocate the bitmap */ - info->bitmap =kzalloc (PAGE_SIZE ,GFP_NOFS ); + info->bitmap =kmem_cache_zalloc (btrfs_free_space_bitmap_cachep, +GFP_NOFS );spin_lock (&ctl->tree_lock);if (!info->bitmap) { ret = -ENOMEM ;
@@ -2130,7 +2132,8 @@ new_bitmap: out:if (info) {if (info->bitmap) -kfree (info->bitmap); +kmem_cache_free (btrfs_free_space_bitmap_cachep, + info->bitmap);kmem_cache_free (btrfs_free_space_cachep, info); }
@@ -2786,7 +2789,8 @@ out:if (entry->bytes ==0 ) { ctl->free_extents--;if (entry->bitmap) { -kfree (entry->bitmap); +kmem_cache_free (btrfs_free_space_bitmap_cachep, + entry->bitmap); ctl->total_bitmaps--; ctl->op->recalc_thresholds (ctl); }
@@ -3594,7 +3598,7 @@ again: }if (!map) { - map =kzalloc (PAGE_SIZE ,GFP_NOFS ); + map =kmem_cache_zalloc (btrfs_free_space_bitmap_cachep,GFP_NOFS );if (!map) {kmem_cache_free (btrfs_free_space_cachep, info);return -ENOMEM ;
@@ -3624,7 +3628,7 @@ again:if (info)kmem_cache_free (btrfs_free_space_cachep, info);if (map) -kfree (map); +kmem_cache_free (btrfs_free_space_bitmap_cachep, map);return 0 ; }
fs/btrfs/inode.c +8 -0
@@ -72,6 +72,7 @@ static struct kmem_cache *btrfs_inode_castruct kmem_cache *btrfs_trans_handle_cachep;struct kmem_cache *btrfs_path_cachep;struct kmem_cache *btrfs_free_space_cachep; +struct kmem_cache *btrfs_free_space_bitmap_cachep;#define S_SHIFT 12static const unsigned char btrfs_type_by_mode[S_IFMT >>S_SHIFT ] = {
@@ -9361,6 +9362,7 @@ void __cold btrfs_destroy_cachep(void)kmem_cache_destroy (btrfs_trans_handle_cachep);kmem_cache_destroy (btrfs_path_cachep);kmem_cache_destroy (btrfs_free_space_cachep); +kmem_cache_destroy (btrfs_free_space_bitmap_cachep); }int __init btrfs_init_cachep (void )
@@ -9390,6 +9392,12 @@ int __init btrfs_init_cachep(void)if (!btrfs_free_space_cachep) goto fail; + btrfs_free_space_bitmap_cachep =kmem_cache_create ("btrfs_free_space_bitmap" , +PAGE_SIZE ,PAGE_SIZE , +SLAB_RED_ZONE ,NULL ); +if (!btrfs_free_space_bitmap_cachep) + goto fail; +return 0 ; fail:btrfs_destroy_cachep ();
Greg Kroah-Hartman
maintainerPATCH 191/211 Btrfs: fix use-after-free when using the tree modification log
In reply to Greg Kroah-HartmanFrom: Filipe Manana <[email protected]>
commit efad8a853ad2057f96664328a0d327a05ce39c76 upstream.
At ctree.c:get_old_root(), we are accessing a root's header owner field after we have freed the respective extent buffer. This results in an use-after-free that can lead to crashes, and when CONFIG_DEBUG_PAGEALLOC is set, results in a stack trace like the following:
[ 3876.799331] stack segment: 0000 [#1] SMP DEBUG_PAGEALLOC PTI [ 3876.799363] CPU: 0 PID: 15436 Comm: pool Not tainted 5.3.0-rc3-btrfs-next-54 #1 [ 3876.799385] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org 04/01/2014 [ 3876.799433] RIP: 0010:btrfs_search_old_slot+0x652/0xd80 [btrfs] (...) [ 3876.799502] RSP: 0018:ffff9f08c1a2f9f0 EFLAGS: 00010286 [ 3876.799518] RAX: ffff8dd300000000 RBX: ffff8dd85a7a9348 RCX: 000000038da26000 [ 3876.799538] RDX: 0000000000000000 RSI: ffffe522ce368980 RDI: 0000000000000246 [ 3876.799559] RBP: dae1922adadad000 R08: 0000000008020000 R09: ffffe522c0000000 [ 3876.799579] R10: ffff8dd57fd788c8 R11: 000000007511b030 R12: ffff8dd781ddc000 [ 3876.799599] R13: ffff8dd9e6240578 R14: ffff8dd6896f7a88 R15: ffff8dd688cf90b8 [ 3876.799620] FS: 00007f23ddd97700(0000) GS:ffff8dda20200000(0000) knlGS:0000000000000000 [ 3876.799643] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 3876.799660] CR2: 00007f23d4024000 CR3: 0000000710bb0005 CR4: 00000000003606f0 [ 3876.799682] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 3876.799703] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 3876.799723] Call Trace: [ 3876.799735] ? do_raw_spin_unlock+0x49/0xc0 [ 3876.799749] ? _raw_spin_unlock+0x24/0x30 [ 3876.799779] resolve_indirect_refs+0x1eb/0xc80 [btrfs] [ 3876.799810] find_parent_nodes+0x38d/0x1180 [btrfs] [ 3876.799841] btrfs_check_shared+0x11a/0x1d0 [btrfs] [ 3876.799870] ? extent_fiemap+0x598/0x6e0 [btrfs] [ 3876.799895] extent_fiemap+0x598/0x6e0 [btrfs] [ 3876.799913] do_vfs_ioctl+0x45a/0x700 [ 3876.799926] ksys_ioctl+0x70/0x80 [ 3876.799938] ? trace_hardirqs_off_thunk+0x1a/0x20 [ 3876.799953] __x64_sys_ioctl+0x16/0x20 [ 3876.799965] do_syscall_64+0x62/0x220 [ 3876.799977] entry_SYSCALL_64_after_hwframe+0x49/0xbe [ 3876.799993] RIP: 0033:0x7f23e0013dd7 (...) [ 3876.800056] RSP: 002b:00007f23ddd96ca8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [ 3876.800078] RAX: ffffffffffffffda RBX: 00007f23d80210f8 RCX: 00007f23e0013dd7 [ 3876.800099] RDX: 00007f23d80210f8 RSI: 00000000c020660b RDI: 0000000000000003 [ 3876.800626] RBP: 000055fa2a2a2440 R08: 0000000000000000 R09: 00007f23ddd96d7c [ 3876.801143] R10: 00007f23d8022000 R11: 0000000000000246 R12: 00007f23ddd96d80 [ 3876.801662] R13: 00007f23ddd96d78 R14: 00007f23d80210f0 R15: 00007f23ddd96d80 (...) [ 3876.805107] ---[ end trace e53161e179ef04f9 ]---
Fix that by saving the root's header owner field into a local variable before freeing the root's extent buffer, and then use that local variable when needed.
--- fs/btrfs/ctree.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/btrfs/ctree.c +3 -1
@@ -1374,6 +1374,7 @@ get_old_root(struct btrfs_root *root, u6struct tree_mod_elem *tm;struct extent_buffer *eb =NULL ;struct extent_buffer *eb_root; +u64 eb_root_owner =0 ;struct extent_buffer *old;struct tree_mod_root *old_root =NULL ;u64 old_generation =0 ;
@@ -1411,6 +1412,7 @@ get_old_root(struct btrfs_root *root, u6free_extent_buffer (old); } }else if (old_root) { + eb_root_owner =btrfs_header_owner (eb_root);btrfs_tree_read_unlock (eb_root);free_extent_buffer (eb_root); eb =alloc_dummy_extent_buffer (fs_info, logical);
@@ -1428,7 +1430,7 @@ get_old_root(struct btrfs_root *root, u6if (old_root) {btrfs_set_header_bytenr (eb, eb->start);btrfs_set_header_backref_rev (eb,BTRFS_MIXED_BACKREF_REV ); -btrfs_set_header_owner (eb,btrfs_header_owner (eb_root)); +btrfs_set_header_owner (eb, eb_root_owner);btrfs_set_header_level (eb, old_root->level);btrfs_set_header_generation (eb, old_generation); }
Greg Kroah-Hartman
maintainerPATCH 192/211 btrfs: Relinquish CPUs in btrfs_compare_trees
In reply to Greg Kroah-HartmanFrom: Nikolay Borisov <[email protected]>
commit 6af112b11a4bc1b560f60a618ac9c1dcefe9836e upstream.
When doing any form of incremental send the parent and the child trees need to be compared via btrfs_compare_trees. This can result in long loop chains without ever relinquishing the CPU. This causes softlockup detector to trigger when comparing trees with a lot of items. Example report:
watchdog: BUG: soft lockup - CPU#0 stuck for 24s! [snapperd:16153] CPU: 0 PID: 16153 Comm: snapperd Not tainted 5.2.9-1-default #1 openSUSE Tumbleweed (unreleased) Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015 pstate: 40000005 (nZcv daif -PAN -UAO) pc : __ll_sc_arch_atomic_sub_return+0x14/0x20 lr : btrfs_release_extent_buffer_pages+0xe0/0x1e8 [btrfs] sp : ffff00001273b7e0 Call trace: __ll_sc_arch_atomic_sub_return+0x14/0x20 release_extent_buffer+0xdc/0x120 [btrfs] free_extent_buffer.part.0+0xb0/0x118 [btrfs] free_extent_buffer+0x24/0x30 [btrfs] btrfs_release_path+0x4c/0xa0 [btrfs] btrfs_free_path.part.0+0x20/0x40 [btrfs] btrfs_free_path+0x24/0x30 [btrfs] get_inode_info+0xa8/0xf8 [btrfs] finish_inode_if_needed+0xe0/0x6d8 [btrfs] changed_cb+0x9c/0x410 [btrfs] btrfs_compare_trees+0x284/0x648 [btrfs] send_subvol+0x33c/0x520 [btrfs] btrfs_ioctl_send+0x8a0/0xaf0 [btrfs] btrfs_ioctl+0x199c/0x2288 [btrfs] do_vfs_ioctl+0x4b0/0x820 ksys_ioctl+0x84/0xb8 __arm64_sys_ioctl+0x28/0x38 el0_svc_common.constprop.0+0x7c/0x188 el0_svc_handler+0x34/0x90 el0_svc+0x8/0xc
Fix this by adding a call to cond_resched at the beginning of the main loop in btrfs_compare_trees.
--- fs/btrfs/ctree.c | 1 + 1 file changed, 1 insertion(+)
fs/btrfs/ctree.c +1 -0
@@ -5516,6 +5516,7 @@ int btrfs_compare_trees(struct btrfs_roo advance_left = advance_right =0 ;while (1 ) { +cond_resched ();if (advance_left && !left_end_reached) { ret = tree_advance(fs_info, left_path, &left_level, left_root_level,
Greg Kroah-Hartman
maintainerPATCH 193/211 btrfs: qgroup: Fix the wrong target io_tree when freeing reserved data space
In reply to Greg Kroah-HartmanFrom: Qu Wenruo <[email protected]>
commit bab32fc069ce8829c416e8737c119f62a57970f9 upstream.
[BUG]
Under the following case with qgroup enabled, if some error happened after we have reserved delalloc space, then in error handling path, we could cause qgroup data space leakage:
Quoted 1 line
From
btrfs_truncate_block()ininode.c:
ret = btrfs_delalloc_reserve_space(inode, &data_reserved, block_start, blocksize); if (ret) goto out;
again:
page = find_or_create_page(mapping, index, mask);
if (!page) {
btrfs_delalloc_release_space(inode, data_reserved,
block_start, blocksize, true);
btrfs_delalloc_release_extents(BTRFS_I(inode), blocksize, true);
ret = -ENOMEM;
goto out;
}[CAUSE]
In the above case, btrfs_delalloc_reserve_space() will call btrfs_qgroup_reserve_data() and mark the io_tree range with EXTENT_QGROUP_RESERVED flag.
In the error handling path, we have the following call stack:btrfs_delalloc_release_space()
|- btrfs_free_reserved_data_space()
|- btrsf_qgroup_free_data()
|- __btrfs_qgroup_release_data(reserved=@reserved, free=1)
|- qgroup_free_reserved_data(reserved=@reserved)
|- clear_record_extent_bits();
|- freed += changeset.bytes_changed;However due to a completion bug, qgroup_free_reserved_data() will clear EXTENT_QGROUP_RESERVED flag in BTRFS_I(inode)->io_failure_tree, other than the correct BTRFS_I(inode)->io_tree.
Since io_failure_tree is never marked with that flag, btrfs_qgroup_free_data() will not free any data reserved space at all, causing a leakage.
This type of error handling can only be triggered by errors outside of qgroup code. So EDQUOT error from qgroup can't trigger it.
[FIX]
Fix the wrong target io_tree.
--- fs/btrfs/qgroup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/btrfs/qgroup.c +1 -1
@@ -3111,7 +3111,7 @@ static int qgroup_free_reserved_data(str* EXTENT_QGROUP_RESERVED, we won't double free. * So not need to rush. */ - ret =clear_record_extent_bits (&BTRFS_I (inode)->io_failure_tree, + ret =clear_record_extent_bits (&BTRFS_I (inode)->io_tree, free_start, free_start + free_len -1 ,EXTENT_QGROUP_RESERVED , &changeset);if (ret <0 )
Greg Kroah-Hartman
maintainerPATCH 194/211 btrfs: qgroup: Fix reserved data space leak if we have multiple reserve calls
In reply to Greg Kroah-HartmanFrom: Qu Wenruo <[email protected]>
commit d4e204948fe3e0dc8e1fbf3f8f3290c9c2823be3 upstream.
[BUG]
The following script can cause btrfs qgroup data space leak:
mkfs.btrfs -f $dev
mount $dev -o nospace_cache $mnt
btrfs subv create $mnt/subv
btrfs quota en $mnt
btrfs quota rescan -w $mnt
btrfs qgroup limit 128m $mnt/subv
for (( i = 0; i < 3; i++)); do
# Create 3 64M holes for latter fallocate to fail truncate -s 192m $mnt/subv/file
xfs_io -c "pwrite 64m 4k" $mnt/subv/file > /dev/null xfs_io -c "pwrite 128m 4k" $mnt/subv/file > /dev/null sync
# it's supposed to fail, and each failure will leak at least 64M # data space
xfs_io -f -c "falloc 0 192m" $mnt/subv/file &> /dev/null rm $mnt/subv/file
sync
done
# Shouldn't fail after we removed the file
xfs_io -f -c "falloc 0 64m" $mnt/subv/file
[CAUSE]
Btrfs qgroup data reserve code allow multiple reservations to happen on a single extent_changeset:
E.g:
btrfs_qgroup_reserve_data(inode, &data_reserved, 0, SZ_1M); btrfs_qgroup_reserve_data(inode, &data_reserved, SZ_1M, SZ_2M); btrfs_qgroup_reserve_data(inode, &data_reserved, 0, SZ_4M);
Btrfs qgroup code has its internal tracking to make sure we don't double-reserve in above example.
The only pattern utilizing this feature is in the main while loop of btrfs_fallocate() function.
However btrfs_qgroup_reserve_data()'s error handling has a bug in that on error it clears all ranges in the io_tree with EXTENT_QGROUP_RESERVED flag but doesn't free previously reserved bytes.
This bug has a two fold effect:
- Clearing EXTENT_QGROUP_RESERVED ranges
This is the correct behavior, but it prevents btrfs_qgroup_check_reserved_leak() to catch the leakage as the detector is purely EXTENT_QGROUP_RESERVED flag based.
- Leak the previously reserved data bytes.
The bug manifests when N calls to btrfs_qgroup_reserve_data are made and the last one fails, leaking space reserved in the previous ones.
[FIX]
Also free previously reserved data bytes when btrfs_qgroup_reserve_data fails.
--- fs/btrfs/qgroup.c | 3 +++ 1 file changed, 3 insertions(+)
fs/btrfs/qgroup.c +3 -0
@@ -3067,6 +3067,9 @@ cleanup:while ((unode =ulist_next (&reserved->range_changed, &uiter)))clear_extent_bit (&BTRFS_I (inode)->io_tree, unode->val, unode->aux,EXTENT_QGROUP_RESERVED ,0 ,0 ,NULL ); +/* Also free data bytes of already reserved one */ +btrfs_qgroup_free_refroot (root->fs_info, root->root_key.objectid, + orig_reserved,BTRFS_QGROUP_RSV_DATA );extent_changeset_release (reserved);return ret; }
Greg Kroah-Hartman
maintainerPATCH 195/211 Btrfs: fix race setting up and completing qgroup rescan workers
In reply to Greg Kroah-HartmanFrom: Filipe Manana <[email protected]>
commit 13fc1d271a2e3ab8a02071e711add01fab9271f6 upstream.
There is a race between setting up a qgroup rescan worker and completing a qgroup rescan worker that can lead to callers of the qgroup rescan wait ioctl to either not wait for the rescan worker to complete or to hang forever due to missing wake ups. The following diagram shows a sequence of steps that illustrates the race.
CPU 1 CPU 2 CPU 3
btrfs_ioctl_quota_rescan()
btrfs_qgroup_rescan()
qgroup_rescan_init()
mutex_lock(&fs_info->qgroup_rescan_lock)
spin_lock(&fs_info->qgroup_lock)
fs_info->qgroup_flags |=
BTRFS_QGROUP_STATUS_FLAG_RESCAN
init_completion(
&fs_info->qgroup_rescan_completion)
fs_info->qgroup_rescan_running = true
mutex_unlock(&fs_info->qgroup_rescan_lock)
spin_unlock(&fs_info->qgroup_lock)
btrfs_init_work()
--> starts the worker
btrfs_qgroup_rescan_worker()
mutex_lock(&fs_info->qgroup_rescan_lock)
fs_info->qgroup_flags &=
~BTRFS_QGROUP_STATUS_FLAG_RESCAN
mutex_unlock(&fs_info->qgroup_rescan_lock)
starts transaction, updates qgroup status
item, etc
btrfs_ioctl_quota_rescan()
btrfs_qgroup_rescan()
qgroup_rescan_init()
mutex_lock(&fs_info->qgroup_rescan_lock)
spin_lock(&fs_info->qgroup_lock)
fs_info->qgroup_flags |=
BTRFS_QGROUP_STATUS_FLAG_RESCAN
init_completion(
&fs_info->qgroup_rescan_completion)
fs_info->qgroup_rescan_running = true
mutex_unlock(&fs_info->qgroup_rescan_lock)
spin_unlock(&fs_info->qgroup_lock)
btrfs_init_work()
--> starts another worker
mutex_lock(&fs_info->qgroup_rescan_lock)
fs_info->qgroup_rescan_running = false
mutex_unlock(&fs_info->qgroup_rescan_lock)
complete_all(&fs_info->qgroup_rescan_completion)Before the rescan worker started by the task at CPU 3 completes, if another task calls btrfs_ioctl_quota_rescan(), it will get -EINPROGRESS because the flag BTRFS_QGROUP_STATUS_FLAG_RESCAN is set at fs_info->qgroup_flags, which is expected and correct behaviour.
However if other task calls btrfs_ioctl_quota_rescan_wait() before the rescan worker started by the task at CPU 3 completes, it will return immediately without waiting for the new rescan worker to complete, because fs_info->qgroup_rescan_running is set to false by CPU 2.
This race is making test case btrfs/171 (from fstests) to fail often:
btrfs/171 9s ... - output mismatch (see /home/fdmanana/git/hub/xfstests/results//btrfs/171.out.bad)
# --- tests/btrfs/171.out 2018-09-16 21:30:48.505104287 +0100 # +++ /home/fdmanana/git/hub/xfstests/results//btrfs/171.out.bad 2019-09-19 02:01:36.938486039 +0100 # @@ -1,2 +1,3 @@
# QA output created by 171
# +ERROR: quota rescan failed: Operation now in progress
# Silence is golden
# ...
# (Run 'diff -u /home/fdmanana/git/hub/xfstests/tests/btrfs/171.out /home/fdmanana/git/hub/xfstests/results//btrfs/171.out.bad' to see the entire diff)
That is because the test calls the btrfs-progs commands "qgroup quota rescan -w", "qgroup assign" and "qgroup remove" in a sequence that makes calls to the rescan start ioctl fail with -EINPROGRESS (note the "btrfs" commands 'qgroup assign' and 'qgroup remove' often call the rescan start ioctl after calling the qgroup assign ioctl, btrfs_ioctl_qgroup_assign()), since previous waits didn't actually wait for a rescan worker to complete.
Another problem the race can cause is missing wake ups for waiters, since the call to complete_all() happens outside a critical section and after clearing the flag BTRFS_QGROUP_STATUS_FLAG_RESCAN. In the sequence diagram above, if we have a waiter for the first rescan task (executed by CPU 2), then fs_info->qgroup_rescan_completion.wait is not empty, and if after the rescan worker clears BTRFS_QGROUP_STATUS_FLAG_RESCAN and before it calls complete_all() against fs_info->qgroup_rescan_completion, the task at CPU 3 calls init_completion() against fs_info->qgroup_rescan_completion which re-initilizes its wait queue to an empty queue, therefore causing the rescan worker at CPU 2 to call complete_all() against an empty queue, never waking up the task waiting for that rescan worker.
Fix this by clearing BTRFS_QGROUP_STATUS_FLAG_RESCAN and setting fs_info->qgroup_rescan_running to false in the same critical section, delimited by the mutex fs_info->qgroup_rescan_lock, as well as doing the call to complete_all() in that same critical section. This gives the protection needed to avoid rescan wait ioctl callers not waiting for a running rescan worker and the lost wake ups problem, since setting that rescan flag and boolean as well as initializing the wait queue is done already in a critical section delimited by that mutex (at qgroup_rescan_init()).
--- fs/btrfs/qgroup.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-)
fs/btrfs/qgroup.c +19 -14
@@ -2796,9 +2796,6 @@ out:btrfs_free_path (path);mutex_lock (&fs_info->qgroup_rescan_lock); -if (!btrfs_fs_closing (fs_info)) - fs_info->qgroup_flags &= ~BTRFS_QGROUP_STATUS_FLAG_RESCAN ; -if (err >0 && fs_info->qgroup_flags &BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT ) { fs_info->qgroup_flags &= ~BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT ;
@@ -2814,16 +2811,30 @@ out: trans =btrfs_start_transaction (fs_info->quota_root,1 );if (IS_ERR (trans)) { err =PTR_ERR (trans); + trans =NULL ;btrfs_err (fs_info,"fail to start transaction for status update: %d" , err); - goto done; } - ret =update_qgroup_status_item (trans); -if (ret <0 ) { - err = ret; -btrfs_err (fs_info,"fail to update qgroup status: %d" , err); + +mutex_lock (&fs_info->qgroup_rescan_lock); +if (!btrfs_fs_closing (fs_info)) + fs_info->qgroup_flags &= ~BTRFS_QGROUP_STATUS_FLAG_RESCAN ; +if (trans) { + ret =update_qgroup_status_item (trans); +if (ret <0 ) { + err = ret; +btrfs_err (fs_info,"fail to update qgroup status: %d" , + err); + } } + fs_info->qgroup_rescan_running = false; +complete_all (&fs_info->qgroup_rescan_completion); +mutex_unlock (&fs_info->qgroup_rescan_lock); + +if (!trans) +return ; +btrfs_end_transaction (trans);if (btrfs_fs_closing (fs_info)) {
@@ -2834,12 +2845,6 @@ out: }else {btrfs_err (fs_info,"qgroup scan failed with %d" , err); } - -done: -mutex_lock (&fs_info->qgroup_rescan_lock); - fs_info->qgroup_rescan_running = false; -mutex_unlock (&fs_info->qgroup_rescan_lock); -complete_all (&fs_info->qgroup_rescan_completion); }/*
Greg Kroah-Hartman
maintainerPATCH 196/211 md/raid6: Set R5_ReadError when there is read failure on parity disk
In reply to Greg Kroah-HartmanFrom: Xiao Ni <[email protected]>
commit 143f6e733b73051cd22dcb80951c6c929da413ce upstream.
7471fb77ce4d ("md/raid6: Fix anomily when recovering a single device in RAID6.") avoids rereading P when it can be computed from other members. However, this misses the chance to re-write the right data to P. This patch sets R5_ReadError if the re-read fails.
Also, when re-read is skipped, we also missed the chance to reset rdev->read_errors to 0. It can fail the disk when there are many read errors on P member disk (other disks don't have read error)
V2: upper layer read request don't read parity/Q data. So there is no need to consider such situation.
This is Reported-by: kbuild test robot <[email protected]>
--- drivers/md/raid5.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/md/raid5.c +3 -1
@@ -2573,7 +2573,9 @@ static void raid5_end_read_request(struc && !test_bit(R5_ReadNoMerge, &sh->dev[i].flags)) retry =1 ;if (retry) -if (test_bit (R5_ReadNoMerge, &sh->dev[i].flags)) { +if (sh->qd_idx >=0 && sh->pd_idx == i) +set_bit (R5_ReadError, &sh->dev[i].flags); +else if (test_bit (R5_ReadNoMerge, &sh->dev[i].flags)) {set_bit (R5_ReadError, &sh->dev[i].flags);clear_bit (R5_ReadNoMerge, &sh->dev[i].flags); }else
Greg Kroah-Hartman
maintainerPATCH 197/211 md: dont report active array_state until after revalidate_disk() completes.
In reply to Greg Kroah-HartmanFrom: NeilBrown <[email protected]>
commit 9d4b45d6af442237560d0bb5502a012baa5234b7 upstream.
Until revalidate_disk() has completed, the size of a new md array will appear to be zero.
So we shouldn't report, through array_state, that the array is active until that time.
udev rules check array_state to see if the array is ready. As soon as it appear to be zero, fsck can be run. If it find the size to be zero, it will fail.
So add a new flag to provide an interlock between do_md_run() and array_state_show(). This flag is set while do_md_run() is active and it prevents array_state_show() from reporting that the array is active.
Before do_md_run() is called, ->pers will be NULL so array is definitely not active.
After do_md_run() is called, revalidate_disk() will have run and the array will be completely ready.
We also move various sysfs_notify*() calls out of md_run() into do_md_run() after MD_NOT_READY is cleared. This ensure the information is ready before the notification is sent.
Prior to v4.12, array_state_show() was called with the mddev->reconfig_mutex held, which provided exclusion with do_md_run().
Note that MD_NOT_READY cleared twice. This is deliberate to cover both success and error paths with minimal noise.
--- drivers/md/md.c | 11 +++++++---- drivers/md/md.h | 3 +++ 2 files changed, 10 insertions(+), 4 deletions(-)
drivers/md/md.c +7 -4
@@ -4123,7 +4123,7 @@ array_state_show(struct mddev *mddev, ch {enum array_state st = inactive; -if (mddev->pers) +if (mddev->pers && !test_bit (MD_NOT_READY , &mddev->flags))switch (mddev->ro) {case 1 : st = readonly;
@@ -5678,9 +5678,6 @@ int md_run(struct mddev *mddev)md_update_sb (mddev,0 );md_new_event (mddev); -sysfs_notify_dirent_safe (mddev->sysfs_state); -sysfs_notify_dirent_safe (mddev->sysfs_action); -sysfs_notify (&mddev->kobj,NULL ,"degraded" );return 0 ; abort:
@@ -5694,6 +5691,7 @@ static int do_md_run(struct mddev *mddev {int err; +set_bit (MD_NOT_READY , &mddev->flags); err =md_run (mddev);if (err) goto out;
@@ -5714,9 +5712,14 @@ static int do_md_run(struct mddev *mddevset_capacity (mddev->gendisk, mddev->array_sectors);revalidate_disk (mddev->gendisk); +clear_bit (MD_NOT_READY , &mddev->flags); mddev->changed =1 ;kobject_uevent (&disk_to_dev (mddev->gendisk)->kobj,KOBJ_CHANGE ); +sysfs_notify_dirent_safe (mddev->sysfs_state); +sysfs_notify_dirent_safe (mddev->sysfs_action); +sysfs_notify (&mddev->kobj,NULL ,"degraded" ); out: +clear_bit (MD_NOT_READY , &mddev->flags);return err; }
drivers/md/md.h +3 -0
@@ -243,6 +243,9 @@ enum mddev_flags {MD_UPDATING_SB ,/* md_check_recovery is updating the metadata * without explicitly holding reconfig_mutex. */ + MD_NOT_READY, /* do_md_run() is active, so 'array_state' + * must not report that array is ready yet + */ }; enum mddev_sb_flags {
Greg Kroah-Hartman
maintainerPATCH 198/211 md: only call set_in_sync() when it is expected to succeed.
In reply to Greg Kroah-HartmanFrom: NeilBrown <[email protected]>
commit 480523feae581ab714ba6610388a3b4619a2f695 upstream.
Since commit 4ad23a976413 ("MD: use per-cpu counter for writes_pending"), set_in_sync() is substantially more expensive: it can wait for a full RCU grace period which can be 10s of milliseconds.
So we should only call it when the cost is justified.
md_check_recovery() currently calls set_in_sync() every time it finds anything to do (on non-external active arrays). For an array performing resync or recovery, this will be quite often. Each call will introduce a delay to the md thread, which can noticeable affect IO submission latency.
In md_check_recovery() we only need to call set_in_sync() if 'safemode' was non-zero at entry, meaning that there has been not recent IO. So we save this "safemode was nonzero" state, and only call set_in_sync() if it was non-zero.
This measurably reduces mean and maximum IO submission latency during resync/recovery.
--- drivers/md/md.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/md/md.c +2 -1
@@ -8807,6 +8807,7 @@ void md_check_recovery(struct mddev *mddif (mddev_trylock (mddev)) {int spares =0 ; +bool try_set_sync = mddev->safemode !=0 ;if (!mddev->external && mddev->safemode ==1 ) mddev->safemode =0 ;
@@ -8852,7 +8853,7 @@ void md_check_recovery(struct mddev *mdd } } -if (!mddev->external && !mddev->in_sync) { +if (try_set_sync && !mddev->external && !mddev->in_sync) {spin_lock (&mddev->lock);set_in_sync (mddev);spin_unlock (&mddev->lock);
Greg Kroah-Hartman
maintainerPATCH 199/211 cfg80211: Purge frame registrations on iftype change
In reply to Greg Kroah-HartmanFrom: Denis Kenzior <[email protected]>
commit c1d3ad84eae35414b6b334790048406bd6301b12 upstream.
Currently frame registrations are not purged, even when changing the interface type. This can lead to potentially weird situations where frames possibly not allowed on a given interface type remain registered due to the type switching happening after registration.
The kernel currently relies on userspace apps to actually purge the registrations themselves, this is not something that the kernel should rely on.
Add a call to cfg80211_mlme_purge_registrations() to forcefully remove any registrations left over prior to switching the iftype.
--- net/wireless/util.c | 1 + 1 file changed, 1 insertion(+)
net/wireless/util.c +1 -0
@@ -930,6 +930,7 @@ int cfg80211_change_iface(struct cfg8021 }cfg80211_process_rdev_events (rdev); +cfg80211_mlme_purge_registrations (dev->ieee80211_ptr); } err =rdev_change_virtual_intf (rdev, dev, ntype, params);
Greg Kroah-Hartman
maintainerPATCH 200/211 /dev/mem: Bail out upon SIGKILL.
In reply to Greg Kroah-HartmanFrom: Tetsuo Handa <[email protected]>
commit 8619e5bdeee8b2c685d686281f2d2a6017c4bc15 upstream.
syzbot found that a thread can stall for minutes inside read_mem() or write_mem() after that thread was killed by SIGKILL [1]. Reading from iomem areas of /dev/mem can be slow, depending on the hardware. While reading 2GB at one read() is legal, delaying termination of killed thread for minutes is bad. Thus, allow reading/writing /dev/mem and /dev/kmem to be preemptible and killable.
[ 1335.912419][T20577] read_mem: sz=4096 count=2134565632 [ 1335.943194][T20577] read_mem: sz=4096 count=2134561536 [ 1335.978280][T20577] read_mem: sz=4096 count=2134557440 [ 1336.011147][T20577] read_mem: sz=4096 count=2134553344 [ 1336.041897][T20577] read_mem: sz=4096 count=2134549248
Theoretically, reading/writing /dev/mem and /dev/kmem can become "interruptible". But this patch chose "killable". Future patch will make them "interruptible" so that we can revert to "killable" if some program regressed.
[1] https://syzkaller.appspot.com/bug?id=a0e3436829698d5824231251fad9d8e998f94f5e
--- drivers/char/mem.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
drivers/char/mem.c +21 -0
@@ -97,6 +97,13 @@ void __weak unxlate_dev_mem_ptr(phys_add }#endif +static inline bool should_stop_iteration (void ) +{ +if (need_resched ()) +cond_resched (); +return fatal_signal_pending (current); +} +/* * This funcion reads the *physical* memory. The f_pos points directly to the * memory location.
@@ -175,6 +182,8 @@ static ssize_t read_mem(struct file *fil p += sz; count -= sz; read += sz; +if (should_stop_iteration ()) +break ; }kfree (bounce);
@@ -251,6 +260,8 @@ static ssize_t write_mem(struct file *fi p += sz; count -= sz; written += sz; +if (should_stop_iteration ()) +break ; } *ppos += written;
@@ -468,6 +479,10 @@ static ssize_t read_kmem(struct file *fi read += sz; low_count -= sz; count -= sz; +if (should_stop_iteration ()) { + count =0 ; +break ; + } } }
@@ -492,6 +507,8 @@ static ssize_t read_kmem(struct file *fi buf += sz; read += sz; p += sz; +if (should_stop_iteration ()) +break ; }free_page ((unsigned long )kbuf); }
@@ -544,6 +561,8 @@ static ssize_t do_write_kmem(unsigned lo p += sz; count -= sz; written += sz; +if (should_stop_iteration ()) +break ; } *ppos += written;
@@ -595,6 +614,8 @@ static ssize_t write_kmem(struct file *f buf += sz; virtr += sz; p += sz; +if (should_stop_iteration ()) +break ; }free_page ((unsigned long )kbuf); }
Greg Kroah-Hartman
maintainerPATCH 201/211 ext4: fix warning inside ext4_convert_unwritten_extents_endio
In reply to Greg Kroah-HartmanFrom: Rakesh Pandit <[email protected]>
commit e3d550c2c4f2f3dba469bc3c4b83d9332b4e99e1 upstream.
Really enable warning when CONFIG_EXT4_DEBUG is set and fix missing first argument. This was introduced in commit ff95ec22cd7f ("ext4:
add warning to ext4_convert_unwritten_extents_endio") and splitting extents inside endio would trigger it.
--- fs/ext4/extents.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/ext4/extents.c +2 -2
@@ -3748,8 +3748,8 @@ static int ext4_convert_unwritten_extent* illegal. */ if (ee_block != map->m_lblk || ee_len > map->m_len) { -#ifdef EXT4_DEBUG -ext4_warning ("Inode (%ld) finished: extent logical block %llu," +#ifdef CONFIG_EXT4_DEBUG +ext4_warning (inode->i_sb,"Inode (%ld) finished: extent logical block %llu," " len %u; IO logical block %llu, len %u" , inode->i_ino, (unsigned long long )ee_block, ee_len, (unsigned long long )map->m_lblk, map->m_len);
Greg Kroah-Hartman
maintainerPATCH 202/211 ext4: fix punch hole for inline_data file systems
In reply to Greg Kroah-HartmanFrom: Theodore Ts'o <[email protected]>
commit c1e8220bd316d8ae8e524df39534b8a412a45d5e upstream.
If a program attempts to punch a hole on an inline data file, we need to convert it to a normal file first.
This was detected using ext4/032 using the adv configuration. Simple reproducer:
mke2fs -Fq -t ext4 -O inline_data /dev/vdc
mount /vdc
echo "" > /vdc/testfilexfs_io -c 'truncate 33554432' /vdc/testfilexfs_io -c 'fpunch 0 1048576' /vdc/testfile
umount /vdc
e2fsck -fy /dev/vdc
--- fs/ext4/inode.c | 9 +++++++++ 1 file changed, 9 insertions(+)
fs/ext4/inode.c +9 -0
@@ -4265,6 +4265,15 @@ int ext4_punch_hole(struct inode *inode,trace_ext4_punch_hole (inode, offset, length,0 ); +ext4_clear_inode_state (inode,EXT4_STATE_MAY_INLINE_DATA ); +if (ext4_has_inline_data (inode)) { +down_write (&EXT4_I (inode)->i_mmap_sem); + ret =ext4_convert_inline_data (inode); +up_write (&EXT4_I (inode)->i_mmap_sem); +if (ret) +return ret; + } +/* * Write out all dirty pages to avoid race conditions * Then release them.
Greg Kroah-Hartman
maintainerPATCH 203/211 quota: fix wrong condition in is_quota_modification()
In reply to Greg Kroah-HartmanFrom: Chao Yu <[email protected]>
commit 6565c182094f69e4ffdece337d395eb7ec760efc upstream.
Quoted from
commit 3da40c7b0898 ("ext4: only call ext4_truncate when size <= isize")
" At LSF we decided that if we truncate up from isize we shouldn't trim
fallocated blocks that were fallocated with KEEP_SIZE and are past the
new i_size. This patch fixes ext4 to do this. "
And generic/092 of fstest have covered this case for long time, however is_quota_modification() didn't adjust based on that rule, so that in below condition, we will lose to quota block change:
- fallocate blocks beyond EOF
- remount
- truncate(file_path, file_size)
Fix it.
--- include/linux/quotaops.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/quotaops.h +1 -1
@@ -22,7 +22,7 @@ static inline struct quota_info *sb_dqop/* i_mutex must being held */ static inline bool is_quota_modification (struct inode *inode,struct iattr *ia) { -return (ia->ia_valid &ATTR_SIZE && ia->ia_size != inode->i_size) || +return (ia->ia_valid &ATTR_SIZE ) || (ia->ia_valid &ATTR_UID && !uid_eq (ia->ia_uid, inode->i_uid)) || (ia->ia_valid &ATTR_GID && !gid_eq (ia->ia_gid, inode->i_gid)); }
Greg Kroah-Hartman
maintainerPATCH 204/211 hwrng: core - dont wait on add_early_randomness()
In reply to Greg Kroah-HartmanFrom: Laurent Vivier <[email protected]>
commit 78887832e76541f77169a24ac238fccb51059b63 upstream.
add_early_randomness() is called by hwrng_register() when the hardware is added. If this hardware and its module are present at boot, and if there is no data available the boot hangs until data are available and can't be interrupted.
For instance, in the case of virtio-rng, in some cases the host can be not able to provide enough entropy for all the guests.
We can have two easy ways to reproduce the problem but they rely on misconfiguration of the hypervisor or the egd daemon:
- if virtio-rng device is configured to connect to the egd daemon of the host but when the virtio-rng driver asks for data the daemon is not connected,
- if virtio-rng device is configured to connect to the egd daemon of the host but the egd daemon doesn't provide data.
The guest kernel will hang at boot until the virtio-rng driver provides enough data.
To avoid that, call rng_get_data() in non-blocking mode (wait=0) from add_early_randomness().
--- drivers/char/hw_random/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/char/hw_random/core.c +1 -1
@@ -67,7 +67,7 @@ static void add_early_randomness(structsize_t size =min_t (size_t,16 ,rng_buffer_size ());mutex_lock (&reading_mutex); - bytes_read =rng_get_data (rng, rng_buffer, size,1 ); + bytes_read =rng_get_data (rng, rng_buffer, size,0 );mutex_unlock (&reading_mutex);if (bytes_read >0 )add_device_randomness (rng_buffer, bytes_read);
Greg Kroah-Hartman
maintainerPATCH 205/211 i2c: riic: Clear NACK in tend isr
In reply to Greg Kroah-HartmanFrom: Chris Brandt <[email protected]>
commit a71e2ac1f32097fbb2beab098687a7a95c84543e upstream.
The NACKF flag should be cleared in INTRIICNAKI interrupt processing as description in HW manual.
This issue shows up quickly when PREEMPT_RT is applied and a device is probed that is not plugged in (like a touchscreen controller). The result is endless interrupts that halt system boot.
--- drivers/i2c/busses/i2c-riic.c | 1 + 1 file changed, 1 insertion(+)
drivers/i2c/busses/i2c-riic.c +1 -0
@@ -203,6 +203,7 @@ static irqreturn_t riic_tend_isr(int irqif (readb (riic->base +RIIC_ICSR2 ) &ICSR2_NACKF ) {/* We got a NACKIE */ readb (riic->base +RIIC_ICDRR );/* dummy read */ +riic_clear_set_bit (riic,ICSR2_NACKF ,0 ,RIIC_ICSR2 ); riic->err = -ENXIO ; }else if (riic->bytes_left) {return IRQ_NONE ;
Greg Kroah-Hartman
maintainerPATCH 206/211 CIFS: fix max ea value size
In reply to Greg Kroah-HartmanFrom: Murphy Zhou <[email protected]>
commit 63d37fb4ce5ae7bf1e58f906d1bf25f036fe79b2 upstream.
It should not be larger then the slab max buf size. If user specifies a larger size, it passes this check and goes straightly to SMB2_set_info_init performing an insecure memcpy.
--- fs/cifs/xattr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/cifs/xattr.c +1 -1
@@ -31,7 +31,7 @@#include "cifs_fs_sb.h" #include "cifs_unicode.h" -#define MAX_EA_VALUE_SIZE 65535 +#define MAX_EA_VALUE_SIZE CIFSMaxBufSize#define CIFS_XATTR_CIFS_ACL "system.cifs_acl"#define CIFS_XATTR_ATTRIB "cifs.dosattrib"/* full name: user.cifs.dosattrib */ #define CIFS_XATTR_CREATETIME "cifs.creationtime"/* user.cifs.creationtime */
Greg Kroah-Hartman
maintainerPATCH 207/211 CIFS: Fix oplock handling for SMB 2.1+ protocols
In reply to Greg Kroah-HartmanFrom: Pavel Shilovsky <[email protected]>
commit a016e2794fc3a245a91946038dd8f34d65e53cc3 upstream.
There may be situations when a server negotiates SMB 2.1 protocol version or higher but responds to a CREATE request with an oplock rather than a lease.
Currently the client doesn't handle such a case correctly:
when another CREATE comes in the server sends an oplock break to the initial CREATE and the client doesn't send an ack back due to a wrong caching level being set (READ instead of RWH). Missing an oplock break ack makes the server wait until the break times out which dramatically increases the latency of the second CREATE.
Fix this by properly detecting oplocks when using SMB 2.1 protocol version and higher.
--- fs/cifs/smb2ops.c | 5 +++++ 1 file changed, 5 insertions(+)
fs/cifs/smb2ops.c +5 -0
@@ -2398,6 +2398,11 @@ smb21_set_oplock_level(struct cifsInodeIif (oplock ==SMB2_OPLOCK_LEVEL_NOCHANGE )return ; +/* Check if the server granted an oplock rather than a lease */ +if (oplock &SMB2_OPLOCK_LEVEL_EXCLUSIVE ) +return smb2_set_oplock_level (cinode, oplock, epoch, + purge_cache); +if (oplock &SMB2_LEASE_READ_CACHING_HE ) { new_oplock |=CIFS_CACHE_READ_FLG ;strcat (message,"R" );
Greg Kroah-Hartman
maintainerPATCH 208/211 md/raid0: avoid RAID0 data corruption due to layout confusion.
In reply to Greg Kroah-HartmanFrom: NeilBrown <[email protected]>
[ Upstream commit c84a1372df929033cb1a0441fb57bd3932f39ac9 ]
If the drives in a RAID0 are not all the same size, the array is divided into zones.
The first zone covers all drives, to the size of the smallest. The second zone covers all drives larger than the smallest, up to the size of the second smallest - etc.
A change in Linux 3.14 unintentionally changed the layout for the second and subsequent zones. All the correct data is still stored, but each chunk may be assigned to a different device than in pre-3.14 kernels. This can lead to data corruption.
It is not possible to determine what layout to use - it depends which kernel the data was written by.
So we add a module parameter to allow the old (0) or new (1) layout to be specified, and refused to assemble an affected array if that parameter is not set.
--- drivers/md/raid0.c | 33 ++++++++++++++++++++++++++++++++- drivers/md/raid0.h | 14 ++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-)
drivers/md/raid0.c +32 -1
@@ -26,6 +26,9 @@#include "raid0.h" #include "raid5.h" +static int default_layout =0 ; +module_param (default_layout, int,0644 ); +#define UNSUPPORTED_MDDEV_FLAGS \ ((1L << MD_HAS_JOURNAL) | \ (1L << MD_JOURNAL_CLEAN) | \
@@ -146,6 +149,19 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf) }pr_debug ("md/raid0:%s: FINAL %d zones\n" ,mdname (mddev), conf->nr_strip_zones); + +if (conf->nr_strip_zones ==1 ) { + conf->layout =RAID0_ORIG_LAYOUT ; + }else if (default_layout ==RAID0_ORIG_LAYOUT || + default_layout ==RAID0_ALT_MULTIZONE_LAYOUT ) { + conf->layout = default_layout; + }else { +pr_err ("md/raid0:%s: cannot assemble multi-zone RAID0 with default_layout setting\n" , +mdname (mddev)); +pr_err ("md/raid0: please set raid.default_layout to 1 or 2\n" ); + err = -ENOTSUPP ; + goto abort; + }/* * now since we have the hard sector sizes, we can make sure * chunk size is a multiple of that sector size
@@ -555,10 +571,12 @@ static void raid0_handle_discard(struct mddev *mddev, struct bio *bio)static bool raid0_make_request (struct mddev *mddev,struct bio *bio) { +struct r0conf *conf = mddev->private;struct strip_zone *zone;struct md_rdev *tmp_dev;sector_t bio_sector;sector_t sector; +sector_t orig_sector;unsigned chunk_sects;unsigned sectors;
@@ -592,8 +610,21 @@ static bool raid0_make_request(struct mddev *mddev, struct bio *bio) bio = split; } + orig_sector = sector; zone =find_zone (mddev->private, §or); - tmp_dev =map_sector (mddev, zone, sector, §or); +switch (conf->layout) { +case RAID0_ORIG_LAYOUT : + tmp_dev =map_sector (mddev, zone, orig_sector, §or); +break ; +case RAID0_ALT_MULTIZONE_LAYOUT : + tmp_dev =map_sector (mddev, zone, sector, §or); +break ; +default : +WARN ("md/raid0:%s: Invalid layout\n" ,mdname (mddev)); +bio_io_error (bio); +return true; + } +bio_set_dev (bio, tmp_dev->bdev); bio->bi_iter.bi_sector = sector + zone->dev_start + tmp_dev->data_offset;
drivers/md/raid0.h +14 -0
@@ -8,11 +8,25 @@ struct strip_zone { int nb_dev; /* # of devices attached to the zone */ }; +/* Linux 3.14 (20d0189b101) made an unintended change to +* the RAID0 layout for multi-zone arrays (where devices aren't all +* the same size. +* RAID0_ORIG_LAYOUT restores the original layout +* RAID0_ALT_MULTIZONE_LAYOUT uses the altered layout +* The layouts are identical when there is only one zone (all +* devices the same size). +*/ + +enum r0layout { +RAID0_ORIG_LAYOUT =1 , +RAID0_ALT_MULTIZONE_LAYOUT =2 , +};struct r0conf {struct strip_zone *strip_zone;struct md_rdev **devlist;/* lists of rdevs, pointed to * by strip_zone->dev */ int nr_strip_zones; +enum r0layout layout; };#endif
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 209/211 fuse: fix deadlock with aio poll and fuse_iqueue::waitq.lock
In reply to Greg Kroah-HartmanFrom: Eric Biggers <[email protected]>
[ Upstream commit 76e43c8ccaa35c30d5df853013561145a0f750a5 ]
When IOCB_CMD_POLL is used on the FUSE device, aio_poll() disables IRQs and takes kioctx::ctx_lock, then fuse_iqueue::waitq.lock.
This may have to wait for fuse_iqueue::waitq.lock to be released by one of many places that take it with IRQs enabled. Since the IRQ handler may take kioctx::ctx_lock, lockdep reports that a deadlock is possible.
Fix it by protecting the state of struct fuse_iqueue with a separate spinlock, and only accessing fuse_iqueue::waitq using the versions of the waitqueue functions which do IRQ-safe locking internally.
Reproducer:
#include <fcntl.h>
#include <stdio.h>
#include <sys/mount.h>
#include <sys/stat.h>
#include <sys/syscall.h>
#include <unistd.h>
#include <linux/aio_abi.h>
int main()
{
char opts[128];
int fd = open("/dev/fuse", O_RDWR);
aio_context_t ctx = 0;
struct iocb cb = { .aio_lio_opcode = IOCB_CMD_POLL, .aio_fildes = fd };
struct iocb *cbp = &cb;
sprintf(opts, "fd=%d,rootmode=040000,user_id=0,group_id=0", fd);
mkdir("mnt", 0700);
mount("foo", "mnt", "fuse", 0, opts);
syscall(__NR_io_setup, 1, &ctx);
syscall(__NR_io_submit, ctx, 1, &cbp);
}Beginning of lockdep output:
=====================================================
WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected
5.3.0-rc5 #9 Not tainted
-----------------------------------------------------
syz_fuse/135 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
000000003590ceda (&fiq->waitq){+.+.}, at: spin_lock include/linux/spinlock.h:338 [inline]
000000003590ceda (&fiq->waitq){+.+.}, at: aio_poll fs/aio.c:1751 [inline]
000000003590ceda (&fiq->waitq){+.+.}, at: __io_submit_one.constprop.0+0x203/0x5b0 fs/aio.c:1825
and this task is already holding:
0000000075037284 (&(&ctx->ctx_lock)->rlock){..-.}, at: spin_lock_irq include/linux/spinlock.h:363 [inline]
0000000075037284 (&(&ctx->ctx_lock)->rlock){..-.}, at: aio_poll fs/aio.c:1749 [inline]
0000000075037284 (&(&ctx->ctx_lock)->rlock){..-.}, at: __io_submit_one.constprop.0+0x1f4/0x5b0 fs/aio.c:1825
which would create a new lock dependency:
(&(&ctx->ctx_lock)->rlock){..-.} -> (&fiq->waitq){+.+.}
but this new dependency connects a SOFTIRQ-irq-safe lock:
(&(&ctx->ctx_lock)->rlock){..-.}
[...]--- fs/fuse/dev.c | 89 +++++++++++++++++++++++++----------------------- fs/fuse/fuse_i.h | 3 ++ fs/fuse/inode.c | 1 + 3 files changed, 50 insertions(+), 43 deletions(-)
fs/fuse/dev.c +46 -43
@@ -331,7 +331,7 @@ static void queue_request(struct fuse_iqueue *fiq, struct fuse_req *req) req->in.h.len =sizeof (struct fuse_in_header ) +len_args (req->in.numargs, (struct fuse_arg *) req->in.args);list_add_tail (&req->list, &fiq->pending); -wake_up_locked (&fiq->waitq); +wake_up (&fiq->waitq);kill_fasync (&fiq->fasync,SIGIO ,POLL_IN ); }
@@ -343,16 +343,16 @@ void fuse_queue_forget(struct fuse_conn *fc, struct fuse_forget_link *forget, forget->forget_one.nodeid = nodeid; forget->forget_one.nlookup = nlookup; -spin_lock (&fiq->waitq.lock); +spin_lock (&fiq->lock);if (fiq->connected) { fiq->forget_list_tail->next = forget; fiq->forget_list_tail = forget; -wake_up_locked (&fiq->waitq); +wake_up (&fiq->waitq);kill_fasync (&fiq->fasync,SIGIO ,POLL_IN ); }else {kfree (forget); } -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock); }static void flush_bg_queue (struct fuse_conn *fc)
@@ -365,10 +365,10 @@ static void flush_bg_queue(struct fuse_conn *fc) req = list_entry(fc->bg_queue.next, struct fuse_req, list);list_del (&req->list); fc->active_background++; -spin_lock (&fiq->waitq.lock); +spin_lock (&fiq->lock); req->in.h.unique =fuse_get_unique (fiq);queue_request (fiq, req); -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock); } }
@@ -387,9 +387,9 @@ static void request_end(struct fuse_conn *fc, struct fuse_req *req)if (test_and_set_bit (FR_FINISHED , &req->flags)) goto put_request; -spin_lock (&fiq->waitq.lock); +spin_lock (&fiq->lock);list_del_init (&req->intr_entry); -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);WARN_ON (test_bit (FR_PENDING , &req->flags));WARN_ON (test_bit (FR_SENT , &req->flags));if (test_bit (FR_BACKGROUND , &req->flags)) {
@@ -427,16 +427,16 @@ static void request_end(struct fuse_conn *fc, struct fuse_req *req)static void queue_interrupt (struct fuse_iqueue *fiq,struct fuse_req *req) { -spin_lock (&fiq->waitq.lock); +spin_lock (&fiq->lock);if (test_bit (FR_FINISHED , &req->flags)) { -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);return ; }if (list_empty (&req->intr_entry)) {list_add_tail (&req->intr_entry, &fiq->interrupts);wake_up_locked (&fiq->waitq); } -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);kill_fasync (&fiq->fasync,SIGIO ,POLL_IN ); }
@@ -466,16 +466,16 @@ static void request_wait_answer(struct fuse_conn *fc, struct fuse_req *req)if (!err)return ; -spin_lock (&fiq->waitq.lock); +spin_lock (&fiq->lock);/* Request is not yet in userspace, bail out */ if (test_bit (FR_PENDING , &req->flags)) {list_del (&req->list); -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);__fuse_put_request (req); req->out.h.error = -EINTR ;return ; } -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock); }/*
@@ -490,9 +490,9 @@ static void __fuse_request_send(struct fuse_conn *fc, struct fuse_req *req)struct fuse_iqueue *fiq = &fc->iq;BUG_ON (test_bit (FR_BACKGROUND , &req->flags)); -spin_lock (&fiq->waitq.lock); +spin_lock (&fiq->lock);if (!fiq->connected) { -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock); req->out.h.error = -ENOTCONN ; }else { req->in.h.unique =fuse_get_unique (fiq);
@@ -500,7 +500,7 @@ static void __fuse_request_send(struct fuse_conn *fc, struct fuse_req *req)/* acquire extra reference, since request is still needed after request_end() */ __fuse_get_request (req); -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);request_wait_answer (fc, req);/* Pairs with smp_wmb() in request_end() */
@@ -633,12 +633,12 @@ static int fuse_request_send_notify_reply(struct fuse_conn *fc,__clear_bit (FR_ISREPLY , &req->flags); req->in.h.unique = unique; -spin_lock (&fiq->waitq.lock); +spin_lock (&fiq->lock);if (fiq->connected) {queue_request (fiq, req); err =0 ; } -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);return err; }
@@ -1082,12 +1082,12 @@ static int request_pending(struct fuse_iqueue *fiq)* Unlike other requests this is assembled on demand, without a need * to allocate a separate fuse_req structure. * -* Called with fiq->waitq.lock held, releases it +* Called with fiq->lock held, releases it */ static int fuse_read_interrupt (struct fuse_iqueue *fiq,struct fuse_copy_state *cs,size_t nbytes,struct fuse_req *req) -__releases(fiq->waitq.lock) +__releases(fiq->lock) {struct fuse_in_header ih;struct fuse_interrupt_in arg;
@@ -1103,7 +1103,7 @@ __releases(fiq->waitq.lock) ih.unique = req->intr_unique; arg.unique = req->in.h.unique; -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);if (nbytes < reqsize)return -EINVAL ;
@@ -1140,7 +1140,7 @@ static struct fuse_forget_link *dequeue_forget(struct fuse_iqueue *fiq,static int fuse_read_single_forget (struct fuse_iqueue *fiq,struct fuse_copy_state *cs,size_t nbytes) -__releases(fiq->waitq.lock) +__releases(fiq->lock) {int err;struct fuse_forget_link *forget =dequeue_forget (fiq,1 ,NULL );
@@ -1154,7 +1154,7 @@ __releases(fiq->waitq.lock) .len = sizeof(ih) + sizeof(arg), }; -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);kfree (forget);if (nbytes < ih.len)return -EINVAL ;
@@ -1172,7 +1172,7 @@ __releases(fiq->waitq.lock)static int fuse_read_batch_forget (struct fuse_iqueue *fiq,struct fuse_copy_state *cs,size_t nbytes) -__releases(fiq->waitq.lock) +__releases(fiq->lock) {int err;unsigned max_forgets;
@@ -1186,13 +1186,13 @@ __releases(fiq->waitq.lock) };if (nbytes < ih.len) { -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);return -EINVAL ; } max_forgets = (nbytes - ih.len) /sizeof (struct fuse_forget_one ); head =dequeue_forget (fiq, max_forgets, &count); -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock); arg.count = count; ih.len += count *sizeof (struct fuse_forget_one );
@@ -1222,7 +1222,7 @@ __releases(fiq->waitq.lock)static int fuse_read_forget (struct fuse_conn *fc,struct fuse_iqueue *fiq,struct fuse_copy_state *cs,size_t nbytes) -__releases(fiq->waitq.lock) +__releases(fiq->lock) {if (fc->minor <16 || fiq->forget_list_head.next->next ==NULL )return fuse_read_single_forget (fiq, cs, nbytes);
@@ -1251,16 +1251,19 @@ static ssize_t fuse_dev_do_read(struct fuse_dev *fud, struct file *file,unsigned reqsize; restart: -spin_lock (&fiq->waitq.lock); - err = -EAGAIN ; -if ((file->f_flags &O_NONBLOCK ) && fiq->connected && - !request_pending (fiq)) - goto err_unlock; +for (;;) { +spin_lock (&fiq->lock); +if (!fiq->connected ||request_pending (fiq)) +break ; +spin_unlock (&fiq->lock); - err =wait_event_interruptible_exclusive_locked (fiq->waitq, +if (file->f_flags &O_NONBLOCK ) +return -EAGAIN ; + err =wait_event_interruptible_exclusive (fiq->waitq, !fiq->connected ||request_pending (fiq)); -if (err) - goto err_unlock; +if (err) +return err; + }if (!fiq->connected) { err = (fc->aborted && fc->abort_err) ? -ECONNABORTED : -ENODEV ;
@@ -1284,7 +1287,7 @@ static ssize_t fuse_dev_do_read(struct fuse_dev *fud, struct file *file, req = list_entry(fiq->pending.next, struct fuse_req, list);clear_bit (FR_PENDING , &req->flags);list_del_init (&req->list); -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock); in = &req->in; reqsize = in->h.len;
@@ -1341,7 +1344,7 @@ static ssize_t fuse_dev_do_read(struct fuse_dev *fud, struct file *file,return err; err_unlock: -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);return err; }
@@ -2054,12 +2057,12 @@ static __poll_t fuse_dev_poll(struct file *file, poll_table *wait) fiq = &fud->fc->iq;poll_wait (file, &fiq->waitq, wait); -spin_lock (&fiq->waitq.lock); +spin_lock (&fiq->lock);if (!fiq->connected) mask =EPOLLERR ;else if (request_pending (fiq)) mask |=EPOLLIN |EPOLLRDNORM ; -spin_unlock (&fiq->waitq.lock); +spin_unlock (&fiq->lock);return mask; }
@@ -2150,15 +2153,15 @@ void fuse_abort_conn(struct fuse_conn *fc, bool is_abort) fc->max_background =UINT_MAX ;flush_bg_queue (fc); -spin_lock (&fiq->waitq.lock); +spin_lock (&fiq->lock); fiq->connected =0 ;list_for_each_entry (req, &fiq->pending, list)clear_bit (FR_PENDING , &req->flags);list_splice_tail_init (&fiq->pending, &to_end);while (forget_pending (fiq))kfree (dequeue_forget (fiq,1 ,NULL )); -wake_up_all_locked (&fiq->waitq); -spin_unlock (&fiq->waitq.lock); +wake_up_all (&fiq->waitq); +spin_unlock (&fiq->lock);kill_fasync (&fiq->fasync,SIGIO ,POLL_IN );end_polls (fc);wake_up_all (&fc->blocked_waitq);
fs/fuse/fuse_i.h +3 -0
@@ -388,6 +388,9 @@ struct fuse_iqueue {/** Connection established */ unsigned connected; +/** Lock protecting accesses to members of this structure */ +spinlock_t lock; +/** Readers of the connection are waiting on this */ wait_queue_head_t waitq;
fs/fuse/inode.c +1 -0
@@ -585,6 +585,7 @@ static int fuse_show_options(struct seq_file *m, struct dentry *root)static void fuse_iqueue_init (struct fuse_iqueue *fiq) {memset (fiq,0 ,sizeof (struct fuse_iqueue )); +spin_lock_init (&fiq->lock);init_waitqueue_head (&fiq->waitq);INIT_LIST_HEAD (&fiq->pending);INIT_LIST_HEAD (&fiq->interrupts);
Signature · 1 line
2.20.1
Re: [PATCH 4.19 209/211] fuse: fix deadlock with aio poll and fuse_iqueue::waitq.lock
Quoted 8 lines · Greg Kroah-Hartman
static void
queue_interrupt(struct fuse_iqueue *fiq, struct fuse_req *req){(quoted diff) +2
-2- spin_lock(&fiq->waitq.lock); + spin_lock(&fiq->lock); if (test_bit(FR_FINISHED, &req->flags)) { - spin_unlock(&fiq->waitq.lock); + spin_unlock(&fiq->lock);
Review
Quoted 10 lines
(quoted diff) +1
-1return; } if (list_empty(&req->intr_entry)) { list_add_tail(&req->intr_entry, &fiq->interrupts); wake_up_locked(&fiq->waitq); } - spin_unlock(&fiq->waitq.lock); + spin_unlock(&fiq->lock); kill_fasync(&fiq->fasync, SIGIO, POLL_IN); }
This isn't backported correctly. wake_up_locked() needs to be changed to wake_up().
fs/fuse/dev.c +1 -1
@@ -434,7 +434,7 @@ static void queue_interrupt(struct fuse_iqueue *fiq, struct fuse_req *req) }if (list_empty (&req->intr_entry)) {list_add_tail (&req->intr_entry, &fiq->interrupts); -wake_up_locked (&fiq->waitq); +wake_up (&fiq->waitq); }spin_unlock (&fiq->lock);kill_fasync (&fiq->fasync,SIGIO ,POLL_IN );
Greg Kroah-Hartman
maintainerRe: [PATCH 4.19 209/211] fuse: fix deadlock with aio poll and fuse_iqueue::waitq.lock
Quoted 27 lines · Eric Biggers
Quoted 8 lines · Greg Kroah-Hartman
static void
queue_interrupt(struct fuse_iqueue *fiq, struct fuse_req *req){(quoted diff) +2
-2- spin_lock(&fiq->waitq.lock); + spin_lock(&fiq->lock); if (test_bit(FR_FINISHED, &req->flags)) { - spin_unlock(&fiq->waitq.lock); + spin_unlock(&fiq->lock);Review
Quoted 10 lines
(quoted diff) +1
-1return; } if (list_empty(&req->intr_entry)) { list_add_tail(&req->intr_entry, &fiq->interrupts); wake_up_locked(&fiq->waitq); } - spin_unlock(&fiq->waitq.lock); + spin_unlock(&fiq->lock); kill_fasync(&fiq->fasync, SIGIO, POLL_IN); }This isn't backported correctly.
wake_up_locked()needs to be changed towake_up().fs/fuse/dev.c +0
-0
fs/fuse/dev.c static void queue_interrupt(struct fuse_iqueue *fiq, struct fuse_req *req) · line 440
Quoted 8 lines
fs/fuse/dev.c +1
-1@@ -434,7 +434,7 @@ static void queue_interrupt(struct fuse_iqueue *fiq, struct fuse_req *req) }if (list_empty (&req->intr_entry)) {list_add_tail (&req->intr_entry, &fiq->interrupts); -wake_up_locked (&fiq->waitq); +wake_up (&fiq->waitq); }spin_unlock (&fiq->lock);kill_fasync (&fiq->fasync,SIGIO ,POLL_IN );
Thanks for the update and for looking at this. Now added to the original patch and pushed out as part of a -rc3.
thanks,
greg k-h
Greg Kroah-Hartman
maintainerPATCH 210/211 mm/compaction.c: clear total_{migrate,free}_scanned before scanning a new zone
In reply to Greg Kroah-HartmanFrom: Yafang Shao <[email protected]>
[ Upstream commit a94b525241c0fff3598809131d7cfcfe1d572d8c ]
total_{migrate,free}_scanned will be added to COMPACTMIGRATE_SCANNED and COMPACTFREE_SCANNED in compact_zone(). We should clear them before scanning a new zone. In the proc triggered compaction, we forgot clearing them.
--- mm/compaction.c | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-)
mm/compaction.c +13 -22
@@ -1540,6 +1540,17 @@ static enum compact_result compact_zone(struct zone *zone, struct compact_controunsigned long end_pfn =zone_end_pfn (zone);const bool sync = cc->mode !=MIGRATE_ASYNC ; +/* +* These counters track activities during zone compaction. Initialize +* them before compacting a new zone. +*/ + cc->total_migrate_scanned =0 ; + cc->total_free_scanned =0 ; + cc->nr_migratepages =0 ; + cc->nr_freepages =0 ; +INIT_LIST_HEAD (&cc->freepages); +INIT_LIST_HEAD (&cc->migratepages); + cc->migratetype =gfpflags_to_migratetype (cc->gfp_mask); ret =compaction_suitable (zone, cc->order, cc->alloc_flags, cc->classzone_idx);
@@ -1703,10 +1714,6 @@ static enum compact_result compact_zone_order(struct zone *zone, int order, {enum compact_result ret;struct compact_control cc = { - .nr_freepages =0 , - .nr_migratepages =0 , - .total_migrate_scanned =0 , - .total_free_scanned =0 , .order = order, .gfp_mask = gfp_mask, .zone = zone,
@@ -1719,8 +1726,6 @@ static enum compact_result compact_zone_order(struct zone *zone, int order, .ignore_skip_hint = (prio == MIN_COMPACT_PRIORITY), .ignore_block_suitable = (prio == MIN_COMPACT_PRIORITY) }; -INIT_LIST_HEAD (&cc.freepages); -INIT_LIST_HEAD (&cc.migratepages); ret =compact_zone (zone, &cc);
@@ -1819,8 +1824,6 @@ static void compact_node(int nid)struct zone *zone;struct compact_control cc = { .order =-1 , - .total_migrate_scanned =0 , - .total_free_scanned =0 , .mode =MIGRATE_SYNC , .ignore_skip_hint = true, .whole_zone = true,
@@ -1834,11 +1837,7 @@ static void compact_node(int nid)if (!populated_zone (zone))continue ; - cc.nr_freepages =0 ; - cc.nr_migratepages =0 ; cc.zone = zone; -INIT_LIST_HEAD (&cc.freepages); -INIT_LIST_HEAD (&cc.migratepages);compact_zone (zone, &cc);
@@ -1947,8 +1946,6 @@ static void kcompactd_do_work(pg_data_t *pgdat)struct zone *zone;struct compact_control cc = { .order = pgdat->kcompactd_max_order, - .total_migrate_scanned =0 , - .total_free_scanned =0 , .classzone_idx = pgdat->kcompactd_classzone_idx, .mode =MIGRATE_SYNC_LIGHT , .ignore_skip_hint = false,
@@ -1972,16 +1969,10 @@ static void kcompactd_do_work(pg_data_t *pgdat) COMPACT_CONTINUE)continue ; - cc.nr_freepages =0 ; - cc.nr_migratepages =0 ; - cc.total_migrate_scanned =0 ; - cc.total_free_scanned =0 ; - cc.zone = zone; -INIT_LIST_HEAD (&cc.freepages); -INIT_LIST_HEAD (&cc.migratepages); -if (kthread_should_stop ())return ; + + cc.zone = zone; status =compact_zone (zone, &cc);if (status ==COMPACT_SUCCESS ) {
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 211/211 drm/amd/display: Restore backlight brightness after system resume
In reply to Greg Kroah-HartmanFrom: Kai-Heng Feng <[email protected]>
commit bb264220d9316f6bd7c1fd84b8da398c93912931 upstream.
Laptops with AMD APU doesn't restore display backlight brightness after system resume.
This issue started when DC was introduced.
Let's use BL_CORE_SUSPENDRESUME so the backlight core calls update_status callback after system resume to restore the backlight level.
Tested on Dell Inspiron 3180 (Stoney Ridge) and Dell Latitude 5495 (Raven Ridge).
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +1 -0
@@ -1462,6 +1462,7 @@ static int amdgpu_dm_backlight_get_brigh }static const struct backlight_ops amdgpu_dm_backlight_ops = { + .options =BL_CORE_SUSPENDRESUME , .get_brightness = amdgpu_dm_backlight_get_brightness, .update_status = amdgpu_dm_backlight_update_status, };
This does not compile. I get this error:
CC drivers/ras/debugfs.odrivers/ras/debugfs.c:9:5: error: redefinition of 'ras_userspace_consumers'
int ras_userspace_consumers(void)
^~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/ras/debugfs.c:2:./include/linux/ras.h:14:19: note: previous definition of 'ras_userspace_consumers' was here
static inline int ras_userspace_consumers(void) { return 0; }
^~~~~~~~~~~~~~~~~~~~~~~
drivers/ras/debugfs.c:39:12: error: redefinition of 'ras_add_daemon_trace'
int __init ras_add_daemon_trace(void)
^~~~~~~~~~~~~~~~~~~~In file included from drivers/ras/debugfs.c:2:./include/linux/ras.h:16:19: note: previous definition of 'ras_add_daemon_trace' was here
static inline int ras_add_daemon_trace(void) { return 0; }
^~~~~~~~~~~~~~~~~~~~
drivers/ras/debugfs.c:55:13: error: redefinition of 'ras_debugfs_init'
void __init ras_debugfs_init(void)
^~~~~~~~~~~~~~~~In file included from drivers/ras/debugfs.c:2:./include/linux/ras.h:15:20: note: previous definition of 'ras_debugfs_init' was here
static inline void ras_debugfs_init(void) { }
^~~~~~~~~~~~~~~~
make[2]: *** [scripts/Makefile.build:304: drivers/ras/debugfs.o] Error 1 make[1]: *** [scripts/Makefile.build:544: drivers/ras] Error 2
make: *** [Makefile:1046: drivers] Error 2
zsh: exit 2 LANG="C" make
Does somebody have an idea about this ?
Thanks,
François Valenduc
Le 3/10/19 à 17:51, Greg Kroah-Hartman a écrit :
Quoted 905 lines
This is the start of the stable review cycle for the 4.19.77 release. There are 211 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 Sat 05 Oct 2019 03:37:47 PM UTC. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.77-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-4.19.y
and the diffstat can be found below.thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:Greg Kroah-Hartman <[email protected]>
Linux 4.19.77-rc1Kai-Heng Feng <[email protected]>
drm/amd/display: Restore backlight brightness after system resumeYafang Shao <[email protected]>
mm/compaction.c: clear total_{migrate,free}_scanned before scanning a new zoneEric Biggers <[email protected]>
fuse: fix deadlock with aio poll andfuse_iqueue::waitq.lockNeilBrown <[email protected]>
md/raid0: avoid RAID0 data corruption due to layout confusion.Pavel Shilovsky <[email protected]>
CIFS: Fix oplock handling for SMB 2.1+ protocolsMurphy Zhou <[email protected]>
CIFS: fix max ea value sizeChris Brandt <[email protected]>
i2c: riic: Clear NACK in tend isrLaurent Vivier <[email protected]>
hwrng: core - don't wait onadd_early_randomness()Chao Yu <[email protected]>
quota: fix wrong condition inis_quota_modification()Theodore Ts'o <[email protected]>
ext4: fix punch hole forinline_datafile systemsRakesh Pandit <[email protected]>
ext4: fix warning insideext4_convert_unwritten_extents_endioTetsuo Handa <[email protected]>
/dev/mem: Bail out upon SIGKILL.Denis Kenzior <[email protected]>
cfg80211: Purge frame registrations on iftype changeNeilBrown <[email protected]>
md: only callset_in_sync()when it is expected to succeed.NeilBrown <[email protected]>
md: don't report activearray_stateuntil afterrevalidate_disk()completes.Xiao Ni <[email protected]>
md/raid6: SetR5_ReadErrorwhen there is read failure on parity diskFilipe Manana <[email protected]>
Btrfs: fix race setting up and completing qgroup rescan workersQu Wenruo <[email protected]>
btrfs: qgroup: Fix reserved data space leak if we have multiple reserve callsQu Wenruo <[email protected]>
btrfs: qgroup: Fix the wrong targetio_treewhen freeing reserved data spaceNikolay Borisov <[email protected]>
btrfs: Relinquish CPUs inbtrfs_compare_treesFilipe Manana <[email protected]>
Btrfs: fix use-after-free when using the tree modification logChristophe Leroy <[email protected]>
btrfs: fix allocation of free space cache v1 bitmap pagesMark Salyzyn <[email protected]>
ovl: filter of trusted xattr results in auditDing Xiang <[email protected]>
ovl: Fix dereferencing possibleERR_PTR()Steve French <[email protected]>
smb3: allow disabling requesting leasesYufen Yu <[email protected]>
block: fix null pointer dereference inblk_mq_rq_timed_out()Stefan Assmann <[email protected]>
i40e: check__I40E_VF_DISABLEbit ini40e_sync_filters_subtaskMichal Hocko <[email protected]>
memcg, kmem: do not fail__GFP_NOFAILchargesTetsuo Handa <[email protected]>
memcg, oom: don't require__GFP_FSwhen invoking memcg OOM killerBob Peterson <[email protected]>
gfs2: clearbuf_in_trwhen ending a transaction insweep_bh_for_rgrpsHans de Goede <[email protected]>
efifb: BGRT: Improveefifb_bgrt_sanity_checkMark Brown <[email protected]>
regulator: Defer init completion for a while afterlate_initcallThadeu Lima de Souza Cascardo <[email protected]>
alarmtimer: Use EOPNOTSUPP instead of ENOTSUPPShawn Lin <[email protected]>
arm64: dts: rockchip: limit clock rate of MMC controllers for RK3328Will Deacon <[email protected]>
arm64: tlb: Ensure we execute an ISB following walk cache invalidationWill Deacon <[email protected]>
Revert "arm64: Remove unnecessary ISBs from set_{pte,pmd,pud}"Luis Araneda <[email protected]>
ARM: zynq: Usememcpy_toioinstead of memcpy on smp bring-upLihua Yao <[email protected]>
ARM: samsung: Fix system restart on S3C6410Amadeusz Sławiński <[email protected]>
ASoC: Intel: Fix use of potentially uninitialized variableAmadeusz Sławiński <[email protected]>
ASoC: Intel: Skylake: Use correct function to access iomem spaceAmadeusz Sławiński <[email protected]>
ASoC: Intel: NHLT: Fix debug print formatKees Cook <[email protected]>
binfmt_elf: Do not move brk for INTERP-lessET_EXECArnd Bergmann <[email protected]>
media: don't drop front-end reference count for ->detachHans de Goede <[email protected]>
media: sn9c20x: Add MSI MS-1039 laptop to flip_dmi_tableSean Christopherson <[email protected]>
KVM: x86: Manually calculate reserved bits when loading PDPTRSJan Dakinevich <[email protected]>
KVM: x86: set ctxt->have_exception in x86_decode_insn()Jan Dakinevich <[email protected]>
KVM: x86: always stop emulation on page faultHelge Deller <[email protected]>
parisc: Disable HP HSC-PCI Cards to prevent kernel crashVasily Averin <[email protected]>
fuse: fix missingunlock_pageinfuse_writepage()Madhavan Srinivasan <[email protected]>
powerpc/imc: Dont create debugfs files for cpu-less nodesMing Lei <[email protected]>
scsi: implement .cleanup_rq callbackMing Lei <[email protected]>
blk-mq: add callback of .cleanup_rqJan-Marek Glogowski <[email protected]>
ALSA: hda/realtek - PCI quirk for Medion E4254Yan, Zheng <[email protected]>
ceph: useceph_evict_inodeto cleanup inode's resourceSasha Levin <[email protected]>
Revert "ceph: useceph_evict_inodeto cleanup inode's resource"Joonwon Kang <[email protected]>
randstruct: Check member structs inis_pure_ops_struct()Ira Weiny <[email protected]>
IB/hfi1: Define variables as unsigned long to fix KASAN warningDanit Goldberg <[email protected]>
IB/mlx5: Free mpi inmp_slavemodeVincent Whitchurch <[email protected]>
printk: Do not lose last line in kmsg buffer dumpQuinn Tran <[email protected]>
scsi: qla2xxx: Fix Relogin to prevent modifyingscan_stateflagMartin Wilck <[email protected]>
scsi:scsi_dh_rdac: zero cdb insend_mode_select()Takashi Sakamoto <[email protected]>
ALSA: firewire-tascam: check intermediate state of clock status and retryTakashi Sakamoto <[email protected]>
ALSA: firewire-tascam: handle error code when getting current source of clockLuca Coelho <[email protected]>
iwlwifi: fw: don't sendGEO_TX_POWER_LIMITcommand to FW version 36MyungJoo Ham <[email protected]>
PM / devfreq: passive: fix compiler warningSakari Ailus <[email protected]>
media: omap3isp: Set device on omap3isp subdevsQu Wenruo <[email protected]>
btrfs: extent-tree: Make sure we only allocate extents from block groups with the same typeKai-Heng Feng <[email protected]>
iommu/amd: Override wrong IVRS IOAPIC on Raven Ridge systemsTakashi Iwai <[email protected]>
ALSA: hda/realtek - Blacklist PC beep for Lenovo ThinkCentre M73/93Tomas Bortoli <[email protected]>
media: ttusb-dec: Fix info-leak inttusb_dec_send_command()Ahzo <[email protected]>
drm/amd/powerplay/smu7: enforce minimal VBITimeout (v2)Takashi Iwai <[email protected]>
ALSA: hda - Drop unsol event handler for Intel HDMI codecsKai-Heng Feng <[email protected]>
e1000e: add workaround for possible stalled packetKevin Easton <[email protected]>
libertas: Add missing sentinel at end ofif_usb.cfw_tableNigel Croxon <[email protected]>
raid5: don't incrementread_errorson EILSEQ returnUlf Hansson <[email protected]>
mmc:dw_mmc: Re-store SDIO IRQs mask at system resumeUlf Hansson <[email protected]>
mmc: core: Add helper function to indicate if SDIO IRQs is enabledAl Cooper <[email protected]>
mmc: sdhci: Fix incorrect switch to HS modeUlf Hansson <[email protected]>
mmc: core: Clarifysdio_irq_pendingflag forMMC_CAP2_SDIO_IRQ_NOTHREADGuoqing Jiang <[email protected]>
raid5: don't setSTRIPE_HANDLEto stripe which is in batch listPeter Ujfalusi <[email protected]>
ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not setM. Vefa Bicakci <[email protected]>
platform/x86:intel_pmc_core: Do not ioremap RAMGayatri Kammela <[email protected]>
x86/cpu: Add Tiger Lake to Intel familyHarald Freudenberger <[email protected]>
s390/crypto: xts-aes-s390 fix extra run-time crypto self tests findingMasami Hiramatsu <[email protected]>
kprobes: Prohibit probing onBUG()andWARN()addressPeter Ujfalusi <[email protected]>
dmaengine: ti: edma: Do not reset reserved paRAM slotsYufen Yu <[email protected]>
md/raid1: fail run raid1 array when active disk less than oneWang Shenran <[email protected]>
hwmon: (acpi_power_meter) Change log level for 'unsafe software power cap'Kent Overstreet <[email protected]>
closures: fix a race on wakeup fromclosure_syncWenwen Wang <[email protected]>
ACPI / PCI: fixacpi_pci_irq_enable()memory leakWenwen Wang <[email protected]>
ACPI:custom_method: fix memory leaksMarek Szyprowski <[email protected]>
ARM: dts: exynos: Mark LDO10 as always-on on Peach Pit/Pi ChromebooksTzvetomir Stoyanov <[email protected]>
libtraceevent: Change users plugin directoryEric Dumazet <[email protected]>
iommu/iova: Avoid false sharing onfq_timer_onDan Williams <[email protected]>
libata/ahci: Drop PCS quirk for Denverton and beyondQian Cai <[email protected]>
iommu/amd: Silence warnings under memory pressureTakashi Sakamoto <[email protected]>
ALSA: firewire-motu: add support for MOTU 4preAnton Eidelman <[email protected]>
nvme-multipath: fix ana log nsid lookup when nsid is not foundTom Wu <[email protected]>
nvmet: fix data units read and written counters in SMART logSong Liu <[email protected]>
x86/mm/pti: Handle unaligned address gracefully inpti_clone_pagetable()Shengjiu Wang <[email protected]>
ASoC:fsl_ssi: Fix clock control issue in master modeThomas Gleixner <[email protected]>
x86/mm/pti: Do not invoke PTI functions when PTI is disabledMark Rutland <[email protected]>
arm64: kpti: ensure patched kernel text is fetched from PoUNeil Horman <[email protected]>
x86/apic/vector: Warn when vector space exhaustion breaks affinityDouglas RAILLARD <[email protected]>
sched/cpufreq: Align trace event behavior of fast switchingAl Stone <[email protected]>
ACPI / CPPC: do not require the_PSDmethodKatsuhiro Suzuki <[email protected]>
ASoC: es8316: fix headphone mixer volume tableMauro Carvalho Chehab <[email protected]>
media: ov9650: add a sanity checkBenjamin Peterson <[email protected]>
perf trace beauty ioctl: Fix off-by-one error in cmd->string tableMaciej S. Szmigiero <[email protected]>
media: saa7134: fix terminology around saa7134_i2c_eeprom_md7134_gate()Wenwen Wang <[email protected]>
media:cpia2_usb: fix memory leaksWenwen Wang <[email protected]>
media: saa7146: add cleanup inhexium_attach()Hans Verkuil <[email protected]>
media: cec-notifier: clearcec_adapincec_notifier_unregisterKamil Konieczny <[email protected]>
PM / devfreq: exynos-bus: Correct clock enable sequenceLeonard Crestez <[email protected]>
PM / devfreq: passive: Use non-devm notifiersYazen Ghannam <[email protected]>
EDAC/amd64: Decode syndrome before translating addressYazen Ghannam <[email protected]>
EDAC/amd64: Recognize DRAM device type ECC capabilityGerald BAEZA <[email protected]>
libperf: Fix alignment trap with xyarray contents in 'perf stat'Wenwen Wang <[email protected]>
media: dvb-core: fix a memory leak bugThomas Gleixner <[email protected]>
posix-cpu-timers: Sanitize bogus WARNONSSean Young <[email protected]>
media: dvb-frontends: use ida for pll numberA Sun <[email protected]>
media: mceusb: fix (eliminate) TX IR signal length limitMike Christie <[email protected]>
nbd: add missing config putWenwen Wang <[email protected]>
led: triggers: Fix a memory leak bugMaxime Ripard <[email protected]>
ASoC: sun4i-i2s: Don't use the oversample to calculate BCLKArnaldo Carvalho de Melo <[email protected]>
tools headers: Fixup bitsperlong per arch includesKunihiko Hayashi <[email protected]>
ASoC: uniphier: Fix double reset assersion when transitioning to suspend stateHans Verkuil <[email protected]>
media: hdpvr: add terminating 0 at end of stringHans Verkuil <[email protected]>
media: radio/si470x: kill urb on errorStefan Agner <[email protected]>
ARM: dts: imx7-colibri: disable HS400André Draszik <[email protected]>
ARM: dts: imx7d: cl-som-imx7: make ethernet work againFinn Thain <[email protected]>
m68k: Prevent some compiler warnings in Coldfire buildsArnd Bergmann <[email protected]>
net: lpc-enet: fix printk format stringsEzequiel Garcia <[email protected]>
media: imx: mipi csi-2: Don't fail if initial state times-outSakari Ailus <[email protected]>
media: omap3isp: Don't set streaming state on random subdevsEzequiel Garcia <[email protected]>
media: i2c: ov5645: Fix power sequenceColin Ian King <[email protected]>
media: vsp1: fix memory leak of dl on error return pathTan Xiaojun <[email protected]>
perf record: Support aarch64 randomsocket_idassignmentArnd Bergmann <[email protected]>
dmaengine: iop-adma: use correct printk format stringsDarius Rad <[email protected]>
media: rc: imon: Allow iMON RC protocol for ffdc 7e deviceSean Young <[email protected]>
media: em28xx: modules workqueue not inited for 2nd deviceGeert Uytterhoeven <[email protected]>
media: fdp1: Reduce FCP not found message level to debugMatthias Brugger <[email protected]>
media: mtk-mdp: fix reference count on old device treeArnaldo Carvalho de Melo <[email protected]>
perf testvfs_getname: Disable ~/.perfconfig to get default outputArnaldo Carvalho de Melo <[email protected]>
perf config: Honour $PERF_CONFIG env var to specify alternate .perfconfigHans Verkuil <[email protected]>
media: gspca: zerousb_bufon errorPeter Zijlstra <[email protected]>
idle: Prevent late-arriving interrupts from disrupting offlinePhil Auld <[email protected]>
sched/fair: Use rq_lock/unlock inonline_fair_sched_groupSudeep Holla <[email protected]>
firmware:arm_scmi: Check if platform has released shmem before usingXiaofei Tan <[email protected]>
efi: cper: print AER info of PCIe fatal errorStephen Douthit <[email protected]>
EDAC, pnd2: Fixioremap()size indnv_rd_reg()Alessio Balsini <[email protected]>
loop: AddLOOP_SET_DIRECT_IOto compat ioctlJiri Slaby <[email protected]>
ACPI / processor: don't print errors for processorIDs == 0xffValdis Kletnieks <[email protected]>
RAS: Fix prototype warningsRandy Dunlap <[email protected]>
media: media/platform:fsl-viu.c: fix build for MICROBLAZEGuoqing Jiang <[email protected]>
md: don't setIn_syncif array is frozenGuoqing Jiang <[email protected]>
md: don't callspare_activeinmd_reap_sync_threadif all member devices can't workYufen Yu <[email protected]>
md/raid1: end bio when the device faultyQian Cai <[email protected]>
arm64/prefetch: fix a -Wtype-limits warningKuninori Morimoto <[email protected]>
ASoC: rsnd: don't callclk_get_rate()under atomic contextDan Carpenter <[email protected]>
EDAC/altera: Use the proper type for the IRQ status bitschenzefeng <[email protected]>
ia64:unwind: fix double free for mod->arch.init_unw_tableArd van Breemen <[email protected]>
ALSA: usb-audio: Skip bSynchAddress endpoint check if it is invalidVinod Koul <[email protected]>
base: soc: Export soc_device_register/unregister APIsOliver Neukum <[email protected]>
media: iguanair: add sanity checksRobert Richter <[email protected]>
EDAC/mc: Fixgrain_bitscalculationJia-Ju Bai <[email protected]>
ALSA: i2c: ak4xxx-adda: Fix a possible null pointer dereference inbuild_adc_controls()Takashi Iwai <[email protected]>
ALSA: hda - Show the fatal CORB/RIRB error more clearlyThomas Gleixner <[email protected]>
x86/apic: Soft disable APIC before initializing itGrzegorz Halat <[email protected]>
x86/reboot: Always use NMI fallback when shutdown via reboot vector IPI failsJuri Lelli <[email protected]>
sched/deadline: Fix bandwidth accounting at all levels after offline migrationThomas Gleixner <[email protected]>
x86/apic: Makeapic_pending_intr_clear()more robustJuri Lelli <[email protected]>
sched/core: Fix CPU controller for !RT_GROUP_SCHEDVincent Guittot <[email protected]>
sched/fair: Fix imbalance due to CPU affinityPaul E. McKenney <[email protected]>
time/tick-broadcast: Fixtick_broadcast_offline()lockdep complaintFabio Estevam <[email protected]>
media: i2c: ov5640: Check fordevm_gpiod_get_optional()errorLuke Nowakowski-Krijger <[email protected]>
media: hdpvr: Add device num check and handlingWen Yang <[email protected]>
media: exynos4-is: fix leakedof_nodereferencesSean Young <[email protected]>
media: mtk-cir: lower de-glitch counter for rc-mm protocolArnd Bergmann <[email protected]>
media: dib0700: fix link error fordibx000_i2c_set_speedNick Stoughton <[email protected]>
leds: leds-lp5562 allow firmware files up to the maximum lengthStefan Wahren <[email protected]>
dmaengine: bcm2835: Print error in case setting DMA mask failsStephen Boyd <[email protected]>
firmware:qcom_scm: Use proper types for dma mappingsOleksandr Suvorov <[email protected]>
ASoC: sgtl5000: Fix charge pump source assignmentOleksandr Suvorov <[email protected]>
ASoC: sgtl5000: Fix of unmute outputs on probeLucas Stach <[email protected]>
ASoC: tlv320aic31xx: suppress error message forEPROBE_DEFERAxel Lin <[email protected]>
regulator: lm363x: Fix off-by-onen_voltagesfor lm3632 ldo_vpos/ldo_vnegChris Wilson <[email protected]>
ALSA: hda: Flush interrupts on disablingNavid Emamdoost <[email protected]>
nfp: flower: prevent memory leak innfp_flower_spawn_phy_reprsOri Nimron <[email protected]>
nfc: enforceCAP_NET_RAWfor raw socketsOri Nimron <[email protected]>
ieee802154: enforceCAP_NET_RAWfor raw socketsOri Nimron <[email protected]>
ax25: enforceCAP_NET_RAWfor raw socketsOri Nimron <[email protected]>
appletalk: enforceCAP_NET_RAWfor raw socketsOri Nimron <[email protected]>
mISDN: enforceCAP_NET_RAWfor raw socketsBodong Wang <[email protected]>
net/mlx5: Add device ID of upcoming BlueField-2Eric Dumazet <[email protected]>
tcp: better handleTCP_USER_TIMEOUTinSYN_SENTstateEric Dumazet <[email protected]>
net: sched: fix possible crash intcf_action_destroy()Oliver Neukum <[email protected]>
usbnet: sanity checking of packet sizes and device mtuBjørn Mork <[email protected]>
usbnet: ignore endpoints with invalid wMaxPacketSizeStephen Hemminger <[email protected]>
skge: fix checksum byte orderEric Dumazet <[email protected]>
sch_netem: fix a divide by zero intabledist()Takeshi Misawa <[email protected]>
ppp: Fix memory leak inppp_writeLi RongQing <[email protected]>
openvswitch: change type ofUPCALL_PIDattribute toNLA_UNSPECNavid Emamdoost <[email protected]>
nfp: flower: fix memory leak innfp_flower_spawn_vnic_reprsCong Wang <[email protected]>
net_sched: add max len check forTCA_KINDDavide Caratti <[email protected]>
net/sched:act_sample: don't push mac header on ip6gre ingressBjorn Andersson <[email protected]>
net: qrtr: Stoprx_workerbefore freeing nodePeter Mamonov <[email protected]>
net/phy: fix DP83865 10 Mbps HDX loopback disable functionXin Long <[email protected]>
macsec: drop skb sk before callinggro_cells_receiveBjørn Mork <[email protected]>
cdc_ncm: fix divide-by-zero caused by invalid wMaxPacketSizeUwe Kleine-König <[email protected]>
arcnet: provide a buffer big enough to actually receive packets-------------
Diffstat:
Makefile | 4 +- arch/arm/boot/dts/exynos5420-peach-pit.dts | 1 + arch/arm/boot/dts/exynos5800-peach-pi.dts | 1 + arch/arm/boot/dts/imx7-colibri.dtsi | 1 + arch/arm/boot/dts/imx7d-cl-som-imx7.dts | 4 +- arch/arm/mach-zynq/platsmp.c | 2 +- arch/arm/plat-samsung/watchdog-reset.c | 1 + arch/arm64/boot/dts/rockchip/rk3328.dtsi | 3 + arch/arm64/include/asm/cputype.h | 21 +- arch/arm64/include/asm/pgtable.h | 6 +- arch/arm64/include/asm/tlbflush.h | 1 + arch/arm64/kernel/cpufeature.c | 2 +- arch/arm64/mm/proc.S | 9 + arch/ia64/kernel/module.c | 8 +- arch/m68k/include/asm/atarihw.h | 9 - arch/m68k/include/asm/io_mm.h | 6 +- arch/m68k/include/asm/macintosh.h | 1 + arch/powerpc/platforms/powernv/opal-imc.c | 12 +- arch/s390/crypto/aes_s390.c | 6 + arch/x86/include/asm/intel-family.h | 3 + arch/x86/kernel/apic/apic.c | 115 +++++--- arch/x86/kernel/apic/vector.c | 11 + arch/x86/kernel/smp.c | 46 +-- arch/x86/kvm/emulate.c | 2 + arch/x86/kvm/x86.c | 21 +- arch/x86/mm/pti.c | 8 +- block/blk-flush.c | 10 + block/blk-mq.c | 5 +- block/blk.h | 7 + drivers/acpi/acpi_processor.c | 10 +- drivers/acpi/cppc_acpi.c | 6 +- drivers/acpi/custom_method.c | 5 +- drivers/acpi/pci_irq.c | 4 +- drivers/ata/ahci.c | 116 +++++--- drivers/ata/ahci.h | 2 + drivers/base/soc.c | 2 + drivers/block/loop.c | 1 + drivers/block/nbd.c | 4 +- drivers/char/hw_random/core.c | 2 +- drivers/char/mem.c | 21 ++ drivers/devfreq/exynos-bus.c | 31 +- drivers/devfreq/governor_passive.c | 7 +- drivers/dma/bcm2835-dma.c | 4 +- drivers/dma/iop-adma.c | 18 +- drivers/dma/ti/edma.c | 9 +- drivers/edac/altera_edac.c | 4 +- drivers/edac/amd64_edac.c | 28 +- drivers/edac/edac_mc.c | 8 +- drivers/edac/pnd2_edac.c | 7 +- drivers/firmware/arm_scmi/driver.c | 8 + drivers/firmware/efi/cper.c | 15 + drivers/firmware/qcom_scm.c | 7 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 + drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c | 5 + drivers/hwmon/acpi_power_meter.c | 4 +- drivers/i2c/busses/i2c-riic.c | 1 + drivers/infiniband/hw/hfi1/mad.c | 45 ++- drivers/infiniband/hw/mlx5/main.c | 1 + drivers/iommu/Makefile | 2 +- drivers/iommu/amd_iommu.c | 4 +- drivers/iommu/amd_iommu.h | 14 + drivers/iommu/amd_iommu_init.c | 5 +- drivers/iommu/amd_iommu_quirks.c | 92 ++++++ drivers/iommu/iova.c | 4 +- drivers/isdn/mISDN/socket.c | 2 + drivers/leds/led-triggers.c | 1 + drivers/leds/leds-lp5562.c | 6 +- drivers/md/bcache/closure.c | 10 +- drivers/md/dm-rq.c | 1 + drivers/md/md.c | 28 +- drivers/md/md.h | 3 + drivers/md/raid0.c | 33 ++- drivers/md/raid0.h | 14 + drivers/md/raid1.c | 39 ++- drivers/md/raid5.c | 10 +- drivers/media/cec/cec-notifier.c | 2 + drivers/media/dvb-core/dvb_frontend.c | 4 +- drivers/media/dvb-core/dvbdev.c | 4 +- drivers/media/dvb-frontends/dvb-pll.c | 40 +-- drivers/media/i2c/ov5640.c | 5 + drivers/media/i2c/ov5645.c | 26 +- drivers/media/i2c/ov9650.c | 5 + drivers/media/pci/saa7134/saa7134-i2c.c | 12 +- drivers/media/pci/saa7146/hexium_gemini.c | 3 + drivers/media/platform/exynos4-is/fimc-is.c | 1 + drivers/media/platform/exynos4-is/media-dev.c | 2 + drivers/media/platform/fsl-viu.c | 2 +- drivers/media/platform/mtk-mdp/mtk_mdp_core.c | 4 +- drivers/media/platform/omap3isp/isp.c | 8 + drivers/media/platform/omap3isp/ispccdc.c | 1 + drivers/media/platform/omap3isp/ispccp2.c | 1 + drivers/media/platform/omap3isp/ispcsi2.c | 1 + drivers/media/platform/omap3isp/isppreview.c | 1 + drivers/media/platform/omap3isp/ispresizer.c | 1 + drivers/media/platform/omap3isp/ispstat.c | 2 + drivers/media/platform/rcar_fdp1.c | 2 +- drivers/media/platform/vsp1/vsp1_dl.c | 4 +- drivers/media/radio/si470x/radio-si470x-usb.c | 5 +- drivers/media/rc/iguanair.c | 15 +- drivers/media/rc/imon.c | 7 +- drivers/media/rc/mceusb.c | 334 +++++++++++++--------- drivers/media/rc/mtk-cir.c | 8 + drivers/media/usb/cpia2/cpia2_usb.c | 4 + drivers/media/usb/dvb-usb/dib0700_devices.c | 8 + drivers/media/usb/dvb-usb/pctv452e.c | 8 - drivers/media/usb/em28xx/em28xx-cards.c | 1 - drivers/media/usb/gspca/konica.c | 5 + drivers/media/usb/gspca/nw80x.c | 5 + drivers/media/usb/gspca/ov519.c | 10 + drivers/media/usb/gspca/ov534.c | 5 + drivers/media/usb/gspca/ov534_9.c | 1 + drivers/media/usb/gspca/se401.c | 5 + drivers/media/usb/gspca/sn9c20x.c | 12 + drivers/media/usb/gspca/sonixb.c | 5 + drivers/media/usb/gspca/sonixj.c | 5 + drivers/media/usb/gspca/spca1528.c | 5 + drivers/media/usb/gspca/sq930x.c | 5 + drivers/media/usb/gspca/sunplus.c | 5 + drivers/media/usb/gspca/vc032x.c | 5 + drivers/media/usb/gspca/w996Xcf.c | 5 + drivers/media/usb/hdpvr/hdpvr-core.c | 13 +- drivers/media/usb/ttusb-dec/ttusb_dec.c | 2 +- drivers/mmc/core/sdio_irq.c | 9 +- drivers/mmc/host/dw_mmc.c | 4 + drivers/mmc/host/sdhci.c | 4 +- drivers/net/arcnet/arcnet.c | 31 +- drivers/net/ethernet/intel/e1000e/ich8lan.c | 10 + drivers/net/ethernet/intel/e1000e/ich8lan.h | 2 +- drivers/net/ethernet/intel/i40e/i40e_main.c | 5 + drivers/net/ethernet/marvell/skge.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/main.c | 1 + drivers/net/ethernet/netronome/nfp/flower/main.c | 6 + drivers/net/ethernet/nxp/lpc_eth.c | 13 +- drivers/net/macsec.c | 1 + drivers/net/phy/national.c | 9 +- drivers/net/ppp/ppp_generic.c | 2 + drivers/net/usb/cdc_ncm.c | 6 +- drivers/net/usb/usbnet.c | 8 + drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 8 +- drivers/net/wireless/marvell/libertas/if_usb.c | 3 +- drivers/nvme/host/multipath.c | 8 +- drivers/nvme/target/admin-cmd.c | 14 +- drivers/parisc/dino.c | 24 ++ drivers/platform/x86/intel_pmc_core.c | 8 +- drivers/ras/cec.c | 1 + drivers/ras/debugfs.c | 2 + drivers/regulator/core.c | 42 ++- drivers/regulator/lm363x-regulator.c | 2 +- drivers/scsi/device_handler/scsi_dh_rdac.c | 2 + drivers/scsi/qla2xxx/qla_init.c | 25 +- drivers/scsi/qla2xxx/qla_os.c | 1 + drivers/scsi/qla2xxx/qla_target.c | 1 - drivers/scsi/scsi_lib.c | 13 + drivers/staging/media/imx/imx6-mipi-csi2.c | 12 +- drivers/video/fbdev/efifb.c | 27 +- fs/binfmt_elf.c | 3 +- fs/btrfs/ctree.c | 5 +- fs/btrfs/ctree.h | 1 + fs/btrfs/extent-tree.c | 8 + fs/btrfs/free-space-cache.c | 18 +- fs/btrfs/inode.c | 8 + fs/btrfs/qgroup.c | 38 ++- fs/ceph/inode.c | 3 + fs/ceph/super.c | 1 + fs/ceph/super.h | 1 + fs/cifs/cifsfs.c | 2 + fs/cifs/cifsglob.h | 2 + fs/cifs/connect.c | 9 +- fs/cifs/smb2ops.c | 5 + fs/cifs/smb2pdu.c | 2 +- fs/cifs/xattr.c | 2 +- fs/ext4/extents.c | 4 +- fs/ext4/inode.c | 9 + fs/fuse/dev.c | 89 +++--- fs/fuse/file.c | 1 + fs/fuse/fuse_i.h | 3 + fs/fuse/inode.c | 1 + fs/gfs2/bmap.c | 1 + fs/overlayfs/export.c | 3 +- fs/overlayfs/inode.c | 3 +- include/linux/blk-mq.h | 13 + include/linux/bug.h | 5 + include/linux/mmc/host.h | 9 + include/linux/quotaops.h | 2 +- kernel/kprobes.c | 3 +- kernel/printk/printk.c | 2 +- kernel/sched/core.c | 61 +++- kernel/sched/cpufreq_schedutil.c | 7 +- kernel/sched/deadline.c | 33 +++ kernel/sched/fair.c | 11 +- kernel/sched/idle.c | 5 +- kernel/time/alarmtimer.c | 4 +- kernel/time/posix-cpu-timers.c | 20 +- mm/compaction.c | 35 +-- mm/memcontrol.c | 10 + mm/oom_kill.c | 5 +- net/appletalk/ddp.c | 5 + net/ax25/af_ax25.c | 2 + net/ieee802154/socket.c | 3 + net/ipv4/tcp_timer.c | 5 +- net/nfc/llcp_sock.c | 7 +- net/openvswitch/datapath.c | 2 +- net/qrtr/qrtr.c | 1 + net/sched/act_sample.c | 1 + net/sched/cls_api.c | 6 +- net/sched/sch_api.c | 3 +- net/sched/sch_netem.c | 2 +- net/wireless/util.c | 1 + scripts/gcc-plugins/randomize_layout_plugin.c | 10 +- sound/firewire/motu/motu.c | 12 + sound/firewire/tascam/tascam-pcm.c | 3 + sound/firewire/tascam/tascam-stream.c | 42 ++- sound/hda/hdac_controller.c | 2 + sound/i2c/other/ak4xxx-adda.c | 7 +- sound/pci/hda/hda_controller.c | 5 +- sound/pci/hda/hda_intel.c | 2 +- sound/pci/hda/patch_hdmi.c | 9 +- sound/pci/hda/patch_realtek.c | 16 ++ sound/soc/codecs/es8316.c | 7 +- sound/soc/codecs/sgtl5000.c | 21 +- sound/soc/codecs/tlv320aic31xx.c | 7 +- sound/soc/fsl/fsl_ssi.c | 18 +- sound/soc/intel/common/sst-ipc.c | 2 + sound/soc/intel/skylake/skl-debug.c | 2 +- sound/soc/intel/skylake/skl-nhlt.c | 2 +- sound/soc/sh/rcar/adg.c | 21 +- sound/soc/soc-generic-dmaengine-pcm.c | 6 + sound/soc/sunxi/sun4i-i2s.c | 9 +- sound/soc/uniphier/aio-cpu.c | 31 +- sound/soc/uniphier/aio.h | 1 + sound/usb/pcm.c | 1 + tools/include/uapi/asm/bitsperlong.h | 18 +- tools/lib/traceevent/Makefile | 6 +- tools/lib/traceevent/event-plugin.c | 2 +- tools/perf/perf.c | 3 + tools/perf/tests/shell/trace+probe_vfs_getname.sh | 4 + tools/perf/trace/beauty/ioctl.c | 2 +- tools/perf/util/header.c | 4 +- tools/perf/util/xyarray.h | 3 +- 239 files changed, 1877 insertions(+), 776 deletions(-)
Greg Kroah-Hartman
maintainerQuoted 26 lines · François Valenduc
This does not compile. I get this error:
CC
drivers/ras/debugfs.odrivers/ras/debugfs.c:9:5: error: redefinition of 'ras_userspace_consumers'
intras_userspace_consumers(void)^~~~~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:14:19: note: previous definition of 'ras_userspace_consumers' was here
static inline intras_userspace_consumers(void){ return 0; }^~~~~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:39:12: error: redefinition of 'ras_add_daemon_trace' int __init ras_add_daemon_trace(void) ^~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:16:19: note: previous definition of 'ras_add_daemon_trace' was here
static inline intras_add_daemon_trace(void){ return 0; }^~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:55:13: error: redefinition of 'ras_debugfs_init' void __init ras_debugfs_init(void) ^~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:15:20: note: previous definition of 'ras_debugfs_init' was here
static inline voidras_debugfs_init(void){ }
Quoted 8 lines
^~~~~~~~~~~~~~~~make[2]: *** [
scripts/Makefile.build:304:drivers/ras/debugfs.o] Error 1 make[1]: *** [scripts/Makefile.build:544:drivers/ras] Error 2
make: *** [Makefile:1046: drivers] Error 2
zsh: exit 2 LANG="C" makeDoes somebody have an idea about this ?
Do you have a .config that causes this?
thanks,
greg k-h
Here is the requested config file.
François Valenduc
Le 3/10/19 à 21:08, Greg Kroah-Hartman a écrit :
Quoted 34 lines · François Valenduc
Quoted 33 lines
This does not compile. I get this error:
CC
drivers/ras/debugfs.odrivers/ras/debugfs.c:9:5: error: redefinition of 'ras_userspace_consumers'
intras_userspace_consumers(void)^~~~~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:14:19: note: previous definition of 'ras_userspace_consumers' was here
static inline intras_userspace_consumers(void){ return 0; }^~~~~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:39:12: error: redefinition of 'ras_add_daemon_trace' int __init ras_add_daemon_trace(void) ^~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:16:19: note: previous definition of 'ras_add_daemon_trace' was here
static inline intras_add_daemon_trace(void){ return 0; }^~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:55:13: error: redefinition of 'ras_debugfs_init' void __init ras_debugfs_init(void) ^~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:15:20: note: previous definition of 'ras_debugfs_init' was here
static inline voidras_debugfs_init(void){ }^~~~~~~~~~~~~~~~make[2]: *** [
scripts/Makefile.build:304:drivers/ras/debugfs.o] Error 1 make[1]: *** [scripts/Makefile.build:544:drivers/ras] Error 2
make: *** [Makefile:1046: drivers] Error 2
zsh: exit 2 LANG="C" make
Quoted 6 lines
Quoted 1 line
Does somebody have an idea about this ?
Do you have a .config that causes this?
thanks,
greg k-h
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 4.19.77-rc1 Kernel Configuration
#
#
# Compiler: gcc (Gentoo 8.3.0-r1 p1.1) 8.3.0
#CONFIG_CC_IS_GCC=yCONFIG_GCC_VERSION=80300CONFIG_CLANG_VERSION=0CONFIG_CC_HAS_ASM_GOTO=yCONFIG_IRQ_WORK=yCONFIG_BUILDTIME_EXTABLE_SORT=yCONFIG_THREAD_INFO_IN_TASK=y
#
# General setup
#CONFIG_INIT_ENV_ARG_LIMIT=32
# CONFIG_COMPILE_TEST is not setCONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not setCONFIG_BUILD_SALT=""CONFIG_HAVE_KERNEL_GZIP=yCONFIG_HAVE_KERNEL_BZIP2=yCONFIG_HAVE_KERNEL_LZMA=yCONFIG_HAVE_KERNEL_XZ=yCONFIG_HAVE_KERNEL_LZO=yCONFIG_HAVE_KERNEL_LZ4=y
# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not setCONFIG_KERNEL_XZ=y
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not setCONFIG_DEFAULT_HOSTNAME="(none)"CONFIG_SWAP=yCONFIG_SYSVIPC=yCONFIG_SYSVIPC_SYSCTL=yCONFIG_POSIX_MQUEUE=yCONFIG_POSIX_MQUEUE_SYSCTL=y
# CONFIG_CROSS_MEMORY_ATTACH is not set
# CONFIG_USELIB is not setCONFIG_AUDIT=yCONFIG_HAVE_ARCH_AUDITSYSCALL=yCONFIG_AUDITSYSCALL=yCONFIG_AUDIT_WATCH=yCONFIG_AUDIT_TREE=y
#
# IRQ subsystem
#CONFIG_GENERIC_IRQ_PROBE=yCONFIG_GENERIC_IRQ_SHOW=yCONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=yCONFIG_GENERIC_PENDING_IRQ=yCONFIG_GENERIC_IRQ_MIGRATION=yCONFIG_IRQ_DOMAIN=yCONFIG_IRQ_DOMAIN_HIERARCHY=yCONFIG_GENERIC_MSI_IRQ=yCONFIG_GENERIC_MSI_IRQ_DOMAIN=yCONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=yCONFIG_GENERIC_IRQ_RESERVATION_MODE=yCONFIG_IRQ_FORCED_THREADING=yCONFIG_SPARSE_IRQ=yCONFIG_CLOCKSOURCE_WATCHDOG=yCONFIG_ARCH_CLOCKSOURCE_DATA=yCONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=yCONFIG_GENERIC_TIME_VSYSCALL=yCONFIG_GENERIC_CLOCKEVENTS=yCONFIG_GENERIC_CLOCKEVENTS_BROADCAST=yCONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=yCONFIG_GENERIC_CMOS_UPDATE=y
#
# Timers subsystem
#CONFIG_TICK_ONESHOT=yCONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not setCONFIG_NO_HZ_IDLE=y
# CONFIG_NO_HZ_FULL is not setCONFIG_NO_HZ=yCONFIG_HIGH_RES_TIMERS=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not setCONFIG_PREEMPT=yCONFIG_PREEMPT_COUNT=y
#
# CPU/Task time and stats accounting
#CONFIG_TICK_CPU_ACCOUNTING=y
# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
# CONFIG_IRQ_TIME_ACCOUNTING is not set
# CONFIG_BSD_PROCESS_ACCT is not setCONFIG_TASKSTATS=yCONFIG_TASK_DELAY_ACCT=yCONFIG_TASK_XACCT=yCONFIG_TASK_IO_ACCOUNTING=y
# CONFIG_CPU_ISOLATION is not set
#
# RCU Subsystem
#CONFIG_PREEMPT_RCU=y
# CONFIG_RCU_EXPERT is not setCONFIG_SRCU=yCONFIG_TREE_SRCU=yCONFIG_TASKS_RCU=yCONFIG_RCU_STALL_COMMON=yCONFIG_RCU_NEED_SEGCBLIST=yCONFIG_BUILD_BIN2C=yCONFIG_IKCONFIG=yCONFIG_IKCONFIG_PROC=yCONFIG_LOG_BUF_SHIFT=18CONFIG_LOG_CPU_MAX_BUF_SHIFT=12CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=yCONFIG_ARCH_SUPPORTS_NUMA_BALANCING=yCONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=yCONFIG_ARCH_SUPPORTS_INT128=yCONFIG_CGROUPS=yCONFIG_PAGE_COUNTER=yCONFIG_MEMCG=yCONFIG_MEMCG_SWAP=yCONFIG_MEMCG_SWAP_ENABLED=yCONFIG_MEMCG_KMEM=yCONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not setCONFIG_CGROUP_WRITEBACK=yCONFIG_CGROUP_SCHED=yCONFIG_FAIR_GROUP_SCHED=yCONFIG_CFS_BANDWIDTH=y
# CONFIG_RT_GROUP_SCHED is not setCONFIG_CGROUP_PIDS=y
# CONFIG_CGROUP_RDMA is not setCONFIG_CGROUP_FREEZER=yCONFIG_CPUSETS=yCONFIG_PROC_PID_CPUSET=yCONFIG_CGROUP_DEVICE=yCONFIG_CGROUP_CPUACCT=yCONFIG_CGROUP_PERF=yCONFIG_CGROUP_BPF=y
# CONFIG_CGROUP_DEBUG is not setCONFIG_SOCK_CGROUP_DATA=yCONFIG_NAMESPACES=yCONFIG_UTS_NS=yCONFIG_IPC_NS=yCONFIG_USER_NS=yCONFIG_PID_NS=yCONFIG_NET_NS=yCONFIG_CHECKPOINT_RESTORE=y
# CONFIG_SCHED_AUTOGROUP is not set
# CONFIG_SYSFS_DEPRECATED is not setCONFIG_RELAY=yCONFIG_BLK_DEV_INITRD=yCONFIG_INITRAMFS_SOURCE=""
# CONFIG_RD_GZIP is not set
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not setCONFIG_RD_XZ=y
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not setCONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not setCONFIG_SYSCTL=yCONFIG_ANON_INODES=yCONFIG_HAVE_UID16=yCONFIG_SYSCTL_EXCEPTION_TRACE=yCONFIG_HAVE_PCSPKR_PLATFORM=yCONFIG_BPF=yCONFIG_EXPERT=yCONFIG_UID16=yCONFIG_MULTIUSER=yCONFIG_SGETMASK_SYSCALL=yCONFIG_SYSFS_SYSCALL=y
# CONFIG_SYSCTL_SYSCALL is not setCONFIG_FHANDLE=yCONFIG_POSIX_TIMERS=yCONFIG_PRINTK=yCONFIG_PRINTK_NMI=yCONFIG_BUG=yCONFIG_ELF_CORE=yCONFIG_PCSPKR_PLATFORM=yCONFIG_BASE_FULL=yCONFIG_FUTEX=yCONFIG_FUTEX_PI=yCONFIG_EPOLL=yCONFIG_SIGNALFD=yCONFIG_TIMERFD=yCONFIG_EVENTFD=yCONFIG_SHMEM=yCONFIG_AIO=yCONFIG_ADVISE_SYSCALLS=yCONFIG_MEMBARRIER=yCONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not setCONFIG_KALLSYMS_ABSOLUTE_PERCPU=yCONFIG_KALLSYMS_BASE_RELATIVE=yCONFIG_BPF_SYSCALL=y
# CONFIG_USERFAULTFD is not setCONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=yCONFIG_RSEQ=y
# CONFIG_DEBUG_RSEQ is not set
# CONFIG_EMBEDDED is not setCONFIG_HAVE_PERF_EVENTS=y
# CONFIG_PC104 is not set
#
# Kernel Performance Events And Counters
#CONFIG_PERF_EVENTS=y
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set CONFIG_VM_EVENT_COUNTERS=yCONFIG_SLUB_DEBUG=y
# CONFIG_SLUB_MEMCG_SYSFS_ON is not set
# CONFIG_COMPAT_BRK is not set
# CONFIG_SLAB is not setCONFIG_SLUB=y
# CONFIG_SLOB is not set CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLAB_FREELIST_RANDOM is not set
# CONFIG_SLAB_FREELIST_HARDENED is not set CONFIG_SLUB_CPU_PARTIAL=y CONFIG_SYSTEM_DATA_VERIFICATION=y
# CONFIG_PROFILING is not setCONFIG_64BIT=yCONFIG_X86_64=yCONFIG_X86=yCONFIG_INSTRUCTION_DECODER=y CONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=yCONFIG_MMU=yCONFIG_ARCH_MMAP_RND_BITS_MIN=28 CONFIG_ARCH_MMAP_RND_BITS_MAX=32 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 CONFIG_GENERIC_ISA_DMA=yCONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_ARCH_HAS_FILTER_PGPROT=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y CONFIG_ARCH_WANT_GENERAL_HUGETLB=y CONFIG_ZONE_DMA32=yCONFIG_AUDIT_ARCH=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_X86_64_SMP=y CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_PGTABLE_LEVELS=4 CONFIG_CC_HAS_SANE_STACKPROTECTOR=y
#
# Processor type and features
#CONFIG_ZONE_DMA=yCONFIG_SMP=yCONFIG_X86_FEATURE_NAMES=y
# CONFIG_X86_MPPARSE is not set
# CONFIG_GOLDFISH is not set CONFIG_RETPOLINE=y
# CONFIG_INTEL_RDT is not set
# CONFIG_X86_EXTENDED_PLATFORM is not set
# CONFIG_X86_INTEL_LPSS is not set
# CONFIG_X86_AMD_PLATFORM_DEVICE is not set CONFIG_IOSF_MBI=y CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_HYPERVISOR_GUEST is not set CONFIG_NO_BOOTMEM=y
# CONFIG_MK8 is not set
# CONFIG_MPSC is not setCONFIG_MCORE2=y
# CONFIG_MATOM is not set
# CONFIG_GENERIC_CPU is not set CONFIG_X86_INTERNODE_CACHE_SHIFT=6 CONFIG_X86_L1_CACHE_SHIFT=6 CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_P6_NOP=yCONFIG_X86_TSC=yCONFIG_X86_CMPXCHG64=yCONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=64 CONFIG_X86_DEBUGCTLMSR=y
# CONFIG_PROCESSOR_SELECT is not set CONFIG_CPU_SUP_INTEL=yCONFIG_CPU_SUP_AMD=y CONFIG_CPU_SUP_CENTAUR=yCONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=yCONFIG_DMI=yCONFIG_GART_IOMMU=y
# CONFIG_CALGARY_IOMMU is not set
# CONFIG_MAXSMP is not set CONFIG_NR_CPUS_RANGE_BEGIN=2 CONFIG_NR_CPUS_RANGE_END=512 CONFIG_NR_CPUS_DEFAULT=64CONFIG_NR_CPUS=8CONFIG_SCHED_SMT=yCONFIG_SCHED_MC=yCONFIG_SCHED_MC_PRIO=y CONFIG_X86_LOCAL_APIC=yCONFIG_X86_IO_APIC=y
# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set # CONFIG_X86_MCE is not set
#
# Performance monitoring
#CONFIG_PERF_EVENTS_INTEL_UNCORE=yCONFIG_PERF_EVENTS_INTEL_RAPL=yCONFIG_PERF_EVENTS_INTEL_CSTATE=y
# CONFIG_PERF_EVENTS_AMD_POWER is not setCONFIG_X86_16BIT=yCONFIG_X86_ESPFIX64=yCONFIG_X86_VSYSCALL_EMULATION=y
# CONFIG_I8K is not setCONFIG_MICROCODE=yCONFIG_MICROCODE_INTEL=y
# CONFIG_MICROCODE_AMD is not setCONFIG_MICROCODE_OLD_INTERFACE=y
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set
# CONFIG_X86_5LEVEL is not setCONFIG_X86_DIRECT_GBPAGES=yCONFIG_ARCH_HAS_MEM_ENCRYPT=y
# CONFIG_AMD_MEM_ENCRYPT is not set
# CONFIG_NUMA is not setCONFIG_ARCH_SPARSEMEM_ENABLE=yCONFIG_ARCH_SPARSEMEM_DEFAULT=yCONFIG_ARCH_SELECT_MEMORY_MODEL=yCONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
# CONFIG_X86_PMEM_LEGACY is not set
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not setCONFIG_X86_RESERVE_LOW=64CONFIG_MTRR=yCONFIG_MTRR_SANITIZER=yCONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1CONFIG_X86_PAT=yCONFIG_ARCH_USES_PG_UNCACHED=yCONFIG_ARCH_RANDOM=yCONFIG_X86_SMAP=y
# CONFIG_X86_INTEL_UMIP is not set
# CONFIG_X86_INTEL_MPX is not setCONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=yCONFIG_EFI=yCONFIG_EFI_STUB=y
# CONFIG_EFI_MIXED is not setCONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not setCONFIG_HZ_1000=yCONFIG_HZ=1000CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not set
# CONFIG_KEXEC_FILE is not set
# CONFIG_CRASH_DUMP is not setCONFIG_PHYSICAL_START=0x1000000CONFIG_RELOCATABLE=yCONFIG_RANDOMIZE_BASE=yCONFIG_X86_NEED_RELOCS=yCONFIG_PHYSICAL_ALIGN=0x1000000CONFIG_DYNAMIC_MEMORY_LAYOUT=yCONFIG_RANDOMIZE_MEMORY=yCONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0x0CONFIG_HOTPLUG_CPU=y
# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
# CONFIG_COMPAT_VDSO is not setCONFIG_LEGACY_VSYSCALL_EMULATE=y
# CONFIG_LEGACY_VSYSCALL_NONE is not set
# CONFIG_CMDLINE_BOOL is not setCONFIG_MODIFY_LDT_SYSCALL=yCONFIG_HAVE_LIVEPATCH=yCONFIG_ARCH_HAS_ADD_PAGES=yCONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=yCONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
#
# Power management and ACPI options
#CONFIG_ARCH_HIBERNATION_HEADER=y
# CONFIG_SUSPEND is not setCONFIG_HIBERNATE_CALLBACKS=yCONFIG_HIBERNATION=yCONFIG_PM_STD_PARTITION=""CONFIG_PM_SLEEP=yCONFIG_PM_SLEEP_SMP=yCONFIG_PM_AUTOSLEEP=y
# CONFIG_PM_WAKELOCKS is not setCONFIG_PM=y
# CONFIG_PM_DEBUG is not setCONFIG_PM_CLK=y
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not setCONFIG_ARCH_SUPPORTS_ACPI=yCONFIG_ACPI=yCONFIG_ACPI_LEGACY_TABLES_LOOKUP=yCONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=yCONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
# CONFIG_ACPI_DEBUGGER is not set
# CONFIG_ACPI_SPCR_TABLE is not setCONFIG_ACPI_LPIT=yCONFIG_ACPI_SLEEP=y
# CONFIG_ACPI_PROCFS_POWER is not setCONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
# CONFIG_ACPI_EC_DEBUGFS is not setCONFIG_ACPI_AC=mCONFIG_ACPI_BATTERY=mCONFIG_ACPI_BUTTON=yCONFIG_ACPI_VIDEO=yCONFIG_ACPI_FAN=m
# CONFIG_ACPI_TAD is not set
# CONFIG_ACPI_DOCK is not setCONFIG_ACPI_CPU_FREQ_PSS=yCONFIG_ACPI_PROCESSOR_CSTATE=yCONFIG_ACPI_PROCESSOR_IDLE=yCONFIG_ACPI_CPPC_LIB=yCONFIG_ACPI_PROCESSOR=yCONFIG_ACPI_HOTPLUG_CPU=y
# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not setCONFIG_ACPI_THERMAL=mCONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=yCONFIG_ACPI_TABLE_UPGRADE=y
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_PCI_SLOT is not setCONFIG_ACPI_CONTAINER=yCONFIG_ACPI_HOTPLUG_IOAPIC=y
# CONFIG_ACPI_SBS is not set
# CONFIG_ACPI_HED is not set
# CONFIG_ACPI_BGRT is not set
# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
# CONFIG_ACPI_NFIT is not setCONFIG_HAVE_ACPI_APEI=yCONFIG_HAVE_ACPI_APEI_NMI=y
# CONFIG_ACPI_APEI is not set
# CONFIG_DPTF_POWER is not set
# CONFIG_PMIC_OPREGION is not setCONFIG_ACPI_CONFIGFS=mCONFIG_X86_PM_TIMER=y
# CONFIG_SFI is not set
#
# CPU Frequency scaling
#CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_GOV_ATTR_SET=y CONFIG_CPU_FREQ_GOV_COMMON=y
# CONFIG_CPU_FREQ_STAT is not set CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=m CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=m CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
# CONFIG_CPU_FREQ_GOV_SCHEDUTIL is not set
#
# CPU frequency scaling drivers
#CONFIG_X86_INTEL_PSTATE=y
# CONFIG_X86_PCC_CPUFREQ is not setCONFIG_X86_ACPI_CPUFREQ=m
# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_AMD_FREQ_SENSITIVITY is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_P4_CLOCKMOD is not set
#
# shared options #
#
# CPU Idle
#CONFIG_CPU_IDLE=yCONFIG_CPU_IDLE_GOV_LADDER=yCONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_INTEL_IDLE is not set
#
# Bus options (PCI etc.)
#CONFIG_PCI=yCONFIG_PCI_DIRECT=yCONFIG_PCI_MMCONFIG=yCONFIG_PCI_DOMAINS=yCONFIG_MMCONF_FAM10H=y
# CONFIG_PCI_CNB20LE_QUIRK is not setCONFIG_PCIEPORTBUS=yCONFIG_PCIEAER=y
# CONFIG_PCIEAER_INJECT is not set
# CONFIG_PCIE_ECRC is not setCONFIG_PCIEASPM=y
# CONFIG_PCIEASPM_DEBUG is not setCONFIG_PCIEASPM_DEFAULT=y
# CONFIG_PCIEASPM_POWERSAVE is not set
# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
# CONFIG_PCIEASPM_PERFORMANCE is not setCONFIG_PCIE_PME=y
# CONFIG_PCIE_DPC is not set
# CONFIG_PCIE_PTM is not setCONFIG_PCI_MSI=yCONFIG_PCI_MSI_IRQ_DOMAIN=yCONFIG_PCI_QUIRKS=y
# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_STUB is not setCONFIG_PCI_LOCKLESS_CONFIG=y
# CONFIG_PCI_IOV is not set
# CONFIG_PCI_PRI is not set
# CONFIG_PCI_PASID is not setCONFIG_PCI_LABEL=y
# CONFIG_HOTPLUG_PCI is not set
#
# PCI controller drivers
#
#
# Cadence PCIe controllers support
#
# CONFIG_VMD is not set
#
# DesignWare PCI Core Support
#
# CONFIG_PCIE_DW_PLAT_HOST is not set
#
# PCI Endpoint
#
# CONFIG_PCI_ENDPOINT is not set
#
# PCI switch controller drivers
#
# CONFIG_PCI_SW_SWITCHTEC is not set
# CONFIG_ISA_BUS is not setCONFIG_ISA_DMA_API=yCONFIG_AMD_NB=y
# CONFIG_PCCARD is not set
# CONFIG_RAPIDIO is not setCONFIG_X86_SYSFB=y
#
# Binary Emulations
#CONFIG_IA32_EMULATION=y
# CONFIG_IA32_AOUT is not set
# CONFIG_X86_X32 is not setCONFIG_COMPAT_32=yCONFIG_COMPAT=yCONFIG_COMPAT_FOR_U64_ALIGNMENT=yCONFIG_SYSVIPC_COMPAT=yCONFIG_X86_DEV_DMA_OPS=yCONFIG_HAVE_GENERIC_GUP=y
#
# Firmware Drivers
#
# CONFIG_EDD is not setCONFIG_FIRMWARE_MEMMAP=y
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
# CONFIG_DMIID is not set
# CONFIG_DMI_SYSFS is not setCONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
# CONFIG_FW_CFG_SYSFS is not set
# CONFIG_GOOGLE_FIRMWARE is not set
#
# EFI (Extensible Firmware Interface) Support
#CONFIG_EFI_VARS=mCONFIG_EFI_ESRT=y
# CONFIG_EFI_FAKE_MEMMAP is not setCONFIG_EFI_RUNTIME_WRAPPERS=y
# CONFIG_EFI_BOOTLOADER_CONTROL is not set
# CONFIG_EFI_CAPSULE_LOADER is not set
# CONFIG_EFI_TEST is not set
# CONFIG_APPLE_PROPERTIES is not set
# CONFIG_RESET_ATTACK_MITIGATION is not set
#
# Tegra firmware driver
#CONFIG_HAVE_KVM=yCONFIG_HAVE_KVM_IRQCHIP=yCONFIG_HAVE_KVM_IRQFD=yCONFIG_HAVE_KVM_IRQ_ROUTING=yCONFIG_HAVE_KVM_EVENTFD=yCONFIG_KVM_MMIO=yCONFIG_KVM_ASYNC_PF=yCONFIG_HAVE_KVM_MSI=yCONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=yCONFIG_KVM_VFIO=yCONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=yCONFIG_KVM_COMPAT=yCONFIG_HAVE_KVM_IRQ_BYPASS=yCONFIG_VIRTUALIZATION=yCONFIG_KVM=mCONFIG_KVM_INTEL=m
# CONFIG_KVM_AMD is not setCONFIG_VHOST_NET=mCONFIG_VHOST=m
# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
#
# General architecture-dependent options
#CONFIG_HOTPLUG_SMT=yCONFIG_HAVE_OPROFILE=yCONFIG_OPROFILE_NMI_TIMER=y
# CONFIG_KPROBES is not set
# CONFIG_JUMP_LABEL is not setCONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=yCONFIG_ARCH_USE_BUILTIN_BSWAP=yCONFIG_USER_RETURN_NOTIFIER=yCONFIG_HAVE_IOREMAP_PROT=yCONFIG_HAVE_KPROBES=yCONFIG_HAVE_KRETPROBES=yCONFIG_HAVE_OPTPROBES=yCONFIG_HAVE_KPROBES_ON_FTRACE=yCONFIG_HAVE_FUNCTION_ERROR_INJECTION=yCONFIG_HAVE_NMI=yCONFIG_HAVE_ARCH_TRACEHOOK=yCONFIG_HAVE_DMA_CONTIGUOUS=yCONFIG_GENERIC_SMP_IDLE_THREAD=yCONFIG_ARCH_HAS_FORTIFY_SOURCE=yCONFIG_ARCH_HAS_SET_MEMORY=yCONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=yCONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=yCONFIG_HAVE_REGS_AND_STACK_ACCESS_API=yCONFIG_HAVE_RSEQ=yCONFIG_HAVE_CLK=yCONFIG_HAVE_HW_BREAKPOINT=yCONFIG_HAVE_MIXED_BREAKPOINTS_REGS=yCONFIG_HAVE_USER_RETURN_NOTIFIER=yCONFIG_HAVE_PERF_EVENTS_NMI=yCONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=yCONFIG_HAVE_PERF_REGS=yCONFIG_HAVE_PERF_USER_STACK_DUMP=yCONFIG_HAVE_ARCH_JUMP_LABEL=yCONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=yCONFIG_HAVE_ALIGNED_STRUCT_PAGE=yCONFIG_HAVE_CMPXCHG_LOCAL=yCONFIG_HAVE_CMPXCHG_DOUBLE=yCONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=yCONFIG_ARCH_WANT_OLD_COMPAT_IPC=yCONFIG_HAVE_ARCH_SECCOMP_FILTER=yCONFIG_SECCOMP_FILTER=yCONFIG_HAVE_STACKPROTECTOR=yCONFIG_CC_HAS_STACKPROTECTOR_NONE=yCONFIG_STACKPROTECTOR=yCONFIG_STACKPROTECTOR_STRONG=yCONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=yCONFIG_HAVE_CONTEXT_TRACKING=yCONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=yCONFIG_HAVE_IRQ_TIME_ACCOUNTING=yCONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=yCONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=yCONFIG_HAVE_ARCH_HUGE_VMAP=yCONFIG_HAVE_ARCH_SOFT_DIRTY=yCONFIG_HAVE_MOD_ARCH_SPECIFIC=yCONFIG_MODULES_USE_ELF_RELA=yCONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=yCONFIG_ARCH_HAS_ELF_RANDOMIZE=yCONFIG_HAVE_ARCH_MMAP_RND_BITS=yCONFIG_HAVE_EXIT_THREAD=yCONFIG_ARCH_MMAP_RND_BITS=28CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=yCONFIG_ARCH_MMAP_RND_COMPAT_BITS=8CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=yCONFIG_HAVE_COPY_THREAD_TLS=yCONFIG_HAVE_STACK_VALIDATION=yCONFIG_HAVE_RELIABLE_STACKTRACE=yCONFIG_OLD_SIGSUSPEND3=yCONFIG_COMPAT_OLD_SIGACTION=yCONFIG_COMPAT_32BIT_TIME=yCONFIG_HAVE_ARCH_VMAP_STACK=yCONFIG_VMAP_STACK=yCONFIG_ARCH_HAS_STRICT_KERNEL_RWX=yCONFIG_STRICT_KERNEL_RWX=yCONFIG_ARCH_HAS_STRICT_MODULE_RWX=yCONFIG_STRICT_MODULE_RWX=yCONFIG_ARCH_HAS_REFCOUNT=y
# CONFIG_REFCOUNT_FULL is not setCONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
#
# GCOV-based kernel profiling
#CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=yCONFIG_PLUGIN_HOSTCC="g++"CONFIG_HAVE_GCC_PLUGINS=y
# CONFIG_GCC_PLUGINS is not setCONFIG_RT_MUTEXES=yCONFIG_BASE_SMALL=0CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not setCONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not setCONFIG_MODULE_SIG=yCONFIG_MODULE_SIG_FORCE=yCONFIG_MODULE_SIG_ALL=y
# CONFIG_MODULE_SIG_SHA1 is not set
# CONFIG_MODULE_SIG_SHA224 is not set
# CONFIG_MODULE_SIG_SHA256 is not set
# CONFIG_MODULE_SIG_SHA384 is not setCONFIG_MODULE_SIG_SHA512=yCONFIG_MODULE_SIG_HASH="sha512"
# CONFIG_MODULE_COMPRESS is not set
# CONFIG_TRIM_UNUSED_KSYMS is not setCONFIG_MODULES_TREE_LOOKUP=yCONFIG_BLOCK=yCONFIG_BLK_SCSI_REQUEST=yCONFIG_BLK_DEV_BSG=yCONFIG_BLK_DEV_BSGLIB=y
# CONFIG_BLK_DEV_INTEGRITY is not set
# CONFIG_BLK_DEV_ZONED is not setCONFIG_BLK_DEV_THROTTLING=y
# CONFIG_BLK_DEV_THROTTLING_LOW is not set
# CONFIG_BLK_CMDLINE_PARSER is not set
# CONFIG_BLK_WBT is not set
# CONFIG_BLK_CGROUP_IOLATENCY is not set
# CONFIG_BLK_SED_OPAL is not set
#
# Partition Types
#CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_AIX_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not setCONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not setCONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not set
# CONFIG_CMDLINE_PARTITION is not setCONFIG_BLOCK_COMPAT=yCONFIG_BLK_MQ_PCI=y
#
# IO Schedulers
#CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_DEADLINE is not setCONFIG_IOSCHED_CFQ=yCONFIG_CFQ_GROUP_IOSCHED=yCONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not setCONFIG_DEFAULT_IOSCHED="cfq"CONFIG_MQ_IOSCHED_DEADLINE=y
# CONFIG_MQ_IOSCHED_KYBER is not set
# CONFIG_IOSCHED_BFQ is not setCONFIG_PREEMPT_NOTIFIERS=yCONFIG_ASN1=yCONFIG_UNINLINE_SPIN_UNLOCK=yCONFIG_ARCH_SUPPORTS_ATOMIC_RMW=yCONFIG_MUTEX_SPIN_ON_OWNER=yCONFIG_RWSEM_SPIN_ON_OWNER=yCONFIG_LOCK_SPIN_ON_OWNER=yCONFIG_ARCH_USE_QUEUED_SPINLOCKS=yCONFIG_QUEUED_SPINLOCKS=yCONFIG_ARCH_USE_QUEUED_RWLOCKS=yCONFIG_QUEUED_RWLOCKS=yCONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=yCONFIG_ARCH_HAS_SYSCALL_WRAPPER=yCONFIG_FREEZER=y
#
# Executable file formats
#CONFIG_BINFMT_ELF=yCONFIG_COMPAT_BINFMT_ELF=yCONFIG_ELFCORE=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not setCONFIG_BINFMT_SCRIPT=yCONFIG_BINFMT_MISC=mCONFIG_COREDUMP=y
#
# Memory Management options
#CONFIG_SELECT_MEMORY_MODEL=yCONFIG_SPARSEMEM_MANUAL=yCONFIG_SPARSEMEM=yCONFIG_HAVE_MEMORY_PRESENT=yCONFIG_SPARSEMEM_EXTREME=yCONFIG_SPARSEMEM_VMEMMAP_ENABLE=yCONFIG_SPARSEMEM_VMEMMAP=yCONFIG_HAVE_MEMBLOCK=yCONFIG_HAVE_MEMBLOCK_NODE_MAP=yCONFIG_ARCH_DISCARD_MEMBLOCK=y
# CONFIG_MEMORY_HOTPLUG is not setCONFIG_SPLIT_PTLOCK_CPUS=4CONFIG_COMPACTION=yCONFIG_MIGRATION=yCONFIG_PHYS_ADDR_T_64BIT=yCONFIG_BOUNCE=yCONFIG_VIRT_TO_BUS=yCONFIG_MMU_NOTIFIER=yCONFIG_KSM=yCONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_TRANSPARENT_HUGEPAGE is not setCONFIG_ARCH_WANTS_THP_SWAP=y
# CONFIG_CLEANCACHE is not set
# CONFIG_FRONTSWAP is not set
# CONFIG_CMA is not set
# CONFIG_MEM_SOFT_DIRTY is not set
# CONFIG_ZPOOL is not set
# CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not setCONFIG_GENERIC_EARLY_IOREMAP=y
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
# CONFIG_IDLE_PAGE_TRACKING is not setCONFIG_ARCH_HAS_ZONE_DEVICE=yCONFIG_FRAME_VECTOR=yCONFIG_ARCH_USES_HIGH_VMA_FLAGS=yCONFIG_ARCH_HAS_PKEYS=y
# CONFIG_PERCPU_STATS is not set
# CONFIG_GUP_BENCHMARK is not setCONFIG_ARCH_HAS_PTE_SPECIAL=yCONFIG_NET=yCONFIG_COMPAT_NETLINK_MESSAGES=y
#
# Networking options
#CONFIG_PACKET=m
# CONFIG_PACKET_DIAG is not setCONFIG_UNIX=y
# CONFIG_UNIX_DIAG is not set
# CONFIG_TLS is not set
# CONFIG_XFRM_USER is not set
# CONFIG_NET_KEY is not set
# CONFIG_XDP_SOCKETS is not setCONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE_DEMUX is not setCONFIG_NET_IP_TUNNEL=m
# CONFIG_SYN_COOKIES is not setCONFIG_NET_UDP_TUNNEL=m
# CONFIG_NET_FOU is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not setCONFIG_TCP_CONG_CUBIC=yCONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETWORK_PHY_TIMESTAMPING is not setCONFIG_NETFILTER=yCONFIG_NETFILTER_ADVANCED=yCONFIG_BRIDGE_NETFILTER=m
#
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_INGRESS is not setCONFIG_NETFILTER_NETLINK=mCONFIG_NETFILTER_FAMILY_BRIDGE=y
# CONFIG_NETFILTER_NETLINK_ACCT is not set
# CONFIG_NETFILTER_NETLINK_QUEUE is not set
# CONFIG_NETFILTER_NETLINK_LOG is not set
# CONFIG_NETFILTER_NETLINK_OSF is not setCONFIG_NF_CONNTRACK=mCONFIG_NF_LOG_COMMON=m
# CONFIG_NF_LOG_NETDEV is not set
# CONFIG_NF_CONNTRACK_MARK is not set
# CONFIG_NF_CONNTRACK_ZONES is not set
# CONFIG_NF_CONNTRACK_PROCFS is not set
# CONFIG_NF_CONNTRACK_EVENTS is not set
# CONFIG_NF_CONNTRACK_TIMEOUT is not set
# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
# CONFIG_NF_CONNTRACK_LABELS is not set
# CONFIG_NF_CT_PROTO_DCCP is not set
# CONFIG_NF_CT_PROTO_SCTP is not set
# CONFIG_NF_CT_PROTO_UDPLITE is not set
# CONFIG_NF_CONNTRACK_AMANDA is not set
# CONFIG_NF_CONNTRACK_FTP is not set
# CONFIG_NF_CONNTRACK_H323 is not set
# CONFIG_NF_CONNTRACK_IRC is not setCONFIG_NF_CONNTRACK_BROADCAST=mCONFIG_NF_CONNTRACK_NETBIOS_NS=m
# CONFIG_NF_CONNTRACK_SNMP is not set
# CONFIG_NF_CONNTRACK_PPTP is not set
# CONFIG_NF_CONNTRACK_SANE is not set
# CONFIG_NF_CONNTRACK_SIP is not set
# CONFIG_NF_CONNTRACK_TFTP is not setCONFIG_NF_CT_NETLINK=mCONFIG_NF_NAT=mCONFIG_NF_NAT_NEEDED=y
# CONFIG_NF_TABLES is not setCONFIG_NETFILTER_XTABLES=m
#
# Xtables combined modules
#CONFIG_NETFILTER_XT_MARK=m
# CONFIG_NETFILTER_XT_CONNMARK is not setCONFIG_NETFILTER_XT_SET=m
#
# Xtables targets
#
# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set # CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set # CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set # CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set # CONFIG_NETFILTER_XT_TARGET_DSCP is not set # CONFIG_NETFILTER_XT_TARGET_HL is not set # CONFIG_NETFILTER_XT_TARGET_HMARK is not set # CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set CONFIG_NETFILTER_XT_TARGET_LOG=m
# CONFIG_NETFILTER_XT_TARGET_MARK is not set CONFIG_NETFILTER_XT_NAT=m
# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set # CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set # CONFIG_NETFILTER_XT_TARGET_RATEEST is not set # CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set # CONFIG_NETFILTER_XT_TARGET_TEE is not set # CONFIG_NETFILTER_XT_TARGET_TPROXY is not set # CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set # CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
#
# Xtables matches
#CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
# CONFIG_NETFILTER_XT_MATCH_BPF is not set
# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set
# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set
# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not setCONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
# CONFIG_NETFILTER_XT_MATCH_CPU is not set
# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
# CONFIG_NETFILTER_XT_MATCH_ECN is not set
# CONFIG_NETFILTER_XT_MATCH_ESP is not set
# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
# CONFIG_NETFILTER_XT_MATCH_HL is not set
# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set
# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
# CONFIG_NETFILTER_XT_MATCH_LENGTH is not setCONFIG_NETFILTER_XT_MATCH_LIMIT=m
# CONFIG_NETFILTER_XT_MATCH_MAC is not set
# CONFIG_NETFILTER_XT_MATCH_MARK is not setCONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
# CONFIG_NETFILTER_XT_MATCH_OSF is not set
# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
# CONFIG_NETFILTER_XT_MATCH_REALM is not setCONFIG_NETFILTER_XT_MATCH_RECENT=m
# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
# CONFIG_NETFILTER_XT_MATCH_SOCKET is not setCONFIG_NETFILTER_XT_MATCH_STATE=m
# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
# CONFIG_NETFILTER_XT_MATCH_STRING is not set
# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
# CONFIG_NETFILTER_XT_MATCH_TIME is not set
# CONFIG_NETFILTER_XT_MATCH_U32 is not setCONFIG_IP_SET=mCONFIG_IP_SET_MAX=256
# CONFIG_IP_SET_BITMAP_IP is not set
# CONFIG_IP_SET_BITMAP_IPMAC is not set
# CONFIG_IP_SET_BITMAP_PORT is not set
# CONFIG_IP_SET_HASH_IP is not set
# CONFIG_IP_SET_HASH_IPMARK is not set
# CONFIG_IP_SET_HASH_IPPORT is not set
# CONFIG_IP_SET_HASH_IPPORTIP is not set
# CONFIG_IP_SET_HASH_IPPORTNET is not set
# CONFIG_IP_SET_HASH_IPMAC is not set
# CONFIG_IP_SET_HASH_MAC is not set
# CONFIG_IP_SET_HASH_NETPORTNET is not setCONFIG_IP_SET_HASH_NET=m
# CONFIG_IP_SET_HASH_NETNET is not set
# CONFIG_IP_SET_HASH_NETPORT is not set
# CONFIG_IP_SET_HASH_NETIFACE is not set
# CONFIG_IP_SET_LIST_SET is not setCONFIG_IP_VS=m
# CONFIG_IP_VS_DEBUG is not setCONFIG_IP_VS_TAB_BITS=12
#
# IPVS transport protocol load balancing support
#CONFIG_IP_VS_PROTO_TCP=yCONFIG_IP_VS_PROTO_UDP=y
# CONFIG_IP_VS_PROTO_ESP is not set
# CONFIG_IP_VS_PROTO_AH is not set
# CONFIG_IP_VS_PROTO_SCTP is not set
#
# IPVS scheduler
#
# CONFIG_IP_VS_RR is not set
# CONFIG_IP_VS_WRR is not set
# CONFIG_IP_VS_LC is not set
# CONFIG_IP_VS_WLC is not set
# CONFIG_IP_VS_FO is not set
# CONFIG_IP_VS_OVF is not set
# CONFIG_IP_VS_LBLC is not set
# CONFIG_IP_VS_LBLCR is not set
# CONFIG_IP_VS_DH is not set
# CONFIG_IP_VS_SH is not set
# CONFIG_IP_VS_MH is not set
# CONFIG_IP_VS_SED is not set
# CONFIG_IP_VS_NQ is not set
#
# IPVS SH scheduler
#CONFIG_IP_VS_SH_TAB_BITS=8
#
# IPVS MH scheduler
#CONFIG_IP_VS_MH_TAB_INDEX=12
#
# IPVS application helper
#CONFIG_IP_VS_NFCT=y
#
# IP: Netfilter Configuration
#CONFIG_NF_DEFRAG_IPV4=m
# CONFIG_NF_SOCKET_IPV4 is not set
# CONFIG_NF_TPROXY_IPV4 is not set
# CONFIG_NF_DUP_IPV4 is not set
# CONFIG_NF_LOG_ARP is not setCONFIG_NF_LOG_IPV4=mCONFIG_NF_REJECT_IPV4=mCONFIG_NF_NAT_IPV4=mCONFIG_NF_NAT_MASQUERADE_IPV4=yCONFIG_IP_NF_IPTABLES=m
# CONFIG_IP_NF_MATCH_AH is not set
# CONFIG_IP_NF_MATCH_ECN is not set
# CONFIG_IP_NF_MATCH_RPFILTER is not set
# CONFIG_IP_NF_MATCH_TTL is not setCONFIG_IP_NF_FILTER=mCONFIG_IP_NF_TARGET_REJECT=m
# CONFIG_IP_NF_TARGET_SYNPROXY is not setCONFIG_IP_NF_NAT=mCONFIG_IP_NF_TARGET_MASQUERADE=m
# CONFIG_IP_NF_TARGET_NETMAP is not set
# CONFIG_IP_NF_TARGET_REDIRECT is not setCONFIG_IP_NF_MANGLE=m
# CONFIG_IP_NF_TARGET_CLUSTERIP is not set
# CONFIG_IP_NF_TARGET_ECN is not set
# CONFIG_IP_NF_TARGET_TTL is not set
# CONFIG_IP_NF_RAW is not set
# CONFIG_IP_NF_ARPTABLES is not set
# CONFIG_BRIDGE_NF_EBTABLES is not set
# CONFIG_BPFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_L2TP is not setCONFIG_STP=mCONFIG_BRIDGE=m
# CONFIG_BRIDGE_IGMP_SNOOPING is not setCONFIG_HAVE_NET_DSA=y
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not setCONFIG_LLC=m
# CONFIG_LLC2 is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_PHONET is not set
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not setCONFIG_DNS_RESOLVER=y
# CONFIG_BATMAN_ADV is not set
# CONFIG_OPENVSWITCH is not set
# CONFIG_VSOCKETS is not set
# CONFIG_NETLINK_DIAG is not set
# CONFIG_MPLS is not set
# CONFIG_NET_NSH is not set
# CONFIG_HSR is not set
# CONFIG_NET_SWITCHDEV is not set
# CONFIG_NET_L3_MASTER_DEV is not set
# CONFIG_NET_NCSI is not setCONFIG_RPS=yCONFIG_RFS_ACCEL=yCONFIG_XPS=y
# CONFIG_CGROUP_NET_PRIO is not set
# CONFIG_CGROUP_NET_CLASSID is not setCONFIG_NET_RX_BUSY_POLL=yCONFIG_BQL=y
# CONFIG_BPF_JIT is not set
# CONFIG_BPF_STREAM_PARSER is not setCONFIG_NET_FLOW_LIMIT=y
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not setCONFIG_BT=mCONFIG_BT_BREDR=yCONFIG_BT_RFCOMM=mCONFIG_BT_RFCOMM_TTY=yCONFIG_BT_BNEP=mCONFIG_BT_BNEP_MC_FILTER=yCONFIG_BT_BNEP_PROTO_FILTER=yCONFIG_BT_HIDP=mCONFIG_BT_HS=yCONFIG_BT_LE=y
# CONFIG_BT_SELFTEST is not set
#
# Bluetooth device drivers
#CONFIG_BT_INTEL=mCONFIG_BT_BCM=mCONFIG_BT_HCIBTUSB=m
# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not setCONFIG_BT_HCIBTUSB_BCM=y
# CONFIG_BT_HCIBTUSB_RTL is not set
# CONFIG_BT_HCIUART is not set
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
# CONFIG_BT_MRVL is not set
# CONFIG_BT_ATH3K is not set
# CONFIG_AF_RXRPC is not set
# CONFIG_AF_KCM is not setCONFIG_WIRELESS=yCONFIG_WEXT_CORE=yCONFIG_WEXT_PROC=yCONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
# CONFIG_CFG80211_CERTIFICATION_ONUS is not setCONFIG_CFG80211_REQUIRE_SIGNED_REGDB=yCONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=yCONFIG_CFG80211_DEFAULT_PS=yCONFIG_CFG80211_CRDA_SUPPORT=yCONFIG_CFG80211_WEXT=yCONFIG_MAC80211=mCONFIG_MAC80211_HAS_RC=yCONFIG_MAC80211_RC_MINSTREL=yCONFIG_MAC80211_RC_MINSTREL_HT=y
# CONFIG_MAC80211_RC_MINSTREL_VHT is not setCONFIG_MAC80211_RC_DEFAULT_MINSTREL=yCONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
# CONFIG_MAC80211_MESH is not set
# CONFIG_MAC80211_MESSAGE_TRACING is not set
# CONFIG_MAC80211_DEBUG_MENU is not setCONFIG_MAC80211_STA_HASH_MAX_SIZE=0
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
# CONFIG_CAIF is not set
# CONFIG_CEPH_LIB is not set
# CONFIG_NFC is not set
# CONFIG_PSAMPLE is not set
# CONFIG_NET_IFE is not set
# CONFIG_LWTUNNEL is not setCONFIG_DST_CACHE=yCONFIG_GRO_CELLS=y
# CONFIG_NET_DEVLINK is not setCONFIG_MAY_USE_DEVLINK=y
# CONFIG_FAILOVER is not setCONFIG_HAVE_EBPF_JIT=y
#
# Device Drivers
#
#
# Generic Driver Options
#CONFIG_UEVENT_HELPER=yCONFIG_UEVENT_HELPER_PATH=""CONFIG_DEVTMPFS=yCONFIG_DEVTMPFS_MOUNT=yCONFIG_STANDALONE=yCONFIG_PREVENT_FIRMWARE_BUILD=y
#
# Firmware loader
#CONFIG_FW_LOADER=yCONFIG_EXTRA_FIRMWARE=""
# CONFIG_FW_LOADER_USER_HELPER is not setCONFIG_ALLOW_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not setCONFIG_GENERIC_CPU_AUTOPROBE=yCONFIG_GENERIC_CPU_VULNERABILITIES=yCONFIG_REGMAP=yCONFIG_REGMAP_I2C=yCONFIG_DMA_SHARED_BUFFER=y
# CONFIG_DMA_FENCE_TRACE is not set
#
# Bus devices
#
# CONFIG_CONNECTOR is not set
# CONFIG_GNSS is not set
# CONFIG_MTD is not set
# CONFIG_OF is not setCONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
# CONFIG_PARPORT is not setCONFIG_PNP=y
# CONFIG_PNP_DEBUG_MESSAGES is not set
#
# Protocols
#CONFIG_PNPACPI=yCONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_NULL_BLK is not set
# CONFIG_BLK_DEV_FD is not setCONFIG_CDROM=m
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not setCONFIG_BLK_DEV_LOOP=mCONFIG_BLK_DEV_LOOP_MIN_COUNT=8
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_DRBD is not setCONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_SKD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_BLK_DEV_RBD is not set
# CONFIG_BLK_DEV_RSXX is not set
#
# NVME Support
#
# CONFIG_BLK_DEV_NVME is not set
# CONFIG_NVME_FC is not set
# CONFIG_NVME_TARGET is not set
#
# Misc devices
#
# CONFIG_AD525X_DPOT is not set
# CONFIG_DUMMY_IRQ is not set
# CONFIG_IBM_ASM is not set
# CONFIG_PHANTOM is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
# CONFIG_ICS932S401 is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_HP_ILO is not set
# CONFIG_APDS9802ALS is not set
# CONFIG_ISL29003 is not set
# CONFIG_ISL29020 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_SENSORS_BH1770 is not set
# CONFIG_SENSORS_APDS990X is not set
# CONFIG_HMC6352 is not set
# CONFIG_DS1682 is not set
# CONFIG_USB_SWITCH_FSA9480 is not set
# CONFIG_SRAM is not set
# CONFIG_PCI_ENDPOINT_TEST is not set
# CONFIG_C2PORT is not set
#
# EEPROM support
#
# CONFIG_EEPROM_AT24 is not set
# CONFIG_EEPROM_LEGACY is not set
# CONFIG_EEPROM_MAX6875 is not set
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_EEPROM_IDT_89HPESX is not set
# CONFIG_CB710_CORE is not set
#
# Texas Instruments shared transport line discipline #
# CONFIG_SENSORS_LIS3_I2C is not set
# CONFIG_ALTERA_STAPL is not set
# CONFIG_INTEL_MEI is not set
# CONFIG_INTEL_MEI_ME is not set
# CONFIG_INTEL_MEI_TXE is not set
# CONFIG_VMWARE_VMCI is not set
#
# Intel MIC & related support
#
#
# Intel MIC Bus Driver
#
# CONFIG_INTEL_MIC_BUS is not set
#
# SCIF Bus Driver
#
# CONFIG_SCIF_BUS is not set
#
# VOP Bus Driver
#
# CONFIG_VOP_BUS is not set
#
# Intel MIC Host Driver
#
#
# Intel MIC Card Driver
#
#
# SCIF Driver
#
#
# Intel MIC Coprocessor State Management (COSM) Drivers #
#
# VOP Driver
#
# CONFIG_GENWQE is not set
# CONFIG_ECHO is not set
# CONFIG_MISC_RTSX_PCI is not set
# CONFIG_MISC_RTSX_USB is not setCONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
#
# SCSI device support
#CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not setCONFIG_SCSI=yCONFIG_SCSI_DMA=y
# CONFIG_SCSI_MQ_DEFAULT is not set
# CONFIG_SCSI_PROC_FS is not set
#
# SCSI support type (disk, tape, CD-ROM)
#CONFIG_BLK_DEV_SD=m
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not setCONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SR_VENDOR is not set
# CONFIG_CHR_DEV_SG is not set
# CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
# CONFIG_SCSI_LOWLEVEL is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not setCONFIG_ATA=y
# CONFIG_ATA_VERBOSE_ERROR is not setCONFIG_ATA_ACPI=y
# CONFIG_SATA_ZPODD is not set
# CONFIG_SATA_PMP is not set
#
# Controllers with non-SFF native interface #CONFIG_SATA_AHCI=m CONFIG_SATA_MOBILE_LPM_POLICY=0
# CONFIG_SATA_AHCI_PLATFORM is not set
# CONFIG_SATA_INIC162X is not set
# CONFIG_SATA_ACARD_AHCI is not set
# CONFIG_SATA_SIL24 is not set
# CONFIG_ATA_SFF is not setCONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
# CONFIG_BCACHE is not set CONFIG_BLK_DEV_DM_BUILTIN=y CONFIG_BLK_DEV_DM=m
# CONFIG_DM_MQ_DEFAULT is not set
# CONFIG_DM_DEBUG is not set CONFIG_DM_BUFIO=m
# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set CONFIG_DM_BIO_PRISON=m CONFIG_DM_PERSISTENT_DATA=m
# CONFIG_DM_UNSTRIPED is not set CONFIG_DM_CRYPT=mCONFIG_DM_SNAPSHOT=m CONFIG_DM_THIN_PROVISIONING=m
# CONFIG_DM_CACHE is not set
# CONFIG_DM_WRITECACHE is not set
# CONFIG_DM_ERA is not set CONFIG_DM_MIRROR=m
# CONFIG_DM_LOG_USERSPACE is not set
# CONFIG_DM_RAID is not set
# CONFIG_DM_ZERO is not set CONFIG_DM_MULTIPATH=m
# CONFIG_DM_MULTIPATH_QL is not set
# CONFIG_DM_MULTIPATH_ST is not set
# CONFIG_DM_DELAY is not set
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_DM_SWITCH is not set
# CONFIG_DM_LOG_WRITES is not set
# CONFIG_DM_INTEGRITY is not set
# CONFIG_TARGET_CORE is not set
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
# CONFIG_FIREWIRE is not set
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_MACINTOSH_DRIVERS is not setCONFIG_NETDEVICES=yCONFIG_MII=yCONFIG_NET_CORE=y
# CONFIG_BONDING is not setCONFIG_DUMMY=m
# CONFIG_EQUALIZER is not set
# CONFIG_NET_FC is not set
# CONFIG_NET_TEAM is not setCONFIG_MACVLAN=mCONFIG_MACVTAP=m
# CONFIG_IPVLAN is not setCONFIG_VXLAN=m
# CONFIG_GENEVE is not set
# CONFIG_GTP is not set
# CONFIG_MACSEC is not set
# CONFIG_NETCONSOLE is not setCONFIG_TUN=mCONFIG_TAP=m
# CONFIG_TUN_VNET_CROSS_LE is not setCONFIG_VETH=m
# CONFIG_NLMON is not set
# CONFIG_ARCNET is not set
#
# CAIF transport drivers
#
#
# Distributed Switch Architecture drivers
#CONFIG_ETHERNET=yCONFIG_MDIO=m
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_ADAPTEC is not set
# CONFIG_NET_VENDOR_AGERE is not set
# CONFIG_NET_VENDOR_ALACRITECH is not set
# CONFIG_NET_VENDOR_ALTEON is not set
# CONFIG_ALTERA_TSE is not set
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_AMD is not set
# CONFIG_NET_VENDOR_AQUANTIA is not set
# CONFIG_NET_VENDOR_ARC is not setCONFIG_NET_VENDOR_ATHEROS=y
# CONFIG_ATL2 is not set
# CONFIG_ATL1 is not set
# CONFIG_ATL1E is not setCONFIG_ATL1C=yCONFIG_ALX=m
# CONFIG_NET_VENDOR_AURORA is not set
# CONFIG_NET_VENDOR_BROADCOM is not set
# CONFIG_NET_VENDOR_BROCADE is not set
# CONFIG_NET_VENDOR_CADENCE is not set
# CONFIG_NET_VENDOR_CAVIUM is not set
# CONFIG_NET_VENDOR_CHELSIO is not set
# CONFIG_NET_VENDOR_CISCO is not set
# CONFIG_NET_VENDOR_CORTINA is not set
# CONFIG_CX_ECAT is not set
# CONFIG_DNET is not set
# CONFIG_NET_VENDOR_DEC is not set
# CONFIG_NET_VENDOR_DLINK is not set
# CONFIG_NET_VENDOR_EMULEX is not set
# CONFIG_NET_VENDOR_EZCHIP is not set
# CONFIG_NET_VENDOR_HP is not set
# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_JME is not set
# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MELLANOX is not set
# CONFIG_NET_VENDOR_MICREL is not set
# CONFIG_NET_VENDOR_MICROSEMI is not set
# CONFIG_NET_VENDOR_MYRI is not set
# CONFIG_FEALNX is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
# CONFIG_NET_VENDOR_NETERION is not set
# CONFIG_NET_VENDOR_NETRONOME is not set
# CONFIG_NET_VENDOR_NI is not set
# CONFIG_NET_VENDOR_NVIDIA is not set
# CONFIG_NET_VENDOR_OKI is not set
# CONFIG_ETHOC is not set
# CONFIG_NET_VENDOR_PACKET_ENGINES is not set
# CONFIG_NET_VENDOR_QLOGIC is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set
# CONFIG_NET_VENDOR_RDC is not set
# CONFIG_NET_VENDOR_REALTEK is not set
# CONFIG_NET_VENDOR_RENESAS is not set
# CONFIG_NET_VENDOR_ROCKER is not set
# CONFIG_NET_VENDOR_SAMSUNG is not set
# CONFIG_NET_VENDOR_SEEQ is not set
# CONFIG_NET_VENDOR_SOLARFLARE is not set
# CONFIG_NET_VENDOR_SILAN is not set
# CONFIG_NET_VENDOR_SIS is not set
# CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_NET_VENDOR_SOCIONEXT is not set
# CONFIG_NET_VENDOR_STMICRO is not set
# CONFIG_NET_VENDOR_SUN is not set
# CONFIG_NET_VENDOR_SYNOPSYS is not set
# CONFIG_NET_VENDOR_TEHUTI is not set
# CONFIG_NET_VENDOR_TI is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_NET_SB1000 is not set
# CONFIG_MDIO_DEVICE is not set
# CONFIG_PHYLIB is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
#
# Host-side USB support is needed for USB Network Adapter support #
# CONFIG_USB_NET_DRIVERS is not setCONFIG_WLAN=y
# CONFIG_WIRELESS_WDS is not set
# CONFIG_WLAN_VENDOR_ADMTEK is not set CONFIG_WLAN_VENDOR_ATH=y
# CONFIG_ATH_DEBUG is not set
# CONFIG_ATH5K is not set
# CONFIG_ATH5K_PCI is not set
# CONFIG_ATH9K is not set
# CONFIG_ATH9K_HTC is not set
# CONFIG_CARL9170 is not set
# CONFIG_ATH6KL is not set
# CONFIG_AR5523 is not set
# CONFIG_WIL6210 is not set
# CONFIG_ATH10K is not set
# CONFIG_WCN36XX is not set
# CONFIG_WLAN_VENDOR_ATMEL is not set
# CONFIG_WLAN_VENDOR_BROADCOM is not set
# CONFIG_WLAN_VENDOR_CISCO is not set
# CONFIG_WLAN_VENDOR_INTEL is not set
# CONFIG_WLAN_VENDOR_INTERSIL is not set
# CONFIG_WLAN_VENDOR_MARVELL is not set
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
# CONFIG_WLAN_VENDOR_RALINK is not set CONFIG_WLAN_VENDOR_REALTEK=y
# CONFIG_RTL8180 is not set
# CONFIG_RTL8187 is not setCONFIG_RTL_CARDS=m
# CONFIG_RTL8192CE is not set
# CONFIG_RTL8192SE is not set
# CONFIG_RTL8192DE is not set
# CONFIG_RTL8723AE is not set
# CONFIG_RTL8723BE is not setCONFIG_RTL8188EE=m
# CONFIG_RTL8192EE is not set
# CONFIG_RTL8821AE is not set
# CONFIG_RTL8192CU is not setCONFIG_RTLWIFI=mCONFIG_RTLWIFI_PCI=m
# CONFIG_RTLWIFI_DEBUG is not set
# CONFIG_RTL8XXXU is not set
# CONFIG_WLAN_VENDOR_RSI is not set
# CONFIG_WLAN_VENDOR_ST is not set
# CONFIG_WLAN_VENDOR_TI is not set
# CONFIG_WLAN_VENDOR_ZYDAS is not set
# CONFIG_WLAN_VENDOR_QUANTENNA is not set
# CONFIG_MAC80211_HWSIM is not set
# CONFIG_USB_NET_RNDIS_WLAN is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers #
# CONFIG_WAN is not set
# CONFIG_VMXNET3 is not set
# CONFIG_FUJITSU_ES is not set
# CONFIG_NET_FAILOVER is not set
# CONFIG_ISDN is not set
# CONFIG_NVM is not set
#
# Input device support
#CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
# CONFIG_INPUT_POLLDEV is not set
# CONFIG_INPUT_SPARSEKMAP is not set
# CONFIG_INPUT_MATRIXKMAP is not set
#
# Userland interfaces
#CONFIG_INPUT_MOUSEDEV=yCONFIG_INPUT_MOUSEDEV_PSAUX=yCONFIG_INPUT_MOUSEDEV_SCREEN_X=1600CONFIG_INPUT_MOUSEDEV_SCREEN_Y=900
# CONFIG_INPUT_JOYDEV is not setCONFIG_INPUT_EVDEV=m
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not setCONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_DLINK_DIR685 is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_TCA6416 is not set
# CONFIG_KEYBOARD_TCA8418 is not set
# CONFIG_KEYBOARD_LM8333 is not set
# CONFIG_KEYBOARD_MAX7359 is not set
# CONFIG_KEYBOARD_MCS is not set
# CONFIG_KEYBOARD_MPR121 is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_OPENCORES is not set
# CONFIG_KEYBOARD_SAMSUNG is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not setCONFIG_INPUT_MOUSE=yCONFIG_MOUSE_PS2=mCONFIG_MOUSE_PS2_ALPS=yCONFIG_MOUSE_PS2_BYD=yCONFIG_MOUSE_PS2_LOGIPS2PP=yCONFIG_MOUSE_PS2_SYNAPTICS=yCONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=yCONFIG_MOUSE_PS2_CYPRESS=yCONFIG_MOUSE_PS2_LIFEBOOK=yCONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not setCONFIG_MOUSE_PS2_FOCALTECH=yCONFIG_MOUSE_PS2_SMBUS=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
# CONFIG_MOUSE_CYAPA is not set
# CONFIG_MOUSE_ELAN_I2C is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_MOUSE_SYNAPTICS_I2C is not set
# CONFIG_MOUSE_SYNAPTICS_USB is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
# CONFIG_RMI4_CORE is not set
#
# Hardware I/O ports
#CONFIG_SERIO=yCONFIG_ARCH_MIGHT_HAVE_PC_SERIO=yCONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PCIPS2 is not setCONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
# CONFIG_SERIO_ARC_PS2 is not set
# CONFIG_USERIO is not set
# CONFIG_GAMEPORT is not set
#
# Character devices
#CONFIG_TTY=yCONFIG_VT=yCONFIG_CONSOLE_TRANSLATIONS=yCONFIG_VT_CONSOLE=yCONFIG_VT_CONSOLE_SLEEP=yCONFIG_HW_CONSOLE=yCONFIG_VT_HW_CONSOLE_BINDING=yCONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_NOZOMI is not set
# CONFIG_N_GSM is not set
# CONFIG_TRACE_SINK is not setCONFIG_LDISC_AUTOLOAD=yCONFIG_DEVMEM=y
# CONFIG_DEVKMEM is not set
#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set
#
# Non-8250 serial port support
#
# CONFIG_SERIAL_UARTLITE is not set
# CONFIG_SERIAL_JSM is not set
# CONFIG_SERIAL_SCCNXP is not set
# CONFIG_SERIAL_SC16IS7XX is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
# CONFIG_SERIAL_ARC is not set
# CONFIG_SERIAL_RP2 is not set
# CONFIG_SERIAL_FSL_LPUART is not set
# CONFIG_SERIAL_DEV_BUS is not set
# CONFIG_TTY_PRINTK is not set
# CONFIG_IPMI_HANDLER is not setCONFIG_HW_RANDOM=m
# CONFIG_HW_RANDOM_TIMERIOMEM is not setCONFIG_HW_RANDOM_INTEL=m
# CONFIG_HW_RANDOM_AMD is not set
# CONFIG_HW_RANDOM_VIA is not set
# CONFIG_NVRAM is not set
# CONFIG_APPLICOM is not set
# CONFIG_MWAVE is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HPET is not set
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not setCONFIG_DEVPORT=y
# CONFIG_XILLYBUS is not set
# CONFIG_RANDOM_TRUST_CPU is not set
#
# I2C support
#CONFIG_I2C=yCONFIG_ACPI_I2C_OPREGION=yCONFIG_I2C_BOARDINFO=yCONFIG_I2C_COMPAT=y
# CONFIG_I2C_CHARDEV is not setCONFIG_I2C_MUX=m
#
# Multiplexer I2C Chip support
#
# CONFIG_I2C_MUX_LTC4306 is not set
# CONFIG_I2C_MUX_PCA9541 is not set
# CONFIG_I2C_MUX_REG is not set
# CONFIG_I2C_MUX_MLXCPLD is not setCONFIG_I2C_HELPER_AUTO=yCONFIG_I2C_ALGOBIT=y
#
# I2C Hardware Bus support
#
#
# PC SMBus host controller drivers
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not set
# CONFIG_I2C_AMD8111 is not set
# CONFIG_I2C_I801 is not set
# CONFIG_I2C_ISCH is not set
# CONFIG_I2C_ISMT is not set
# CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
# CONFIG_I2C_VIA is not set
# CONFIG_I2C_VIAPRO is not set
#
# ACPI drivers
#
# CONFIG_I2C_SCMI is not set
#
# I2C system bus drivers (mostly embedded / system-on-chip) #
# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
# CONFIG_I2C_DESIGNWARE_PCI is not set
# CONFIG_I2C_EMEV2 is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_SIMTEC is not set
# CONFIG_I2C_XILINX is not set
#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_DIOLAN_U2C is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
# CONFIG_I2C_TAOS_EVM is not set
# CONFIG_I2C_TINY_USB is not set
#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_MLXCPLD is not set
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_SLAVE is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_SPI is not set
# CONFIG_SPMI is not set
# CONFIG_HSI is not set
# CONFIG_PPS is not set
#
# PTP clock support
#
# CONFIG_PTP_1588_CLOCK is not set
#
# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. #
# CONFIG_PINCTRL is not set
# CONFIG_GPIOLIB is not set
# CONFIG_W1 is not set
# CONFIG_POWER_AVS is not set
# CONFIG_POWER_RESET is not setCONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_TEST_POWER is not set
# CONFIG_CHARGER_ADP5061 is not set
# CONFIG_BATTERY_DS2780 is not set
# CONFIG_BATTERY_DS2781 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_SBS is not set
# CONFIG_CHARGER_SBS is not set
# CONFIG_BATTERY_BQ27XXX is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
# CONFIG_CHARGER_MAX8903 is not set
# CONFIG_CHARGER_LP8727 is not set
# CONFIG_CHARGER_BQ2415X is not set
# CONFIG_CHARGER_SMB347 is not set
# CONFIG_BATTERY_GAUGE_LTC2941 is not setCONFIG_HWMON=m
# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Native drivers
#
# CONFIG_SENSORS_ABITUGURU is not set
# CONFIG_SENSORS_ABITUGURU3 is not set
# CONFIG_SENSORS_AD7414 is not set
# CONFIG_SENSORS_AD7418 is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set
# CONFIG_SENSORS_ADM1029 is not set
# CONFIG_SENSORS_ADM1031 is not set
# CONFIG_SENSORS_ADM9240 is not set
# CONFIG_SENSORS_ADT7410 is not set
# CONFIG_SENSORS_ADT7411 is not set
# CONFIG_SENSORS_ADT7462 is not set
# CONFIG_SENSORS_ADT7470 is not set
# CONFIG_SENSORS_ADT7475 is not set
# CONFIG_SENSORS_ASC7621 is not set
# CONFIG_SENSORS_K8TEMP is not set
# CONFIG_SENSORS_K10TEMP is not set
# CONFIG_SENSORS_FAM15H_POWER is not set
# CONFIG_SENSORS_APPLESMC is not set
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ASPEED is not set
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS620 is not set
# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_DELL_SMM is not set
# CONFIG_SENSORS_I5K_AMB is not set
# CONFIG_SENSORS_F71805F is not set
# CONFIG_SENSORS_F71882FG is not set
# CONFIG_SENSORS_F75375S is not set
# CONFIG_SENSORS_FSCHMD is not set
# CONFIG_SENSORS_FTSTEUTATES is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_G760A is not set
# CONFIG_SENSORS_G762 is not set
# CONFIG_SENSORS_HIH6130 is not set
# CONFIG_SENSORS_I5500 is not setCONFIG_SENSORS_CORETEMP=m
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_JC42 is not set
# CONFIG_SENSORS_POWR1220 is not set
# CONFIG_SENSORS_LINEAGE is not set
# CONFIG_SENSORS_LTC2945 is not set
# CONFIG_SENSORS_LTC2990 is not set
# CONFIG_SENSORS_LTC4151 is not set
# CONFIG_SENSORS_LTC4215 is not set
# CONFIG_SENSORS_LTC4222 is not set
# CONFIG_SENSORS_LTC4245 is not set
# CONFIG_SENSORS_LTC4260 is not set
# CONFIG_SENSORS_LTC4261 is not set
# CONFIG_SENSORS_MAX16065 is not set
# CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_MAX1668 is not set
# CONFIG_SENSORS_MAX197 is not set
# CONFIG_SENSORS_MAX6621 is not set
# CONFIG_SENSORS_MAX6639 is not set
# CONFIG_SENSORS_MAX6642 is not set
# CONFIG_SENSORS_MAX6650 is not set
# CONFIG_SENSORS_MAX6697 is not set
# CONFIG_SENSORS_MAX31790 is not set
# CONFIG_SENSORS_MCP3021 is not set
# CONFIG_SENSORS_TC654 is not set
# CONFIG_SENSORS_LM63 is not set
# CONFIG_SENSORS_LM73 is not set
# CONFIG_SENSORS_LM75 is not set
# CONFIG_SENSORS_LM77 is not set
# CONFIG_SENSORS_LM78 is not set
# CONFIG_SENSORS_LM80 is not set
# CONFIG_SENSORS_LM83 is not set
# CONFIG_SENSORS_LM85 is not set
# CONFIG_SENSORS_LM87 is not set
# CONFIG_SENSORS_LM90 is not set
# CONFIG_SENSORS_LM92 is not set
# CONFIG_SENSORS_LM93 is not set
# CONFIG_SENSORS_LM95234 is not set
# CONFIG_SENSORS_LM95241 is not set
# CONFIG_SENSORS_LM95245 is not set
# CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_PC87427 is not set
# CONFIG_SENSORS_NTC_THERMISTOR is not set
# CONFIG_SENSORS_NCT6683 is not set
# CONFIG_SENSORS_NCT6775 is not set
# CONFIG_SENSORS_NCT7802 is not set
# CONFIG_SENSORS_NCT7904 is not set
# CONFIG_SENSORS_NPCM7XX is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_PMBUS is not set
# CONFIG_SENSORS_SHT21 is not set
# CONFIG_SENSORS_SHT3x is not set
# CONFIG_SENSORS_SHTC1 is not set
# CONFIG_SENSORS_SIS5595 is not set
# CONFIG_SENSORS_DME1737 is not set
# CONFIG_SENSORS_EMC1403 is not set
# CONFIG_SENSORS_EMC2103 is not set
# CONFIG_SENSORS_EMC6W201 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SCH5627 is not set
# CONFIG_SENSORS_SCH5636 is not set
# CONFIG_SENSORS_STTS751 is not set
# CONFIG_SENSORS_SMM665 is not set
# CONFIG_SENSORS_ADC128D818 is not set
# CONFIG_SENSORS_ADS1015 is not set
# CONFIG_SENSORS_ADS7828 is not set
# CONFIG_SENSORS_AMC6821 is not set
# CONFIG_SENSORS_INA209 is not set
# CONFIG_SENSORS_INA2XX is not set
# CONFIG_SENSORS_INA3221 is not set
# CONFIG_SENSORS_TC74 is not set
# CONFIG_SENSORS_THMC50 is not set
# CONFIG_SENSORS_TMP102 is not set
# CONFIG_SENSORS_TMP103 is not set
# CONFIG_SENSORS_TMP108 is not set
# CONFIG_SENSORS_TMP401 is not set
# CONFIG_SENSORS_TMP421 is not set
# CONFIG_SENSORS_VIA_CPUTEMP is not set
# CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_VT1211 is not set
# CONFIG_SENSORS_VT8231 is not set
# CONFIG_SENSORS_W83773G is not set
# CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83791D is not set
# CONFIG_SENSORS_W83792D is not set
# CONFIG_SENSORS_W83793 is not set
# CONFIG_SENSORS_W83795 is not set
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83L786NG is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
# CONFIG_SENSORS_XGENE is not set
#
# ACPI drivers
#
# CONFIG_SENSORS_ACPI_POWER is not set
# CONFIG_SENSORS_ATK0110 is not set CONFIG_THERMAL=y
# CONFIG_THERMAL_STATISTICS is not set CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
# CONFIG_THERMAL_WRITABLE_TRIPS is not set CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set # CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set # CONFIG_THERMAL_GOV_FAIR_SHARE is not set CONFIG_THERMAL_GOV_STEP_WISE=y
# CONFIG_THERMAL_GOV_BANG_BANG is not set
# CONFIG_THERMAL_GOV_USER_SPACE is not set
# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set # CONFIG_THERMAL_EMULATION is not set
# CONFIG_INTEL_POWERCLAMP is not set
# CONFIG_INTEL_SOC_DTS_THERMAL is not set
#
# ACPI INT340X thermal drivers
#
# CONFIG_INT340X_THERMAL is not set
# CONFIG_INTEL_PCH_THERMAL is not setCONFIG_WATCHDOG=yCONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not setCONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
# CONFIG_WATCHDOG_SYSFS is not set
#
# Watchdog Device Drivers
#CONFIG_SOFT_WATCHDOG=m
# CONFIG_WDAT_WDT is not set
# CONFIG_XILINX_WATCHDOG is not set
# CONFIG_ZIIRAVE_WATCHDOG is not set
# CONFIG_CADENCE_WATCHDOG is not set
# CONFIG_DW_WATCHDOG is not set
# CONFIG_MAX63XX_WATCHDOG is not set
# CONFIG_ACQUIRE_WDT is not set
# CONFIG_ADVANTECH_WDT is not set
# CONFIG_ALIM1535_WDT is not set
# CONFIG_ALIM7101_WDT is not set
# CONFIG_EBC_C384_WDT is not set
# CONFIG_F71808E_WDT is not set
# CONFIG_SP5100_TCO is not set
# CONFIG_SBC_FITPC2_WATCHDOG is not set
# CONFIG_EUROTECH_WDT is not set
# CONFIG_IB700_WDT is not set
# CONFIG_IBMASR is not set
# CONFIG_WAFER_WDT is not set
# CONFIG_I6300ESB_WDT is not set
# CONFIG_IE6XX_WDT is not set
# CONFIG_ITCO_WDT is not set
# CONFIG_IT8712F_WDT is not set
# CONFIG_IT87_WDT is not set
# CONFIG_HP_WATCHDOG is not set
# CONFIG_SC1200_WDT is not set
# CONFIG_PC87413_WDT is not set
# CONFIG_NV_TCO is not set
# CONFIG_60XX_WDT is not set
# CONFIG_CPU5_WDT is not set
# CONFIG_SMSC_SCH311X_WDT is not set
# CONFIG_SMSC37B787_WDT is not set
# CONFIG_VIA_WDT is not set
# CONFIG_W83627HF_WDT is not set
# CONFIG_W83877F_WDT is not set
# CONFIG_W83977F_WDT is not set
# CONFIG_MACHZ_WDT is not set
# CONFIG_SBC_EPX_C3_WATCHDOG is not set
# CONFIG_NI903X_WDT is not set
# CONFIG_NIC7018_WDT is not set
#
# PCI-based Watchdog Cards
#
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set
#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set
#
# Watchdog Pretimeout Governors
#
# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not setCONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not setCONFIG_BCMA_POSSIBLE=y
# CONFIG_BCMA is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_AS3711 is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_CROS_EC is not set
# CONFIG_MFD_MADERA is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_DA9052_I2C is not set
# CONFIG_MFD_DA9055 is not set
# CONFIG_MFD_DA9062 is not set
# CONFIG_MFD_DA9063 is not set
# CONFIG_MFD_DA9150 is not set
# CONFIG_MFD_DLN2 is not set
# CONFIG_MFD_MC13XXX_I2C is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
# CONFIG_LPC_ICH is not set
# CONFIG_LPC_SCH is not set
# CONFIG_MFD_INTEL_LPSS_ACPI is not set
# CONFIG_MFD_INTEL_LPSS_PCI is not set
# CONFIG_MFD_JANZ_CMODIO is not set
# CONFIG_MFD_KEMPLD is not set
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
# CONFIG_MFD_MAX14577 is not set
# CONFIG_MFD_MAX77693 is not set
# CONFIG_MFD_MAX77843 is not set
# CONFIG_MFD_MAX8907 is not set
# CONFIG_MFD_MAX8925 is not set
# CONFIG_MFD_MAX8997 is not set
# CONFIG_MFD_MAX8998 is not set
# CONFIG_MFD_MT6397 is not set
# CONFIG_MFD_MENF21BMC is not set
# CONFIG_MFD_VIPERBOARD is not set
# CONFIG_MFD_RETU is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_MFD_RDC321X is not set
# CONFIG_MFD_RT5033 is not set
# CONFIG_MFD_RC5T583 is not set
# CONFIG_MFD_SEC_CORE is not set
# CONFIG_MFD_SI476X_CORE is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_MFD_SKY81452 is not set
# CONFIG_MFD_SMSC is not set
# CONFIG_ABX500_CORE is not set
# CONFIG_MFD_SYSCON is not set
# CONFIG_MFD_TI_AM335X_TSCADC is not set
# CONFIG_MFD_LP3943 is not set
# CONFIG_MFD_LP8788 is not set
# CONFIG_MFD_TI_LMU is not set
# CONFIG_MFD_PALMAS is not set
# CONFIG_TPS6105X is not set
# CONFIG_TPS6507X is not set
# CONFIG_MFD_TPS65086 is not set
# CONFIG_MFD_TPS65090 is not set
# CONFIG_MFD_TI_LP873X is not set
# CONFIG_MFD_TPS6586X is not set
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS80031 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_TWL6040_CORE is not set
# CONFIG_MFD_WL1273_CORE is not set
# CONFIG_MFD_LM3533 is not set
# CONFIG_MFD_VX855 is not set
# CONFIG_MFD_ARIZONA_I2C is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM831X_I2C is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_WM8994 is not set
# CONFIG_REGULATOR is not set
# CONFIG_RC_CORE is not setCONFIG_MEDIA_SUPPORT=m
#
# Multimedia core support
#CONFIG_MEDIA_CAMERA_SUPPORT=y
# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
# CONFIG_MEDIA_RADIO_SUPPORT is not set
# CONFIG_MEDIA_SDR_SUPPORT is not set
# CONFIG_MEDIA_CEC_SUPPORT is not set
# CONFIG_MEDIA_CONTROLLER is not setCONFIG_VIDEO_DEV=mCONFIG_VIDEO_V4L2=m
# CONFIG_VIDEO_ADV_DEBUG is not set
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
#
# Media drivers
#CONFIG_MEDIA_USB_SUPPORT=y
#
# Webcam devices
#CONFIG_USB_VIDEO_CLASS=mCONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
# CONFIG_USB_GSPCA is not set
# CONFIG_USB_PWC is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_USB_ZR364XX is not set
# CONFIG_USB_STKWEBCAM is not set
# CONFIG_USB_S2255 is not set
# CONFIG_VIDEO_USBTV is not set
#
# Webcam, TV (analog/digital) USB devices
#
# CONFIG_VIDEO_EM28XX is not set
# CONFIG_MEDIA_PCI_SUPPORT is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_TEST_DRIVERS is not set
#
# Supported MMC/SDIO adapters
#
# CONFIG_CYPRESS_FIRMWARE is not setCONFIG_VIDEOBUF2_CORE=mCONFIG_VIDEOBUF2_V4L2=mCONFIG_VIDEOBUF2_MEMOPS=mCONFIG_VIDEOBUF2_VMALLOC=m
#
# Media ancillary drivers (tuners, sensors, i2c, spi, frontends) #CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
#
# Audio decoders, processors and mixers
#
#
# RDS decoders
#
#
# Video decoders
#
#
# Video and audio decoders
#
#
# Video encoders
#
#
# Camera sensor devices
#
#
# Flash devices
#
#
# Video improvement chips
#
#
# Audio/Video compression chips
#
#
# SDR tuner chips
#
#
# Miscellaneous helper chips
#
#
# Sensors used on soc_camera driver
#
#
# Tools to develop new frontends
#
#
# Graphics support
#
# CONFIG_AGP is not setCONFIG_INTEL_GTT=y
# CONFIG_VGA_ARB is not set
# CONFIG_VGA_SWITCHEROO is not setCONFIG_DRM=yCONFIG_DRM_MIPI_DSI=y
# CONFIG_DRM_DP_AUX_CHARDEV is not set
# CONFIG_DRM_DEBUG_MM is not set
# CONFIG_DRM_DEBUG_SELFTEST is not setCONFIG_DRM_KMS_HELPER=yCONFIG_DRM_KMS_FB_HELPER=yCONFIG_DRM_FBDEV_EMULATION=yCONFIG_DRM_FBDEV_OVERALLOC=100
# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
# CONFIG_DRM_DP_CEC is not set
#
# I2C encoder or helper chips
#
# CONFIG_DRM_I2C_CH7006 is not set
# CONFIG_DRM_I2C_SIL164 is not set
# CONFIG_DRM_I2C_NXP_TDA998X is not set
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
# CONFIG_DRM_RADEON is not set
# CONFIG_DRM_AMDGPU is not set
#
# ACP (Audio CoProcessor) Configuration
#
#
# AMD Library routines
#
# CONFIG_DRM_NOUVEAU is not setCONFIG_DRM_I915=y
# CONFIG_DRM_I915_ALPHA_SUPPORT is not setCONFIG_DRM_I915_CAPTURE_ERROR=yCONFIG_DRM_I915_COMPRESS_ERROR=yCONFIG_DRM_I915_USERPTR=y
# CONFIG_DRM_I915_GVT is not set
#
# drm/i915 Debugging # # CONFIG_DRM_I915_WERROR is not set # CONFIG_DRM_I915_DEBUG is not set # CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set # CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set # CONFIG_DRM_I915_DEBUG_GUC is not set # CONFIG_DRM_I915_SELFTEST is not set # CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set # CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set # CONFIG_DRM_VGEM is not set # CONFIG_DRM_VKMS is not set # CONFIG_DRM_VMWGFX is not set # CONFIG_DRM_GMA500 is not set # CONFIG_DRM_UDL is not set # CONFIG_DRM_AST is not set # CONFIG_DRM_MGAG200 is not set # CONFIG_DRM_CIRRUS_QEMU is not set # CONFIG_DRM_QXL is not set # CONFIG_DRM_BOCHS is not set CONFIG_DRM_PANEL=y
#
# Display Panels
#
# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set CONFIG_DRM_BRIDGE=yCONFIG_DRM_PANEL_BRIDGE=y
#
# Display Interface Bridges
#
# CONFIG_DRM_ANALOGIX_ANX78XX is not set
# CONFIG_DRM_HISI_HIBMC is not set
# CONFIG_DRM_TINYDRM is not set
# CONFIG_DRM_LEGACY is not setCONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
#
# Frame buffer Devices
#CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not setCONFIG_FB_CMDLINE=yCONFIG_FB_NOTIFY=yCONFIG_FB_CFB_FILLRECT=yCONFIG_FB_CFB_COPYAREA=yCONFIG_FB_CFB_IMAGEBLIT=yCONFIG_FB_SYS_FILLRECT=yCONFIG_FB_SYS_COPYAREA=yCONFIG_FB_SYS_IMAGEBLIT=y
# CONFIG_FB_FOREIGN_ENDIAN is not setCONFIG_FB_SYS_FOPS=yCONFIG_FB_DEFERRED_IO=yCONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set
#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_VESA is not setCONFIG_FB_EFI=y
# CONFIG_FB_N411 is not set
# CONFIG_FB_HGA is not set
# CONFIG_FB_OPENCORES is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_I740 is not set
# CONFIG_FB_LE80578 is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_CARMINE is not set
# CONFIG_FB_SMSCUFX is not set
# CONFIG_FB_UDL is not set
# CONFIG_FB_IBM_GXT4500 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
# CONFIG_FB_SIMPLE is not set
# CONFIG_FB_SM712 is not setCONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not setCONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_GENERIC is not set
# CONFIG_BACKLIGHT_APPLE is not set
# CONFIG_BACKLIGHT_PM8941_WLED is not set
# CONFIG_BACKLIGHT_SAHARA is not set
# CONFIG_BACKLIGHT_ADP8860 is not set
# CONFIG_BACKLIGHT_ADP8870 is not set
# CONFIG_BACKLIGHT_LM3639 is not set
# CONFIG_BACKLIGHT_LV5207LP is not set
# CONFIG_BACKLIGHT_BD6107 is not set
# CONFIG_BACKLIGHT_ARCXCNN is not setCONFIG_HDMI=y
#
# Console display driver support
#CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set CONFIG_DUMMY_CONSOLE=y CONFIG_DUMMY_CONSOLE_COLUMNS=160 CONFIG_DUMMY_CONSOLE_ROWS=64 CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set # CONFIG_LOGO is not setCONFIG_SOUND=mCONFIG_SOUND_OSS_CORE=y CONFIG_SOUND_OSS_CORE_PRECLAIM=yCONFIG_SND=mCONFIG_SND_TIMER=mCONFIG_SND_PCM=mCONFIG_SND_SEQ_DEVICE=mCONFIG_SND_JACK=yCONFIG_SND_JACK_INPUT_DEV=yCONFIG_SND_OSSEMUL=yCONFIG_SND_MIXER_OSS=mCONFIG_SND_PCM_OSS=m CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_PCM_TIMER=yCONFIG_SND_HRTIMER=mCONFIG_SND_DYNAMIC_MINORS=y CONFIG_SND_MAX_CARDS=32
# CONFIG_SND_SUPPORT_OLD_API is not set CONFIG_SND_PROC_FS=y
# CONFIG_SND_VERBOSE_PROCFS is not set
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set CONFIG_SND_VMASTER=yCONFIG_SND_DMA_SGBUF=yCONFIG_SND_SEQUENCER=m
# CONFIG_SND_SEQ_DUMMY is not set CONFIG_SND_SEQUENCER_OSS=m CONFIG_SND_SEQ_HRTIMER_DEFAULT=y CONFIG_SND_SEQ_MIDI_EVENT=m
# CONFIG_SND_DRIVERS is not setCONFIG_SND_PCI=y
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ASIHPI is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AW2 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_OXYGEN is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CTXFI is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_INDIGOIOX is not set
# CONFIG_SND_INDIGODJX is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_LOLA is not set
# CONFIG_SND_LX6464ES is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SE6X is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VIRTUOSO is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
#
# HD-Audio
#CONFIG_SND_HDA=mCONFIG_SND_HDA_INTEL=m
# CONFIG_SND_HDA_HWDEP is not set
# CONFIG_SND_HDA_RECONFIG is not setCONFIG_SND_HDA_INPUT_BEEP=yCONFIG_SND_HDA_INPUT_BEEP_MODE=1
# CONFIG_SND_HDA_PATCH_LOADER is not set
# CONFIG_SND_HDA_CODEC_REALTEK is not setCONFIG_SND_HDA_CODEC_ANALOG=m
# CONFIG_SND_HDA_CODEC_SIGMATEL is not set
# CONFIG_SND_HDA_CODEC_VIA is not setCONFIG_SND_HDA_CODEC_HDMI=m
# CONFIG_SND_HDA_CODEC_CIRRUS is not set
# CONFIG_SND_HDA_CODEC_CONEXANT is not set
# CONFIG_SND_HDA_CODEC_CA0110 is not set
# CONFIG_SND_HDA_CODEC_CA0132 is not set
# CONFIG_SND_HDA_CODEC_CMEDIA is not set
# CONFIG_SND_HDA_CODEC_SI3054 is not setCONFIG_SND_HDA_GENERIC=mCONFIG_SND_HDA_POWER_SAVE_DEFAULT=0CONFIG_SND_HDA_CORE=mCONFIG_SND_HDA_COMPONENT=yCONFIG_SND_HDA_I915=yCONFIG_SND_HDA_PREALLOC_SIZE=64
# CONFIG_SND_USB is not set
# CONFIG_SND_SOC is not set
# CONFIG_SND_X86 is not set
#
# HID support
#CONFIG_HID=mCONFIG_HID_BATTERY_STRENGTH=y
# CONFIG_HIDRAW is not set
# CONFIG_UHID is not setCONFIG_HID_GENERIC=m
#
# Special HID drivers
#
# CONFIG_HID_A4TECH is not set
# CONFIG_HID_ACCUTOUCH is not set
# CONFIG_HID_ACRUX is not set
# CONFIG_HID_APPLE is not set
# CONFIG_HID_APPLEIR is not set
# CONFIG_HID_AUREAL is not set
# CONFIG_HID_BELKIN is not set
# CONFIG_HID_BETOP_FF is not set
# CONFIG_HID_CHERRY is not set
# CONFIG_HID_CHICONY is not set
# CONFIG_HID_COUGAR is not set
# CONFIG_HID_PRODIKEYS is not set
# CONFIG_HID_CMEDIA is not set
# CONFIG_HID_CYPRESS is not set
# CONFIG_HID_DRAGONRISE is not set
# CONFIG_HID_EMS_FF is not set
# CONFIG_HID_ELECOM is not set
# CONFIG_HID_ELO is not set
# CONFIG_HID_EZKEY is not set
# CONFIG_HID_GEMBIRD is not set
# CONFIG_HID_GFRM is not set
# CONFIG_HID_HOLTEK is not set
# CONFIG_HID_KEYTOUCH is not set
# CONFIG_HID_KYE is not set
# CONFIG_HID_UCLOGIC is not set
# CONFIG_HID_WALTOP is not set
# CONFIG_HID_GYRATION is not set
# CONFIG_HID_ICADE is not set
# CONFIG_HID_ITE is not set
# CONFIG_HID_JABRA is not set
# CONFIG_HID_TWINHAN is not set
# CONFIG_HID_KENSINGTON is not set
# CONFIG_HID_LCPOWER is not set
# CONFIG_HID_LENOVO is not set
# CONFIG_HID_LOGITECH is not set
# CONFIG_HID_MAGICMOUSE is not set
# CONFIG_HID_MAYFLASH is not set
# CONFIG_HID_REDRAGON is not set
# CONFIG_HID_MICROSOFT is not set
# CONFIG_HID_MONTEREY is not set
# CONFIG_HID_MULTITOUCH is not set
# CONFIG_HID_NTI is not set
# CONFIG_HID_NTRIG is not set
# CONFIG_HID_ORTEK is not set
# CONFIG_HID_PANTHERLORD is not set
# CONFIG_HID_PENMOUNT is not set
# CONFIG_HID_PETALYNX is not set
# CONFIG_HID_PICOLCD is not set
# CONFIG_HID_PLANTRONICS is not set
# CONFIG_HID_PRIMAX is not set
# CONFIG_HID_RETRODE is not set
# CONFIG_HID_ROCCAT is not set
# CONFIG_HID_SAITEK is not set
# CONFIG_HID_SAMSUNG is not set
# CONFIG_HID_SPEEDLINK is not set
# CONFIG_HID_STEAM is not set
# CONFIG_HID_STEELSERIES is not set
# CONFIG_HID_SUNPLUS is not set
# CONFIG_HID_RMI is not set
# CONFIG_HID_GREENASIA is not set
# CONFIG_HID_SMARTJOYPLUS is not set
# CONFIG_HID_TIVO is not set
# CONFIG_HID_TOPSEED is not set
# CONFIG_HID_THRUSTMASTER is not set
# CONFIG_HID_UDRAW_PS3 is not set
# CONFIG_HID_WACOM is not set
# CONFIG_HID_XINMO is not set
# CONFIG_HID_ZEROPLUS is not set
# CONFIG_HID_ZYDACRON is not set
# CONFIG_HID_SENSOR_HUB is not set
# CONFIG_HID_ALPS is not set
#
# USB HID support
#CONFIG_USB_HID=m
# CONFIG_HID_PID is not set
# CONFIG_USB_HIDDEV is not set
#
# USB HID Boot Protocol drivers
#
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set
#
# I2C HID support
#
# CONFIG_I2C_HID is not set
#
# Intel ISH HID support
#
# CONFIG_INTEL_ISH_HID is not setCONFIG_USB_OHCI_LITTLE_ENDIAN=yCONFIG_USB_SUPPORT=yCONFIG_USB_COMMON=mCONFIG_USB_ARCH_HAS_HCD=yCONFIG_USB=mCONFIG_USB_PCI=y
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
#
# Miscellaneous USB options
#CONFIG_USB_DEFAULT_PERSIST=y
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG is not set
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
# CONFIG_USB_MON is not set
# CONFIG_USB_WUSB_CBAF is not set
#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not setCONFIG_USB_XHCI_HCD=m
# CONFIG_USB_XHCI_DBGCAP is not setCONFIG_USB_XHCI_PCI=m
# CONFIG_USB_XHCI_PLATFORM is not setCONFIG_USB_EHCI_HCD=m
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_EHCI_TT_NEWSCHED is not setCONFIG_USB_EHCI_PCI=m
# CONFIG_USB_EHCI_HCD_PLATFORM is not set
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_FOTG210_HCD is not setCONFIG_USB_OHCI_HCD=mCONFIG_USB_OHCI_HCD_PCI=m
# CONFIG_USB_OHCI_HCD_PLATFORM is not set
# CONFIG_USB_UHCI_HCD is not set
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
# CONFIG_USB_HCD_TEST_MODE is not set
#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
# CONFIG_USB_WDM is not set
# CONFIG_USB_TMC is not set
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may #
#
# also be needed; see USB_STORAGE Help for more info # CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_REALTEK is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set # CONFIG_USB_STORAGE_USBAT is not set # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_STORAGE_ALAUDA is not set # CONFIG_USB_STORAGE_ONETOUCH is not set # CONFIG_USB_STORAGE_KARMA is not set # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set # CONFIG_USB_STORAGE_ENE_UB6250 is not set # CONFIG_USB_UAS is not set
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USBIP_CORE is not set
# CONFIG_USB_MUSB_HDRC is not set
# CONFIG_USB_DWC3 is not set
# CONFIG_USB_DWC2 is not set
# CONFIG_USB_CHIPIDEA is not set
# CONFIG_USB_ISP1760 is not set
#
# USB port drivers
#
# CONFIG_USB_SERIAL is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_SEVSEG is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_EHSET_TEST_FIXTURE is not set
# CONFIG_USB_ISIGHTFW is not set
# CONFIG_USB_YUREX is not set
# CONFIG_USB_EZUSB_FX2 is not set
# CONFIG_USB_HUB_USB251XB is not set
# CONFIG_USB_HSIC_USB3503 is not set
# CONFIG_USB_HSIC_USB4604 is not set
# CONFIG_USB_LINK_LAYER_TEST is not set
# CONFIG_USB_CHAOSKEY is not set
#
# USB Physical Layer drivers
#
# CONFIG_NOP_USB_XCEIV is not set
# CONFIG_USB_ISP1301 is not set
# CONFIG_USB_GADGET is not set
# CONFIG_TYPEC is not set
# CONFIG_USB_ROLE_SWITCH is not set
# CONFIG_USB_ULPI_BUS is not set
# CONFIG_UWB is not set
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not setCONFIG_EDAC_ATOMIC_SCRUB=yCONFIG_EDAC_SUPPORT=y
# CONFIG_EDAC is not setCONFIG_RTC_LIB=yCONFIG_RTC_MC146818_LIB=yCONFIG_RTC_CLASS=yCONFIG_RTC_HCTOSYS=yCONFIG_RTC_HCTOSYS_DEVICE="rtc0"CONFIG_RTC_SYSTOHC=yCONFIG_RTC_SYSTOHC_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not setCONFIG_RTC_NVMEM=y
#
# RTC interfaces
#CONFIG_RTC_INTF_SYSFS=y
# CONFIG_RTC_INTF_PROC is not setCONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set
#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_ABB5ZES3 is not set
# CONFIG_RTC_DRV_ABX80X is not set
# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_ISL12022 is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8523 is not set
# CONFIG_RTC_DRV_PCF85063 is not set
# CONFIG_RTC_DRV_PCF85363 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
# CONFIG_RTC_DRV_M41T80 is not set
# CONFIG_RTC_DRV_BQ32K is not set
# CONFIG_RTC_DRV_S35390A is not set
# CONFIG_RTC_DRV_FM3130 is not set
# CONFIG_RTC_DRV_RX8010 is not set
# CONFIG_RTC_DRV_RX8581 is not set
# CONFIG_RTC_DRV_RX8025 is not set
# CONFIG_RTC_DRV_EM3027 is not set
# CONFIG_RTC_DRV_RV8803 is not set
#
# SPI RTC drivers
#CONFIG_RTC_I2C_AND_SPI=y
#
# SPI and I2C RTC drivers
#
# CONFIG_RTC_DRV_DS3232 is not set
# CONFIG_RTC_DRV_PCF2127 is not set
# CONFIG_RTC_DRV_RV3029C2 is not set
#
# Platform RTC drivers
#CONFIG_RTC_DRV_CMOS=y
# CONFIG_RTC_DRV_DS1286 is not set
# CONFIG_RTC_DRV_DS1511 is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1685_FAMILY is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_DS2404 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T35 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_MSM6242 is not set
# CONFIG_RTC_DRV_BQ4802 is not set
# CONFIG_RTC_DRV_RP5C01 is not set
# CONFIG_RTC_DRV_V3020 is not set
#
# on-CPU RTC drivers
#
# CONFIG_RTC_DRV_FTRTC010 is not set
#
# HID Sensor RTC drivers
#
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
# CONFIG_DMADEVICES is not set
#
# DMABUF options
#CONFIG_SYNC_FILE=y
# CONFIG_AUXDISPLAY is not set
# CONFIG_UIO is not setCONFIG_IRQ_BYPASS_MANAGER=m
# CONFIG_VIRT_DRIVERS is not set
# CONFIG_VIRTIO_MENU is not set
#
# Microsoft Hyper-V guest support
#
# CONFIG_STAGING is not set
# CONFIG_X86_PLATFORM_DEVICES is not setCONFIG_PMC_ATOM=y
# CONFIG_CHROME_PLATFORMS is not set
# CONFIG_MELLANOX_PLATFORM is not setCONFIG_CLKDEV_LOOKUP=yCONFIG_HAVE_CLK_PREPARE=yCONFIG_COMMON_CLK=y
#
# Common Clock Framework
#
# CONFIG_COMMON_CLK_MAX9485 is not set
# CONFIG_COMMON_CLK_SI5351 is not set
# CONFIG_COMMON_CLK_SI544 is not set
# CONFIG_COMMON_CLK_CDCE706 is not set
# CONFIG_COMMON_CLK_CS2000_CP is not set
# CONFIG_HWSPINLOCK is not set
#
# Clock Source drivers
#CONFIG_CLKEVT_I8253=yCONFIG_I8253_LOCK=yCONFIG_CLKBLD_I8253=yCONFIG_MAILBOX=yCONFIG_PCC=y
# CONFIG_ALTERA_MBOX is not set
# CONFIG_IOMMU_SUPPORT is not set
#
# Remoteproc drivers
#
# CONFIG_REMOTEPROC is not set
#
# Rpmsg drivers
#
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_SOUNDWIRE is not set
#
# SOC (System On Chip) specific Drivers
#
#
# Amlogic SoC drivers
#
#
# Broadcom SoC drivers
#
#
# NXP/Freescale QorIQ SoC drivers
#
#
# i.MX SoC drivers
#
#
# Qualcomm SoC drivers
#
# CONFIG_SOC_TI is not set
#
# Xilinx SoC drivers
#
# CONFIG_XILINX_VCU is not set
# CONFIG_PM_DEVFREQ is not set
# CONFIG_EXTCON is not set
# CONFIG_MEMORY is not set
# CONFIG_IIO is not set
# CONFIG_NTB is not set
# CONFIG_VME_BUS is not set
# CONFIG_PWM is not set
#
# IRQ chip support
#CONFIG_ARM_GIC_MAX_NR=1
# CONFIG_IPACK_BUS is not set
# CONFIG_RESET_CONTROLLER is not set
# CONFIG_FMC is not set
#
# PHY Subsystem
#
# CONFIG_GENERIC_PHY is not set
# CONFIG_BCM_KONA_USB2_PHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_POWERCAP is not set
# CONFIG_MCB is not set
#
# Performance monitor support
#CONFIG_RAS=y
# CONFIG_THUNDERBOLT is not set
#
# Android
#
# CONFIG_ANDROID is not set
# CONFIG_LIBNVDIMM is not setCONFIG_DAX=mCONFIG_NVMEM=y
#
# HW tracing support
#
# CONFIG_STM is not set
# CONFIG_INTEL_TH is not set
# CONFIG_FPGA is not set
# CONFIG_UNISYS_VISORBUS is not set
# CONFIG_SIOX is not set
# CONFIG_SLIMBUS is not set
#
# File systems
#CONFIG_DCACHE_WORD_ACCESS=yCONFIG_FS_IOMAP=y
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not setCONFIG_EXT4_FS=m
# CONFIG_EXT4_USE_FOR_EXT2 is not setCONFIG_EXT4_FS_POSIX_ACL=yCONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_ENCRYPTION is not set
# CONFIG_EXT4_DEBUG is not setCONFIG_JBD2=m
# CONFIG_JBD2_DEBUG is not setCONFIG_FS_MBCACHE=m
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not setCONFIG_XFS_FS=m
# CONFIG_XFS_QUOTA is not set
# CONFIG_XFS_POSIX_ACL is not set
# CONFIG_XFS_RT is not set
# CONFIG_XFS_ONLINE_SCRUB is not set
# CONFIG_XFS_WARN is not set
# CONFIG_XFS_DEBUG is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not setCONFIG_BTRFS_FS=m
# CONFIG_BTRFS_FS_POSIX_ACL is not set
# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
# CONFIG_BTRFS_DEBUG is not set
# CONFIG_BTRFS_ASSERT is not set
# CONFIG_BTRFS_FS_REF_VERIFY is not set
# CONFIG_NILFS2_FS is not set
# CONFIG_F2FS_FS is not set
# CONFIG_FS_DAX is not setCONFIG_FS_POSIX_ACL=yCONFIG_EXPORTFS=y
# CONFIG_EXPORTFS_BLOCK_OPS is not setCONFIG_FILE_LOCKING=yCONFIG_MANDATORY_FILE_LOCKING=y
# CONFIG_FS_ENCRYPTION is not setCONFIG_FSNOTIFY=yCONFIG_DNOTIFY=yCONFIG_INOTIFY_USER=yCONFIG_FANOTIFY=y
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_AUTOFS_FS is not setCONFIG_FUSE_FS=m
# CONFIG_CUSE is not setCONFIG_OVERLAY_FS=m
# CONFIG_OVERLAY_FS_REDIRECT_DIR is not setCONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
# CONFIG_OVERLAY_FS_INDEX is not set
# CONFIG_OVERLAY_FS_XINO_AUTO is not set
# CONFIG_OVERLAY_FS_METACOPY is not set
#
# Caches
#
# CONFIG_FSCACHE is not set
#
# CD-ROM/DVD Filesystems
#CONFIG_ISO9660_FS=mCONFIG_JOLIET=yCONFIG_ZISOFS=yCONFIG_UDF_FS=m
#
# DOS/FAT/NT Filesystems
#CONFIG_FAT_FS=m
# CONFIG_MSDOS_FS is not setCONFIG_VFAT_FS=mCONFIG_FAT_DEFAULT_CODEPAGE=850CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
# CONFIG_FAT_DEFAULT_UTF8 is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set CONFIG_PROC_SYSCTL=y CONFIG_PROC_PAGE_MONITOR=y CONFIG_PROC_CHILDREN=yCONFIG_KERNFS=yCONFIG_SYSFS=yCONFIG_TMPFS=yCONFIG_TMPFS_POSIX_ACL=yCONFIG_TMPFS_XATTR=y
# CONFIG_HUGETLBFS is not set CONFIG_MEMFD_CREATE=yCONFIG_CONFIGFS_FS=m
# CONFIG_EFIVAR_FS is not set CONFIG_MISC_FILESYSTEMS=y
# CONFIG_ORANGEFS_FS is not set
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_ECRYPT_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not setCONFIG_SQUASHFS=m CONFIG_SQUASHFS_FILE_CACHE=y
# CONFIG_SQUASHFS_FILE_DIRECT is not set CONFIG_SQUASHFS_DECOMP_SINGLE=y
# CONFIG_SQUASHFS_DECOMP_MULTI is not set
# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set # CONFIG_SQUASHFS_XATTR is not set CONFIG_SQUASHFS_ZLIB=y
# CONFIG_SQUASHFS_LZ4 is not set CONFIG_SQUASHFS_LZO=yCONFIG_SQUASHFS_XZ=y
# CONFIG_SQUASHFS_ZSTD is not set
# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
# CONFIG_SQUASHFS_EMBEDDED is not set CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX6FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_PSTORE is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set CONFIG_NETWORK_FILESYSTEMS=yCONFIG_NFS_FS=m
# CONFIG_NFS_V2 is not setCONFIG_NFS_V3=m
# CONFIG_NFS_V3_ACL is not set CONFIG_NFS_V4=m
# CONFIG_NFS_SWAP is not set CONFIG_NFS_V4_1=y
# CONFIG_NFS_V4_2 is not set CONFIG_PNFS_FILE_LAYOUT=mCONFIG_PNFS_BLOCK=m CONFIG_PNFS_FLEXFILE_LAYOUT=m CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" # CONFIG_NFS_V4_1_MIGRATION is not set
# CONFIG_NFS_USE_LEGACY_DNS is not set CONFIG_NFS_USE_KERNEL_DNS=yCONFIG_NFSD=mCONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set CONFIG_NFSD_V4=y
# CONFIG_NFSD_BLOCKLAYOUT is not set
# CONFIG_NFSD_SCSILAYOUT is not set
# CONFIG_NFSD_FLEXFILELAYOUT is not set CONFIG_GRACE_PERIOD=mCONFIG_LOCKD=mCONFIG_LOCKD_V4=yCONFIG_NFS_COMMON=yCONFIG_SUNRPC=mCONFIG_SUNRPC_GSS=m CONFIG_SUNRPC_BACKCHANNEL=y
# CONFIG_SUNRPC_DEBUG is not set
# CONFIG_CEPH_FS is not setCONFIG_CIFS=m
# CONFIG_CIFS_STATS2 is not set CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y
# CONFIG_CIFS_WEAK_PW_HASH is not set CONFIG_CIFS_UPCALL=y
# CONFIG_CIFS_XATTR is not set CONFIG_CIFS_DEBUG=y
# CONFIG_CIFS_DEBUG2 is not set
# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set
# CONFIG_CIFS_DFS_UPCALL is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not setCONFIG_NLS=yCONFIG_NLS_DEFAULT="utf8"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set CONFIG_NLS_CODEPAGE_850=m
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_MAC_ROMAN is not set
# CONFIG_NLS_MAC_CELTIC is not set
# CONFIG_NLS_MAC_CENTEURO is not set
# CONFIG_NLS_MAC_CROATIAN is not set
# CONFIG_NLS_MAC_CYRILLIC is not set
# CONFIG_NLS_MAC_GAELIC is not set
# CONFIG_NLS_MAC_GREEK is not set
# CONFIG_NLS_MAC_ICELAND is not set
# CONFIG_NLS_MAC_INUIT is not set
# CONFIG_NLS_MAC_ROMANIAN is not set
# CONFIG_NLS_MAC_TURKISH is not set CONFIG_NLS_UTF8=m
# CONFIG_DLM is not set
#
# Security options
#CONFIG_KEYS=yCONFIG_KEYS_COMPAT=y
# CONFIG_PERSISTENT_KEYRINGS is not set
# CONFIG_BIG_KEYS is not set
# CONFIG_ENCRYPTED_KEYS is not set
# CONFIG_KEY_DH_OPERATIONS is not set
# CONFIG_SECURITY_DMESG_RESTRICT is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not setCONFIG_PAGE_TABLE_ISOLATION=yCONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
# CONFIG_HARDENED_USERCOPY is not set
# CONFIG_FORTIFY_SOURCE is not set
# CONFIG_STATIC_USERMODEHELPER is not setCONFIG_DEFAULT_SECURITY_DAC=yCONFIG_DEFAULT_SECURITY=""CONFIG_XOR_BLOCKS=mCONFIG_CRYPTO=y
#
# Crypto core or helper
#CONFIG_CRYPTO_ALGAPI=yCONFIG_CRYPTO_ALGAPI2=yCONFIG_CRYPTO_AEAD=mCONFIG_CRYPTO_AEAD2=yCONFIG_CRYPTO_BLKCIPHER=mCONFIG_CRYPTO_BLKCIPHER2=yCONFIG_CRYPTO_HASH=yCONFIG_CRYPTO_HASH2=yCONFIG_CRYPTO_RNG=mCONFIG_CRYPTO_RNG2=yCONFIG_CRYPTO_RNG_DEFAULT=mCONFIG_CRYPTO_AKCIPHER2=yCONFIG_CRYPTO_AKCIPHER=yCONFIG_CRYPTO_KPP2=yCONFIG_CRYPTO_KPP=mCONFIG_CRYPTO_ACOMP2=yCONFIG_CRYPTO_RSA=y
# CONFIG_CRYPTO_DH is not setCONFIG_CRYPTO_ECDH=mCONFIG_CRYPTO_MANAGER=yCONFIG_CRYPTO_MANAGER2=y
# CONFIG_CRYPTO_USER is not setCONFIG_CRYPTO_MANAGER_DISABLE_TESTS=yCONFIG_CRYPTO_GF128MUL=mCONFIG_CRYPTO_NULL=mCONFIG_CRYPTO_NULL2=y
# CONFIG_CRYPTO_PCRYPT is not setCONFIG_CRYPTO_WORKQUEUE=yCONFIG_CRYPTO_CRYPTD=m
# CONFIG_CRYPTO_MCRYPTD is not set
# CONFIG_CRYPTO_AUTHENC is not set
# CONFIG_CRYPTO_TEST is not setCONFIG_CRYPTO_SIMD=mCONFIG_CRYPTO_GLUE_HELPER_X86=m
#
# Authenticated Encryption with Associated Data
#CONFIG_CRYPTO_CCM=mCONFIG_CRYPTO_GCM=m
# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
# CONFIG_CRYPTO_AEGIS128 is not set
# CONFIG_CRYPTO_AEGIS128L is not set
# CONFIG_CRYPTO_AEGIS256 is not set
# CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 is not set
# CONFIG_CRYPTO_AEGIS128L_AESNI_SSE2 is not set
# CONFIG_CRYPTO_AEGIS256_AESNI_SSE2 is not set
# CONFIG_CRYPTO_MORUS640 is not set
# CONFIG_CRYPTO_MORUS640_SSE2 is not set
# CONFIG_CRYPTO_MORUS1280 is not set
# CONFIG_CRYPTO_MORUS1280_SSE2 is not set
# CONFIG_CRYPTO_MORUS1280_AVX2 is not setCONFIG_CRYPTO_SEQIV=mCONFIG_CRYPTO_ECHAINIV=m
#
# Block modes
#CONFIG_CRYPTO_CBC=m
# CONFIG_CRYPTO_CFB is not setCONFIG_CRYPTO_CTR=m
# CONFIG_CRYPTO_CTS is not setCONFIG_CRYPTO_ECB=mCONFIG_CRYPTO_LRW=m
# CONFIG_CRYPTO_PCBC is not setCONFIG_CRYPTO_XTS=m
# CONFIG_CRYPTO_KEYWRAP is not set
#
# Hash modes
#CONFIG_CRYPTO_CMAC=mCONFIG_CRYPTO_HMAC=m
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_VMAC is not set
#
# Digest
#CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_CRC32C_INTEL is not set
# CONFIG_CRYPTO_CRC32 is not set
# CONFIG_CRYPTO_CRC32_PCLMUL is not set
# CONFIG_CRYPTO_CRCT10DIF is not setCONFIG_CRYPTO_GHASH=m
# CONFIG_CRYPTO_POLY1305 is not set
# CONFIG_CRYPTO_POLY1305_X86_64 is not setCONFIG_CRYPTO_MD4=mCONFIG_CRYPTO_MD5=m
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_RMD128 is not set
# CONFIG_CRYPTO_RMD160 is not set
# CONFIG_CRYPTO_RMD256 is not set
# CONFIG_CRYPTO_RMD320 is not setCONFIG_CRYPTO_SHA1=yCONFIG_CRYPTO_SHA1_SSSE3=mCONFIG_CRYPTO_SHA256_SSSE3=m
# CONFIG_CRYPTO_SHA512_SSSE3 is not set
# CONFIG_CRYPTO_SHA1_MB is not set
# CONFIG_CRYPTO_SHA256_MB is not set
# CONFIG_CRYPTO_SHA512_MB is not setCONFIG_CRYPTO_SHA256=yCONFIG_CRYPTO_SHA512=y
# CONFIG_CRYPTO_SHA3 is not set
# CONFIG_CRYPTO_SM3 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set
#
# Ciphers
#CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_AES_TI is not set CONFIG_CRYPTO_AES_X86_64=m CONFIG_CRYPTO_AES_NI_INTEL=m
# CONFIG_CRYPTO_ANUBIS is not set CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set
# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set # CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set # CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_DES3_EDE_X86_64 is not set
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_CHACHA20 is not set
# CONFIG_CRYPTO_CHACHA20_X86_64 is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set # CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set # CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set # CONFIG_CRYPTO_SM4 is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set # CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set
#
# Compression
#
# CONFIG_CRYPTO_DEFLATE is not setCONFIG_CRYPTO_LZO=y
# CONFIG_CRYPTO_842 is not set
# CONFIG_CRYPTO_LZ4 is not set
# CONFIG_CRYPTO_LZ4HC is not set
# CONFIG_CRYPTO_ZSTD is not set
#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not setCONFIG_CRYPTO_DRBG_MENU=mCONFIG_CRYPTO_DRBG_HMAC=y
# CONFIG_CRYPTO_DRBG_HASH is not set
# CONFIG_CRYPTO_DRBG_CTR is not setCONFIG_CRYPTO_DRBG=mCONFIG_CRYPTO_JITTERENTROPY=m
# CONFIG_CRYPTO_USER_API_HASH is not set
# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
# CONFIG_CRYPTO_USER_API_RNG is not set
# CONFIG_CRYPTO_USER_API_AEAD is not setCONFIG_CRYPTO_HASH_INFO=y
# CONFIG_CRYPTO_HW is not setCONFIG_ASYMMETRIC_KEY_TYPE=yCONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=yCONFIG_X509_CERTIFICATE_PARSER=yCONFIG_PKCS7_MESSAGE_PARSER=y
# CONFIG_PKCS7_TEST_KEY is not set
# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set
#
# Certificates for signature checking
#CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"CONFIG_SYSTEM_TRUSTED_KEYRING=yCONFIG_SYSTEM_TRUSTED_KEYS=""
# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
# CONFIG_SECONDARY_TRUSTED_KEYRING is not set
# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
#
# Library routines
#CONFIG_RAID6_PQ=mCONFIG_BITREVERSE=yCONFIG_RATIONAL=yCONFIG_GENERIC_STRNCPY_FROM_USER=yCONFIG_GENERIC_STRNLEN_USER=yCONFIG_GENERIC_NET_UTILS=yCONFIG_GENERIC_FIND_FIRST_BIT=yCONFIG_GENERIC_PCI_IOMAP=yCONFIG_GENERIC_IOMAP=yCONFIG_ARCH_USE_CMPXCHG_LOCKREF=yCONFIG_ARCH_HAS_FAST_MULTIPLIER=yCONFIG_CRC_CCITT=mCONFIG_CRC16=y
# CONFIG_CRC_T10DIF is not setCONFIG_CRC_ITU_T=mCONFIG_CRC32=y
# CONFIG_CRC32_SELFTEST is not setCONFIG_CRC32_SLICEBY8=y
# CONFIG_CRC32_SLICEBY4 is not set
# CONFIG_CRC32_SARWATE is not set
# CONFIG_CRC32_BIT is not set
# CONFIG_CRC64 is not set
# CONFIG_CRC4 is not set
# CONFIG_CRC7 is not setCONFIG_LIBCRC32C=m
# CONFIG_CRC8 is not setCONFIG_XXHASH=m
# CONFIG_RANDOM32_SELFTEST is not setCONFIG_ZLIB_INFLATE=mCONFIG_ZLIB_DEFLATE=yCONFIG_LZO_COMPRESS=yCONFIG_LZO_DECOMPRESS=yCONFIG_ZSTD_COMPRESS=mCONFIG_ZSTD_DECOMPRESS=mCONFIG_XZ_DEC=yCONFIG_XZ_DEC_X86=yCONFIG_XZ_DEC_POWERPC=yCONFIG_XZ_DEC_IA64=yCONFIG_XZ_DEC_ARM=yCONFIG_XZ_DEC_ARMTHUMB=yCONFIG_XZ_DEC_SPARC=yCONFIG_XZ_DEC_BCJ=y
# CONFIG_XZ_DEC_TEST is not setCONFIG_DECOMPRESS_XZ=yCONFIG_INTERVAL_TREE=yCONFIG_ASSOCIATIVE_ARRAY=yCONFIG_HAS_IOMEM=yCONFIG_HAS_IOPORT_MAP=yCONFIG_HAS_DMA=yCONFIG_NEED_SG_DMA_LENGTH=yCONFIG_NEED_DMA_MAP_STATE=yCONFIG_ARCH_DMA_ADDR_T_64BIT=yCONFIG_DMA_DIRECT_OPS=yCONFIG_SWIOTLB=yCONFIG_SGL_ALLOC=yCONFIG_IOMMU_HELPER=yCONFIG_CPU_RMAP=yCONFIG_DQL=yCONFIG_GLOB=y
# CONFIG_GLOB_SELFTEST is not setCONFIG_NLATTR=yCONFIG_CLZ_TAB=y
# CONFIG_CORDIC is not set
# CONFIG_DDR is not set
# CONFIG_IRQ_POLL is not setCONFIG_MPILIB=yCONFIG_OID_REGISTRY=yCONFIG_UCS2_STRING=yCONFIG_FONT_SUPPORT=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=yCONFIG_SG_POOL=yCONFIG_ARCH_HAS_SG_CHAIN=yCONFIG_ARCH_HAS_PMEM_API=yCONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=yCONFIG_SBITMAP=y
# CONFIG_STRING_SELFTEST is not set
#
# Kernel hacking
#
#
# printk and dmesg options # CONFIG_PRINTK_TIME=y CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 CONFIG_CONSOLE_LOGLEVEL_QUIET=4 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 # CONFIG_BOOT_PRINTK_DELAY is not set
#
# Compile-time checks and compiler options
#
# CONFIG_DEBUG_INFO is not setCONFIG_ENABLE_MUST_CHECK=yCONFIG_FRAME_WARN=2048
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_READABLE_ASM is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_PAGE_OWNER is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not setCONFIG_SECTION_MISMATCH_WARN_ONLY=yCONFIG_STACK_VALIDATION=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not setCONFIG_MAGIC_SYSRQ=yCONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
# CONFIG_MAGIC_SYSRQ_SERIAL is not setCONFIG_DEBUG_KERNEL=y
#
# Memory Debugging
#
# CONFIG_PAGE_EXTENSION is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_PAGE_POISONING is not set
# CONFIG_DEBUG_RODATA_TEST is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not setCONFIG_HAVE_DEBUG_KMEMLEAK=y
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_VM is not setCONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
# CONFIG_DEBUG_VIRTUAL is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
# CONFIG_DEBUG_PER_CPU_MAPS is not setCONFIG_HAVE_DEBUG_STACKOVERFLOW=y
# CONFIG_DEBUG_STACKOVERFLOW is not setCONFIG_HAVE_ARCH_KASAN=y
# CONFIG_KASAN is not setCONFIG_ARCH_HAS_KCOV=yCONFIG_CC_HAS_SANCOV_TRACE_PC=y
# CONFIG_KCOV is not set
# CONFIG_DEBUG_SHIRQ is not set
#
# Debug Lockups and Hangs
#
# CONFIG_SOFTLOCKUP_DETECTOR is not setCONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_WQ_WATCHDOG is not set
# CONFIG_PANIC_ON_OOPS is not setCONFIG_PANIC_ON_OOPS_VALUE=0CONFIG_PANIC_TIMEOUT=0CONFIG_SCHED_DEBUG=yCONFIG_SCHED_INFO=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_SCHED_STACK_END_CHECK is not set
# CONFIG_DEBUG_TIMEKEEPING is not setCONFIG_DEBUG_PREEMPT=y
#
# Lock Debugging (spinlocks, mutexes, etc...)
#CONFIG_LOCK_DEBUGGING_SUPPORT=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
# CONFIG_DEBUG_RWSEMS is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_LOCK_TORTURE_TEST is not set
# CONFIG_WW_MUTEX_SELFTEST is not set
# CONFIG_STACKTRACE is not set
# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
# CONFIG_DEBUG_KOBJECT is not setCONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_PI_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_CREDENTIALS is not set
#
# RCU Debugging
#
# CONFIG_RCU_PERF_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not setCONFIG_RCU_CPU_STALL_TIMEOUT=60
# CONFIG_RCU_TRACE is not set
# CONFIG_RCU_EQS_DEBUG is not set
# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not setCONFIG_USER_STACKTRACE_SUPPORT=yCONFIG_HAVE_FUNCTION_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_TRACER=yCONFIG_HAVE_DYNAMIC_FTRACE=yCONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=yCONFIG_HAVE_FTRACE_MCOUNT_RECORD=yCONFIG_HAVE_SYSCALL_TRACEPOINTS=yCONFIG_HAVE_FENTRY=yCONFIG_HAVE_C_RECORDMCOUNT=yCONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_RUNTIME_TESTING_MENU is not set
# CONFIG_MEMTEST is not set
# CONFIG_BUG_ON_DATA_CORRUPTION is not set
# CONFIG_SAMPLES is not setCONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not setCONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
# CONFIG_UBSAN is not setCONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=yCONFIG_STRICT_DEVMEM=y
# CONFIG_IO_STRICT_DEVMEM is not setCONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_X86_VERBOSE_BOOTUP is not setCONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not setCONFIG_EARLY_PRINTK_EFI=y
# CONFIG_EARLY_PRINTK_USB_XDBC is not set
# CONFIG_X86_PTDUMP is not set
# CONFIG_EFI_PGT_DUMP is not set
# CONFIG_DEBUG_WX is not setCONFIG_DOUBLEFAULT=y
# CONFIG_DEBUG_TLBFLUSH is not set
# CONFIG_IOMMU_DEBUG is not setCONFIG_HAVE_MMIOTRACE_SUPPORT=yCONFIG_IO_DELAY_TYPE_0X80=0CONFIG_IO_DELAY_TYPE_0XED=1CONFIG_IO_DELAY_TYPE_UDELAY=2CONFIG_IO_DELAY_TYPE_NONE=3
# CONFIG_IO_DELAY_0X80 is not setCONFIG_IO_DELAY_0XED=y
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not setCONFIG_DEFAULT_IO_DELAY_TYPE=1
# CONFIG_CPA_DEBUG is not set
# CONFIG_OPTIMIZE_INLINING is not set
# CONFIG_DEBUG_ENTRY is not set
# CONFIG_DEBUG_NMI_SELFTEST is not setCONFIG_X86_DEBUG_FPU=y
# CONFIG_PUNIT_ATOM_DEBUG is not setCONFIG_UNWINDER_ORC=y
# CONFIG_UNWINDER_FRAME_POINTER is not set
# CONFIG_UNWINDER_GUESS is not set
Greg Kroah-Hartman
maintainerQuoted 26 lines · François Valenduc
This does not compile. I get this error:
CC
drivers/ras/debugfs.odrivers/ras/debugfs.c:9:5: error: redefinition of 'ras_userspace_consumers'
intras_userspace_consumers(void)^~~~~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:14:19: note: previous definition of 'ras_userspace_consumers' was here
static inline intras_userspace_consumers(void){ return 0; }^~~~~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:39:12: error: redefinition of 'ras_add_daemon_trace' int __init ras_add_daemon_trace(void) ^~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:16:19: note: previous definition of 'ras_add_daemon_trace' was here
static inline intras_add_daemon_trace(void){ return 0; }^~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:55:13: error: redefinition of 'ras_debugfs_init' void __init ras_debugfs_init(void) ^~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:15:20: note: previous definition of 'ras_debugfs_init' was here
static inline voidras_debugfs_init(void){ }
Quoted 8 lines
^~~~~~~~~~~~~~~~make[2]: *** [
scripts/Makefile.build:304:drivers/ras/debugfs.o] Error 1 make[1]: *** [scripts/Makefile.build:544:drivers/ras] Error 2
make: *** [Makefile:1046: drivers] Error 2
zsh: exit 2 LANG="C" makeDoes somebody have an idea about this ?
If you add b6ff24f7b510 ("RAS: Build debugfs.o only when enabled in Kconfig") to your tree, does that solve the issue?
This should not be a new thing right?
And is this riscv?
thanks,
greg k-h
Le 3/10/19 à 21:10, Greg Kroah-Hartman a écrit :
Quoted 38 lines · François Valenduc
Quoted 26 lines
This does not compile. I get this error:
CC
drivers/ras/debugfs.odrivers/ras/debugfs.c:9:5: error: redefinition of 'ras_userspace_consumers'
intras_userspace_consumers(void)^~~~~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:14:19: note: previous definition of 'ras_userspace_consumers' was here
static inline intras_userspace_consumers(void){ return 0; }^~~~~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:39:12: error: redefinition of 'ras_add_daemon_trace' int __init ras_add_daemon_trace(void) ^~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:16:19: note: previous definition of 'ras_add_daemon_trace' was here
static inline intras_add_daemon_trace(void){ return 0; }^~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:55:13: error: redefinition of 'ras_debugfs_init' void __init ras_debugfs_init(void) ^~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:15:20: note: previous definition of 'ras_debugfs_init' was here
static inline voidras_debugfs_init(void){ }Quoted 8 lines
^~~~~~~~~~~~~~~~make[2]: *** [
scripts/Makefile.build:304:drivers/ras/debugfs.o] Error 1 make[1]: *** [scripts/Makefile.build:544:drivers/ras] Error 2
make: *** [Makefile:1046: drivers] Error 2
zsh: exit 2 LANG="C" makeDoes somebody have an idea about this ?
If you add
b6ff24f7b510("RAS: Build debugfs.o only when enabled inKconfig") to your tree, does that solve the issue?
Quoted 7 lines
This should not be a new thing right?
And is this riscv?
thanks,
greg k-h
This indeed works with a trivially modified version of the patch. The original one doesn't apply because apparently of the SPDX identiers. This one works:
drivers/ras/Makefile +2 -1
@@ -1,2 +1,3 @@ -obj-$(CONFIG_RAS) += ras.o debugfs.o +obj-$(CONFIG_RAS) += ras.o +obj-$(CONFIG_DEBUG_FS) += debugfs.o
obj-$(CONFIG_RAS_CEC) += cec.o
And this is on x86.
François Valenduc
Greg Kroah-Hartman
maintainerQuoted 34 lines · Greg Kroah-Hartman
Quoted 33 lines · François Valenduc
This does not compile. I get this error:
CC
drivers/ras/debugfs.odrivers/ras/debugfs.c:9:5: error: redefinition of 'ras_userspace_consumers'
intras_userspace_consumers(void)^~~~~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:14:19: note: previous definition of 'ras_userspace_consumers' was here
static inline intras_userspace_consumers(void){ return 0; }^~~~~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:39:12: error: redefinition of 'ras_add_daemon_trace' int __init ras_add_daemon_trace(void) ^~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:16:19: note: previous definition of 'ras_add_daemon_trace' was here
static inline intras_add_daemon_trace(void){ return 0; }^~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:55:13: error: redefinition of 'ras_debugfs_init' void __init ras_debugfs_init(void) ^~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:15:20: note: previous definition of 'ras_debugfs_init' was here
static inline voidras_debugfs_init(void){ }^~~~~~~~~~~~~~~~make[2]: *** [
scripts/Makefile.build:304:drivers/ras/debugfs.o] Error 1 make[1]: *** [scripts/Makefile.build:544:drivers/ras] Error 2
make: *** [Makefile:1046: drivers] Error 2
zsh: exit 2 LANG="C" make
Quoted 6 lines
Quoted 1 line
Does somebody have an idea about this ?
If you add
b6ff24f7b510("RAS: Build debugfs.o only when enabled inKconfig") to your tree, does that solve the issue?This should not be a new thing right?
Yeah, the above should fix this for you. But again, is this a new thing with this -rc release, or can you duplicate this in 4.19.76?
thanks,
greg k-h
Greg Kroah-Hartman
maintainerQuoted 37 lines · Greg Kroah-Hartman
Quoted 36 lines · Greg Kroah-Hartman
Quoted 34 lines · François Valenduc
This does not compile. I get this error:
CC
drivers/ras/debugfs.odrivers/ras/debugfs.c:9:5: error: redefinition of 'ras_userspace_consumers'
intras_userspace_consumers(void)^~~~~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:14:19: note: previous definition of 'ras_userspace_consumers' was here
static inline intras_userspace_consumers(void){ return 0; }^~~~~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:39:12: error: redefinition of 'ras_add_daemon_trace' int __init ras_add_daemon_trace(void) ^~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:16:19: note: previous definition of 'ras_add_daemon_trace' was here
static inline intras_add_daemon_trace(void){ return 0; }^~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:55:13: error: redefinition of 'ras_debugfs_init' void __init ras_debugfs_init(void) ^~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:15:20: note: previous definition of 'ras_debugfs_init' was here
static inline voidras_debugfs_init(void){ }^~~~~~~~~~~~~~~~make[2]: *** [
scripts/Makefile.build:304:drivers/ras/debugfs.o] Error 1 make[1]: *** [scripts/Makefile.build:544:drivers/ras] Error 2
make: *** [Makefile:1046: drivers] Error 2
zsh: exit 2 LANG="C" makeDoes somebody have an idea about this ?
Quoted 7 lines
Quoted 4 lines
If you add
b6ff24f7b510("RAS: Build debugfs.o only when enabled inKconfig") to your tree, does that solve the issue?This should not be a new thing right?
Yeah, the above should fix this for you. But again, is this a new thing with this -rc release, or can you duplicate this in 4.19.76?
Wait, I just dropped a ras patch from the queue, and your config file builds just fine for me. So I think that solves the issue here.
I've pushed out a 4.19.77-rc2 with that fixed up, can you let me know if that solves the issue for you or not?
thanks,
greg k-h
Le 3/10/19 à 22:05, Greg Kroah-Hartman a écrit :
Quoted 46 lines · Greg Kroah-Hartman
Quoted 35 lines · Greg Kroah-Hartman
Quoted 34 lines · François Valenduc
Quoted 33 lines
This does not compile. I get this error:
CC
drivers/ras/debugfs.odrivers/ras/debugfs.c:9:5: error: redefinition of 'ras_userspace_consumers'
intras_userspace_consumers(void)^~~~~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:14:19: note: previous definition of 'ras_userspace_consumers' was here
static inline intras_userspace_consumers(void){ return 0; }^~~~~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:39:12: error: redefinition of 'ras_add_daemon_trace' int __init ras_add_daemon_trace(void) ^~~~~~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:16:19: note: previous definition of 'ras_add_daemon_trace' was here
static inline intras_add_daemon_trace(void){ return 0; }^~~~~~~~~~~~~~~~~~~~ drivers/ras/debugfs.c:55:13: error: redefinition of 'ras_debugfs_init' void __init ras_debugfs_init(void) ^~~~~~~~~~~~~~~~In file included from
drivers/ras/debugfs.c:2:./include/linux/ras.h:15:20: note: previous definition of 'ras_debugfs_init' was here
static inline voidras_debugfs_init(void){ }^~~~~~~~~~~~~~~~make[2]: *** [
scripts/Makefile.build:304:drivers/ras/debugfs.o] Error 1 make[1]: *** [scripts/Makefile.build:544:drivers/ras] Error 2
make: *** [Makefile:1046: drivers] Error 2
zsh: exit 2 LANG="C" makeQuoted 7 lines
Quoted 5 lines
Quoted 1 line
Does somebody have an idea about this ?
If you add
b6ff24f7b510("RAS: Build debugfs.o only when enabled inKconfig") to your tree, does that solve the issue?This should not be a new thing right?
Yeah, the above should fix this for you. But again, is this a new thing with this -rc release, or can you duplicate this in 4.19.76?
Wait, I just dropped a ras patch from the queue, and your config file builds just fine for me. So I think that solves the issue here.
Quoted 6 lines
I've pushed out a 4.19.77-rc2 with that fixed up, can you let me know if that solves the issue for you or not?
thanks,
greg k-h
Indeed, this build correctly for me.
Thanks for your help,
François Valenduc
stable-rc/linux-4.19.y boot: 124 boots: 0 failed, 115 passed with 9 offline (v4.19.76-212-g319532606385)
stable-rc/linux-4.19.y boot: 124 boots: 0 failed, 115 passed with 9 offline (v4.19.76-212-g319532606385)
Full Boot Summary: https://kernelci.org/boot/all/job/stable-rc/branch/linux-4.19.y/kernel/v4.19.76-212-g319532606385/
Full Build Summary: https://kernelci.org/build/stable-rc/branch/linux-4.19.y/kernel/v4.19.76-212-g319532606385/
Tree: stable-rc
Branch: linux-4.19.y
Git Describe: v4.19.76-212-g319532606385
Git Commit: 319532606385c7221dfbfba6f857bd03e97e20d0
Git URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Tested: 71 unique boards, 24 SoC families, 14 builds out of 206
Offline Platforms:
arm:
qcom_defconfig:
gcc-8
qcom-apq8064-cm-qs600: 1 offline lab
qcom-apq8064-ifc6410: 1 offline lab
davinci_all_defconfig:
gcc-8
dm365evm,legacy: 1 offline lab
sunxi_defconfig:
gcc-8
sun5i-r8-chip: 1 offline lab
sun7i-a20-bananapi: 1 offline lab
multi_v7_defconfig:
gcc-8
qcom-apq8064-cm-qs600: 1 offline lab
qcom-apq8064-ifc6410: 1 offline lab
sun5i-r8-chip: 1 offline labarm64:
defconfig:
gcc-8
apq8016-sbc: 1 offline lab---
For more info write to <[email protected]>
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.19.77 release. There are 211 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 Sat 05 Oct 2019 03:37:47 PM UTC. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.77-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-4.19.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
Jon Hunter
maintainerQuoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.19.77 release. There are 211 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 Sat 05 Oct 2019 03:37:47 PM UTC. 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/v4.x/stable-review/patch-4.19.77-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-4.19.y
and the diffstat can be found below.thanks,
greg k-h
All tests are passing for Tegra ...
Test results for stable-v4.19:
12 builds: 12 pass, 0 fail
22 boots: 22 pass, 0 fail
32 tests: 32 pass, 0 failLinux version: 4.19.77-rc1-g319532606385
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra194-p2972-0000, tegra20-ventana,
tegra210-p2371-2180, tegra30-cardhu-a04Cheers
Jon
Signature · 1 line
nvpublic
Quoted 7 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.19.77 release. There are 211 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 Sat 05 Oct 2019 03:37:47 PM UTC. Anything received after that time might be too late.
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
Summary
------------------------------------------------------------------------
kernel: 4.19.77-rc1
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-4.19.y
git commit: 319532606385c7221dfbfba6f857bd03e97e20d0
git describe: v4.19.76-212-g319532606385
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-4.19-oe/build/v4.19.76-212-g319532606385
No regressions (compared to build v4.19.76)
No fixes (compared to build v4.19.76)
Ran 22570 total tests in the following environments and test suites.
Environments
--------------
- dragonboard-410c - arm64
- hi6220-hikey - arm64
- i386
- juno-r2 - arm64
- qemu_arm
- qemu_arm64
- qemu_i386
- qemu_x86_64
- x15 - arm
- x86_64
Test Suites
-----------
* build
* install-android-platform-tools-r2600
* kselftest
* libhugetlbfs
* ltp-cap_bounds-tests
* ltp-commands-tests
* ltp-containers-tests
* ltp-cpuhotplug-tests
* ltp-cve-tests
* ltp-dio-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-hugetlb-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-mm-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* ltp-syscalls-tests
* ltp-timers-tests
* perf
* spectre-meltdown-checker-test
* v4l2-compliance
* ltp-fs-tests
* ltp-open-posix-tests
* network-basic-tests
* kvm-unit-tests
* ssuite
* kselftest-vsyscall-mode-native
* kselftest-vsyscall-mode-none
Signature · 2 lines
Linaro LKFT https://lkft.linaro.org
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.19.77 release. There are 211 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 Sat 05 Oct 2019 03:37:47 PM UTC. Anything received after that time might be too late.
Build results:
total: 156 pass: 156 fail: 0 Qemu test results: total: 390 pass: 390 fail: 0
Guenter