Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ACPICA: Resources: Provide common part for struct acpi_resource_address structures.

struct acpi_resource_address and struct acpi_resource_extended_address64 share substracts
just at different offsets. To unify the parsing functions, OSPMs like Linux
need a new ACPI_ADDRESS64_ATTRIBUTE as their substructs, so they can
extract the shared data.

This patch also synchronizes the structure changes to the Linux kernel.
The usages are searched by matching the following keywords:
1. acpi_resource_address
2. acpi_resource_extended_address
3. ACPI_RESOURCE_TYPE_ADDRESS
4. ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS
And we found and fixed the usages in the following files:
arch/ia64/kernel/acpi-ext.c
arch/ia64/pci/pci.c
arch/x86/pci/acpi.c
arch/x86/pci/mmconfig-shared.c
drivers/xen/xen-acpi-memhotplug.c
drivers/acpi/acpi_memhotplug.c
drivers/acpi/pci_root.c
drivers/acpi/resource.c
drivers/char/hpet.c
drivers/pnp/pnpacpi/rsparser.c
drivers/hv/vmbus_drv.c

Build tests are passed with defconfig/allnoconfig/allyesconfig and
defconfig+CONFIG_ACPI=n.

Original-by: Thomas Gleixner <tglx@linutronix.de>
Original-by: Jiang Liu <jiang.liu@linux.intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Lv Zheng and committed by
Rafael J. Wysocki
a45de93e e044d8f9

