{
        unsigned long flags;
        struct eeh_event *event;
-       struct eeh_dev *edev;
+       struct eeh_pe *pe;
 
        set_task_comm(current, "eehd");
 
 
        /* Serialize processing of EEH events */
        mutex_lock(&eeh_event_mutex);
-       edev = event->edev;
-       eeh_mark_slot(eeh_dev_to_of_node(edev), EEH_MODE_RECOVERING);
-
-       printk(KERN_INFO "EEH: Detected PCI bus error on device %s\n",
-              eeh_pci_name(edev->pdev));
+       pe = event->pe;
+       eeh_pe_state_mark(pe, EEH_PE_RECOVERING);
+       pr_info("EEH: Detected PCI bus error on PHB#%d-PE#%x\n",
+               pe->phb->global_number, pe->addr);
 
        set_current_state(TASK_INTERRUPTIBLE);  /* Don't add to load average */
-       edev = handle_eeh_events(event);
-
-       if (edev) {
-               eeh_clear_slot(eeh_dev_to_of_node(edev), EEH_MODE_RECOVERING);
-               pci_dev_put(edev->pdev);
-       }
+       handle_eeh_events(event);
+       eeh_pe_state_clear(pe, EEH_PE_RECOVERING);
 
        kfree(event);
        mutex_unlock(&eeh_event_mutex);
 
        /* If there are no new errors after an hour, clear the counter. */
-       if (edev && edev->freeze_count>0) {
+       if (pe && pe->freeze_count > 0) {
                msleep_interruptible(3600*1000);
-               if (edev->freeze_count>0)
-                       edev->freeze_count--;
+               if (pe->freeze_count > 0)
+                       pe->freeze_count--;
 
        }