SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
ACPI and FreeBSD

Nate Lawson
nate@root.org


Bay Area FreeBSD Users’ Group
May 3, 2006
Overview

• Introduction
   – PC platform and architecture
   – ACPI
• FreeBSD ACPI support
• Challenges and issues
• How you can help
How I got here

• Background in security and cryptography
• Worked on storage security in my day job
   – Built a Fibre Channel encryptor
   – Built a parallel SCSI encryptor
   – Tired of starting anew each time, wrote and committed a SCSI
     target driver framework
• But my laptop wasn’t working so well
• Began working on ACPI in my spare time
   – 4 years later, here I am
PC platform (classic)

       AGP
                 Video
                                              Floppy        Serial
                                Ether   USB
CPU
              Northbridge       Southbridge
                                               Super I/O
                (MCH)              (ICH)
CPU
                                 PCI    ATA
                                                       EC
                 RAM
                                              LPC
      FSB
                         Proprietary
                         (Hypertransport,
                         V-link, etc.)
PC platform (AMD/PCI Express)

        PCIe
                  Video
                                                Floppy        Serial
                                 Ether   USB
  CPU
               Northbridge        Southbridge
                                                 Super I/O
                 (MCH)               (ICH)
  CPU
                                  PCI    ATA
                                                         EC
                  GigE
RAM                          PCIe or
                             CSA
Legacy boot process

• CPU RESET pin triggered, jumps to boot vector
  – Real mode, low memory, etc., just like old DOS days
• BIOS decompressed from flash, executed
  –   Self-tests
  –   Code copied into SMRAM and SMM enabled
  –   Initializes built-in devices and cards in slots
  –   Devices set to initial power states
  –   Finds other CPUs
  –   Sets up RAM tables for OS (e.g., MPtable)
• Loads boot sector and jumps to it
Power management
• Enumerate devices, including hotplug events
   – Location
   – Resources
   – State (on/off/missing)
• Suspend system
   – RAM
   – Disk
   – Power-off
• Power down/up devices based on system activity
   – CPU
   – Internal chipset devices
   – External devices on a bus
• Thermal management
   – Fans
   – Passive cooling
Legacy power management (APM)
• BIOS handles all PM, began with the 386SL
• System management interrupt (SMI) is regularly triggered by device
  activity
• BIOS code running from SMM performs power activity
   – Powers down idle devices
   – Implements suspend/resume
   – Controls device state
• Problems
   – No OS visibility of what BIOS is doing (“but I don’t want it powered down
     now”)
   – Duplicated effort in maintaining large, platform-specific codebase
   – Buggy, especially 32-bit entry points
   – PC-centric (i386 only)
ACPI
• OS and BIOS now share power management
   – OS: policy, drivers, and a few hooks
   – BIOS: delivers the SMI (now SCI) to the OS and provides tables that
     describe what the OS can do
• History
   – Appeared in 1998, not really implemented until 1999
   – Microsoft implementation significantly different from the standard before
     Windows XP (2001)
   – Spec is updated after major platforms ship with the new features
• Problems
   – Platform-specific ACPI devices (acpi_ibm, acpi_toshiba, …) create
     duplicated effort
   – Buggy, especially BIOS interface
   – PC-centric (i386, amd64, ia64)
ACPI operation
• BIOS creates tables on boot
   –   Table of contents (RSDT/XSDT), pointed to by RSDP
   –   DSDT: AML bytecode and device tree
   –   MADT: APIC table for SMP and interrupt routing
   –   FADT: fixed features, superceded by DSDT in many cases
• OS finds tables in memory and activates ACPI
   – Writes special value to SMM code which enables ACPI mode
     and the SCI in particular
   – SCI and SMI are shared, BIOS handles SMI transparently
• OS enumerates devices and config
   – Walks device tree from DSDT
   – Powers up any device the BIOS left off
   – Allocates resources and attaches drivers
AML operation
• DSDT consists of bytecode
• Bytecode describes regions (IO ports, memory-mapped devices),
  objects (containers), methods, and opcodes