+129 -119
+3 -3
arch/ia64/kernel/acpi-ext.c
··· 69 69 status = acpi_resource_to_address64(resource, &addr); 70 70 if (ACPI_SUCCESS(status) && 71 71 addr.resource_type == ACPI_MEMORY_RANGE && 72 - addr.address_length && 72 + addr.address.address_length && 73 73 addr.producer_consumer == ACPI_CONSUMER) { 74 - space->base = addr.minimum; 75 - space->length = addr.address_length; 74 + space->base = addr.address.minimum; 75 + space->length = addr.address.address_length; 76 76 return AE_CTRL_TERMINATE; 77 77 } 78 78 return AE_OK; /* keep looking */
+7 -7
arch/ia64/pci/pci.c
··· 188 188 189 189 name = (char *)(iospace + 1); 190 190 191 - min = addr->minimum; 192 - max = min + addr->address_length - 1; 191 + min = addr->address.minimum; 192 + max = min + addr->address.address_length - 1; 193 193 if (addr->info.io.translation_type == ACPI_SPARSE_TRANSLATION) 194 194 sparse = 1; 195 195 196 - space_nr = new_space(addr->translation_offset, sparse); 196 + space_nr = new_space(addr->address.translation_offset, sparse); 197 197 if (space_nr == ~0) 198 198 goto free_resource; 199 199 ··· 247 247 if (ACPI_SUCCESS(status) && 248 248 (addr->resource_type == ACPI_MEMORY_RANGE || 249 249 addr->resource_type == ACPI_IO_RANGE) && 250 - addr->address_length && 250 + addr->address.address_length && 251 251 addr->producer_consumer == ACPI_PRODUCER) 252 252 return AE_OK; 253 253 ··· 284 284 if (addr.resource_type == ACPI_MEMORY_RANGE) { 285 285 flags = IORESOURCE_MEM; 286 286 root = &iomem_resource; 287 - offset = addr.translation_offset; 287 + offset = addr.address.translation_offset; 288 288 } else if (addr.resource_type == ACPI_IO_RANGE) { 289 289 flags = IORESOURCE_IO; 290 290 root = &ioport_resource; ··· 297 297 resource = &info->res[info->res_num]; 298 298 resource->name = info->name; 299 299 resource->flags = flags; 300 - resource->start = addr.minimum + offset; 301 - resource->end = resource->start + addr.address_length - 1; 300 + resource->start = addr.address.minimum + offset; 301 + resource->end = resource->start + addr.address.address_length - 1; 302 302 info->res_offset[info->res_num] = offset; 303 303 304 304 if (insert_resource(root, resource)) {
+13 -13
arch/x86/pci/acpi.c
··· 231 231 case ACPI_RESOURCE_TYPE_MEMORY24: 232 232 memory24 = &resource->data.memory24; 233 233 addr->resource_type = ACPI_MEMORY_RANGE; 234 - addr->minimum = memory24->minimum; 235 - addr->address_length = memory24->address_length; 236 - addr->maximum = addr->minimum + addr->address_length - 1; 234 + addr->address.minimum = memory24->minimum; 235 + addr->address.address_length = memory24->address_length; 236 + addr->address.maximum = addr->address.minimum + addr->address.address_length - 1; 237 237 return AE_OK; 238 238 case ACPI_RESOURCE_TYPE_MEMORY32: 239 239 memory32 = &resource->data.memory32; 240 240 addr->resource_type = ACPI_MEMORY_RANGE; 241 - addr->minimum = memory32->minimum; 242 - addr->address_length = memory32->address_length; 243 - addr->maximum = addr->minimum + addr->address_length - 1; 241 + addr->address.minimum = memory32->minimum; 242 + addr->address.address_length = memory32->address_length; 243 + addr->address.maximum = addr->address.minimum + addr->address.address_length - 1; 244 244 return AE_OK; 245 245 case ACPI_RESOURCE_TYPE_FIXED_MEMORY32: 246 246 fixed_memory32 = &resource->data.fixed_memory32; 247 247 addr->resource_type = ACPI_MEMORY_RANGE; 248 - addr->minimum = fixed_memory32->address; 249 - addr->address_length = fixed_memory32->address_length; 250 - addr->maximum = addr->minimum + addr->address_length - 1; 248 + addr->address.minimum = fixed_memory32->address; 249 + addr->address.address_length = fixed_memory32->address_length; 250 + addr->address.maximum = addr->address.minimum + addr->address.address_length - 1; 251 251 return AE_OK; 252 252 case ACPI_RESOURCE_TYPE_ADDRESS16: 253 253 case ACPI_RESOURCE_TYPE_ADDRESS32: ··· 256 256 if (ACPI_SUCCESS(status) && 257 257 (addr->resource_type == ACPI_MEMORY_RANGE || 258 258 addr->resource_type == ACPI_IO_RANGE) && 259 - addr->address_length > 0) { 259 + addr->address.address_length > 0) { 260 260 return AE_OK; 261 261 } 262 262 break; ··· 298 298 } else 299 299 return AE_OK; 300 300 301 - start = addr.minimum + addr.translation_offset; 302 - orig_end = end = addr.maximum + addr.translation_offset; 301 + start = addr.address.minimum + addr.address.translation_offset; 302 + orig_end = end = addr.address.maximum + addr.address.translation_offset; 303 303 304 304 /* Exclude non-addressable range or non-addressable portion of range */ 305 305 end = min(end, (u64)iomem_resource.end); ··· 320 320 res->flags = flags; 321 321 res->start = start; 322 322 res->end = end; 323 - info->res_offset[info->res_num] = addr.translation_offset; 323 + info->res_offset[info->res_num] = addr.address.translation_offset; 324 324 info->res_num++; 325 325 326 326 if (!pci_use_crs)
+3 -3
arch/x86/pci/mmconfig-shared.c
··· 397 397 398 398 status = acpi_resource_to_address64(res, &address); 399 399 if (ACPI_FAILURE(status) || 400 - (address.address_length <= 0) || 400 + (address.address.address_length <= 0) || 401 401 (address.resource_type != ACPI_MEMORY_RANGE)) 402 402 return AE_OK; 403 403 404 - if ((mcfg_res->start >= address.minimum) && 405 - (mcfg_res->end < (address.minimum + address.address_length))) { 404 + if ((mcfg_res->start >= address.address.minimum) && 405 + (mcfg_res->end < (address.address.minimum + address.address.address_length))) { 406 406 mcfg_res->flags = 1; 407 407 return AE_CTRL_TERMINATE; 408 408 }
+4 -4
drivers/acpi/acpi_memhotplug.c
··· 101 101 /* Can we combine the resource range information? */ 102 102 if ((info->caching == address64.info.mem.caching) && 103 103 (info->write_protect == address64.info.mem.write_protect) && 104 - (info->start_addr + info->length == address64.minimum)) { 105 - info->length += address64.address_length; 104 + (info->start_addr + info->length == address64.address.minimum)) { 105 + info->length += address64.address.address_length; 106 106 return AE_OK; 107 107 } 108 108 } ··· 114 114 INIT_LIST_HEAD(&new->list); 115 115 new->caching = address64.info.mem.caching; 116 116 new->write_protect = address64.info.mem.write_protect; 117 - new->start_addr = address64.minimum; 118 - new->length = address64.address_length; 117 + new->start_addr = address64.address.minimum; 118 + new->length = address64.address.address_length; 119 119 list_add_tail(&new->list, &mem_device->res_list); 120 120 121 121 return AE_OK;
+5 -4
drivers/acpi/acpica/rsaddr.c
··· 74 74 * Address Translation Offset 75 75 * Address Length 76 76 */ 77 - {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.address16.granularity), 77 + {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.address16.address.granularity), 78 78 AML_OFFSET(address16.granularity), 79 79 5}, 80 80 ··· 112 112 * Address Translation Offset 113 113 * Address Length 114 114 */ 115 - {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.address32.granularity), 115 + {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.address32.address.granularity), 116 116 AML_OFFSET(address32.granularity), 117 117 5}, 118 118 ··· 150 150 * Address Translation Offset 151 151 * Address Length 152 152 */ 153 - {ACPI_RSC_MOVE64, ACPI_RS_OFFSET(data.address64.granularity), 153 + {ACPI_RSC_MOVE64, ACPI_RS_OFFSET(data.address64.address.granularity), 154 154 AML_OFFSET(address64.granularity), 155 155 5}, 156 156 ··· 194 194 * Address Length 195 195 * Type-Specific Attribute 196 196 */ 197 - {ACPI_RSC_MOVE64, ACPI_RS_OFFSET(data.ext_address64.granularity), 197 + {ACPI_RSC_MOVE64, 198 + ACPI_RS_OFFSET(data.ext_address64.address.granularity), 198 199 AML_OFFSET(ext_address64.granularity), 199 200 6} 200 201 };
+30 -29
drivers/acpi/acpica/rsdumpinfo.c
··· 183 183 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address16), 184 184 "16-Bit WORD Address Space", NULL}, 185 185 {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 186 - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.granularity), "Granularity", 187 - NULL}, 188 - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.minimum), "Address Minimum", 189 - NULL}, 190 - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.maximum), "Address Maximum", 191 - NULL}, 192 - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.translation_offset), 186 + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.granularity), 187 + "Granularity", NULL}, 188 + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.minimum), 189 + "Address Minimum", NULL}, 190 + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.maximum), 191 + "Address Maximum", NULL}, 192 + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.translation_offset), 193 193 "Translation Offset", NULL}, 194 - {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address_length), 194 + {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.address_length), 195 195 "Address Length", NULL}, 196 196 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address16.resource_source), NULL, NULL} 197 197 }; ··· 200 200 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address32), 201 201 "32-Bit DWORD Address Space", NULL}, 202 202 {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 203 - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.granularity), "Granularity", 204 - NULL}, 205 - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.minimum), "Address Minimum", 206 - NULL}, 207 - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.maximum), "Address Maximum", 208 - NULL}, 209 - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.translation_offset), 203 + {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.granularity), 204 + "Granularity", NULL}, 205 + {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.minimum), 206 + "Address Minimum", NULL}, 207 + {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.maximum), 208 + "Address Maximum", NULL}, 209 + {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.translation_offset), 210 210 "Translation Offset", NULL}, 211 - {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address_length), 211 + {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.address_length), 212 212 "Address Length", NULL}, 213 213 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address32.resource_source), NULL, NULL} 214 214 }; ··· 217 217 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address64), 218 218 "64-Bit QWORD Address Space", NULL}, 219 219 {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 220 - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.granularity), "Granularity", 221 - NULL}, 222 - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.minimum), "Address Minimum", 223 - NULL}, 224 - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.maximum), "Address Maximum", 225 - NULL}, 226 - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.translation_offset), 220 + {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.granularity), 221 + "Granularity", NULL}, 222 + {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.minimum), 223 + "Address Minimum", NULL}, 224 + {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.maximum), 225 + "Address Maximum", NULL}, 226 + {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.translation_offset), 227 227 "Translation Offset", NULL}, 228 - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address_length), 228 + {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.address_length), 229 229 "Address Length", NULL}, 230 230 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address64.resource_source), NULL, NULL} 231 231 }; ··· 234 234 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_ext_address64), 235 235 "64-Bit Extended Address Space", NULL}, 236 236 {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 237 - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.granularity), 237 + {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.granularity), 238 238 "Granularity", NULL}, 239 - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.minimum), 239 + {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.minimum), 240 240 "Address Minimum", NULL}, 241 - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.maximum), 241 + {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.maximum), 242 242 "Address Maximum", NULL}, 243 - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.translation_offset), 243 + {ACPI_RSD_UINT64, 244 + ACPI_RSD_OFFSET(ext_address64.address.translation_offset), 244 245 "Translation Offset", NULL}, 245 - {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address_length), 246 + {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.address_length), 246 247 "Address Length", NULL}, 247 248 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.type_specific), 248 249 "Type-Specific Attribute", NULL}
+5 -5
drivers/acpi/acpica/rsxface.c
··· 60 60 ACPI_COPY_FIELD(out, in, min_address_fixed); \ 61 61 ACPI_COPY_FIELD(out, in, max_address_fixed); \ 62 62 ACPI_COPY_FIELD(out, in, info); \ 63 - ACPI_COPY_FIELD(out, in, granularity); \ 64 - ACPI_COPY_FIELD(out, in, minimum); \ 65 - ACPI_COPY_FIELD(out, in, maximum); \ 66 - ACPI_COPY_FIELD(out, in, translation_offset); \ 67 - ACPI_COPY_FIELD(out, in, address_length); \ 63 + ACPI_COPY_FIELD(out, in, address.granularity); \ 64 + ACPI_COPY_FIELD(out, in, address.minimum); \ 65 + ACPI_COPY_FIELD(out, in, address.maximum); \ 66 + ACPI_COPY_FIELD(out, in, address.translation_offset); \ 67 + ACPI_COPY_FIELD(out, in, address.address_length); \ 68 68 ACPI_COPY_FIELD(out, in, resource_source); 69 69 /* Local prototypes */ 70 70 static acpi_status
+3 -3
drivers/acpi/pci_root.c
··· 112 112 if (ACPI_FAILURE(status)) 113 113 return AE_OK; 114 114 115 - if ((address.address_length > 0) && 115 + if ((address.address.address_length > 0) && 116 116 (address.resource_type == ACPI_BUS_NUMBER_RANGE)) { 117 - res->start = address.minimum; 118 - res->end = address.minimum + address.address_length - 1; 117 + res->start = address.address.minimum; 118 + res->end = address.address.minimum + address.address.address_length - 1; 119 119 } 120 120 121 121 return AE_OK;
+12 -12
drivers/acpi/resource.c
··· 202 202 if (ACPI_FAILURE(status)) 203 203 return false; 204 204 205 - res->start = addr.minimum; 206 - res->end = addr.maximum; 205 + res->start = addr.address.minimum; 206 + res->end = addr.address.maximum; 207 207 window = addr.producer_consumer == ACPI_PRODUCER; 208 208 209 209 switch(addr.resource_type) { 210 210 case ACPI_MEMORY_RANGE: 211 - len = addr.maximum - addr.minimum + 1; 211 + len = addr.address.maximum - addr.address.minimum + 1; 212 212 res->flags = acpi_dev_memresource_flags(len, 213 213 addr.info.mem.write_protect, 214 214 window); 215 215 break; 216 216 case ACPI_IO_RANGE: 217 - io_decode = addr.granularity == 0xfff ? 217 + io_decode = addr.address.granularity == 0xfff ? 218 218 ACPI_DECODE_10 : ACPI_DECODE_16; 219 - res->flags = acpi_dev_ioresource_flags(addr.minimum, 220 - addr.maximum, 219 + res->flags = acpi_dev_ioresource_flags(addr.address.minimum, 220 + addr.address.maximum, 221 221 io_decode, window); 222 222 break; 223 223 case ACPI_BUS_NUMBER_RANGE: ··· 253 253 254 254 ext_addr = &ares->data.ext_address64; 255 255 256 - res->start = ext_addr->minimum; 257 - res->end = ext_addr->maximum; 256 + res->start = ext_addr->address.minimum; 257 + res->end = ext_addr->address.maximum; 258 258 window = ext_addr->producer_consumer == ACPI_PRODUCER; 259 259 260 260 switch(ext_addr->resource_type) { 261 261 case ACPI_MEMORY_RANGE: 262 - len = ext_addr->maximum - ext_addr->minimum + 1; 262 + len = ext_addr->address.maximum - ext_addr->address.minimum + 1; 263 263 res->flags = acpi_dev_memresource_flags(len, 264 264 ext_addr->info.mem.write_protect, 265 265 window); 266 266 break; 267 267 case ACPI_IO_RANGE: 268 - io_decode = ext_addr->granularity == 0xfff ? 268 + io_decode = ext_addr->address.granularity == 0xfff ? 269 269 ACPI_DECODE_10 : ACPI_DECODE_16; 270 - res->flags = acpi_dev_ioresource_flags(ext_addr->minimum, 271 - ext_addr->maximum, 270 + res->flags = acpi_dev_ioresource_flags(ext_addr->address.minimum, 271 + ext_addr->address.maximum, 272 272 io_decode, window); 273 273 break; 274 274 case ACPI_BUS_NUMBER_RANGE:
+2 -2
drivers/char/hpet.c
··· 976 976 status = acpi_resource_to_address64(res, &addr); 977 977 978 978 if (ACPI_SUCCESS(status)) { 979 - hdp->hd_phys_address = addr.minimum; 980 - hdp->hd_address = ioremap(addr.minimum, addr.address_length); 979 + hdp->hd_phys_address = addr.address.minimum; 980 + hdp->hd_address = ioremap(addr.address.minimum, addr.address.address_length); 981 981 982 982 if (hpet_is_known(hdp)) { 983 983 iounmap(hdp->hd_address);
+2 -2
drivers/hv/vmbus_drv.c
··· 861 861 break; 862 862 863 863 case ACPI_RESOURCE_TYPE_ADDRESS64: 864 - hyperv_mmio.start = res->data.address64.minimum; 865 - hyperv_mmio.end = res->data.address64.maximum; 864 + hyperv_mmio.start = res->data.address64.address.minimum; 865 + hyperv_mmio.end = res->data.address64.address.maximum; 866 866 break; 867 867 } 868 868
+8 -8
drivers/pnp/pnpacpi/rsparser.c
··· 410 410 if (p->resource_type == ACPI_MEMORY_RANGE) { 411 411 if (p->info.mem.write_protect == ACPI_READ_WRITE_MEMORY) 412 412 flags = IORESOURCE_MEM_WRITEABLE; 413 - pnp_register_mem_resource(dev, option_flags, p->minimum, 414 - p->minimum, 0, p->address_length, 413 + pnp_register_mem_resource(dev, option_flags, p->address.minimum, 414 + p->address.minimum, 0, p->address.address_length, 415 415 flags); 416 416 } else if (p->resource_type == ACPI_IO_RANGE) 417 - pnp_register_port_resource(dev, option_flags, p->minimum, 418 - p->minimum, 0, p->address_length, 417 + pnp_register_port_resource(dev, option_flags, p->address.minimum, 418 + p->address.minimum, 0, p->address.address_length, 419 419 IORESOURCE_IO_FIXED); 420 420 } 421 421 ··· 429 429 if (p->resource_type == ACPI_MEMORY_RANGE) { 430 430 if (p->info.mem.write_protect == ACPI_READ_WRITE_MEMORY) 431 431 flags = IORESOURCE_MEM_WRITEABLE; 432 - pnp_register_mem_resource(dev, option_flags, p->minimum, 433 - p->minimum, 0, p->address_length, 432 + pnp_register_mem_resource(dev, option_flags, p->address.minimum, 433 + p->address.minimum, 0, p->address.address_length, 434 434 flags); 435 435 } else if (p->resource_type == ACPI_IO_RANGE) 436 - pnp_register_port_resource(dev, option_flags, p->minimum, 437 - p->minimum, 0, p->address_length, 436 + pnp_register_port_resource(dev, option_flags, p->address.minimum, 437 + p->address.minimum, 0, p->address.address_length, 438 438 IORESOURCE_IO_FIXED); 439 439 } 440 440
+4 -4
drivers/xen/xen-acpi-memhotplug.c
··· 117 117 list_for_each_entry(info, &mem_device->res_list, list) { 118 118 if ((info->caching == address64.info.mem.caching) && 119 119 (info->write_protect == address64.info.mem.write_protect) && 120 - (info->start_addr + info->length == address64.minimum)) { 121 - info->length += address64.address_length; 120 + (info->start_addr + info->length == address64.address.minimum)) { 121 + info->length += address64.address.address_length; 122 122 return AE_OK; 123 123 } 124 124 } ··· 130 130 INIT_LIST_HEAD(&new->list); 131 131 new->caching = address64.info.mem.caching; 132 132 new->write_protect = address64.info.mem.write_protect; 133 - new->start_addr = address64.minimum; 134 - new->length = address64.address_length; 133 + new->start_addr = address64.address.minimum; 134 + new->length = address64.address.address_length; 135 135 list_add_tail(&new->list, &mem_device->res_list); 136 136 137 137 return AE_OK;
+28 -20
include/acpi/acrestyp.h
··· 305 305 u8 max_address_fixed; \ 306 306 union acpi_resource_attribute info; 307 307 308 - struct acpi_resource_address { 309 - ACPI_RESOURCE_ADDRESS_COMMON}; 310 - 311 - struct acpi_resource_address16 { 312 - ACPI_RESOURCE_ADDRESS_COMMON u16 granularity; 308 + struct acpi_address16_attribute { 309 + u16 granularity; 313 310 u16 minimum; 314 311 u16 maximum; 315 312 u16 translation_offset; 316 313 u16 address_length; 317 - struct acpi_resource_source resource_source; 318 314 }; 319 315 320 - struct acpi_resource_address32 { 321 - ACPI_RESOURCE_ADDRESS_COMMON u32 granularity; 316 + struct acpi_address32_attribute { 317 + u32 granularity; 322 318 u32 minimum; 323 319 u32 maximum; 324 320 u32 translation_offset; 325 321 u32 address_length; 326 - struct acpi_resource_source resource_source; 327 322 }; 328 323 329 - struct acpi_resource_address64 { 330 - ACPI_RESOURCE_ADDRESS_COMMON u64 granularity; 331 - u64 minimum; 332 - u64 maximum; 333 - u64 translation_offset; 334 - u64 address_length; 335 - struct acpi_resource_source resource_source; 336 - }; 337 - 338 - struct acpi_resource_extended_address64 { 339 - ACPI_RESOURCE_ADDRESS_COMMON u8 revision_ID; 324 + struct acpi_address64_attribute { 340 325 u64 granularity; 341 326 u64 minimum; 342 327 u64 maximum; 343 328 u64 translation_offset; 344 329 u64 address_length; 330 + }; 331 + 332 + struct acpi_resource_address { 333 + ACPI_RESOURCE_ADDRESS_COMMON}; 334 + 335 + struct acpi_resource_address16 { 336 + ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address16_attribute address; 337 + struct acpi_resource_source resource_source; 338 + }; 339 + 340 + struct acpi_resource_address32 { 341 + ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address32_attribute address; 342 + struct acpi_resource_source resource_source; 343 + }; 344 + 345 + struct acpi_resource_address64 { 346 + ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address64_attribute address; 347 + struct acpi_resource_source resource_source; 348 + }; 349 + 350 + struct acpi_resource_extended_address64 { 351 + ACPI_RESOURCE_ADDRESS_COMMON u8 revision_ID; 352 + struct acpi_address64_attribute address; 345 353 u64 type_specific; 346 354 }; 347 355