Skip to content

PNP cleanup and convert to dynamic resources, v3

Bjorn Helgaas linux-acpi lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest53 patches 11 repliesIn review

Changes between v2 and v3 from the cover letter

- several updates from Rene Herman's review:
- tweak EISA ID conversion and keep high-order bit for ISAPNP
- fix pnp_add_card_id() to bisection works better
- fix some "x <= 0" tests when x is unsigned
- make resource accessors inlines, not #defines
- fix pnp_{port,mem,irq,dma}_valid() return int, not resource_size_t
- fold isapnp_read_resources() back into isapnp_get_resources()
- factored out pnp_init_resource() from pnp_{init,clean}_resource_table()
- initialize generic pnp_dev fields earlier, to help dev_printk
- add pnp_resource to hold ISAPNP register index
- convert to resource management from table to list (finally)
- remove pnp_dev->regs (only set by ISAPNP, never used)
- in /sys/.../resources, don't sort resources by type

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/53ISAPNP: move config register addresses out of isapnp.hdrivers/pnp/isapnp/core.c include/linux/isapnp.h+8 -100 replies
2/53PNPACPI: continue after _CRS and _PRS errorsdrivers/pnp/pnpacpi/core.c+2 -60 replies
3/53PNP: make pnp_add_id() internal to PNP coredrivers/pnp/base.h drivers/pnp/pnpacpi/core.c drivers/pnp/pnpbios/core.c +1 more+3 -20 replies
4/53PNP: change pnp_add_id() to allocate its own pnp_id structuresdrivers/pnp/base.h drivers/pnp/driver.c drivers/pnp/isapnp/core.c +3 more+36 -480 replies
5/53PNP: add pnp_eisa_id_to_string()drivers/pnp/base.h drivers/pnp/isapnp/core.c drivers/pnp/pnpbios/core.c +2 more+43 -450 replies
6/53PNP: add pnp_alloc_dev()drivers/pnp/base.h drivers/pnp/core.c drivers/pnp/isapnp/core.c +2 more+36 -360 replies
7/53PNP: make pnp_add_card_id() internal to PNP coredrivers/pnp/base.h include/linux/pnp.h+1 -20 replies
8/53PNP: change pnp_add_card_id() to allocate its own pnp_id structuresdrivers/pnp/base.h drivers/pnp/card.c drivers/pnp/isapnp/core.c+33 -170 replies
9/53ISAPNP: pull pnp_add_card_id() out of isapnp_parse_card_id()drivers/pnp/isapnp/core.c+6 -220 replies
10/53PNP: add pnp_alloc_card()drivers/pnp/base.h drivers/pnp/card.c drivers/pnp/isapnp/core.c+31 -110 replies
11/53PNPACPI: pnpacpi_encode_ext_irq() wrongly set "irq" instead of "extended_irq"drivers/pnp/pnpacpi/rsparser.c+2 -20 replies
12/53PNPACPI: use temporaries to reduce repetitiondrivers/pnp/pnpacpi/rsparser.c+103 -730 replies
13/53PNPACPI: hoist dma_flags() out of pnpacpi_parse_allocated_dmaresource()drivers/pnp/pnpacpi/rsparser.c+4 -70 replies
14/53PNPACPI: extend irq_flags() to set IORESOURCE_IRQ_SHAREABLE when appropriatedrivers/pnp/pnpacpi/rsparser.c+15 -110 replies
15/53PNPACPI: pass pnp_dev instead of acpi_handledrivers/pnp/pnpacpi/core.c drivers/pnp/pnpacpi/pnpacpi.h drivers/pnp/pnpacpi/rsparser.c+5 -40 replies
16/53PNP: remove pnp_resource_table from internal get/set interfacesdrivers/pnp/interface.c drivers/pnp/isapnp/core.c drivers/pnp/manager.c +3 more+16 -210 replies
17/53PNP: remove more pnp_resource_table argumentsdrivers/pnp/isapnp/core.c drivers/pnp/pnpacpi/core.c drivers/pnp/pnpacpi/pnpacpi.h +4 more+73 -710 replies
18/53PNP: add pnp_init_resources(struct pnp_dev *) interfacedrivers/pnp/interface.c drivers/pnp/isapnp/core.c drivers/pnp/manager.c +5 more+16 -110 replies
19/53PNP: remove pnp_resource_table from internal pnp_clean_resource_table interfacedrivers/pnp/manager.c+5 -40 replies
20/53PNP: remove unused interfaces using pnp_resource_tabledrivers/pnp/manager.c include/linux/pnp.h+3 -840 replies
21/53PNP: use dev_printk when possibledrivers/pnp/isapnp/core.c drivers/pnp/pnpacpi/rsparser.c drivers/pnp/pnpbios/rsparser.c+43 -500 replies
22/53PNP: factor pnp_init_resource_table() and pnp_clean_resource_table()drivers/pnp/base.h drivers/pnp/manager.c+37 -5311 replies
23/53PNP: add pnp_get_resource() interfacedrivers/pnp/resource.c include/linux/pnp.h+28 -00 replies
24/53PNP: remove pnp_mem_flags() as an lvaluedrivers/pnp/quirks.c+3 -10 replies
25/53PNP: convert resource accessors to use pnp_get_resource(), not pnp_resource_tableinclude/linux/pnp.h+108 -400 replies
26/53PNP: use conventional "i" for loop indicesdrivers/pnp/resource.c+46 -460 replies
27/53PNP: convert resource checks to use pnp_get_resource(), not pnp_resource_tabledrivers/pnp/resource.c+58 -380 replies
28/53PNP: convert resource assign functions to use pnp_get_resource(), not pnp_resource_tabledrivers/pnp/manager.c+28 -200 replies
29/53PNP: convert sysfs interface to use pnp_get_resource(), not pnp_resource_tabledrivers/pnp/interface.c+29 -320 replies
30/53PNP: convert resource initializers to use pnp_get_resource(), not pnp_resource_tabledrivers/pnp/manager.c+27 -270 replies
31/53PNP: convert encoders to use pnp_get_resource(), not pnp_resource_tabledrivers/pnp/pnpacpi/rsparser.c drivers/pnp/pnpbios/rsparser.c+22 -190 replies
32/53PNP: remove PNP_MAX_* usesdrivers/pnp/interface.c drivers/pnp/quirks.c drivers/pnp/resource.c +1 more+70 -630 replies
33/53rtc: dont reference pnp_resource_table directlydrivers/rtc/rtc-cmos.c+4 -30 replies
34/53PNP: make pnp_resource_table private to PNP coredrivers/pnp/base.h drivers/pnp/core.c drivers/pnp/isapnp/core.c +4 more+35 -230 replies
35/53PNP: remove pnp_resource_table references from resource decodersdrivers/pnp/isapnp/core.c drivers/pnp/pnpacpi/rsparser.c drivers/pnp/pnpbios/rsparser.c+138 -1190 replies
36/53PNP: add struct pnp_resourcedrivers/pnp/base.h drivers/pnp/isapnp/core.c drivers/pnp/pnpacpi/rsparser.c +2 more+38 -240 replies
37/53PNP: add pnp_resource index for ISAPNPdrivers/pnp/base.h drivers/pnp/isapnp/core.c+14 -50 replies
38/53PNP: add pnp_new_resource() to find a new unset pnp_resourcedrivers/pnp/resource.c+43 -00 replies
39/53PNP: make generic pnp_add_irq_resource()drivers/pnp/base.h drivers/pnp/interface.c drivers/pnp/isapnp/core.c +3 more+50 -610 replies
40/53PNP: make generic pnp_add_dma_resource()drivers/pnp/base.h drivers/pnp/interface.c drivers/pnp/isapnp/core.c +3 more+45 -690 replies
41/53PNP: make generic pnp_add_io_resource()drivers/pnp/base.h drivers/pnp/interface.c drivers/pnp/isapnp/core.c +3 more+56 -570 replies
42/53PNP: make generic pnp_add_mem_resource()drivers/pnp/base.h drivers/pnp/interface.c drivers/pnp/isapnp/core.c +3 more+53 -570 replies
43/53ISAPNP: fold isapnp_read_resources() back into isapnp_get_resources()drivers/pnp/isapnp/core.c+28 -360 replies
44/53PNP: add pnp_resource_type() internal interfacedrivers/pnp/base.h drivers/pnp/resource.c+7 -00 replies
45/53PNP: replace pnp_resource_table with dynamically allocated resourcesdrivers/pnp/base.h drivers/pnp/core.c drivers/pnp/isapnp/core.c +3 more+68 -1310 replies
46/53PNP: remove ratelimit on add resource failuresdrivers/pnp/resource.c+6 -260 replies
47/53PNPACPI: move _CRS/_PRS warnings closer to the actiondrivers/pnp/pnpacpi/core.c drivers/pnp/pnpacpi/pnpacpi.h drivers/pnp/pnpacpi/rsparser.c+28 -290 replies
48/53PNPACPI: remove some pnp_dbg callsdrivers/pnp/pnpacpi/rsparser.c+0 -100 replies
49/53PNP: make interfaces private to the PNP coredrivers/pnp/base.h include/linux/pnp.h+23 -350 replies
50/53ISAPNP: remove unused pnp_dev->regs fielddrivers/pnp/isapnp/core.c include/linux/pnp.h+0 -40 replies
51/53PNPBIOS: remove include/linux/pnpbios.hdrivers/pnp/pnpbios/bioscalls.c drivers/pnp/pnpbios/core.c drivers/pnp/pnpbios/pnpbios.h +3 more+137 -1550 replies
52/53PNP: fill in generic pnp_dev fields earlierdrivers/pnp/core.c+5 -40 replies
53/53PNP: dont sort by type in /sys/.../resourcesdrivers/pnp/interface.c+43 -470 replies