• Example:
       OperationRegion (SCPP, SystemIO, 0xB2, 0x01)
       Field (SCPP, ByteAcc, NoLock, Preserve)
       {
           SMIP,   8
       }

       Method (_SB.PCI0._INI, 0, NotSerialized)
       {
           If (STRC (_OS, quot;Microsoft Windowsquot;)) {
               Store (0x56, SMIP)
       }



• OS AML interpreter runs the requested method by interpreting the
  code and reading/writing to memory as it directs
ACPI operation (suspend)

• User presses “sleep” button
• Super I/O gets interrupt on GPIO pin
• EC function raises the SMI/SCI interrupt
• OS EC driver queries EC for event type (sleep pressed)
• OS delivers Notify event to the button driver
• Button driver calls OS-specific GoToSleep function
• OS walks device tree, saving state
• OS executes AML bytecode for requested sleep
  operation (say, _S3)
• Sequence of IO writes causes chipset to enter S3 (STR)
ACPI operation (resume)

• User presses “wake” button
• Super I/O gets interrupt on GPIO pin
• EC raises the SMI/SCI interrupt and signals chipset to
  wake
• BIOS resumes any devices it manages and jumps to OS
  wake vector
• OS walks device tree, restoring state
• OS executes AML bytecode for resume (_WAK)
• OS continues execution of processes
ACPI operation (probe)

• Device tree example:
 Device (PCI0)           Internal PCI   Device (PWRB)   ACPI power button
         Device (USB0)   USB ports      Device (FAN)    ACPI fan
         Device (USB1)                  Device (PCI0)
         Device (USBE)                          Device (LNKA)    PCI irq link
         Device (ICHX)   ATA on-board           Device (LNKB)
                 Device (PRIM)                  ...
                     Device (MAST)              Device (PX40)    Super I/O
                     Device (SLAV)                      Device (SYSR)    IO port resources
                 Device (SECN)                          Device (PIC)     Legacy irq control
                     Device (MAST)                      Device (RTC)     Real-time clock
                     Device (SLAV)                      Device (SPKR)    BIOS speaker
         Device (IDE1)   ATA (dock)                     Device (COPR)    FPU
                 Device (PRIM)                          Device (FDC0)    Floppy
                     Device (DRV0)                      Device (UAR1)    Serial 1
                     Device (DRV1)                      Device (UAR2)    Serial 2
                 Device (SECD)                          Device (IRDA)    Infrared (serial)
                     Device (DRV0)                      Device (LPT1)    Parallel
                     Device (DRV1)                      Device (ECP1)    Parallel (ECP access)
                                                        Device (PS2M)    PS/2 mouse
                                                        Device (PS2K)    PS/2 keyboard
 Continued                                              Device (PSMR)
                                                        Device (PMIO)
FreeBSD history
•   1999
     – First implemented by dfr@
•   2000 - 2001
     – Moved to Intel ACPI-CA interpreter
     – Battery, suspend/resume, and core driver brought in (msmith@, iwasaki@,
       takawata@)
•   2002 - 2003
     – New imports, EC updates, _PxD device power states
     – I stepped too close to the sucking vortex
•   2004
     – rman support
•   2005
     – cpufreq framework implemented
     – CPU-specific drivers for SpeedStep (new, ICH), Powernow, P4TCC, throttling
•   2006
     – acpi_dock (iwasaki@ returns!)
To be continued…

Más contenido relacionado

La actualidad más candente

Useful USB Gadgets on Linux
Useful USB Gadgets on LinuxUseful USB Gadgets on Linux
Useful USB Gadgets on LinuxGary Bisson
 
Project ACRN system debug
Project ACRN system debugProject ACRN system debug
Project ACRN system debugProject ACRN
 
Reliability, Availability, and Serviceability (RAS) on ARM64 status - SFO17-203
Reliability, Availability, and Serviceability (RAS) on ARM64 status - SFO17-203Reliability, Availability, and Serviceability (RAS) on ARM64 status - SFO17-203
Reliability, Availability, and Serviceability (RAS) on ARM64 status - SFO17-203Linaro
 
Redteaming HID attacks
Redteaming HID attacksRedteaming HID attacks
Redteaming HID attacksJuan Espin
 
Project ACRN Yocto Project meta-acrn layer introduction
Project ACRN Yocto Project meta-acrn layer introductionProject ACRN Yocto Project meta-acrn layer introduction
Project ACRN Yocto Project meta-acrn layer introductionProject ACRN
 
Kernel Features for Reducing Power Consumption on Embedded Devices
Kernel Features for Reducing Power Consumption on Embedded DevicesKernel Features for Reducing Power Consumption on Embedded Devices
Kernel Features for Reducing Power Consumption on Embedded DevicesRyo Jin
 
SR-IOV: The Key Enabling Technology for Fully Virtualized HPC Clusters
SR-IOV: The Key Enabling Technology for Fully Virtualized HPC ClustersSR-IOV: The Key Enabling Technology for Fully Virtualized HPC Clusters
SR-IOV: The Key Enabling Technology for Fully Virtualized HPC ClustersGlenn K. Lockwood
 
Note - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and InstallNote - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and Installboyw165
 
Debugging linux kernel tools and techniques
Debugging linux kernel tools and  techniquesDebugging linux kernel tools and  techniques
Debugging linux kernel tools and techniquesSatpal Parmar
 
Nvidia’s tegra line of processors for mobile devices2 2
Nvidia’s tegra line of processors for mobile devices2 2Nvidia’s tegra line of processors for mobile devices2 2
Nvidia’s tegra line of processors for mobile devices2 2Sukul Yarraguntla
 
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introduction
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introductionACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introduction
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introductionProject ACRN
 
Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...
Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...
Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...Linaro
 
ACRN vMeet-Up EU 2021 - hypervisor new platform enabling
ACRN vMeet-Up EU 2021 - hypervisor new platform enablingACRN vMeet-Up EU 2021 - hypervisor new platform enabling
ACRN vMeet-Up EU 2021 - hypervisor new platform enablingProject ACRN
 
Translation Cache Policies for Dynamic Binary Translation
Translation Cache Policies for Dynamic Binary TranslationTranslation Cache Policies for Dynamic Binary Translation
Translation Cache Policies for Dynamic Binary TranslationSaber Ferjani
 
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...Project ACRN
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Linaro
 

La actualidad más candente (20)

Useful USB Gadgets on Linux
Useful USB Gadgets on LinuxUseful USB Gadgets on Linux
Useful USB Gadgets on Linux
 
Project ACRN system debug
Project ACRN system debugProject ACRN system debug
Project ACRN system debug
 
Linux Usb overview
Linux Usb  overviewLinux Usb  overview
Linux Usb overview
 
Reliability, Availability, and Serviceability (RAS) on ARM64 status - SFO17-203
Reliability, Availability, and Serviceability (RAS) on ARM64 status - SFO17-203Reliability, Availability, and Serviceability (RAS) on ARM64 status - SFO17-203
Reliability, Availability, and Serviceability (RAS) on ARM64 status - SFO17-203
 
Redteaming HID attacks
Redteaming HID attacksRedteaming HID attacks
Redteaming HID attacks
 
Project ACRN Yocto Project meta-acrn layer introduction
Project ACRN Yocto Project meta-acrn layer introductionProject ACRN Yocto Project meta-acrn layer introduction
Project ACRN Yocto Project meta-acrn layer introduction
 
Kernel Features for Reducing Power Consumption on Embedded Devices
Kernel Features for Reducing Power Consumption on Embedded DevicesKernel Features for Reducing Power Consumption on Embedded Devices
Kernel Features for Reducing Power Consumption on Embedded Devices
 
SR-IOV: The Key Enabling Technology for Fully Virtualized HPC Clusters
SR-IOV: The Key Enabling Technology for Fully Virtualized HPC ClustersSR-IOV: The Key Enabling Technology for Fully Virtualized HPC Clusters
SR-IOV: The Key Enabling Technology for Fully Virtualized HPC Clusters
 
Note - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and InstallNote - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and Install
 
Debugging linux kernel tools and techniques
Debugging linux kernel tools and  techniquesDebugging linux kernel tools and  techniques
Debugging linux kernel tools and techniques
 
Nvidia’s tegra line of processors for mobile devices2 2
Nvidia’s tegra line of processors for mobile devices2 2Nvidia’s tegra line of processors for mobile devices2 2
Nvidia’s tegra line of processors for mobile devices2 2
 
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introduction
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introductionACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introduction
ACRN vMeet-Up EU 2021 - shared memory based inter-vm communication introduction
 
Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...
Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...
Q2.12: Idling ARMs in a busy world: Linux Power Management for ARM Multiclust...
 
ACRN vMeet-Up EU 2021 - hypervisor new platform enabling
ACRN vMeet-Up EU 2021 - hypervisor new platform enablingACRN vMeet-Up EU 2021 - hypervisor new platform enabling
ACRN vMeet-Up EU 2021 - hypervisor new platform enabling
 
Translation Cache Policies for Dynamic Binary Translation
Translation Cache Policies for Dynamic Binary TranslationTranslation Cache Policies for Dynamic Binary Translation
Translation Cache Policies for Dynamic Binary Translation
 
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
 
Agnostic Device Drivers
Agnostic Device DriversAgnostic Device Drivers
Agnostic Device Drivers
 
FPGA Configuration
FPGA ConfigurationFPGA Configuration
FPGA Configuration
 
SR-IOV Introduce
SR-IOV IntroduceSR-IOV Introduce
SR-IOV Introduce
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_
 

Destacado

Using FreeBSD to Design a Secure Digital Cinema Server (Usenix 2004)
Using FreeBSD to Design a Secure Digital Cinema Server (Usenix 2004)Using FreeBSD to Design a Secure Digital Cinema Server (Usenix 2004)
Using FreeBSD to Design a Secure Digital Cinema Server (Usenix 2004)Nate Lawson
 
Crypto Strikes Back! (Google 2009)
Crypto Strikes Back! (Google 2009)Crypto Strikes Back! (Google 2009)
Crypto Strikes Back! (Google 2009)Nate Lawson
 
Foundations of Platform Security
Foundations of Platform SecurityFoundations of Platform Security
Foundations of Platform SecurityNate Lawson
 
Copy Protection Wars: Analyzing Retro and Modern Schemes (RSA 2007)
Copy Protection Wars: Analyzing Retro and Modern Schemes (RSA 2007)Copy Protection Wars: Analyzing Retro and Modern Schemes (RSA 2007)
Copy Protection Wars: Analyzing Retro and Modern Schemes (RSA 2007)Nate Lawson
 
When Crypto Attacks! (Yahoo 2009)
When Crypto Attacks! (Yahoo 2009)When Crypto Attacks! (Yahoo 2009)
When Crypto Attacks! (Yahoo 2009)Nate Lawson
 
Highway to Hell: Hacking Toll Systems (Blackhat 2008)
Highway to Hell: Hacking Toll Systems (Blackhat 2008)Highway to Hell: Hacking Toll Systems (Blackhat 2008)
Highway to Hell: Hacking Toll Systems (Blackhat 2008)Nate Lawson
 
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)Nate Lawson
 
