On Mon, Jul 29, 2013 at 11:50 AM, Eric W. Biederman <ebiederm at xmission.com> wrote: > > > Alex Deucher <alexdeucher at gmail.com> wrote: >>On Mon, Jul 29, 2013 at 10:09 AM, Markus Trippelsdorf >><markus at trippelsdorf.de> wrote: >>> On 2013.07.29 at 09:58 -0400, Alex Deucher wrote: >>>> On Mon, Jul 29, 2013 at 3:51 AM, Markus Trippelsdorf >>>> <markus at trippelsdorf.de> wrote: >>>> > On my test machine Xorg doesn't start anymore when I kexec into a >>>> > 3.11.0-rc3 kernel. >>>> >>>> With kexec, dpm doesn't get torn down properly which can result in a >>>> bad hardware state when the driver loads again. Does the attached >>>> patch help? It attempts to disable dpm at startup in case it wasn't >>>> torn down properly previously. >>> >>> dpm initialization now works, but unfortunately GPU acceleration >>still gets >>> disabled: >> >>Stupid kexec complicates things. We need to make sure dpm is torn >>down before we init the rest of the GPU, but dpm needs get initialized >>later in the init process since it depends on certain other state from >>the driver. I need to think about this for a bit. I'm not sure of a >>good way to handle this. > > You might just want to implement a shutdown method that cleans things up > properly. At least as a first pass until you worry about things like kexec > on panic. > > Or can you not shutdown the graphics stack on reboot because of the need to > display the kernels shutdown progress?
Does kexec actually call this shutdown method? The driver implements appropriate clean-up measures if it's shutdown properly. Alex > > Eric > >>Alex >> >>> >>> [drm] Initialized drm 1.1.0 20060810 >> [135/1104] >>> [drm] radeon kernel modesetting enabled. >>> [drm] initializing kernel modesetting (RS780 0x1002:0x9614 >>0x1043:0x834D). >>> [drm] register mmio base: 0xFBEE0000 >>> [drm] register mmio size: 65536 >>> ATOM BIOS: 113 >>> radeon 0000:01:05.0: VRAM: 128M 0x00000000C0000000 - >>0x00000000C7FFFFFF (128M used) >>> radeon 0000:01:05.0: GTT: 512M 0x00000000A0000000 - >>0x00000000BFFFFFFF >>> [drm] Detected VRAM RAM=128M, BAR=128M >>> [drm] RAM width 32bits DDR >>> [TTM] Zone kernel: Available graphics memory: 4082356 kiB >>> [TTM] Zone dma32: Available graphics memory: 2097152 kiB >>> [TTM] Initializing pool allocator >>> [TTM] Initializing DMA pool allocator >>> [drm] radeon: 128M of VRAM memory ready >>> [drm] radeon: 512M of GTT memory ready. >>> [drm] GART: num cpu pages 131072, num gpu pages 131072 >>> [drm] Loading RS780 Microcode >>> [drm] PCIE GART of 512M enabled (table at 0x00000000C0040000). >>> radeon 0000:01:05.0: WB enabled >>> radeon 0000:01:05.0: fence driver on ring 0 use gpu addr >>0x00000000a0000c00 and cpu addr 0xffff880215c30c00 >>> radeon 0000:01:05.0: fence driver on ring 3 use gpu addr >>0x00000000a0000c0c and cpu addr 0xffff880215c30c0c >>> [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). >>> [drm] Driver supports precise vblank timestamp query. >>> [drm] radeon: irq initialized. >>> radeon 0000:01:05.0: setting latency timer to 64 >>> [drm] ring test on 0 succeeded in 1 usecs >>> [drm:r600_dma_ring_test] *ERROR* radeon: ring 3 test failed >>(0xCAFEDEAD) >>> radeon 0000:01:05.0: disabling GPU acceleration >>> radeon 0000:01:05.0: ffff8802161cfc00 unpin not necessary >>> [drm] Radeon Display Connectors >>> [drm] Connector 0: >>> [drm] VGA-1 >>> [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c >>> [drm] Encoders: >>> [drm] CRT1: INTERNAL_KLDSCP_DAC1 >>> [drm] Connector 1: >>> [drm] DVI-D-1 >>> [drm] HPD3 >>> [drm] DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c >>> [drm] Encoders: >>> [drm] DFP3: INTERNAL_KLDSCP_LVTMA >>> == power state 0 == >>> ui class: none >>> internal class: boot >>> caps: video >>> uvd vclk: 0 dclk: 0 >>> power level 0 sclk: 50000 vddc_index: 2 >>> power level 1 sclk: 50000 vddc_index: 2 >>> status: c r b >>> == power state 1 == >>> ui class: performance >>> internal class: none >>> caps: video >>> uvd vclk: 0 dclk: 0 >>> power level 0 sclk: 50000 vddc_index: 1 >>> power level 1 sclk: 70000 vddc_index: 2 >>> status: >>> == power state 2 == >>> ui class: none >>> internal class: uvd >>> caps: video >>> uvd vclk: 53300 dclk: 40000 >>> power level 0 sclk: 50000 vddc_index: 1 >>> power level 1 sclk: 50000 vddc_index: 1 >>> status: >>> switching from power state: >>> ui class: none >>> internal class: boot >>> caps: video >>> uvd vclk: 0 dclk: 0 >>> power level 0 sclk: 50000 vddc_index: 2 >>> power level 1 sclk: 50000 vddc_index: 2 >>> status: c b >>> switching to power state: >>> ui class: performance >>> internal class: none >>> caps: video >>> uvd vclk: 0 dclk: 0 >>> power level 0 sclk: 50000 vddc_index: 1 >>> power level 1 sclk: 70000 vddc_index: 2 >>> status: r >>> [drm] radeon: dpm initialized >>> [drm] fb mappable at 0xF0142000 >>> [drm] vram apper at 0xF0000000 >>> [drm] size 7299072 >>> [drm] fb depth is 24 >>> [drm] pitch is 6912 >>> fbcon: radeondrmfb (fb0) >>> >>> -- >>> Markus >