/* ????????? DO WE NEED TO WRITE ANYTHING INTO THE PCI CONFIG SPACE BACK ?????????? */
                } else {
                        /* This is Memory */
-                       start_address &= PCI_BASE_ADDRESS_MEM_MASK;
                        if (start_address & PCI_BASE_ADDRESS_MEM_PREFETCH) {
                                /* pfmem */
                                debug ("start address of pfmem is %x\n", start_address);
+                               start_address &= PCI_BASE_ADDRESS_MEM_MASK;
 
                                if (ibmphp_find_resource (bus, start_address, &pfmem, PFMEM) < 0) {
                                        err ("cannot find corresponding PFMEM resource to remove\n");
                        } else {
                                /* regular memory */
                                debug ("start address of mem is %x\n", start_address);
+                               start_address &= PCI_BASE_ADDRESS_MEM_MASK;
+
                                if (ibmphp_find_resource (bus, start_address, &mem, MEM) < 0) {
                                        err ("cannot find corresponding MEM resource to remove\n");
                                        return -EIO;
                        /* ????????? DO WE NEED TO WRITE ANYTHING INTO THE PCI CONFIG SPACE BACK ?????????? */
                } else {
                        /* This is Memory */
-                       start_address &= PCI_BASE_ADDRESS_MEM_MASK;
                        if (start_address & PCI_BASE_ADDRESS_MEM_PREFETCH) {
                                /* pfmem */
+                               start_address &= PCI_BASE_ADDRESS_MEM_MASK;
                                if (ibmphp_find_resource (bus, start_address, &pfmem, PFMEM) < 0) {
                                        err ("cannot find corresponding PFMEM resource to remove\n");
                                        return -EINVAL;
                                }
                        } else {
                                /* regular memory */
+                               start_address &= PCI_BASE_ADDRESS_MEM_MASK;
                                if (ibmphp_find_resource (bus, start_address, &mem, MEM) < 0) {
                                        err ("cannot find corresponding MEM resource to remove\n");
                                        return -EINVAL;