Designing and Attacking DRM (RSA 2008)
Designing and Attacking DRM (RSA 2008)Designing and Attacking DRM (RSA 2008)
Designing and Attacking DRM (RSA 2008)Nate Lawson
 
TLS Optimization
TLS OptimizationTLS Optimization
TLS OptimizationNate Lawson
 
TLS/SSL MAC security flaw
TLS/SSL MAC security flawTLS/SSL MAC security flaw
TLS/SSL MAC security flawNate Lawson
 
TLS/SSL Protocol Design 201006
TLS/SSL Protocol Design 201006TLS/SSL Protocol Design 201006
TLS/SSL Protocol Design 201006Nate Lawson
 
TLS/SSL Protocol Design
TLS/SSL Protocol DesignTLS/SSL Protocol Design
TLS/SSL Protocol DesignNate Lawson
 

Destacado (12)

Using FreeBSD to Design a Secure Digital Cinema Server (Usenix 2004)
Using FreeBSD to Design a Secure Digital Cinema Server (Usenix 2004)Using FreeBSD to Design a Secure Digital Cinema Server (Usenix 2004)
Using FreeBSD to Design a Secure Digital Cinema Server (Usenix 2004)
 
Crypto Strikes Back! (Google 2009)
Crypto Strikes Back! (Google 2009)Crypto Strikes Back! (Google 2009)
Crypto Strikes Back! (Google 2009)
 
