[PATCH 0/2] cdrom: gdrom: fix block I/O and capacity setting

Florian Fuchs posted 2 patches 2 months, 1 week ago
There is a newer version of this series
drivers/cdrom/gdrom.c | 39 +++++++++++++++++++++++++++++++++++----
1 file changed, 35 insertions(+), 4 deletions(-)
[PATCH 0/2] cdrom: gdrom: fix block I/O and capacity setting
Posted by Florian Fuchs 2 months, 1 week ago
Hi all,

This series fixes a gdrom driver Oops due to bad MMIO register access and
fixes the missing updates of the block layer gendisk capacity that
prevented ISO9660 mounts from working.

The change was tested on real Sega Dreamcast devices (PAL-E, NTSC-J)
with physical CD-R discs and with GDEMU emulated discs. Before: Oops on
mount and an unusable drive. After: Successfully able to mount and use
the inserted medium.

Thanks,
Florian

Florian Fuchs (2):
  cdrom: gdrom: replace port I/O with MMIO accessors
  cdrom: gdrom: update gendisk capacity on open

 drivers/cdrom/gdrom.c | 39 +++++++++++++++++++++++++++++++++++----
 1 file changed, 35 insertions(+), 4 deletions(-)


base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
-- 
2.43.0
Re: [PATCH 0/2] cdrom: gdrom: fix block I/O and capacity setting
Posted by John Paul Adrian Glaubitz 2 months, 1 week ago
Hi Florian,

On Sun, 2026-04-05 at 10:23 +0200, Florian Fuchs wrote:
> Hi all,
> 
> This series fixes a gdrom driver Oops due to bad MMIO register access and
> fixes the missing updates of the block layer gendisk capacity that
> prevented ISO9660 mounts from working.
> 
> The change was tested on real Sega Dreamcast devices (PAL-E, NTSC-J)
> with physical CD-R discs and with GDEMU emulated discs. Before: Oops on
> mount and an unusable drive. After: Successfully able to mount and use
> the inserted medium.
> 
> Thanks,
> Florian
> 
> Florian Fuchs (2):
>   cdrom: gdrom: replace port I/O with MMIO accessors
>   cdrom: gdrom: update gendisk capacity on open
> 
>  drivers/cdrom/gdrom.c | 39 +++++++++++++++++++++++++++++++++++----
>  1 file changed, 35 insertions(+), 4 deletions(-)
> 
> 
> base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f

Thanks a lot for the series! Can you give me any hints on what's the best method
these days to boot a Linux kernel on Dreamcast these days? I have the hardware,
but I never tried to boot Linux on it. An emulator might be even better.

Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer
`. `'   Physicist
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
Re: [PATCH 0/2] cdrom: gdrom: fix block I/O and capacity setting
Posted by Florian Fuchs 2 months, 1 week ago
Hi Adrian,

On 05 Apr 16:09, John Paul Adrian Glaubitz wrote:
> Hi Florian,
> 
> On Sun, 2026-04-05 at 10:23 +0200, Florian Fuchs wrote:
> > Hi all,
> > 
> > This series fixes a gdrom driver Oops due to bad MMIO register access and
> > fixes the missing updates of the block layer gendisk capacity that
> > prevented ISO9660 mounts from working.
> > 
> > The change was tested on real Sega Dreamcast devices (PAL-E, NTSC-J)
> > with physical CD-R discs and with GDEMU emulated discs. Before: Oops on
> > mount and an unusable drive. After: Successfully able to mount and use
> > the inserted medium.
> > 
> > Thanks,
> > Florian
> > 
> > Florian Fuchs (2):
> >   cdrom: gdrom: replace port I/O with MMIO accessors
> >   cdrom: gdrom: update gendisk capacity on open
> > 
> >  drivers/cdrom/gdrom.c | 39 +++++++++++++++++++++++++++++++++++----
> >  1 file changed, 35 insertions(+), 4 deletions(-)
> > 
> > 
> > base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
> 
> Thanks a lot for the series! Can you give me any hints on what's the best method
> these days to boot a Linux kernel on Dreamcast these days? I have the hardware,
> but I never tried to boot Linux on it. An emulator might be even better.
> 
> Adrian
> 
> -- 
>  .''`.  John Paul Adrian Glaubitz
> : :' :  Debian Developer
> `. `'   Physicist
>   `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

I haven't found any DC emulator that can boot linux currently, sadly. I
analyzed a bit with gxemul/lxdream, with the goal of booting it in the
future, but, currently it traps in the pcpu setup. (might be some
kconfig related, missing features of the emulators or sth.)

On the hardware:
You can either burn CDs, emulate the GDROM with a hardware modification
kit "GDEMU" with sdcards or push the executable over serial cable (or
via network).

 - fastest test-iteration is via gdemu/sd-card or via serial-cable, that
   may take just a few minutes to transfer
 - via serial, requires a serial console "coders" cable for the DC/USB and
   needs a CDROM with dcload-serial [1] CDI burned on it, then the
   executable can be pushed over serial to the DC. I currently use
   sh-boot [2] as the very thin bootloader which might not be necessary,
   but I haven't got it done otherwise, yet.
 - to boot an already built CDI (Dreamcast selfboot image), you can burn
   it on a CD, either with helper binaries [3] or manual using wodim, it
   needs special crafted CD-layout [4], but there are tools for it [5].

There are different tools from the DC homebrew community, that help with
creating bootable CDs/Images, please ping me anytime if I can give you any
further information or a test CDI.

Florian

[1] https://github.com/KallistiOS/dcload-serial
[2] https://github.com/foxdrodd/sh-boot/blob/main/tools/dreamcast/Makefile
[3] https://github.com/alex-free/dreamcast-cdi-burner/
[4] https://mc.pp.se/dc/cdr.html
[5] https://github.com/KallistiOS/KallistiOS/tree/master/utils