Reviews trailers per patch

25 of 53 patches have a Reviewed-by or Acked-by.

PatchRene Herman
1/53A-b
2/53
3/53A-b
4/53A-b
5/53
6/53A-b
7/53A-b
8/53A-b
9/53A-b
10/53A-b
11/53
12/53A-b
13/53A-b
14/53A-b
15/53A-b
16/53A-b
17/53A-b
18/53A-b
19/53A-b
20/53A-b
21/53A-b
22/53
23/53A-b
24/53
25/53
26/53A-b
27/53
28/53A-b
29/53
30/53
31/53
32/53A-b
33/53A-b
34/53
35/53
36/53
37/53
38/53
39/53
40/53
41/53
42/53
43/53
44/53
45/53
46/53
47/53
48/53A-b
49/53A-b
50/53
51/53
52/53
53/53

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [patch 00/53] PNP cleanup and convert to dynamic resources, v3

This finally replaces the fixed-size pnp_resource_table with something more dynamic so we can quit worrying about table overflows.

Most of the patches here just lead up to the dynamic resources patch by incrementally cleaning things up and reducing the amount of code that knows about the pnp_resource_table.

There are a *lot* of changes from v2, mostly to fix the ISAPNP problem Rene pointed out (we need to track the config register index so we write things back to the same register we read them from).