Foundations of Platform Security
Foundations of Platform SecurityFoundations of Platform Security
Foundations of Platform Security
 
Copy Protection Wars: Analyzing Retro and Modern Schemes (RSA 2007)
Copy Protection Wars: Analyzing Retro and Modern Schemes (RSA 2007)Copy Protection Wars: Analyzing Retro and Modern Schemes (RSA 2007)
Copy Protection Wars: Analyzing Retro and Modern Schemes (RSA 2007)
 
When Crypto Attacks! (Yahoo 2009)
When Crypto Attacks! (Yahoo 2009)When Crypto Attacks! (Yahoo 2009)
When Crypto Attacks! (Yahoo 2009)
 
Highway to Hell: Hacking Toll Systems (Blackhat 2008)
Highway to Hell: Hacking Toll Systems (Blackhat 2008)Highway to Hell: Hacking Toll Systems (Blackhat 2008)
Highway to Hell: Hacking Toll Systems (Blackhat 2008)
 
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
Don't Tell Joanna the Virtualized Rootkit is Dead (Blackhat 2007)
 
Designing and Attacking DRM (RSA 2008)
Designing and Attacking DRM (RSA 2008)Designing and Attacking DRM (RSA 2008)
Designing and Attacking DRM (RSA 2008)
 
TLS Optimization
TLS OptimizationTLS Optimization
TLS Optimization
 
