mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-16 14:02:10 +00:00
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Ingo Molnar. * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86, kvm: Call restore_sched_clock_state() only after %gs is initialized x86: Use -mno-avx when available x86: Remove the ancient and deprecated disable_hlt() and enable_hlt() facility x86: Preserve lazy irq disable semantics in fixup_irqs()
This commit is contained in:
commit
6742259866
@ -6,14 +6,6 @@ be removed from this file.
|
||||
|
||||
---------------------------
|
||||
|
||||
What: x86 floppy disable_hlt
|
||||
When: 2012
|
||||
Why: ancient workaround of dubious utility clutters the
|
||||
code used by everybody else.
|
||||
Who: Len Brown <len.brown@intel.com>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: CONFIG_APM_CPU_IDLE, and its ability to call APM BIOS in idle
|
||||
When: 2012
|
||||
Why: This optional sub-feature of APM is of dubious reliability,
|
||||
|
@ -129,6 +129,7 @@ KBUILD_CFLAGS += -Wno-sign-compare
|
||||
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
|
||||
# prevent gcc from generating any FP code by mistake
|
||||
KBUILD_CFLAGS += $(call cc-option,-mno-sse -mno-mmx -mno-sse2 -mno-3dnow,)
|
||||
KBUILD_CFLAGS += $(call cc-option,-mno-avx,)
|
||||
|
||||
KBUILD_CFLAGS += $(mflags-y)
|
||||
KBUILD_AFLAGS += $(mflags-y)
|
||||
|
@ -974,16 +974,6 @@ extern bool cpu_has_amd_erratum(const int *);
|
||||
#define cpu_has_amd_erratum(x) (false)
|
||||
#endif /* CONFIG_CPU_SUP_AMD */
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
/*
|
||||
* disable hlt during certain critical i/o operations
|
||||
*/
|
||||
#define HAVE_DISABLE_HLT
|
||||
#endif
|
||||
|
||||
void disable_hlt(void);
|
||||
void enable_hlt(void);
|
||||
|
||||
void cpu_idle_wait(void);
|
||||
|
||||
extern unsigned long arch_align_stack(unsigned long sp);
|
||||
|
@ -282,8 +282,13 @@ void fixup_irqs(void)
|
||||
else if (!(warned++))
|
||||
set_affinity = 0;
|
||||
|
||||
/*
|
||||
* We unmask if the irq was not marked masked by the
|
||||
* core code. That respects the lazy irq disable
|
||||
* behaviour.
|
||||
*/
|
||||
if (!irqd_can_move_in_process_context(data) &&
|
||||
!irqd_irq_disabled(data) && chip->irq_unmask)
|
||||
!irqd_irq_masked(data) && chip->irq_unmask)
|
||||
chip->irq_unmask(data);
|
||||
|
||||
raw_spin_unlock(&desc->lock);
|
||||
|
@ -362,34 +362,10 @@ void (*pm_idle)(void);
|
||||
EXPORT_SYMBOL(pm_idle);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
/*
|
||||
* This halt magic was a workaround for ancient floppy DMA
|
||||
* wreckage. It should be safe to remove.
|
||||
*/
|
||||
static int hlt_counter;
|
||||
void disable_hlt(void)
|
||||
{
|
||||
hlt_counter++;
|
||||
}
|
||||
EXPORT_SYMBOL(disable_hlt);
|
||||
|
||||
void enable_hlt(void)
|
||||
{
|
||||
hlt_counter--;
|
||||
}
|
||||
EXPORT_SYMBOL(enable_hlt);
|
||||
|
||||
static inline int hlt_use_halt(void)
|
||||
{
|
||||
return (!hlt_counter && boot_cpu_data.hlt_works_ok);
|
||||
}
|
||||
#else
|
||||
static inline int hlt_use_halt(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
static inline void play_dead(void)
|
||||
|
@ -225,13 +225,13 @@ static void __restore_processor_state(struct saved_context *ctxt)
|
||||
fix_processor_context();
|
||||
|
||||
do_fpu_end();
|
||||
x86_platform.restore_sched_clock_state();
|
||||
mtrr_bp_restore();
|
||||
}
|
||||
|
||||
/* Needed by apm.c */
|
||||
void restore_processor_state(void)
|
||||
{
|
||||
x86_platform.restore_sched_clock_state();
|
||||
__restore_processor_state(&saved_context);
|
||||
}
|
||||
#ifdef CONFIG_X86_32
|
||||
|
@ -1030,37 +1030,6 @@ static int fd_wait_for_completion(unsigned long delay, timeout_fn function)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static DEFINE_SPINLOCK(floppy_hlt_lock);
|
||||
static int hlt_disabled;
|
||||
static void floppy_disable_hlt(void)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
WARN_ONCE(1, "floppy_disable_hlt() scheduled for removal in 2012");
|
||||
spin_lock_irqsave(&floppy_hlt_lock, flags);
|
||||
if (!hlt_disabled) {
|
||||
hlt_disabled = 1;
|
||||
#ifdef HAVE_DISABLE_HLT
|
||||
disable_hlt();
|
||||
#endif
|
||||
}
|
||||
spin_unlock_irqrestore(&floppy_hlt_lock, flags);
|
||||
}
|
||||
|
||||
static void floppy_enable_hlt(void)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&floppy_hlt_lock, flags);
|
||||
if (hlt_disabled) {
|
||||
hlt_disabled = 0;
|
||||
#ifdef HAVE_DISABLE_HLT
|
||||
enable_hlt();
|
||||
#endif
|
||||
}
|
||||
spin_unlock_irqrestore(&floppy_hlt_lock, flags);
|
||||
}
|
||||
|
||||
static void setup_DMA(void)
|
||||
{
|
||||
unsigned long f;
|
||||
@ -1105,7 +1074,6 @@ static void setup_DMA(void)
|
||||
fd_enable_dma();
|
||||
release_dma_lock(f);
|
||||
#endif
|
||||
floppy_disable_hlt();
|
||||
}
|
||||
|
||||
static void show_floppy(void);
|
||||
@ -1707,7 +1675,6 @@ irqreturn_t floppy_interrupt(int irq, void *dev_id)
|
||||
fd_disable_dma();
|
||||
release_dma_lock(f);
|
||||
|
||||
floppy_enable_hlt();
|
||||
do_floppy = NULL;
|
||||
if (fdc >= N_FDC || FDCS->address == -1) {
|
||||
/* we don't even know which FDC is the culprit */
|
||||
@ -1856,8 +1823,6 @@ static void floppy_shutdown(unsigned long data)
|
||||
show_floppy();
|
||||
cancel_activity();
|
||||
|
||||
floppy_enable_hlt();
|
||||
|
||||
flags = claim_dma_lock();
|
||||
fd_disable_dma();
|
||||
release_dma_lock(flags);
|
||||
@ -4508,7 +4473,6 @@ static void floppy_release_irq_and_dma(void)
|
||||
#if N_FDC > 1
|
||||
set_dor(1, ~8, 0);
|
||||
#endif
|
||||
floppy_enable_hlt();
|
||||
|
||||
if (floppy_track_buffer && max_buffer_sectors) {
|
||||
tmpsize = max_buffer_sectors * 1024;
|
||||
|
Loading…
Reference in New Issue
Block a user