• Rajneesh Bhardwaj's avatar
    x86/i8237: Register device based on FADT legacy boot flag · f79b1c57
    Rajneesh Bhardwaj authored
    From Skylake onwards, the platform controller hub (Sunrisepoint PCH) does
    not support legacy DMA operations to IO ports 81h-83h, 87h, 89h-8Bh, 8Fh.
    Currently this driver registers as syscore ops and its resume function is
    called on every resume from S3. On Skylake and Kabylake, this causes a
    resume delay of around 100ms due to port IO operations, which is a problem.
    
    This change allows to load the driver only when the platform bios
    explicitly supports such devices or has a cut-off date earlier than 2017
    due to the following reasons:
    
       - The platforms released before year 2017 have support for the 8237.
         (except Sunrisepoint PCH e.g. Skylake)
    
       - Some of the BIOS that were released for platforms (Skylake, Kabylake)
         during 2016-17 are buggy. These BIOS do not set/unset the
         ACPI_FADT_LEGACY_DEVICES field in FADT table properly based on the
         presence or absence of the DMA device.
    
    Very recently, open source system firmware like coreboot started unsetting
    ACPI_FADT_LEGACY_DEVICES field in FADT table if the 8237 DMA device is not
    present on the PCH.
    
    Please refer to chapter 21 of 6th Generation Intel® Core Processor
    Platform Controller Hub Family: BIOS Specification.
    Signed-off-by: default avatarRajneesh Bhardwaj <rajneesh.bhardwaj@intel.com>
    Signed-off-by: default avatarAnshuman Gupta <anshuman.gupta@intel.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: rjw@rjwysocki.net
    Cc: hpa@zytor.com
    Cc: Alan Cox <alan@linux.intel.com>
    Link: https://lkml.kernel.org/r/1522336015-22994-1-git-send-email-anshuman.gupta@intel.com
    f79b1c57
i8237.c 2.1 KB