TLS/SSL MAC security flaw
TLS/SSL MAC security flawTLS/SSL MAC security flaw
TLS/SSL MAC security flaw
 
TLS/SSL Protocol Design 201006
TLS/SSL Protocol Design 201006TLS/SSL Protocol Design 201006
TLS/SSL Protocol Design 201006
 
TLS/SSL Protocol Design
TLS/SSL Protocol DesignTLS/SSL Protocol Design
TLS/SSL Protocol Design
 

Similar a ACPI and FreeBSD (Part 1)

Project ACRN expose and pass through platform hidden PCIe devices to SOS
Project ACRN expose and pass through platform hidden PCIe devices to SOSProject ACRN expose and pass through platform hidden PCIe devices to SOS
Project ACRN expose and pass through platform hidden PCIe devices to SOSProject ACRN
 
[Defcon] Hardware backdooring is practical
[Defcon] Hardware backdooring is practical[Defcon] Hardware backdooring is practical
[Defcon] Hardware backdooring is practicalMoabi.com
 
emips_overview_apr08
emips_overview_apr08emips_overview_apr08
emips_overview_apr08Neil Pittman
 
Computerhardware 130909042641-
Computerhardware 130909042641-Computerhardware 130909042641-
Computerhardware 130909042641-zeyneptsd
 
Computer Components
Computer ComponentsComputer Components
Computer ComponentsBeth Sockman
 
07. Mainboard (System Board, Motherboard)
07. Mainboard (System Board, Motherboard)07. Mainboard (System Board, Motherboard)
07. Mainboard (System Board, Motherboard)Akhila Dakshina
 
[Hackito2012] Hardware backdooring is practical
[Hackito2012] Hardware backdooring is practical[Hackito2012] Hardware backdooring is practical
[Hackito2012] Hardware backdooring is practicalMoabi.com
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequenceHoucheng Lin
 
Nd0201 systemcomponents internal
Nd0201 systemcomponents internalNd0201 systemcomponents internal
Nd0201 systemcomponents internalPanzer944
 
Hardware backdooring is practical : slides
Hardware backdooring is practical : slidesHardware backdooring is practical : slides
Hardware backdooring is practical : slidesMoabi.com
 
00 Hardware Of Personal Computer V1 1
00 Hardware Of Personal Computer V1 100 Hardware Of Personal Computer V1 1
00 Hardware Of Personal Computer V1 1Rajan Das
 
Chapter 6 input output
Chapter 6 input outputChapter 6 input output
Chapter 6 input outputrisal07
 
Raspberry Pi tutorial
Raspberry Pi tutorialRaspberry Pi tutorial
Raspberry Pi tutorial艾鍗科技
 
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...PROIDEA
 
PIC Introduction and explained in detailed
PIC Introduction and explained in detailedPIC Introduction and explained in detailed
PIC Introduction and explained in detailedAnkita Tiwari
 

Similar a ACPI and FreeBSD (Part 1) (20)

1. hardware basics
1. hardware basics1. hardware basics
1. hardware basics
 
101 1.1 hardware settings
101 1.1 hardware settings101 1.1 hardware settings
101 1.1 hardware settings
 
Project ACRN expose and pass through platform hidden PCIe devices to SOS
Project ACRN expose and pass through platform hidden PCIe devices to SOSProject ACRN expose and pass through platform hidden PCIe devices to SOS
Project ACRN expose and pass through platform hidden PCIe devices to SOS
 
