Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fix from Thomas Gleixner:
"The recent irq core changes unearthed API abuse in the HPET code,
which manifested itself in a suspend/resume regression.

The fix replaces the cruft with the proper function calls and cures
the regression"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/hpet: Cure interface abuse in the resume path

+10 -15
+10 -15
arch/x86/kernel/hpet.c
··· 345 345 return 0; 346 346 } 347 347 348 - static int hpet_resume(struct clock_event_device *evt, int timer) 348 + static int hpet_resume(struct clock_event_device *evt) 349 349 { 350 - if (!timer) { 351 - hpet_enable_legacy_int(); 352 - } else { 353 - struct hpet_dev *hdev = EVT_TO_HPET_DEV(evt); 354 - 355 - irq_domain_deactivate_irq(irq_get_irq_data(hdev->irq)); 356 - irq_domain_activate_irq(irq_get_irq_data(hdev->irq)); 357 - disable_hardirq(hdev->irq); 358 - irq_set_affinity(hdev->irq, cpumask_of(hdev->cpu)); 359 - enable_irq(hdev->irq); 360 - } 350 + hpet_enable_legacy_int(); 361 351 hpet_print_config(); 362 - 363 352 return 0; 364 353 } 365 354 ··· 406 417 407 418 static int hpet_legacy_resume(struct clock_event_device *evt) 408 419 { 409 - return hpet_resume(evt, 0); 420 + return hpet_resume(evt); 410 421 } 411 422 412 423 static int hpet_legacy_next_event(unsigned long delta, ··· 499 510 static int hpet_msi_resume(struct clock_event_device *evt) 500 511 { 501 512 struct hpet_dev *hdev = EVT_TO_HPET_DEV(evt); 513 + struct irq_data *data = irq_get_irq_data(hdev->irq); 514 + struct msi_msg msg; 502 515 503 - return hpet_resume(evt, hdev->num); 516 + /* Restore the MSI msg and unmask the interrupt */ 517 + irq_chip_compose_msi_msg(data, &msg); 518 + hpet_msi_write(hdev, &msg); 519 + hpet_msi_unmask(data); 520 + return 0; 504 521 } 505 522 506 523 static int hpet_msi_next_event(unsigned long delta,