mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-03 00:54:09 +08:00
s390 updates for 6.10-rc6
- Add missing virt_to_phys() conversion for directed interrupt bit vectors - Fix broken configuration change notifications for virtio-ccw - Fix sclp_init() cleanup path on failure and as result - fix a list double add warning - Fix unconditional adjusting of GOT entries containing undefined weak symbols that resolve to zero -----BEGIN PGP SIGNATURE----- iI0EABYIADUWIQQrtrZiYVkVzKQcYivNdxKlNrRb8AUCZn2IjRccYWdvcmRlZXZA bGludXguaWJtLmNvbQAKCRDNdxKlNrRb8L9aAP9i2mtON605nVDo15gEt3QKFuAp CMgWgo+cECfEaSs9HwD8D7HSSEiV0RTRCNiU+dULc+Uvx/XwoQBhrhsavYF8Ggc= =F2KW -----END PGP SIGNATURE----- Merge tag 's390-6.10-7' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux Pull s390 updates from Alexander Gordeev: - Add missing virt_to_phys() conversion for directed interrupt bit vectors - Fix broken configuration change notifications for virtio-ccw - Fix sclp_init() cleanup path on failure and as result - fix a list double add warning - Fix unconditional adjusting of GOT entries containing undefined weak symbols that resolve to zero * tag 's390-6.10-7' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/boot: Do not adjust GOT entries for undef weak sym s390/sclp: Fix sclp_init() cleanup on failure s390/virtio_ccw: Fix config change notifications s390/pci: Add missing virt_to_phys() for directed DIBV
This commit is contained in:
commit
6d6444ba82
@ -170,11 +170,14 @@ static void kaslr_adjust_got(unsigned long offset)
|
||||
u64 *entry;
|
||||
|
||||
/*
|
||||
* Even without -fPIE, Clang still uses a global offset table for some
|
||||
* reason. Adjust the GOT entries.
|
||||
* Adjust GOT entries, except for ones for undefined weak symbols
|
||||
* that resolved to zero. This also skips the first three reserved
|
||||
* entries on s390x that are zero.
|
||||
*/
|
||||
for (entry = (u64 *)vmlinux.got_start; entry < (u64 *)vmlinux.got_end; entry++)
|
||||
*entry += offset - __START_KERNEL;
|
||||
for (entry = (u64 *)vmlinux.got_start; entry < (u64 *)vmlinux.got_end; entry++) {
|
||||
if (*entry)
|
||||
*entry += offset - __START_KERNEL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -410,7 +410,7 @@ static void __init cpu_enable_directed_irq(void *unused)
|
||||
union zpci_sic_iib iib = {{0}};
|
||||
union zpci_sic_iib ziib = {{0}};
|
||||
|
||||
iib.cdiib.dibv_addr = (u64) zpci_ibv[smp_processor_id()]->vector;
|
||||
iib.cdiib.dibv_addr = virt_to_phys(zpci_ibv[smp_processor_id()]->vector);
|
||||
|
||||
zpci_set_irq_ctrl(SIC_IRQ_MODE_SET_CPU, 0, &iib);
|
||||
zpci_set_irq_ctrl(SIC_IRQ_MODE_D_SINGLE, PCI_ISC, &ziib);
|
||||
|
@ -1293,6 +1293,7 @@ sclp_init(void)
|
||||
fail_unregister_reboot_notifier:
|
||||
unregister_reboot_notifier(&sclp_reboot_notifier);
|
||||
fail_init_state_uninitialized:
|
||||
list_del(&sclp_state_change_event.list);
|
||||
sclp_init_state = sclp_init_state_uninitialized;
|
||||
free_page((unsigned long) sclp_read_sccb);
|
||||
free_page((unsigned long) sclp_init_sccb);
|
||||
|
@ -698,6 +698,7 @@ static int virtio_ccw_find_vqs(struct virtio_device *vdev, unsigned nvqs,
|
||||
dma64_t *indicatorp = NULL;
|
||||
int ret, i, queue_idx = 0;
|
||||
struct ccw1 *ccw;
|
||||
dma32_t indicatorp_dma = 0;
|
||||
|
||||
ccw = ccw_device_dma_zalloc(vcdev->cdev, sizeof(*ccw), NULL);
|
||||
if (!ccw)
|
||||
@ -725,7 +726,7 @@ static int virtio_ccw_find_vqs(struct virtio_device *vdev, unsigned nvqs,
|
||||
*/
|
||||
indicatorp = ccw_device_dma_zalloc(vcdev->cdev,
|
||||
sizeof(*indicatorp),
|
||||
&ccw->cda);
|
||||
&indicatorp_dma);
|
||||
if (!indicatorp)
|
||||
goto out;
|
||||
*indicatorp = indicators_dma(vcdev);
|
||||
@ -735,6 +736,7 @@ static int virtio_ccw_find_vqs(struct virtio_device *vdev, unsigned nvqs,
|
||||
/* no error, just fall back to legacy interrupts */
|
||||
vcdev->is_thinint = false;
|
||||
}
|
||||
ccw->cda = indicatorp_dma;
|
||||
if (!vcdev->is_thinint) {
|
||||
/* Register queue indicators with host. */
|
||||
*indicators(vcdev) = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user