5.4.152-rc1 review
Subsystems (2)
Greg Kroah-Hartman
maintainercover 5.4.152-rc1 review
This is the start of the stable review cycle for the 5.4.152 release. There are 16 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 Sun, 10 Oct 2021 11:27:07 +0000. 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/v5.x/stable-review/patch-5.4.152-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 5.4.152-rc1
Kate Hsuan <[email protected]>
libata: Add ATA_HORKAGE_NO_NCQ_ON_ATI for Samsung 860 and 870 SSD.
Rik van Riel <[email protected]>
silence nfscache allocation warnings with kvzalloc
Anand K Mistry <[email protected]>
perf/x86: Reset destroy callback on event init failure
Fares Mehanna <[email protected]>
kvm: x86: Add AMD PMU MSRs to msrs_to_save_all[]
Sergey Senozhatsky <[email protected]>
KVM: do not shrink halt_poll_ns below grow_start
Changbin Du <[email protected]>
tools/vm/page-types: remove dependency on opt_file for idle page tracking
Wen Xiong <[email protected]>
scsi: ses: Retry failed Send/Receive Diagnostic commands
Shuah Khan <[email protected]>
selftests:kvm: fix get_warnings_count() ignoring fscanf() return warn
Li Zhijian <[email protected]>
selftests: be sure to make khdr before other targets
Yang Yingliang <[email protected]>
usb: dwc2: check return value after calling platform_get_resource()
Faizel K B <[email protected]>
usb: testusb: Fix for showing the connection speed
Ming Lei <[email protected]>
scsi: sd: Free scsi_disk device via put_device()
Dan Carpenter <[email protected]>
ext2: fix sleeping in atomic bugs on error
Linus Torvalds <[email protected]>
sparc64: fix pci_iounmap() when CONFIG_PCI is not set
Jan Beulich <[email protected]>
xen-netback: correct success/error reporting for the SKB-with-fraglist case
Vladimir Oltean <[email protected]>
net: mdio: introduce a shutdown method to mdio device drivers
-------------
Diffstat:
Makefile | 4 +-- arch/sparc/lib/iomap.c | 2 ++ arch/x86/events/core.c | 1 + arch/x86/kvm/x86.c | 7 +++++ drivers/ata/libata-core.c | 34 ++++++++++++++++++++-- drivers/net/phy/mdio_device.c | 11 +++++++ drivers/net/xen-netback/netback.c | 2 +- drivers/scsi/sd.c | 9 +++--- drivers/scsi/ses.c | 22 +++++++++++--- drivers/usb/dwc2/hcd.c | 4 +++ fs/ext2/balloc.c | 14 ++++----- fs/nfsd/nfscache.c | 12 +++----- include/linux/libata.h | 1 + include/linux/mdio.h | 3 ++ .../selftests/kvm/x86_64/mmio_warning_test.c | 3 +- tools/testing/selftests/lib.mk | 1 + tools/usb/testusb.c | 14 +++++---- tools/vm/page-types.c | 2 +- virt/kvm/kvm_main.c | 6 +++- 19 files changed, 114 insertions(+), 38 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/16 net: mdio: introduce a shutdown method to mdio device drivers
From: Vladimir Oltean <[email protected]>
[ Upstream commit cf9579976f724ad517cc15b7caadea728c7e245c ]
MDIO-attached devices might have interrupts and other things that might need quiesced when we kexec into a new kernel. Things are even more creepy when those interrupt lines are shared, and in that case it is absolutely mandatory to disable all interrupt sources.
Moreover, MDIO devices might be DSA switches, and DSA needs its own shutdown method to unlink from the DSA master, which is a new requirement that appeared after commit 2f1e8ea726e9 ("net: dsa: link interfaces with the DSA master to get rid of lockdep warnings").
So introduce a ->shutdown method in the MDIO device driver structure.
--- drivers/net/phy/mdio_device.c | 11 +++++++++++ include/linux/mdio.h | 3 +++ 2 files changed, 14 insertions(+)
drivers/net/phy/mdio_device.c +11 -0
@@ -180,6 +180,16 @@ static int mdio_remove(struct device *dev)return 0 ; } +static void mdio_shutdown (struct device *dev) +{ +struct mdio_device *mdiodev =to_mdio_device (dev); +struct device_driver *drv = mdiodev->dev.driver; +struct mdio_driver *mdiodrv =to_mdio_driver (drv); + +if (mdiodrv->shutdown) + mdiodrv->shutdown (mdiodev); +} +/** * mdio_driver_register - register an mdio_driver with the MDIO layer * @new_driver: new mdio_driver to register
@@ -194,6 +204,7 @@ int mdio_driver_register(struct mdio_driver *drv) mdiodrv->driver.bus = &mdio_bus_type; mdiodrv->driver.probe = mdio_probe; mdiodrv->driver.remove = mdio_remove; + mdiodrv->driver.shutdown = mdio_shutdown; retval =driver_register (&mdiodrv->driver);if (retval) {
include/linux/mdio.h +3 -0
@@ -64,6 +64,9 @@ struct mdio_driver {/* Clears up any memory if needed */ void (*remove)(struct mdio_device *mdiodev); + +/* Quiesces the device on system shutdown, turns off interrupts etc */ +void (*shutdown)(struct mdio_device *mdiodev); };#define to_mdio_driver (d) \ container_of(to_mdio_common_driver(d), struct mdio_driver, mdiodrv)
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 2/16 xen-netback: correct success/error reporting for the SKB-with-fraglist case
In reply to Greg Kroah-HartmanFrom: Jan Beulich <[email protected]>
[ Upstream commit 3ede7f84c7c21f93c5eac611d60eba3f2c765e0f ]
When re-entering the main loop of xenvif_tx_check_gop() a 2nd time, the special considerations for the head of the SKB no longer apply. Don't mistakenly report ERROR to the frontend for the first entry in the list, even if - from all I can tell - this shouldn't matter much as the overall transmit will need to be considered failed anyway.
--- drivers/net/xen-netback/netback.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/xen-netback/netback.c +1 -1
@@ -492,7 +492,7 @@ check_frags:* the header's copy failed, and they are * sharing a slot, send an error */ -if (i ==0 && sharedslot) +if (i ==0 && !first_shinfo && sharedslot)xenvif_idx_release (queue, pending_idx,XEN_NETIF_RSP_ERROR );else
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 3/16 sparc64: fix pci_iounmap() when CONFIG_PCI is not set
In reply to Greg Kroah-HartmanFrom: Linus Torvalds <[email protected]>
[ Upstream commit d8b1e10a2b8efaf71d151aa756052fbf2f3b6d57 ]
Guenter reported [1] that the pci_iounmap() changes remain problematic, with sparc64 allnoconfig and tinyconfig still not building due to the header file changes and confusion with the arch-specific pci_iounmap() implementation.
I'm pretty convinced that sparc should just use GENERIC_IOMAP instead of doing its own thing, since it turns out that the sparc64 version of pci_iounmap() is somewhat buggy (see [2]). But in the meantime, this just fixes the build by avoiding the trivial re-definition of the empty case.
--- arch/sparc/lib/iomap.c | 2 ++ 1 file changed, 2 insertions(+)
arch/sparc/lib/iomap.c +2 -0
@@ -19,8 +19,10 @@ void ioport_unmap(void __iomem *addr)EXPORT_SYMBOL (ioport_map);EXPORT_SYMBOL (ioport_unmap); +#ifdef CONFIG_PCI void pci_iounmap (struct pci_dev *dev,void __iomem * addr) {/* nothing to do */ }EXPORT_SYMBOL (pci_iounmap); +#endif
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 4/16 ext2: fix sleeping in atomic bugs on error
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit 372d1f3e1bfede719864d0d1fbf3146b1e638c88 ]
The ext2_error() function syncs the filesystem so it sleeps. The caller is holding a spinlock so it's not allowed to sleep.
ext2_statfs() <- disables preempt
-> ext2_count_free_blocks()
-> ext2_get_group_desc()
Fix this by using WARN() to print an error message and a stack trace instead of using ext2_error().
--- fs/ext2/balloc.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
fs/ext2/balloc.c +6 -8
@@ -48,10 +48,9 @@ struct ext2_group_desc * ext2_get_group_desc(struct super_block * sb,struct ext2_sb_info *sbi =EXT2_SB (sb);if (block_group >= sbi->s_groups_count) { -ext2_error (sb,"ext2_get_group_desc" , -"block_group >= groups_count - " -"block_group = %d, groups_count = %lu" , - block_group, sbi->s_groups_count); +WARN (1 ,"block_group >= groups_count - " +"block_group = %d, groups_count = %lu" , + block_group, sbi->s_groups_count);return NULL ; }
@@ -59,10 +58,9 @@ struct ext2_group_desc * ext2_get_group_desc(struct super_block * sb, group_desc = block_group >>EXT2_DESC_PER_BLOCK_BITS (sb); offset = block_group & (EXT2_DESC_PER_BLOCK (sb) -1 );if (!sbi->s_group_desc[group_desc]) { -ext2_error (sb,"ext2_get_group_desc" , -"Group descriptor not loaded - " -"block_group = %d, group_desc = %lu, desc = %lu" , - block_group, group_desc, offset); +WARN (1 ,"Group descriptor not loaded - " +"block_group = %d, group_desc = %lu, desc = %lu" , + block_group, group_desc, offset);return NULL ; }
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 5/16 scsi: sd: Free scsi_disk device via put_device()
In reply to Greg Kroah-HartmanFrom: Ming Lei <[email protected]>
[ Upstream commit 265dfe8ebbabae7959060bd1c3f75c2473b697ed ]
After a device is initialized via device_initialize() it should be freed via put_device(). sd_probe() currently gets this wrong, fix it up.
--- drivers/scsi/sd.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
drivers/scsi/sd.c +5 -4
@@ -3345,15 +3345,16 @@ static int sd_probe(struct device *dev) }device_initialize (&sdkp->dev); - sdkp->dev.parent = dev; + sdkp->dev.parent =get_device (dev); sdkp->dev.class = &sd_disk_class;dev_set_name (&sdkp->dev,"%s" ,dev_name (dev)); error =device_add (&sdkp->dev); -if (error) - goto out_free_index; +if (error) { +put_device (&sdkp->dev); + goto out; + } -get_device (dev);dev_set_drvdata (dev, sdkp); gd->major =sd_major ((index &0xf0 ) >>4 );
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 6/16 usb: testusb: Fix for showing the connection speed
In reply to Greg Kroah-HartmanFrom: Faizel K B <[email protected]>
[ Upstream commit f81c08f897adafd2ed43f86f00207ff929f0b2eb ]
testusb' application which uses 'usbtest' driver reports 'unknown speed' from the function 'find_testdev'. The variable 'entry->speed' was not updated from the application. The IOCTL mentioned in the FIXME comment can only report whether the connection is low speed or not. Speed is read using the IOCTL USBDEVFS_GET_SPEED which reports the proper speed grade. The call is implemented in the function 'handle_testdev' where the file descriptor was availble locally. Sample output is given below where 'high speed' is printed as the connected speed.
sudo ./testusb -a
high speed /dev/bus/usb/001/011 0
/dev/bus/usb/001/011 test 0, 0.000015 secs /dev/bus/usb/001/011 test 1, 0.194208 secs /dev/bus/usb/001/011 test 2, 0.077289 secs /dev/bus/usb/001/011 test 3, 0.170604 secs /dev/bus/usb/001/011 test 4, 0.108335 secs /dev/bus/usb/001/011 test 5, 2.788076 secs /dev/bus/usb/001/011 test 6, 2.594610 secs /dev/bus/usb/001/011 test 7, 2.905459 secs /dev/bus/usb/001/011 test 8, 2.795193 secs /dev/bus/usb/001/011 test 9, 8.372651 secs
/dev/bus/usb/001/011 test 10, 6.919731 secs/dev/bus/usb/001/011 test 11, 16.372687 secs/dev/bus/usb/001/011 test 12, 16.375233 secs/dev/bus/usb/001/011 test 13, 2.977457 secs/dev/bus/usb/001/011 test 14 --> 22 (Invalid argument)
/dev/bus/usb/001/011 test 17, 0.148826 secs /dev/bus/usb/001/011 test 18, 0.068718 secs /dev/bus/usb/001/011 test 19, 0.125992 secs /dev/bus/usb/001/011 test 20, 0.127477 secs /dev/bus/usb/001/011 test 21 --> 22 (Invalid argument) /dev/bus/usb/001/011 test 24, 4.133763 secs /dev/bus/usb/001/011 test 27, 2.140066 secs /dev/bus/usb/001/011 test 28, 2.120713 secs /dev/bus/usb/001/011 test 29, 0.507762 secs
--- tools/usb/testusb.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
tools/usb/testusb.c +8 -6
@@ -265,12 +265,6 @@ nomem: } entry->ifnum = ifnum; - -/* FIXME update USBDEVFS_CONNECTINFO so it tells about high speed etc */ - -fprintf (stderr,"%s speed\t%s\t%u\n" , -speed (entry->speed), entry->name, entry->ifnum); - entry->next = testdevs; testdevs = entry;return 0 ;
@@ -299,6 +293,14 @@ static void *handle_testdev (void *arg)return 0 ; } + status =ioctl (fd,USBDEVFS_GET_SPEED ,NULL ); +if (status <0 ) +fprintf (stderr,"USBDEVFS_GET_SPEED failed %d\n" , status); +else + dev->speed = status; +fprintf (stderr,"%s speed\t%s\t%u\n" , +speed (dev->speed), dev->name, dev->ifnum); + restart:for (i =0 ; i <TEST_CASES ; i++) {if (dev->test !=-1 && dev->test != i)
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 7/16 usb: dwc2: check return value after calling platform_get_resource()
In reply to Greg Kroah-HartmanFrom: Yang Yingliang <[email protected]>
[ Upstream commit 856e6e8e0f9300befa87dde09edb578555c99a82 ]
It will cause null-ptr-deref if platform_get_resource() returns NULL, we need check the return value.
--- drivers/usb/dwc2/hcd.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/usb/dwc2/hcd.c +4 -0
@@ -5074,6 +5074,10 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg) hcd->has_tt =1 ; res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!res) { + retval = -EINVAL ; + goto error1; + } hcd->rsrc_start = res->start; hcd->rsrc_len =resource_size (res);
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 8/16 selftests: be sure to make khdr before other targets
In reply to Greg Kroah-HartmanFrom: Li Zhijian <[email protected]>
[ Upstream commit 8914a7a247e065438a0ec86a58c1c359223d2c9e ]
LKP/0Day reported some building errors about kvm, and errors message are not always same:
- lib/x86_64/processor.c:1083:31: error: ‘KVM_CAP_NESTED_STATE’ undeclared (first use in this function); did you mean ‘KVM_CAP_PIT_STATE2’?
- lib/test_util.c:189:30: error: ‘MAP_HUGE_16KB’ undeclared (first use in this function); did you mean ‘MAP_HUGE_16GB’?
Although kvm relies on the khdr, they still be built in parallel when -j is specified. In this case, it will cause compiling errors.
Here we mark target khdr as NOTPARALLEL to make it be always built first.
--- tools/testing/selftests/lib.mk | 1 + 1 file changed, 1 insertion(+)
tools/testing/selftests/lib.mk +1 -0
@@ -48,6 +48,7 @@ ARCH ?= $(SUBARCH) # When local build is done, headers are installed in the default # INSTALL_HDR_PATH usr/include. .PHONY: khdr +.NOTPARALLEL: khdr: ifndef KSFT_KHDR_INSTALL_DONE ifeq (1,$(DEFAULT_INSTALL_HDR_PATH))
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 9/16 selftests:kvm: fix get_warnings_count() ignoring fscanf() return warn
In reply to Greg Kroah-HartmanFrom: Shuah Khan <[email protected]>
[ Upstream commit 39a71f712d8a13728febd8f3cb3f6db7e1fa7221 ]
Fix get_warnings_count() to check fscanf() return value to get rid of the following warning:
x86_64/mmio_warning_test.c: In function ‘get_warnings_count’:x86_64/mmio_warning_test.c:85:2: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
85 | fscanf(f, "%d", &warnings);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~--- tools/testing/selftests/kvm/x86_64/mmio_warning_test.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
tools/testing/selftests/kvm/x86_64/mmio_warning_test.c +2 -1
@@ -82,7 +82,8 @@ int get_warnings_count(void)FILE *f; f =popen ("dmesg | grep \"WARNING:\" | wc -l" ,"r" ); -fscanf (f,"%d" , &warnings); +if (fscanf (f,"%d" , &warnings) <1 ) + warnings =0 ;fclose (f);return warnings;
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 10/16 scsi: ses: Retry failed Send/Receive Diagnostic commands
In reply to Greg Kroah-HartmanFrom: Wen Xiong <[email protected]>
[ Upstream commit fbdac19e642899455b4e64c63aafe2325df7aafa ]
Setting SCSI logging level with error=3, we saw some errors from enclosues:
[108017.360833] ses 0:0:9:0: tag#641 Done: NEEDS_RETRY Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK cmd_age=0s [108017.360838] ses 0:0:9:0: tag#641 CDB: Receive Diagnostic 1c 01 01 00 20 00 [108017.427778] ses 0:0:9:0: Power-on or device reset occurred [108017.427784] ses 0:0:9:0: tag#641 Done: SUCCESS Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s [108017.427788] ses 0:0:9:0: tag#641 CDB: Receive Diagnostic 1c 01 01 00 20 00 [108017.427791] ses 0:0:9:0: tag#641 Sense Key : Unit Attention [current] [108017.427793] ses 0:0:9:0: tag#641 Add. Sense: Bus device reset function occurred [108017.427801] ses 0:0:9:0: Failed to get diagnostic page 0x1 [108017.427804] ses 0:0:9:0: Failed to bind enclosure -19 [108017.427895] ses 0:0:10:0: Attached Enclosure device [108017.427942] ses 0:0:10:0: Attached scsi generic sg18 type 13
Retry if the Send/Receive Diagnostic commands complete with a transient error status (NOT_READY or UNIT_ATTENTION with ASC 0x29).
--- drivers/scsi/ses.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-)
drivers/scsi/ses.c +18 -4
@@ -87,9 +87,16 @@ static int ses_recv_diag(struct scsi_device *sdev, int page_code, 0 };unsigned char recv_page_code; +unsigned int retries =SES_RETRIES ; +struct scsi_sense_hdr sshdr; + +do { + ret =scsi_execute_req (sdev, cmd,DMA_FROM_DEVICE , buf, bufflen, + &sshdr,SES_TIMEOUT ,1 ,NULL ); + }while (ret >0 && --retries &&scsi_sense_valid (&sshdr) && + (sshdr.sense_key ==NOT_READY || + (sshdr.sense_key ==UNIT_ATTENTION && sshdr.asc ==0x29 ))); - ret =scsi_execute_req (sdev, cmd,DMA_FROM_DEVICE , buf, bufflen, -NULL ,SES_TIMEOUT ,SES_RETRIES ,NULL );if (unlikely (ret))return ret;
@@ -121,9 +128,16 @@ static int ses_send_diag(struct scsi_device *sdev, int page_code, bufflen &0xff , 0 }; +struct scsi_sense_hdr sshdr; +unsigned int retries =SES_RETRIES ; + +do { + result =scsi_execute_req (sdev, cmd,DMA_TO_DEVICE , buf, bufflen, + &sshdr,SES_TIMEOUT ,1 ,NULL ); + }while (result >0 && --retries &&scsi_sense_valid (&sshdr) && + (sshdr.sense_key ==NOT_READY || + (sshdr.sense_key ==UNIT_ATTENTION && sshdr.asc ==0x29 ))); - result =scsi_execute_req (sdev, cmd,DMA_TO_DEVICE , buf, bufflen, -NULL ,SES_TIMEOUT ,SES_RETRIES ,NULL );if (result)sdev_printk (KERN_ERR , sdev,"SEND DIAGNOSTIC result: %8x\n" , result);
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 11/16 tools/vm/page-types: remove dependency on opt_file for idle page tracking
In reply to Greg Kroah-HartmanFrom: Changbin Du <[email protected]>
[ Upstream commit ebaeab2fe87987cef28eb5ab174c42cd28594387 ]
Idle page tracking can also be used for process address space, not only file mappings.
Without this change, using with '-i' option for process address space encounters below errors reported.
$ sudo ./page-types -p $(pidof bash) -i mark page idle: Bad file descriptor mark page idle: Bad file descriptor mark page idle: Bad file descriptor mark page idle: Bad file descriptor ...
--- tools/vm/page-types.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/vm/page-types.c +1 -1
@@ -1329,7 +1329,7 @@ int main(int argc, char *argv[])if (opt_list && opt_list_mapcnt) kpagecount_fd =checked_open (PROC_KPAGECOUNT ,O_RDONLY ); -if (opt_mark_idle && opt_file) +if (opt_mark_idle) page_idle_fd =checked_open (SYS_KERNEL_MM_PAGE_IDLE ,O_RDWR );if (opt_list && opt_pid)
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 12/16 KVM: do not shrink halt_poll_ns below grow_start
In reply to Greg Kroah-HartmanFrom: Sergey Senozhatsky <[email protected]>
[ Upstream commit ae232ea460888dc5a8b37e840c553b02521fbf18 ]
grow_halt_poll_ns() ignores values between 0 and halt_poll_ns_grow_start (10000 by default). However, when we shrink halt_poll_ns we may fall way below halt_poll_ns_grow_start and endup with halt_poll_ns values that don't make a lot of sense: like 1 or 9, or 19.
VCPU1 trace (halt_poll_ns_shrink equals 2):
VCPU1 grow 10000
VCPU1 shrink 5000
VCPU1 shrink 2500
VCPU1 shrink 1250
VCPU1 shrink 625
VCPU1 shrink 312
VCPU1 shrink 156
VCPU1 shrink 78
VCPU1 shrink 39
VCPU1 shrink 19
VCPU1 shrink 9
VCPU1 shrink 4
Mirror what grow_halt_poll_ns() does and set halt_poll_ns to 0 as soon as new shrink-ed halt_poll_ns value falls below halt_poll_ns_grow_start.
Message-Id: <[email protected]>
--- virt/kvm/kvm_main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
virt/kvm/kvm_main.c +5 -1
@@ -2470,15 +2470,19 @@ out:static void shrink_halt_poll_ns (struct kvm_vcpu *vcpu) { -unsigned int old, val, shrink; +unsigned int old, val, shrink, grow_start; old = val = vcpu->halt_poll_ns; shrink =READ_ONCE (halt_poll_ns_shrink); + grow_start =READ_ONCE (halt_poll_ns_grow_start);if (shrink ==0 ) val =0 ;else val /= shrink; +if (val < grow_start) + val =0 ; + vcpu->halt_poll_ns = val;trace_kvm_halt_poll_ns_shrink (vcpu->vcpu_id, val, old); }
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 13/16 kvm: x86: Add AMD PMU MSRs to msrs_to_save_all[]
In reply to Greg Kroah-HartmanFrom: Fares Mehanna <[email protected]>
[ Upstream commit e1fc1553cd78292ab3521c94c9dd6e3e70e606a1 ]
Intel PMU MSRs is in msrs_to_save_all[], so add AMD PMU MSRs to have a consistent behavior between Intel and AMD when using KVM_GET_MSRS, KVM_SET_MSRS or KVM_GET_MSR_INDEX_LIST.
We have to add legacy and new MSRs to handle guests running without X86_FEATURE_PERFCTR_CORE.
Message-Id: <[email protected]>
--- arch/x86/kvm/x86.c | 7 +++++++ 1 file changed, 7 insertions(+)
arch/x86/kvm/x86.c +7 -0
@@ -1239,6 +1239,13 @@ static const u32 msrs_to_save_all[] = {MSR_ARCH_PERFMON_EVENTSEL0 +12 ,MSR_ARCH_PERFMON_EVENTSEL0 +13 ,MSR_ARCH_PERFMON_EVENTSEL0 +14 ,MSR_ARCH_PERFMON_EVENTSEL0 +15 ,MSR_ARCH_PERFMON_EVENTSEL0 +16 ,MSR_ARCH_PERFMON_EVENTSEL0 +17 , + +MSR_K7_EVNTSEL0 ,MSR_K7_EVNTSEL1 ,MSR_K7_EVNTSEL2 ,MSR_K7_EVNTSEL3 , +MSR_K7_PERFCTR0 ,MSR_K7_PERFCTR1 ,MSR_K7_PERFCTR2 ,MSR_K7_PERFCTR3 , +MSR_F15H_PERF_CTL0 ,MSR_F15H_PERF_CTL1 ,MSR_F15H_PERF_CTL2 , +MSR_F15H_PERF_CTL3 ,MSR_F15H_PERF_CTL4 ,MSR_F15H_PERF_CTL5 , +MSR_F15H_PERF_CTR0 ,MSR_F15H_PERF_CTR1 ,MSR_F15H_PERF_CTR2 , + MSR_F15H_PERF_CTR3, MSR_F15H_PERF_CTR4, MSR_F15H_PERF_CTR5, };static u32 msrs_to_save[ARRAY_SIZE (msrs_to_save_all)];
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 14/16 perf/x86: Reset destroy callback on event init failure
In reply to Greg Kroah-HartmanFrom: Anand K Mistry <[email protected]>
commit 02d029a41dc986e2d5a77ecca45803857b346829 upstream.
perf_init_event tries multiple init callbacks and does not reset the event state between tries. When x86_pmu_event_init runs, it unconditionally sets the destroy callback to hw_perf_event_destroy. On the next init attempt after x86_pmu_event_init, in perf_try_init_event, if the pmu's capabilities includes PERF_PMU_CAP_NO_EXCLUDE, the destroy callback will be run. However, if the next init didn't set the destroy callback, hw_perf_event_destroy will be run (since the callback wasn't reset).
Looking at other pmu init functions, the common pattern is to only set the destroy callback on a successful init. Resetting the callback on failure tries to replicate that pattern.
This was discovered after commit f11dd0d80555 ("perf/x86/amd/ibs: Extend PERF_PMU_CAP_NO_EXCLUDE to IBS Op") when the second (and only second) run of the perf tool after a reboot results in 0 samples being generated. The extra run of hw_perf_event_destroy results in active_events having an extra decrement on each perf run. The second run has active_events == 0 and every subsequent run has active_events < 0. When active_events == 0, the NMI handler will early-out and not record any samples.
--- arch/x86/events/core.c | 1 + 1 file changed, 1 insertion(+)
arch/x86/events/core.c +1 -0
@@ -2108,6 +2108,7 @@ static int x86_pmu_event_init(struct perif (err) {if (event->destroy) event->destroy (event); + event->destroy =NULL ; } if (READ_ONCE(x86_pmu.attr_rdpmc) &&
Greg Kroah-Hartman
maintainerPATCH 15/16 silence nfscache allocation warnings with kvzalloc
In reply to Greg Kroah-HartmanFrom: Rik van Riel <[email protected]>
commit 8c38b705b4f4ca4e7f9cc116141bc38391917c30 upstream.
silence nfscache allocation warnings with kvzalloc
Currently nfsd_reply_cache_init attempts hash table allocation through kmalloc, and manually falls back to vzalloc if that fails. This makes the code a little larger than needed, and creates a significant amount of serial console spam if you have enough systems.
Switching to kvzalloc gets rid of the allocation warnings, and makes the code a little cleaner too as a side effect.
Freeing of nn->drc_hashtbl is already done using kvfree currently.
--- fs/nfsd/nfscache.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
fs/nfsd/nfscache.c +4 -8
@@ -173,14 +173,10 @@ int nfsd_reply_cache_init(struct nfsd_neif (status) goto out_nomem; - nn->drc_hashtbl =kcalloc (hashsize, -sizeof (*nn->drc_hashtbl),GFP_KERNEL ); -if (!nn->drc_hashtbl) { - nn->drc_hashtbl =vzalloc (array_size (hashsize, -sizeof (*nn->drc_hashtbl))); -if (!nn->drc_hashtbl) - goto out_shrinker; - } + nn->drc_hashtbl =kvzalloc (array_size (hashsize, +sizeof (*nn->drc_hashtbl)),GFP_KERNEL ); +if (!nn->drc_hashtbl) + goto out_shrinker;for (i =0 ; i < hashsize; i++) {INIT_LIST_HEAD (&nn->drc_hashtbl[i].lru_head);
Greg Kroah-Hartman
maintainerPATCH 16/16 libata: Add ATA_HORKAGE_NO_NCQ_ON_ATI for Samsung 860 and 870 SSD.
In reply to Greg Kroah-HartmanFrom: Kate Hsuan <[email protected]>
commit 7a8526a5cd51cf5f070310c6c37dd7293334ac49 upstream.
Many users are reporting that the Samsung 860 and 870 SSD are having various issues when combined with AMD/ATI (vendor ID 0x1002) SATA controllers and only completely disabling NCQ helps to avoid these issues.
Always disabling NCQ for Samsung 860/870 SSDs regardless of the host SATA adapter vendor will cause I/O performance degradation with well behaved adapters. To limit the performance impact to ATI adapters, introduce the ATA_HORKAGE_NO_NCQ_ON_ATI flag to force disable NCQ only for these adapters.
Also, two libata.force parameters (noncqati and ncqati) are introduced to disable and enable the NCQ for the system which equipped with ATI SATA adapter and Samsung 860 and 870 SSDs. The user can determine NCQ function to be enabled or disabled according to the demand.
After verifying the chipset from the user reports, the issue appears on AMD/ATI SB7x0/SB8x0/SB9x0 SATA Controllers and does not appear on recent AMD SATA adapters. The vendor ID of ATI should be 0x1002. Therefore, ATA_HORKAGE_NO_NCQ_ON_AMD was modified to ATA_HORKAGE_NO_NCQ_ON_ATI.
--- drivers/ata/libata-core.c | 34 ++++++++++++++++++++++++++++++++-- include/linux/libata.h | 1 + 2 files changed, 33 insertions(+), 2 deletions(-)
drivers/ata/libata-core.c +32 -2
@@ -2252,6 +2252,25 @@ static void ata_dev_config_ncq_prio(stru } +static bool ata_dev_check_adapter (struct ata_device *dev, +unsigned short vendor_id) +{ +struct pci_dev *pcidev =NULL ; +struct device *parent_dev =NULL ; + +for (parent_dev = dev->tdev.parent; parent_dev !=NULL ; + parent_dev = parent_dev->parent) { +if (dev_is_pci (parent_dev)) { + pcidev =to_pci_dev (parent_dev); +if (pcidev->vendor == vendor_id) +return true; +break ; + } + } + +return false; +} +static int ata_dev_config_ncq (struct ata_device *dev,char *desc,size_t desc_sz) {
@@ -2268,6 +2287,13 @@ static int ata_dev_config_ncq(struct atasnprintf (desc, desc_sz,"NCQ (not used)" );return 0 ; } + +if (dev->horkage &ATA_HORKAGE_NO_NCQ_ON_ATI && +ata_dev_check_adapter (dev,PCI_VENDOR_ID_ATI )) { +snprintf (desc, desc_sz,"NCQ (not used)" ); +return 0 ; + } +if (ap->flags &ATA_FLAG_NCQ ) { hdepth =min (ap->scsi_host->can_queue,ATA_MAX_QUEUE ); dev->flags |=ATA_DFLAG_NCQ ;
@@ -4557,9 +4583,11 @@ static const struct ata_blacklist_entry {"Samsung SSD 850*" ,NULL ,ATA_HORKAGE_NO_NCQ_TRIM | ATA_HORKAGE_ZERO_AFTER_TRIM, }, { "Samsung SSD 860*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | - ATA_HORKAGE_ZERO_AFTER_TRIM, }, +ATA_HORKAGE_ZERO_AFTER_TRIM | + ATA_HORKAGE_NO_NCQ_ON_ATI, }, { "Samsung SSD 870*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | - ATA_HORKAGE_ZERO_AFTER_TRIM, }, +ATA_HORKAGE_ZERO_AFTER_TRIM | + ATA_HORKAGE_NO_NCQ_ON_ATI, }, { "FCCT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | ATA_HORKAGE_ZERO_AFTER_TRIM, },
@@ -6916,6 +6944,8 @@ static int __init ata_parse_force_one(ch { "ncq", .horkage_off = ATA_HORKAGE_NONCQ }, { "noncqtrim", .horkage_on = ATA_HORKAGE_NO_NCQ_TRIM }, { "ncqtrim", .horkage_off = ATA_HORKAGE_NO_NCQ_TRIM }, + { "noncqati", .horkage_on = ATA_HORKAGE_NO_NCQ_ON_ATI }, + { "ncqati", .horkage_off = ATA_HORKAGE_NO_NCQ_ON_ATI }, { "dump_id", .horkage_on = ATA_HORKAGE_DUMP_ID }, { "pio0", .xfer_mask = 1 << (ATA_SHIFT_PIO + 0) }, { "pio1", .xfer_mask = 1 << (ATA_SHIFT_PIO + 1) },
include/linux/libata.h +1 -0
@@ -423,6 +423,7 @@ enum {ATA_HORKAGE_NOTRIM = (1 <<24 ),/* don't use TRIM */ ATA_HORKAGE_MAX_SEC_1024 = (1 <<25 ),/* Limit max sects to 1024 */ ATA_HORKAGE_MAX_TRIM_128M = (1 <<26 ),/* Limit max trim size to 128M */ + ATA_HORKAGE_NO_NCQ_ON_ATI = (1 << 27), /* Disable NCQ on ATI chipset *//* DMA mask for user DMA control: User visible values; DO NOT renumber */
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.4.152 release. There are 16 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 Sun, 10 Oct 2021 11:27:07 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.152-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.4.y
and the diffstat can be found below.thanks,
greg k-h
All tests passing for Tegra ...
Test results for stable-v5.4:
10 builds: 10 pass, 0 fail
26 boots: 26 pass, 0 fail
59 tests: 59 pass, 0 failLinux version: 5.4.152-rc1-g0a25e1455412
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra194-p2972-0000, tegra20-ventana,
tegra210-p2371-2180, tegra210-p3450-0000,
tegra30-cardhu-a04Jon
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.4.152 release. There are 16 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 Sun, 10 Oct 2021 11:27:07 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.152-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.4.y
and the diffstat can be found below.thanks,
greg k-h
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels:
Signature · 1 line
Florian
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.4.152 release. There are 16 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 Sun, 10 Oct 2021 11:27:07 +0000. 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/v5.x/stable-review/patch-5.4.152-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.4.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.4.152 release. There are 16 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 Sun, 10 Oct 2021 11:27:07 +0000. 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/v5.x/stable-review/patch-5.4.152-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.4.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.4.152 release. There are 16 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 Sun, 10 Oct 2021 11:27:07 +0000. Anything received after that time might be too late.
Build results:
total: 157 pass: 157 fail: 0 Qemu test results: total: 444 pass: 444 fail: 0
Guenter
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.4.152 release. There are 16 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 Sun, 10 Oct 2021 11:27:07 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.152-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.4.y
and the diffstat can be found below.thanks,
greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
## Build
* kernel: 5.4.152-rc1
* git: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
* git branch: linux-5.4.y
* git commit: 0a25e1455412122583bd9796e6f05bc146458fde
* git describe: v5.4.151-17-g0a25e1455412
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.4.y/build/v5.4.151-17-g0a25e1455412
## No regressions (compared to v5.4.151-17-gb1d2e2889dcd)
## No fixes (compared to v5.4.151-17-gb1d2e2889dcd)
## Test result summary
total: 85242, pass: 70848, fail: 633, skip: 12366, xfail: 1395
## Build Summary
* arc: 20 total, 20 passed, 0 failed
* arm: 576 total, 576 passed, 0 failed
* arm64: 76 total, 76 passed, 0 failed
* dragonboard-410c: 1 total, 1 passed, 0 failed
* hi6220-hikey: 1 total, 1 passed, 0 failed
* i386: 37 total, 37 passed, 0 failed
* juno-r2: 1 total, 1 passed, 0 failed
* mips: 78 total, 78 passed, 0 failed
* parisc: 24 total, 24 passed, 0 failed
* powerpc: 72 total, 72 passed, 0 failed
* riscv: 60 total, 60 passed, 0 failed
* s390: 24 total, 24 passed, 0 failed
* sh: 48 total, 48 passed, 0 failed
* sparc: 24 total, 24 passed, 0 failed
* x15: 1 total, 1 passed, 0 failed
* x86: 1 total, 1 passed, 0 failed
* x86_64: 76 total, 76 passed, 0 failed
## Test suites summary
* fwts
* igt-gpu-tools
* kselftest-android
* kselftest-arm64
* kselftest-arm64/arm64.btitest.bti_c_func
* kselftest-arm64/arm64.btitest.bti_j_func
* kselftest-arm64/arm64.btitest.bti_jc_func
* kselftest-arm64/arm64.btitest.bti_none_func
* kselftest-arm64/arm64.btitest.nohint_func
* kselftest-arm64/arm64.btitest.paciasp_func
* kselftest-arm64/arm64.nobtitest.bti_c_func
* kselftest-arm64/arm64.nobtitest.bti_j_func
* kselftest-arm64/arm64.nobtitest.bti_jc_func
* kselftest-arm64/arm64.nobtitest.bti_none_func
* kselftest-arm64/arm64.nobtitest.nohint_func
* kselftest-arm64/arm64.nobtitest.paciasp_func
* kselftest-bpf
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-drivers
* kselftest-efivarfs
* kselftest-filesystems
* kselftest-firmware
* kselftest-fpu
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-ir
* kselftest-kcmp
* kselftest-kexec
* kselftest-kvm
* kselftest-lib
* kselftest-livepatch
* kselftest-membarrier
* kselftest-memfd
* kselftest-memory-hotplug
* kselftest-mincore
* kselftest-mount
* kselftest-mqueue
* kselftest-net
* kselftest-netfilter
* kselftest-nsfs
* kselftest-openat2
* kselftest-pid_namespace
* kselftest-pidfd
* kselftest-proc
* kselftest-pstore
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-splice
* kselftest-static_keys
* kselftest-sync
* kselftest-sysctl
* kselftest-tc-testing
* kselftest-timens
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user
* kselftest-vm
* kselftest-x86
* kselftest-zram
* kvm-unit-tests
* libgpiod
* libhugetlbfs
* linux-log-parser
* ltp-cap_bounds-tests
* ltp-commands-tests
* ltp-containers-tests
* ltp-controllers-tests
* ltp-cpuhotplug-tests
* ltp-crypto-tests
* ltp-cve-tests
* ltp-dio-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs-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-open-posix-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* ltp-syscalls-tests
* ltp-tracing-tests
* network-basic-tests
* packetdrill
* perf
* rcutorture
* ssuite
* v4l2-compliance
--
Linaro LKFT
https://lkft.linaro.org