[Defcon] Hardware backdooring is practical
[Defcon] Hardware backdooring is practical[Defcon] Hardware backdooring is practical
[Defcon] Hardware backdooring is practical
 
emips_overview_apr08
emips_overview_apr08emips_overview_apr08
emips_overview_apr08
 
XS Boston 2008 Self IO Emulation
XS Boston 2008 Self IO EmulationXS Boston 2008 Self IO Emulation
XS Boston 2008 Self IO Emulation
 
Computerhardware 130909042641-
Computerhardware 130909042641-Computerhardware 130909042641-
Computerhardware 130909042641-
 
Computer Components
Computer ComponentsComputer Components
Computer Components
 
07. Mainboard (System Board, Motherboard)
07. Mainboard (System Board, Motherboard)07. Mainboard (System Board, Motherboard)
07. Mainboard (System Board, Motherboard)
 
[Hackito2012] Hardware backdooring is practical
[Hackito2012] Hardware backdooring is practical[Hackito2012] Hardware backdooring is practical
[Hackito2012] Hardware backdooring is practical
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
 
Nd0201 systemcomponents internal
Nd0201 systemcomponents internalNd0201 systemcomponents internal
Nd0201 systemcomponents internal
 
Hardware backdooring is practical : slides
Hardware backdooring is practical : slidesHardware backdooring is practical : slides
Hardware backdooring is practical : slides
 
00 Hardware Of Personal Computer V1 1
00 Hardware Of Personal Computer V1 100 Hardware Of Personal Computer V1 1
00 Hardware Of Personal Computer V1 1
 
Mother board
Mother boardMother board
Mother board
 
Chap1 chipset
Chap1 chipsetChap1 chipset
Chap1 chipset
 
Chapter 6 input output
Chapter 6 input outputChapter 6 input output
Chapter 6 input output
 
Raspberry Pi tutorial
Raspberry Pi tutorialRaspberry Pi tutorial
Raspberry Pi tutorial
 
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...
 
PIC Introduction and explained in detailed
PIC Introduction and explained in detailedPIC Introduction and explained in detailed
PIC Introduction and explained in detailed
 