Rene, you acked many of these patches previously, and I noted those in the patches. But where I made more than trivial changes, I removed your ack.

Changes between v2 and v3:

- several updates from Rene Herman's review:
- tweak EISA ID conversion and keep high-order bit for ISAPNP
- fix pnp_add_card_id() to bisection works better
- fix some "x <= 0" tests when x is unsigned
- make resource accessors inlines, not #defines
- fix pnp_{port,mem,irq,dma}_valid() return int, not resource_size_t
- fold isapnp_read_resources() back into isapnp_get_resources()
- factored out pnp_init_resource() from pnp_{init,clean}_resource_table()
- initialize generic pnp_dev fields earlier, to help dev_printk
- add pnp_resource to hold ISAPNP register index
- convert to resource management from table to list (finally)
- remove pnp_dev->regs (only set by ISAPNP, never used)
- in /sys/.../resources, don't sort resources by type

Changes between first post and v2:

- export pnp_get_resource()
- fix EISA ID conversion and make a common function for ISAPNP/PNPBIOS
- fix typos in pnp_check_{port,mem,etc} that made resource assign fail

- the following fixes should precede this series (they're in -mm already):
- parport_pc: wrap PNP probe code in CONFIG_PNP
- radio-cadet: wrap PNP probe code in CONFIG_PNP
- smsc-ircc2: wrap PNP probe code in CONFIG_PNP
- nsc-ircc: wrap PNP probe code in CONFIG_PNP

Bjorn