Último

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Último (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

ACPI and FreeBSD (Part 1)

  • 1. ACPI and FreeBSD Nate Lawson nate@root.org Bay Area FreeBSD Users’ Group May 3, 2006
  • 2. Overview • Introduction – PC platform and architecture – ACPI • FreeBSD ACPI support • Challenges and issues • How you can help
  • 3. How I got here • Background in security and cryptography • Worked on storage security in my day job – Built a Fibre Channel encryptor – Built a parallel SCSI encryptor – Tired of starting anew each time, wrote and committed a SCSI target driver framework • But my laptop wasn’t working so well • Began working on ACPI in my spare time – 4 years later, here I am
  • 4. PC platform (classic) AGP Video Floppy Serial Ether USB CPU Northbridge Southbridge Super I/O (MCH) (ICH) CPU PCI ATA EC RAM LPC FSB Proprietary (Hypertransport, V-link, etc.)
  • 5. PC platform (AMD/PCI Express) PCIe Video Floppy Serial Ether USB CPU Northbridge Southbridge Super I/O (MCH) (ICH) CPU PCI ATA EC GigE RAM PCIe or CSA
  • 6. Legacy boot process • CPU RESET pin triggered, jumps to boot vector – Real mode, low memory, etc., just like old DOS days • BIOS decompressed from flash, executed – Self-tests – Code copied into SMRAM and SMM enabled – Initializes built-in devices and cards in slots – Devices set to initial power states – Finds other CPUs – Sets up RAM tables for OS (e.g., MPtable) • Loads boot sector and jumps to it
  • 7. Power management • Enumerate devices, including hotplug events – Location – Resources – State (on/off/missing) • Suspend system – RAM – Disk – Power-off • Power down/up devices based on system activity – CPU – Internal chipset devices – External devices on a bus • Thermal management – Fans – Passive cooling
  • 8. Legacy power management (APM) • BIOS handles all PM, began with the 386SL • System management interrupt (SMI) is regularly triggered by device activity • BIOS code running from SMM performs power activity – Powers down idle devices – Implements suspend/resume – Controls device state • Problems – No OS visibility of what BIOS is doing (“but I don’t want it powered down now”) – Duplicated effort in maintaining large, platform-specific codebase – Buggy, especially 32-bit entry points – PC-centric (i386 only)
  • 9. ACPI • OS and BIOS now share power management – OS: policy, drivers, and a few hooks – BIOS: delivers the SMI (now SCI) to the OS and provides tables that describe what the OS can do • History – Appeared in 1998, not really implemented until 1999 – Microsoft implementation significantly different from the standard before Windows XP (2001) – Spec is updated after major platforms ship with the new features • Problems – Platform-specific ACPI devices (acpi_ibm, acpi_toshiba, …) create duplicated effort – Buggy, especially BIOS interface – PC-centric (i386, amd64, ia64)
  • 10. ACPI operation • BIOS creates tables on boot – Table of contents (RSDT/XSDT), pointed to by RSDP – DSDT: AML bytecode and device tree – MADT: APIC table for SMP and interrupt routing – FADT: fixed features, superceded by DSDT in many cases • OS finds tables in memory and activates ACPI – Writes special value to SMM code which enables ACPI mode and the SCI in particular – SCI and SMI are shared, BIOS handles SMI transparently • OS enumerates devices and config – Walks device tree from DSDT – Powers up any device the BIOS left off – Allocates resources and attaches drivers
  • 11. AML operation • DSDT consists of bytecode • Bytecode describes regions (IO ports, memory-mapped devices), objects (containers), methods, and opcodes • Example: OperationRegion (SCPP, SystemIO, 0xB2, 0x01) Field (SCPP, ByteAcc, NoLock, Preserve) { SMIP, 8 } Method (_SB.PCI0._INI, 0, NotSerialized) { If (STRC (_OS, quot;Microsoft Windowsquot;)) { Store (0x56, SMIP) } • OS AML interpreter runs the requested method by interpreting the code and reading/writing to memory as it directs
  • 12. ACPI operation (suspend) • User presses “sleep” button • Super I/O gets interrupt on GPIO pin • EC function raises the SMI/SCI interrupt • OS EC driver queries EC for event type (sleep pressed) • OS delivers Notify event to the button driver • Button driver calls OS-specific GoToSleep function • OS walks device tree, saving state • OS executes AML bytecode for requested sleep operation (say, _S3) • Sequence of IO writes causes chipset to enter S3 (STR)
  • 13. ACPI operation (resume) • User presses “wake” button • Super I/O gets interrupt on GPIO pin • EC raises the SMI/SCI interrupt and signals chipset to wake • BIOS resumes any devices it manages and jumps to OS wake vector • OS walks device tree, restoring state • OS executes AML bytecode for resume (_WAK) • OS continues execution of processes
  • 14. ACPI operation (probe) • Device tree example: Device (PCI0) Internal PCI Device (PWRB) ACPI power button Device (USB0) USB ports Device (FAN) ACPI fan Device (USB1) Device (PCI0) Device (USBE) Device (LNKA) PCI irq link Device (ICHX) ATA on-board Device (LNKB) Device (PRIM) ... Device (MAST) Device (PX40) Super I/O Device (SLAV) Device (SYSR) IO port resources Device (SECN) Device (PIC) Legacy irq control Device (MAST) Device (RTC) Real-time clock Device (SLAV) Device (SPKR) BIOS speaker Device (IDE1) ATA (dock) Device (COPR) FPU Device (PRIM) Device (FDC0) Floppy Device (DRV0) Device (UAR1) Serial 1 Device (DRV1) Device (UAR2) Serial 2 Device (SECD) Device (IRDA) Infrared (serial) Device (DRV0) Device (LPT1) Parallel Device (DRV1) Device (ECP1) Parallel (ECP access) Device (PS2M) PS/2 mouse Device (PS2K) PS/2 keyboard Continued Device (PSMR) Device (PMIO)
  • 15. FreeBSD history • 1999 – First implemented by dfr@ • 2000 - 2001 – Moved to Intel ACPI-CA interpreter – Battery, suspend/resume, and core driver brought in (msmith@, iwasaki@, takawata@) • 2002 - 2003 – New imports, EC updates, _PxD device power states – I stepped too close to the sucking vortex • 2004 – rman support • 2005 – cpufreq framework implemented – CPU-specific drivers for SpeedStep (new, ICH), Powernow, P4TCC, throttling • 2006 – acpi_dock (iwasaki@ returns!)